时间:2024-12-22
梁秦嘉,刘 怀,陆 飞
(南京师范大学电气与自动化工程学院,江苏 南京 210023)
随着计算机视觉的发展,研究人员越来越重视与运动目标检测相关的课题研究[1]. 伴随着城市智能交通的不断发展,针对交通视频中的运动车辆进行检测已成为当前一个重要的研究课题,该研究可为解决交通拥堵、提取交通违法证据等各种交通智能控制应用提供有效数据支持.
传统的运动目标检测算法主要是基于视频帧的[2],通过帧与帧之间的差异来判断目标是否运动,常用方法有帧间差分法[3]、背景减除法[4]、光流法[5]等. 此类方法极易受到背景信息的影响,导致检测精度较低,易造成误检和漏检[6]. 随着机器学习的不断发展,为了能够更好地完成检测工作,专业人员深入分析大图像的特点,结合实际需要进行方法多样化拓展. 目标检测工作首先需确认检测区域,全面分析检测目标属性,提取相应的特征,再进行类别划分[7]. 传统方法受较多条件限制,尤其在目标特征设置方面,只有按需妥善进行特征设计才能更精准地完成模型的建立. 此外,特征提取的准确与否直接影响目标的准确定位,多数情况下传统方法无法提取出目标高层特征,所表达的语义仅仅停留在低层范围内.
近年来,随着图形处理单元(graphics processing unit,GPU)硬件的快速发展,深度学习在目标检测领域取得了显著的进步[8]. 在特征提取过程中利用手工模式得到的结果不够精确,存在很多不足之处,这也是传统机器学习方法的弊端. 卷积神经网络的应用可弥补这一缺陷,提高研究结果的准确性. 近来在研究运动目标检测的过程中,更多专业人士注意到深度学习的积极影响,并以此为基础进行了运动目标检测算法的创新[9],提出了Fast-RCNN、Faster-RCNN等目标检测算法,通过新的算法所得到的计算结果精度更高,但仍有不足之处,如实时检测效率低,这主要是由于这些算法属于穷举法的范围[10]. 基于回归的检测算法可直接利用卷积神经网络的全局特征预测目标位置和类别,检测速度较快,常用的基于回归的算法有SSD[11]、YOLOv2[12]、YOLOv3[13]等. 相较于SSD,YOLOv3采用特征金字塔(FPN)的思想,在精度上比SSD有了很大提高;同时,YOLOv3采用残差结构,其运算速度超过了SSD. 但由于YOLOv3对视频进行检测时会检测出所有目标,并不适用于目标检测.
本文提出一种基于改进YOLOv3的交通视频运动目标检测算法. 首先,为进一步提高YOLOv3的检测精度,针对损失函数进行改进;其次,对非极大值抑制进行优化,减少同一目标的目标框重叠;最后,针对运动目标,提出一种基于目标框多中心点位移的检测算法.
图1 YOLOv3检测框与预测框的关系Fig.1 The relationship between the Yolov3 check box and the prediction box
YOLOv3算法将原始输入图像划分为S×S个网格单元格,如图1所示. 计算公式为:
(1)
式中,cx和cy表示每个网格的左上角坐标;(bw,bh)为预测的边界框的宽度和高度;(bx,by)作为一个中心坐标,可表明边界框的位置.
YOLOv3使用逻辑回归计算每个先验框的置信度为:
(2)
(3)
当目标出现时,需预测目标出现的类别,定义为:
(4)
模型预测值并不一定能够始终保持与真实值保持一致,这种情况可通过损失函数来进行描述. 损失函数作为重要参数,会对网络性能造成影响. YOLOv3算法的设计是围绕损失函数展开的,通过预测误差和边界框的置信误差及分类误差来设计,定义为:
(5)
1.2.1 优化边界框回归损失函数
交并比(intersection over union,IoU)是目标检测中一个非常重要的参数,是产生的预测框与原标记框的交叠率,即其交集与并集的比值. 现阶段IoU的应用范围越来越广,但作为目标检测任务的一种仍存在一些不足:(1)当预测边界框与目标边界框不相交,由IoU定义可得,IoU=0,此时IoU不能反映两个边界框之间的距离,同时,无法按照需求完成梯度回传,这是位置误差和置信度的特点所决定的,从而降低了网络学习效率;(2)若边界框的目标值和预测值在距离存在差异的情况下相交面积相同,最终得到的IoU结果也一致,就无法对两者重合度进行准确描述,从而影响网络性能.
为了改善这些不足,Rezatofighi等[14]提出了一种改进的GIoU方法,计算方法为:
(6)
式中,A和B分别表示预测边界框和目标边界框,C表示A和B的最小凸集. 相较于IoU,GIoU除了对重叠区域比较关注之外,还关注其他的非重合区域,能更好地反映两者的重合度. 当A与B处于不同点时,GIoU的值会随着其间距的增加而与-1无限接近. 1-GIoU代表损失函数,这也能够证明A与B之间的重合情况. 此外,还有一种情况会导致GIoU退化为IoU,即B包含A.
针对以上问题,本文对YOLOv3进行改进,采用DIoU作为边界框回归损失函数[15],其原理如图2所示,其计算过程为:
(7)
(8)
图2 DIoU原理示意图Fig.2 The DIoU schematic
相较于目前广泛应用的IoU和GIoU函数,DIoU更加符合目标框回归机制,综合考虑了目标与目标框之间的距离、重叠率及尺度,提高了目标框回归的稳定性,不会像IoU和GIoU一样出现训练过程中的发散等问题,可使检测精度更高.
1.2.2 非最大值抑制优化算法
非最大抑制(NMS)是目标检测算法中一个必要的后处理步骤. 非最大抑制算法的传统应用模式中检测框B是最早被确定的,对于被检测图片来说其与对应分数S都属于能够最先确定的值. 将分数最高的检测框标记为M,当M被确定时,就会被归属于检测结果集合D,离开集合B. 这种算法通过强制归零的方式来处理相邻检测框分数存在严重的弊端,若重叠区域内存在真实物体,就会影响检测结果.
针对以上问题,本文采用软化非极大值抑制(Soft-NMS)算法[16],通过设置衰减函数来解决重叠部分检测框的问题. 分数的高低会随着M和其余检测框之间重叠面积的大小而发生变化,重叠越大,分数越低,若所得检测分数影响不大则说明重叠面积很小. Soft-NMS实现便捷,节省了额外训练所消耗的时间和经济成本. 其算法流程如下:
Soft-NMS
Input:B={b1,…,bN},S={s1,…,sN}
1.D←{ }
2.whileB≠empty do
3.m←argmaxS
4.M←bm
5.D←D∪M;B←B-M
6. forbiinBdo
7.Si←Si·f(IoU(M,bi))
8. end
9.end
10.returnD,S
其中,B集合是检测到的所有建议框,S集合是各个建议框得分,函数f(IoU(M,bi))定义为:
(9)
式中,bi为边界框的序号;M为最高分;Nt为设定的阈值;σ为超参数.
与NMS算法相比,Soft-NMS算法增加了一个惩罚函数. 若一个预测框和M计算出的IoU超过了一定阈值,预测框不会被删除,但其分数会相应减少.
1.2.3 基于中心点位移的运动目标检测算法
在目标检测的最后阶段,检测层对所有检测出的目标框进行非最大值抑制. 通常,在进行非极大值抑制后,多余的目标框将被删除,剔除静止的目标,只保留运动的目标,从而实现运动目标检测. 为了判断目标是否发生了移动,需判断目标框是否发生了一定程度的位移. 针对检测过程中视频中每一帧的相同目标所生成的目标框位置不尽相同,本文提出一种基于目标框均值中心点位移的运动目标检测算法.
在进行非极大值抑制前,有多个目标框出现,这是由算法的特性决定的. 每个目标框的中心点坐标可由式(1)得出. 在得到每个目标框的中心点坐标后,对这些坐标在两个方向上分别求取加权平均值,得到新的坐标点(x,y),定义为目标框的均值中心点. 在对视频进行运动目标检测时,首先检测出当前帧的所有目标,并对检测出的目标求取均值中心点. 之后对视频下一帧进行目标检测,同样求出检测到目标的均值中心点. 对下一帧目标完成检测后,将下一帧所检测到的均值中心点与当前帧同一位置目标进行比较,若中心点坐标在x方向和y方向的位移偏移量超过一定阈值时,则判断该目标发生了运动. 由于每个目标在不同帧检测时得到的目标框位置可能会发生一定的变化,因此,通过一个中心点无法准确判断目标的运动情况. 当阈值设置较大时,若目标移动速度较慢,会导致目标被误认为未运动;当阈值设置较小时,由于每一帧生成目标框位置不固定,静止目标又可能会被误认为发生了运动. 对此,本文提出一种多点位移变化的方法,以准确判断目标是否发生了运动.
在检测到目标之后,将目标的多个检测框划分为3×3的网格,对每一个网格分别求取均值中心点. 实验表明,3×3的网格可准确判断出运动目标,同时不会增加过多的计算量. 为方便计算偏移量,本文将视频左上角设为原点建立坐标系,以中心点到原点之间的距离作为衡量指标. 以其中一个3×3网格为例,以视频图像的左上角为原点(0,0),在视频当前帧中求出9个中心点分别为(x1,y1),…,(x9,y9),之后,求出 9个中心点相对于左上角原点之间的距离y1,…,y9,计算公式为:
(10)
其中,n=1,2,…,9. 针对下一帧进行同样操作,下一帧中此目标的9个中心点分别为(x′1,y′1),…,(x′9,y′9),并计算出9个中心点相对于左上角原点之间的距离l′1,…,l′9. 当9个中心点相对于原点的位移偏移量超过设置的阈值时,则判断该目标发生了变化. 判定过程如图3所示.
(a)、(b)分别为视频中连续的两帧图3 多中心点位移偏移示意图Fig.3 Schematic diagram of multi-center point displacement offset
在网络改进后,为了能够对其性能和方法进行评测,本文以车辆目标为例,采用UA-DETRAC数据集在深度学习框架keras下对算法进行训练. 实验环境配置为:CPU为Intel i5-9400,主频2.90 GHz,16 GB内存,GPU为NVIDIA 1070,8 GB显存,操作系统为Windows 10.
本文对数据集进行重新标注训练,检测目标包含小型汽车(car)、公共汽车(bus)、大型货车(truck)3类. 为了提高训练效果,使用了不同角度旋转图像和改变图像的饱和度、曝光和色调等数据增强方法. 在训练阶段,初始学习率为0.001,权值衰减为0.000 5. 当训练批次为60 000和70 000时,学习率分别降至0.000 1和0.000 01,使损失函数进一步收敛.
本文中精度和召回率分别定义为:
(11)
(12)
式中,TP为检测正确的在运动的小型汽车数量;FP为将其他类型如卡车、公共汽车、行人及其他静止目标误检为运动的小型汽车的数量;FN为将小型汽车错误识别为其他类型的数量. 帧率为每秒检测的帧数.
利用优化后YOLOv3模型对UA-DETRAC数据集中的目标进行测试. 在所有目标检测阶段,针对所有车辆目标,采用不同算法进行实验,测试改进后算法的性能. 测试结果如表1所示.
表1 不同算法实验结果对比Table 1 Comparison of experimental results of different algorithms
从表1可知,YOLOv3模型经优化后目标精度可达84.75%,召回率为97.23%,各项数据均得到明显提升,检测速度也显著提升. Faster-R-CNN无论是加载ResNet101还是VGG16模型,速度都更慢. 只改进损失函数的YOLOv3-DIoU平均精度为78.27%,只改进非极大值抑制的YOLOv3-Soft-NMS的平均精度为79.52%,相比原YOLOv3算法均提升不大. 改进后的YOLOv3算法检测一帧图像的时间为31.35 ms,与同系列其他算法相比无明显增加,可满足实际应用时的实时性需求.
为了更加准确地验证检测有效性,本文进行了实践检验. 通过大量训练与检测的实验表明,当距离偏移量的阈值设置为7时,检测效果最好.
图4 改进YOLOv3算法运动目标检测效果图Fig.4 Moving object detection effect diagram of improved YOLOV3 algorithm
在第一个视频的第163帧,可以看到,本文算法准确检测到所有的运动目标. 在第二段视频中,在第78帧,本文检测到小型汽车与公共汽车共5个运动目标;在第268帧,公共汽车由于到站而停下,因此,本文算法将其排除,仅标注小型汽车一个运动目标. 在第三个视频中,中央的卡车停在路边,第166帧,上方与下方的车辆均在等红灯,只有中央三辆小型汽车运动;在第308帧,上方与下方的车辆开始通行,运动的车辆均正确检测,而静止的车辆被排除. 本文算法对视频的检测速度平均为20.35 fps/s. 由此可见,本文的算法可以实现对运动目标的检测.
本文以改进的YOLOv3检测算法测定运动目标. 首先,为进一步提高YOLOv3的检测精度,采用基于DIoU优化的损失函数进行计算;其次,对非极大值抑制进行优化,减少目标框重叠现象,提高了检测精度;最后,针对运动目标,提出一种基于目标框中心点位移的检测算法. 通过在UA-DETRAC数据集上与原始YOLOv3进行对比实验,本文所提出的改进算法不仅使检测结果更准确,同时也能够提高检测速度,准确率和召回率相比原始YOLOv3分别提高了8.07%和3.87%,对运动目标的检测速度可达20.35 fps/s,能够满足实时检测的要求.
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!