王 玲 张 松 王 鹏 陶 跃(长春理工大学计算机科学技术学院 吉林 长春 130022)
随着道路上车辆的逐渐增多,交通路况越发复杂,检测车辆目标已经成为一项难题。同时,车辆检测也是目标检测领域中的一个重要研究方向,它在智能交通、无人驾驶、道路监控等方面有广泛的应用,可以为交通的管理和控制提供决策和支持,因此准确高效地检测车辆目标具有重要的实际意义。
近年来,随着深度学习的快速发展,大量基于卷积神经网络的方法被用于目标检测,主要分为基于区域的方法和基于回归的方法。基于区域的方法;先得到候选区域再对候选区域进行分类和边框回归。Yang等[1]使用改进的Faster R-CNN对航拍图像中的车辆目标进行检测,将交叉熵损失函数替换为焦点损失函数,对复杂环境下的车辆目标有较好的适应性,但检测速度慢,无法满足实时检测的要求。基于回归的方法;通过单个卷积神经网络直接对各个边界框进行回归,并预测相应类别的概率,是一种端到端的目标检测算法,比基于区域方法的检测速度有了质的提高,满足实时检测的要求。Tang等[2]在SSD网络产生的特征图上,使用一组具有各种比例的默认框生成检测边界框,以更好地匹配目标形状。该方法取得了较快的检测速度,达到了实时检测的效果,提升了小目标检测的效果,但检测精度偏低。刘宏哲等[3]提出基于特征融合的人脸检测算法,使用反卷积操作融合浅层特征,引入上下文信息,使目标检测精度有显著性的提高。薛丽霞等[4]提出一种特征融合的卷积神经网络模型,将中低层特征进行融合,产生更具区分性的特征。裴伟等[5]提出一种特征融合的航拍目标检测算法,将深层特征与浅层特征融合,增强浅层的语义信息,提升了目标检测效果。上述研究均使用特征融合的方法提升模型的检测精度。YOLOv3[6]作为基于回归的方法代表之一,具有较强的实时性(每秒传输帧数大于30即为实时检测[7]),但相比基于区域的方法,在检测精度上处于劣势。综上所述,现有的目标检测算法对复杂场景中不同尺度的车辆目标,无法达到检测精度与检测速度两者兼顾。在保留原有检测速度的条件下,提升YOLOv3模型的检测精度是本文研究的重点。
本文提出一种基于YOLOv3多尺度特征融合的检测算法,称为MS-YOLOv3。MS-YOLOv3的主网络结构是深度残差网络darknet-53,在特征提取时,将浅层位置信息丰富的特征与深层语义强的特征相结合,增强目标的特征表达,产生三种不同尺度的特征图,作为预测阶段的输入。同时使用转置卷积[8]替换上采样的最近邻插值法,增强网络的学习性。在保留原有模型的检测速度下,提升检测精度,实现实时检测车辆的目标。
YOLOv3算法结构如图1所示。
图1 YOLOv3框架结构
YOLOv3使用深度残差网络darknet-53作为特征提取网络,它有5种类型残差块,对输入图片共进行5次下采样。在多尺度预测阶段,使用最近邻插值作为上采样方法,自深层向浅层融合成3种不同尺度的特征图,形成特征金字塔结构[9],在金字塔每层特征图上进行边界框预测,使用非极大值抑制筛选重复预测的边界框,输出最终预测的目标类别和位置,对不同尺度目标有良好的检测效果。
上采样用于放大图像,将低分辨率的图像转换成高分辨率的图像。YOLOv3在上采样阶段使用最近邻插值法,它输出的像素灰度值等于距离它映射到的位置最近的输入像素的灰度值。最近邻插值法的缩放原理如图2所示。
图2 缩放原理
若几何变换后输出图像上坐标为(x,y)的像素点在原图像上的对应值坐标为(u,v),则:
x=u×ratiox
y=v×ratioy
(1)
式(1)水平的缩放比例ratiox和垂直的缩放比例ratioy计算公式如下:
(2)
式中:w1和h1为图像缩放后的宽和高;w2和h2为图像缩放前的宽和高。
YOLOv3使用特征金字塔结构来提升不同尺度目标的检测效果,在纵向上对后两层残差块产生的特征图进行上采样,与横向尺度大小相同的特征图融合,形成特征金字塔结构,特征金字塔的特征图公式如下:
Yn=φf{Xi-1,ζ(Xi)}
Y={Y2,Y1,X1}
(3)
式中:Yn为每层特征金字塔融合后的特征图,n∈[1,2],由上采样操作ζ后的残差块特征图Xi和前一层特征图Xi-1进行特征融合φf后得到;Y为特征金字塔结构,包含3种尺度大小特征图,即Y2、Y1和X1,X1未经过融合故为残差块产生的特征图。
YOLOv3在多尺度预测阶段,使用特征金字塔结构,通过上采样将语义信息丰富的深层与当前层融合,缺少浅层的位置信息,使融合后的特征图信息不完整,影响目标的检测精度;在上采样阶段,使用最近邻插值法作为上采样方法,在图像中会产生明显的人工痕迹,影响整个网络的学习效果,导致检测模型的精度下降。针对YOLOv3的缺点,本文提出一种融合多尺度特征的目标检测算法MS-YOLOv3。实现框架如图3所示。
在特征提取与多尺度融合阶段,MS-YOLOv3使用darknet-53网络作为特征提取网络,将残差块②输出的特征图,分别与残差块③、④、⑤输出的特征图进行融合,形成3种不同尺度的特征图,作为多尺度预测的输入。在多尺度预测阶段,对输入的特征图使用转置卷积操作进行上采样,与横向尺度大小相同的特征图融合,形成特征金字塔结构,在每一层特征图上对目标的类别和位置进行预测。
在基础特征提取网络中,浅层的特征图具有更高的分辨率和更准确的位置信息,但语义信息较少,深层特征图有更丰富的语义信息,但分辨率低,刻画目标的位置信息粗略,对小目标的感知能力较差。将两者高效融合是提高检测模型精度的关键。基于这一思想,在纵向上使用darknet-53网络产生4种尺度大小不同的特征图进行融合,以输入416×416×3为例,详细的特征提取与多尺度特征融合结构如图4所示。首先使用含有批归一化和leaky ReLU激活函数的卷积操作,对darknet-53网络产生的浅层特征图(104×104)进行三次下采样(①、②、③),其中卷积核为3×3,步长为2,得到3种特征图(52×52、26×26、13×13)。然后使用含有批归一化的concat操作与darknet-53网络纵向产生3种特征图(52×52、26×26、13×13)融合。最后使用卷积核为1×1的卷积操作,对融合后的特征图进行降维,将最终输出的3种特征图(52×52、26×26、13×13)用作预测阶段的输入。
图4 特征提取与多尺度特征融合结构
本文使用concat操作融合特征,将两种相同尺度大小的特征图进行合并,扩充通道数,融合后特征图的通道数为融合前两个特征图通道数之和。concat计算公式如下:
(4)
式中:Xi、Yi为一组输入中的一个通道;K为卷积核;C为融合前特征图的通道数。
MS-YOLOv3在上采样阶段使用转置卷积。转置卷积是一种在图像特征空间进行的自主学习的上采样方法,相比最近邻插值法,转置卷积的权重可以通过训练网络得到最优的权重,进而提升检测精度。多尺度预测详细结构如图5所示。
将多尺度融合输出的三种尺度特征图作为多尺度预测阶段的输入,首先对输入13×13的特征图,使用转置卷积操作进行2倍上采样(①),与输入26×26的特征图融合,产生新的26×26的特征图。再使用转置卷积操作(②),对融合后26×26的特征图进行2倍上采样,与输入52×52的特征图融合,构建3种尺度大小的特征金字塔结构,每一层金字塔特征包含不同层次的特征图。最后对不同的特征进行预测,大中小目标都有良好的检测效果。
本文的实验环境见表1。
本文对车辆目标进行实时检测,选择平均精确度(AP)和每秒传输帧数(FPS)作为目标检测模型的评价指标。AP是从精确率(Precision)和召回率(Recall)两个角度来衡量检测算法的准确性,是评价检测模型准确性的直观评价标准。精确率与召回率的计算公式如下:
(5)
式中:TP为检测出正确的车辆;FP是检测出错误的车辆;FN是指未检测出的车辆。以召回率与精确率分别作为横坐标与纵坐标,绘制出P-R曲线,曲线所围成的面积即为AP的值,面积越大,检测精度越高。
本文使用Udacity和KITTI两种数据集对MS-YOLOv3模型进行验证。
Udacity数据集是Udacity平台为自动驾驶算法比赛准备的数据集,对连续视频图片进行标注。数据集包括在加利福尼亚和邻近城市在白天拍摄的视频,其中每幅图像最多可达24辆车。
KITTI数据集由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办。包含市区、乡村和高速公路等场景采集的真实图像数据,每幅图像中最多达15辆车,还有各种程度的遮挡与截断。两种数据集详细的划分情况见表2。
本文提出的MS-YOLOv3模型在训练过程中,需要先将原始图像大小缩放到416×416,再进行特征提取和目标检测。在锚点框的选取上,先将数据集图像大小缩放到416×416,再使用K-means[10]算法对数据集的车辆目标大小进行聚类,在每个数据集中随机选取9个目标框作为聚集中心,Udactiy和KITTI数据集经过31次和27次迭代后,9个聚集中心不再变化。最后聚类出9种大小不同的锚点框,Udacity数据集和KITTI数据集上的9种锚点框的大小见表3。
通过上述两种数据集锚点框大小的对比可知,图片在相同大小下,Udacity数据集中的车辆目标要小于KITTI数据中的车辆目标。为了达到理想的检测精度,分别在两个数据集上进行训练。MS-YOLOv3模型训练时的参数设置见表4。
在Udacity和KITTI数据集上进行训练,当迭代次数为25 000次和35 000次时,将学习率分别设置为0.000 1和0.000 01。同时通过调整曝光度、饱和度和色调等数据增强方法对训练集进行扩充,增加训练集的多样性。
MS-YOLOv3模型在训练集上损失函数值曲线如图6所示。
(a) Udacity
(b) KITTI图6 损失函数值曲线
图6显示了MS-YOLOv3模型在Udacity训练集和KITTI训练集上的损失函数值曲线,经过40 000次的迭代训练后,损失值维持在一个稳定范围,不再继续收敛,此时网络模型已经达到最优状态,将训练好的模型用于检测数据集中的车辆目标。
在Udacity测试集和KITTI测试集上,将交并比(IOU)设置为0.5,置信度阈值设置为0.3,计算模型的AP。
本文选择检测速度较快的基于回归思想的目标检测算法YOLOv3、RefineDet[11]、RFB Net[12]、RetinaNet[13]和SSD[14]与MS-YOLOv3进行实验对比。
3.5.1Udacity
不同方法在Udacity测试集上的实验结果见表5。
可以看出,本文提出的MS-YOLOv3在Udacity测试集上的AP是90.78%,分别比RefineDet、RFB Net、RetinaNet、SSD和YOLOv3高2.64百分点、3.72百分点、5.75百分点、8.13百分点和1.69百分点。同时为了验证模型不同改进方法的有效性,将使用转置卷积的YOLOv3和增加特征融合的YOLOv3加入对比实验。YOLOv3+转置卷积和YOLOv3+特征融合的AP比YOLOv3提升了0.52百分点、1.31百分点;MS-YOLOv3的检测速度比RefineDet、RFB Net、RetinaNet和SSD高11.96帧/s、14.46帧/s、27.45帧/s和12.4帧/s,但是比YOLOv3、YOLOv3+转置卷积和YOLOv3+特征融合降低了4.69帧/s、3.52帧/s、0.86帧/s,这是因为MS-YOLOv3模型中增加的卷积操作,导致检测速度有一定下降,但是仍然以较高的每秒传输帧数实现了实时检测。
3.5.2KITTI
不同方法在KITTI测试集上P-R曲线如图7所示。
图7 KITTI测试集上的P-R曲线
可以看出,MS-YOLOv3模型P-R曲线下方围成的面积大于其他算法,说明MS-YOLOv3模型的检测性能优于其他算法。YOLOv3和MS-YOLOv3在KITTI测试集上的检测效果对比如图8所示。
(b) MS-YOLOv3图8 KITTI测试集上车辆目标检测效果对比
可以看出,对相同图像进行检测时,MS-YOLOv3比YOLOv3有更少的漏检和错检,对场景中不同大小的车辆目标取得了良好的检测效果。
本文提出的MS-YOLOv3算法在特征提取时将位置信息明确的浅层特征与语义丰富的深层特征进行多尺度融合,使融合后的深层特征具有更加明确的位置信息,增强目标特征表示,提升模型的检测精度。同时使用转置卷积操作替换原有上采样方法中的最近邻插值法,增强模型的学习能力,进一步提升模型的检测精度。在Udacity和KITTI数据集上的实验表明,MS-YOLOv3在检测精度与检测速度上可以达到两者兼顾,满足对车辆目标进行实时检测的要求,且对不同尺度目标也有较好的检测效果。但MS-YOLOv3在检测目标时,需要将图片进行相应的缩放,导致大图像中的小目标经过缩小后变得更小,甚至与背景融合在一起,以至于无法检测出来。解决此类问题,将是未来主要的研究方向。