APP下载

基于改进卷积神经网络的交通场景小目标检测

2020-06-19郑秋梅王璐璐王风华

计算机工程 2020年6期
关键词:特征提取尺度卷积

郑秋梅,王璐璐,王风华

(中国石油大学(华东) 计算机科学与技术学院,山东 青岛 266580)

0 概述

随着社会经济的发展与城市化进程的加快,城市人口和机动车辆日益增加,城市道路交通的拥挤与阻塞已成为大中城市中普遍存在的问题。交通车辆识别系统通过快速准确检测交通道路上的机动车辆,对于维护道路交通秩序、保障道路交通安全畅通、引导车辆和行人通行等方面具有重要作用[1]。在交通目标识别过程中,小目标识别与跟踪是研究的关键问题之一。目前,卷积神经网络(Convolutional Neural Network,CNN)已被广泛应用于图像识别与目标检测,其避免了手工特征设计难度大的问题,且无需预处理就可从大量样本中学习更多的特征进行目标检测。现有基于CNN的目标检测方法主要包括基于区域的检测方法(如R-CNN[2]、Fast R-CNN[3]、Faster R-CNN[4]等)和基于回归的检测方法(如YOLO[5]、YOLOv2[6]、YOLOv3[7]、SSD[8]等)。

在基于区域的检测方法中,R-CNN采用固定尺寸的输入图像,训练步骤复杂且速度慢。Fast R-CNN在R-CNN的基础上,结合SPP-Net[9]提升了R-CNN的训练和检测速度,但由于其采用选择性搜索算法[10]提取建议框,导致网络检测速度依旧无法满足实时性要求。Faster R-CNN在Fast R-CNN的基础上,使用RPN网络提取建议框,提升了检测精度与速度,但仍不能够满足实时性要求。

在基于回归的检测方法中,YOLO检测速度可达到45 frame/s,由于其无需生成建议框,因此存在严重的定位误差,而损失函数设计也存在不合理之处,导致部分靠得较近或尺寸较小的目标检测精度不高。YOLOv2采用Darknet-19结构作为特征提取网络,大幅提升了检测速度,但由于其结构简单,对于小目标的检测精度提升仍较有限。SSD算法采用VGG[11]作为特征提取结构,利用不同卷积层的特征信息增强提取特征的表征能力,具有较高的检测准确率,但由于SSD提取的特征单一,因此在小目标检测方面性能仍不佳。YOLOv3在YOLOv2的基础上,利用ResNet网络[12]增加特征提取的网络层数,以Darknet-53结构作为特征提取网络,获得接近于ResNet101的检测效果,ResNet网络的残差块结构和跳跃连接机制有效解决了网络加深导致的梯度弥散和梯度爆炸问题,同时特征金字塔网络(Feature Pyramid Network,FPN)[13]融合多尺度特征信息,提高了检测精度,但过深的网络结构容易使得浅层特征层中的目标位置信息丢失,导致较高的漏检率,从而不利于小目标的检测,因此相比YOLOv2检测速度较慢。

综上所述,对于智能交通中小尺度车辆检测精度仍有较大的提升空间。在复杂背景的交通图像检测中,浅层特征具有较高的分辨率及更强的位置信息。深层特征具有较强的语义信息,但位置信息较粗糙。随着网络结构的加深,导致浅层特征信息利用不充分,致使许多小目标位置信息丢失。另外,过于复杂和冗余的网络结构以及过多的参数会导致训练复杂、数据需求增加以及检测速度降低[14]。

在实时小目标检测方法中,YOLOv3结合Darknet-53结构和融合多尺度FPN结构,取得了较好的检测性能,但YOLOv3的特征提取网络过深,没有充分利用浅层特征进行融合,并且损失函数设计也存在不合理之处,因此降低了检测速度。本文提出改进的S-YOLOv3方法,使用ResNet网络优化YOLOv3的特征提取结构Darknet-53,增强低层特征的表征能力。应用FPN获取目标的4个尺度特征,通过充分融合浅层特征和深层特征信息,增强小目标物体、相互遮挡物体的检测效果。另外,改进原损失函数,通过调整不同大小的目标对损失函数的影响权重,降低大目标误差对小目标的影响,从而加速模型收敛,提升小目标检测精度。

1 YOLOv3方法

YOLOv3方法按照特征图的尺度划分为S×S的网格,每个网格预测B个边界框并对C个类别的目标进行检测,最终输出每类目标的边界框并分别计算每个边界框的置信度。置信度由每个网格中所包含的检测目标概率和输出边界框的预测框与真实边界框的并交比(Intersection over Union,IOU)共同确定。

YOLOv3设定每个网格单元预测3个anchor box,每个anchor box预测3个边界框,每个边界框预测4个值,分别为tx、ty、tw、th,若目标中心在单元格中相对于图像左上角有偏移(cx,cy),如图1所示[7],则进行修正,具体公式[14]为:

bx=σ(tx)+cx

by=σ(ty)+cy

bw=pwetw

bh=pheth

其中,pw、ph表示网格对应anchor box的宽和高,计算边界框的位置,通过设定合适的置信度分数,过滤低分的预测框,对剩下的预测框执行非极大值抑制[15]处理,得到最终的预测结果。

YOLOv3方法改进了YOLOv2的Darknet-19,以更深的Darknet-53结构作为新的特征提取网络,如表1所示,该特征提取网络利用ResNet网络的残差块结构和跳跃连接机制,由52个卷积层和1个全连接层组成,交替使用1×1和3×3的滤波器进行卷积。残差块是若干层的集合,并不是直接输出特征表示,而是输出特征表示和输入之间的残差,使用该残差块加上原始输入可以得到所求的特征表示。该跳跃连接机制使得每个残差块只需拟合残差,解决了反向传播梯度弥散问题,并且降低了每个残差块数据拟合的复杂程度。虽然更深的网络层可以提高特征提取能力,但是随着网络的加深,复杂的网络结构及过多的参数会使训练过程更繁琐,从而增大数据需求并减慢检测速度,因此YOLOv3采用Darknet-53结构。

表1 YOLOv3网络结构

同时,YOLOv3借鉴了FPN的思想,如图2所示,采用3个不同尺度的特征层来预测待检测目标,输出3个尺度规格分别为13×13、26×26、52×52的特征图,在网络输出的后两个特征图上进行采样,与网络前期相应尺度的特征图融合成有效信息进行预测。相比YOLOv2和YOLO,YOLOv3在损失一定速度的基础上提升了检测精度,但仍能较好地满足实时性要求。采用多尺度融合的检测方法对于图像中不同尺寸的目标检测具有较好的鲁棒性,但仅利用3个尺度的特征对浅层信息的利用并不充分,会导致含细节信息的低层特征没有得到充分利用,许多小目标的位置信息丢失,不利于小目标的检测。

图2 YOLOv3中的FPN多尺度融合

2 S-YOLOv3方法

2.1 特征提取网络

受ResNet网络结构的跳跃连接机制和残差块结构的启发,本文特征提取网络在原始YOLOv3 Darknet-53结构的基础上进行改进,构建Darknet-50结构。过渡层为交替使用的1×1和3×3卷积层,使用1×1的卷积层有助于平滑提取的特征,避免下采样过程中丢失更多的特征信息。在特征提取的卷积过程中继续利用ResNet结构进行恒等映射与残差分支,注重浅层特征信息的提取,同时去除YOLO检测层前的两组卷积层,简化网络结构。在保证检测满足实时性要求的前提下,提升检测精度并降低漏检率。

本文设计的Darknet-50网络结构如表2右侧所示,左侧为原始YOLOv3的Darknet-53结构。改进后的特征提取网络Darknet-50更加注重浅层特征的信息提取,去除了冗余的卷积层,过渡层增加的1×1卷积层可以有效避免下采样过程中丢失更多的特征信息,进一步增强目标特征的判别能力。

表2 改进前后的YOLOv3网络结构对比

2.2 多尺度融合

在复杂背景的图像检测中,小目标一般只有几十甚至几个像素,特征提取网络从这些少量像素中能提取出的语义信息非常有限。在特征提取过程中,浅层特征具有较高的分辨率及更强的位置信息,深层特征具有较强的语义信息,但位置信息比较粗糙。根据图像梯度上升法[16],利用不同层提取出的特征对原始图像进行重构,得到的含细节信息的低层特征比含语义信息的高层特征更有助于目标检测。原YOLOv3使用3个不同尺度的特征图来预测待检测目标,输出3个尺度规格分别为13×13、26×26和52×52的特征图,在网络输出的后两个特征图上进行采样,与网络前期相应尺寸的特征图融合成有效信息进行预测。但是,仅利用3个尺度的特征对浅层信息的利用并不充分,会导致许多小目标的信息丢失。

本文对YOLOv3中多尺度检测模块进行改进,从原3个尺度检测扩展为4个尺度,构成4个分支结构,如图3所示,输入尺寸为416×416,每个分支共享从ResNet网络中提取的特征,并对13×13、26×26、52×52的分支进行两倍上采样操作,将上采样后的特征层与浅特征层进行级联,在4个尺度的融合特征图上分别进行独立检测。改进后的多尺度融合可以从浅层特征层中学习较强的位置特征,融合上采样后的深层特征进行更细粒度的检测。通过融合更多尺度的浅层特征信息,增强特征金字塔的表征能力,提升小目标的检测精度,降低漏检率,并通过非极大值抑制算法去除冗余框。其中,YOLOv3沿用了YOLOv2采用的K-means聚类方式初始化anchor box,不同于Faster R-CNN和SSD的人工设定,可以更加符合本身数据的特点。在目标检测过程中,anchor box数量和大小直接影响检测精度和速度,因此anchor参数设定十分重要。通过k-means聚类[17]选取合适的IOU可使模型在召回率和精确度之间取得平衡。根据IOU和anchor box之间的关系,本文采用12个anchor box。

图3 S-YOLOv3检测过程

2.3 损失函数

对于YOLOv3损失函数,文献[7]中没有进行具体说明,本文根据开源Darknet及对比YOLOv2,得出YOLOv3损失函数为:

loga(pi(ci))+(1-p′i(c))loga(1-pi(c))]

在YOLOv3原损失函数中,坐标误差采用平方和损失函数,置信度和分类误差采用二元交叉熵损失函数。交叉熵损失可以避免误差较小时的梯度消失问题,只有当预测值和实际值无限接近时,loss才能趋近于0,平方差损失在进行梯度下降计算时会出现梯度弥散,导致学习速率下降,并且使用交叉熵可以避免梯度消散问题。

理论上损失函数应尽量保证大边界框的偏差重要性小于小边界框的偏差重要性,而原损失函数由于直接预测边界框的宽度和高度差的平方,因此当目标的宽高比很小时,边界框的宽度重要性容易被低估,即大的待检测对象会对损失函数产生更大的影响,而小的待检测对象的损失函数通常会被忽略,在面对较小的待检测目标时,边界框可能无法捕获目标,使得损失函数的输出较小,从而对检测精度产生影响。

针对上述问题,本文损失函数的改进思想为:对检测目标的宽度和高度部分进行加权,考虑真实目标边框的尺寸,降低大目标误差对小目标检测效果的影响,使得小目标和大目标对损失函数的影响程度相同。改进后的损失函数为:

(1-c′i)loga(1-ci)-

(1-c′i)loga(1-ci)-

(1-p′i(c))loga(1-pi(c))]

改进损失函数的坐标误差不仅使用平方和损失,而且考虑真实边框的尺寸,根据检测目标的大小调整其在损失函数中的权重,这样改进后的损失函数在面对较小的目标时,不会因其误差过小而被忽略,也不会因大目标物体的误差过大而掩盖小目标物体的误差,进一步修正了损失函数的准确性,加速了模型收敛,从而有效提升小尺寸目标检测的准确率。

3 模型训练

3.1 数据集设置

KITTI[18]由德国卡尔斯鲁厄理工学院和丰田美国技术研究院联合创办。KITTI数据集是目前国际上最大的自动驾驶场景下的计算机视觉算法评测数据集,包含市区、乡村和高速公路等场景中采集的真实图像数据,每张图像最多有15辆车和30个行人,并且有不同程度的遮挡和截断,数据分布如图4所示。

图4 KITTI数据分布

本文将实验数据集按照Pascal VOC[19]数据集格式进行整理,按比例将数据分为训练集和测试集。KITTI数据集中的原始数据被分为Road、City、Residential、Person和Campus 5类典型样本,具体细分为Car、Van、Person、Truck、Pedestrian、Cyclist、Tram和Misc类别。本文实验选用4个类别标签:Car,Van,Truck和Tram,选取该数据集中的7 481张图片作为实验数据,如表3所示,其中,4 000张用于验证数据集,3 481张用于测试数据集。

表3 实验数据分布

3.2 训练过程

将提取卷积特征的Darknet-50先在ImageNet上进行预训练,缩短训练时间。缩放输入图像至416×416,在Darknet-50残差网络中提取特征,使用4个不同尺度的卷积特征层预测车辆位置和坐标类型。本文选用分批梯度下降法[20]寻找损失函数的最小值,通过K-means聚类算法自动生成合适的anchor box。在KITTI数据集上,S-YOLOv3选用4个尺度的12个anchor box,分别为(12,26)、(15,45)、(24,23)、(29,51)、(33,81)、(35,54)、(46,100)、(54,67)、(87,105)、(105,170)、(150,245)、(165,321)。

为增强对比性,在整个训练过程中初始值设置参考YOLOv3,最大迭代为50 000次,初始化学习率为0.001,batch_size为64,decay为0.000 5,momentum为0.9。根据损失下降的趋势,适当调节学习率和batch_size值,直至训练数据集输出的损失函数值小于等于阈值或达到设置的最大迭代次数时停止训练,得到已训练的S-YOLOv3网络。

4 实验结果与分析

4.1 多尺度融合改进效果测试

为比较卷积神经网络在改进尺度检测模块前后的效果,本文在YOLOv3网络中进行多尺度融合检测实验,并在KITTI数据集中进行测试,结果显示尺度检测从原来的3个尺度改为4个尺度后,查全率从91.47%提高到93.97%,平均精度均值(Mean Average Precision,mPA)如图5所示。可以看出,增加到4个尺度后的YOLOv3检测mPA比3个尺度的YOLOv3有提升,说明改进后的4个尺度模块对提高查全率和查准率均有较好效果。

图5 YOLOv3在不同尺度时的平均精度均值对比

图6为3个尺度和4个尺度的YOLOv3在KITTI数据集上对图像的检测效果。可以看出,4个尺度的YOLOv3可以检测到远处更多的较小车辆的位置信息,提高了查全率,较3个尺度的YOLOv3检测效果更好。

图6 3个尺度和4个尺度的YOLOv3检测效果对比

4.2 损失函数改进效果测试

为验证改进的损失函数对于目标检测的性能,实验在保证其他参数不变的情况下训练原始YOLOv3和改进损失函数的S-YOLOv3检测模型,对比两个检测模型的迭代次数与收敛效果,如图7所示,改进损失函数后的检测模型收敛速度更快。

图7 损失函数-迭代次数曲线图

在KITTI数据集上进行测试,如表4所示,YOLOv3在其他结构均不做改动的情况下,仅通过修改损失函数mPA就可得到1%左右的性能提升,且对小目标的检测效果提升更显著。根据表4结果显示,本文改进的损失函数可以调整检测大目标和小目标的损失影响权重,缩短收敛时间,学习效果更好,目标平均检测精度优于原损失函数。

表4 KITTI数据集测试结果

4.3 整体网络结构改进效果测试

通过整合以上所有改进过程,形成S-YOLOv3网络。实验对比Fast R-CNN[3]、Faster R-CNN[4]、YOLO[5]、YOLOv2[6]、YOLOv3[7]、SSD[8]、S-YOLOv3等方法在KITTI数据集上的检测效果,通过检测速度和mAP评价指标评估本文提出的S-YOLOv3方法的性能,如表5所示。

表5 8种检测方法在KITTI数据集上的效果对比

根据实验结果得出,本文S-YOLOv3方法在满足实时性要求的前提下,在KITTI数据集4个标签类检测中以52.45 frame/s检测速度获得了93.30%的平均检测精度,虽然检测速度低于SSD(300×300)方法的58.32 frame/s,但mAP高于SSD约12%,这是因为本文采用ResNet改进特征提取网络和损失函数并融合多尺度检测算法,通过增强小目标特征信息并调整大目标损失对小目标损失的影响,提高小目标检测精度,在满足实时性要求的同时提升了平均检测精度。

图8显示了本文S-YOLOv3与YOLOv3方法在KITTI数据集上的检测结果对比。可以看出,对于同一图像中的车辆目标检测,本文S-YOLOv3方法在查准率和查全率方面均具有较好效果,尤其体现在小目标检测中。

图8 S-YOLOv3与YOLOv3方法在KITTI数据集 上的检测结果对比

4.4 结果分析

本文在上述实验结果的基础上,将选用的4类标签数据按照尺寸大小分为小目标、中等目标以及大目标[21],分类原则为(0,32]、(32,96]、(96,416)。按照该策略评估本文检测方法对小目标的检测效果,实验以查全率(Recall)和查准率(Precision)为评估指标。通过比较P-R曲线下面积(Area Under Curve,AUC),验证本文方法的性能。图9~图11显示了在KITTI数据集上使用5种检测方法对大小不同的3个类别目标检测的P-R曲线。可以看出,本文改进的S-YOLOv3方法获得了最佳性能,虽然在面对中等目标和大目标时与YOLOv3和SSD(300×300)方法相当,但是在小目标检测中,AUC值均高于其他方法,验证了本文方法的有效性,且在小目标车辆检测中性能提升明显。

图9 小目标类的P-R曲线图

图10 中等目标类的P-R曲线图

图11 大目标类的P-R曲线图

5 结束语

本文针对YOLOv3方法在小目标检测中速度较慢的问题,提出改进的城市交通车辆检测方法S-YOLOv3。利用ResNet网络和多尺度卷积特征图优化特征提取网络及融合更多尺度的特征层,并改进损失函数调整大小目标对损失值的影响权重,同时利用K-means算法生成anchor box。在KITTI数据集上的实验结果表明,本文方法通过融合深层语义特征增强特征金字塔的表征能力,从而加速模型收敛,保证实时的检测速度,并且在车辆检测精度方面优于现有目标检测方法。后续将在不同数据集上进行实验以加强检测模型的泛化能力,同时将侧重图像特征及数据增强的研究,通过增加不同尺寸输入图像的检测提高模型鲁棒性。

猜你喜欢

特征提取尺度卷积
基于3D-Winograd的快速卷积算法设计及FPGA实现
财产的五大尺度和五重应对
卷积神经网络的分析与设计
基于Gazebo仿真环境的ORB特征提取与比对的研究
从滤波器理解卷积
基于Daubechies(dbN)的飞行器音频特征提取
基于傅里叶域卷积表示的目标跟踪算法
Bagging RCSP脑电特征提取算法
宇宙的尺度
基于MED和循环域解调的多故障特征提取