1.一种基于交通场景的多支路目标检测方法,其特征在于,包括以下步骤:
S1、获取交通路口拍摄的高清照片构建相关数据集,对交通场景图像进行分类和标注,生成相应的类别标签,并划分训练集和测试集,用于后续的网络训练及测试;
S2、搭建基于深度学习的具有32层的网络模型,其中17个卷积层用于提取特征,6个最大池化层用于简化特征图,2个上采样层用于获取高维特征图,4个连接层用于获取指定层的特征图或者将不同层的特征图进行拼接,此外还有3个Yolo层作为三个检测分支,采用k-means聚类算法获取9个锚框先验,将这9个锚框平均分配到三个检测分支中,即一个分支为每一个可能的目标预测3个边界框,每个边界框除了要预测4个坐标和1个置信度之外,还需要预测7个类别分,作为一个基于回归方法的网络,该网络将检测任务转化为回归任务,在一个网络上同时完成目标的分类与边界框的回归,即将目标检测算法的候选框生成、特征提取、分类及位置精修这4个步骤统一到一个深度网络框架之内,利用NVIDIA GTX 1060 GPU进行并行运算。在该网络中使用Leaky Relu函数作为激活函数,采用反向传播和随机梯度下降方法对网络模型进行端到端训练,通过迭代训练使损失函数降到一个小的范围然后停止训练;
S3、利用步骤S1中划分好的测试集对步骤S2中训练好的网络模型进行测试,并根据测试结果对网络参数进一步进行调整。
2.根据权利要求1所述的一种基于交通场景的多支路目标检测方法,其特征在于,所述步骤S2目标的边界框回归过程通过以下公式计算:
首先通过tx=Gx-Cx,ty=Gy-Cy,tw=log(Gw/Pw),th=log(Gh/Ph)这四个公式计算网络的预测值tx、ty、tw、th,其中(tx,ty)是真实框的中心到负责对目标进行预测的单元格左上角的偏移量,(tw,th)是边界框大小的缩放比例,根据此缩放比例将边界框缩放到与真实框相似的大小,如果负责预测的单元格与图像左上角的偏移为(Cx,Cy),且锚框先验的长宽分别为Pw、Ph,则待预测的边界框的坐标可以通过以下公式进行计算:bx=σ(tx)+Cx,by=σ(ty)+Cy,这四个公式计算出预测框的坐标,其中bx,by,bw,bh分别为预测框的中心坐标及其长和宽,在上述公式中,Gx、Gy、Gw、Gh分别代表真实框的中心坐标及其长和宽,Pw、Ph分别代表锚框的宽和高,经过以上计算,我们即获得了边界框的预测坐标输出,公式中的σ(·)为logistic函数,它的使用是为了将tx和ty的值压缩到[0,1]区间,此操作能确保待预测的目标的中心落在此单元格内,防止偏差过大。
3.根据权利要求2所述的一种基于交通场景的多支路目标检测方法,其特征在于,所述步骤S2的置信度通过以下公式计算,
confidence=Pr(Object)*IOU(truth|pred),
然后将置信度分别乘以7个类别分即得到了该边界框基于某一具体类别的置信度分,其计算公式如下,
式中,Pr(Object)表示预测框中有无目标的置信度,IOU(truth|pred)表示预测框与真实框的重叠率,Pr(Classi|Object)表示在有目标的条件下含有目标i的概率,Pr(Classi)表示预测框中含有目标i的概率。综上所述,confidence值包含了预测框中含有目标的置信度(含有目标则为1,否则为0)以及这个边界框预测的有多准两重信息;confidence score代表了预测的边界框中包含某一特定类别的概率。
4.根据权利要求1所述的一种基于交通场景的多支路目标检测方法,其特征在于,所述步骤S2网络训练的损失函数通过以下公式计算,
式中,ci表示真实的类别, 表示预测的类别,(xi,yi,wi,hi)表示真实框的中心坐标及其长宽, 表示预测框的中心坐标及其长宽。S表示将原图划分为S×S的网格,在此网络中分别为16,32和64;B表示每个单元格需要预测B个边界框,此处为3;λnoobj,λobj,λclass,λcoord, 表示相应的权重参数,其中λnoobj、λobj分别表示不含目标及含有目标的边界框的预测所占的权重,λclass表示含有目标的边界框的各个类别的置信度预测权重,λcoord为坐标预测权重, 和 分别表示第i个网格中的第j个单元格是否负责目标的预测。
5.根据权利要求1所述的一种基于交通场景的多支路目标检测方法,其特征在于,所述步骤S2的32层网络的具体网络层如下,
该网络由32层组成,包括17个用于特征提取的卷积层、6个用于简化特征图的最大池化层、2个获取高维特征图的上采样层(将一个层上采样2×然后将其连接到其他层)和3个Yolo层用于接收输出特征图并作为网络中的三个检测分支。此外,还有4个连接层用于获取某一特定层的特征图或者将不同层的特征图进行融合。我们在每个卷积层后加入了批量归一化层(Batch normalization),对数据输出进行归一化,大大提高了训练速度,避免了梯度消失的发生。在该网络中,我们使用Leaky Relu函数作为激活函数。