基于改进的YOLOv4高速公路车辆目标检测研究
2021-07-14王滢暄宋焕生梁浩翔余宵雨
王滢暄,宋焕生,梁浩翔,余宵雨,云 旭
长安大学 信息工程学院,西安710064
交通场景下的车辆目标检测是交通智能管理与安全监测中的关键技术,是实现智能多样化交通管理的基础,具有重要的研究价值。
传统的目标检测方法主要有三类:第一类是背景差分法,典型的代表有ViBe[1]、MOG[2]、MOG2[3]、GMG[4];第二类是帧差分法,主要是两帧差法[5]和三帧差法[6],利用视频序列中连续的两帧或几帧图像的差来进行目标检测和提取;第三类是光流场法[7],光流场法用相邻两帧中对应像素的灰度保持原理来评估二维图像的变化,能够较好的从背景中检测到相关前景目标。然而,传统方法存在鲁棒性差,适用性弱等缺陷。
近些年随着深度学习技术的火热发展,目标检测算法也从基于手工特征的传统算法转向了基于深度神经网络的检测技术。基于深度学习的目标检测模型可以分为两大类:(1)二步检测算法,其将检测问题划分为两个阶段,首先产生候选区域,然后对候选区域分类,采用非极大值抑制方法[8]确定目标检测结果,这类算法的典型代表是基于候选框的R-CNN 系算法,如R-CNN[9]、Fast R-CNN[10]、Faster R-CNN[11]等。(2)单步检测算法,其不需要产生候选区域,直接产生物体的类别概率和位置坐标值,比较典型的算法如YOLO和SSD[12]。单步算法准确度低,但速度块,小物体检测效果不好,漏检高。二步算法精度高但速度慢,训练时间长。
目前,应用最广泛的是YOLO系列算法。YOLOv1[13]在速度上表现不错,但对距离近的物体,还有很小的群体检测效果不好,泛化能力偏弱。YOLOv2[14]其检测精度和速度上都超过了上一代,但由于YOLOv2 的基础网络比较简单,检测精度的提升并不明显。YOLOv3[15]的底层分类网络darknet-53 性能更强,做到了检测精度与检测速度很好的平衡。同时,今年提出的YOLOv4[16]又进行了大规模的改进,在速度和精度上都有不错的提升,成为现阶段精度和速度表现都十分优异的检测算法。
现存的目标检测算法会受到场景变化的影响,且现有的大型公开数据集针对高速公路场景适用性不强。本文通过针对不同交通场景提出了与之对应的适用数据集,解决了因场景特征变化导致的误检和漏检问题,除此之外,本文采用YOLOv4检测算法进行车辆目标检测,为了提升检测性能,同时更好地依据检测结果构建一个具有广泛适用性的车辆信息库,本文在YOLOv4的基础上对网络结构进行了修改,在保证检测精度的同时检测速度得到大幅提升,提升了车辆目标的检测效果。
1 车辆目标数据集的构建
1.1 交通场景存在的问题
在实际交通场景下,车辆目标检测会存在很多问题。问题如图1所示,最常见的问题有四类:
(1)场景变化,由于交通监控的架设场景不同,监控视角和高度也会存在差异。例如隧道内的监控视角和场景特征与高速公路就会存在巨大的差异,这种差异就会导致检测准确率大大降低同时还会导致大量的车辆目标误检。
(2)不同时段的同一场景也有着很大差异,随着时间变化,场景图片的亮暗程度和可见度不同,特别是夜晚的车辆目标特征很难获取,由于夜晚场景下车辆灯光的极大干扰,目标车辆的车身轮廓无法准确获取,如果数据集不包含这种特殊夜晚场景数据,检测效果不理想。
(3)车辆目标在图片的不同位置会有明显的形变,同一车辆目标在图片远端位置与近端位置会发生明显的大小形变,会影响小目标的检测准确度。图1(c)中红色框是同一车辆目标在不同位置发生的明显形变。
(4)实际道路中的车辆目标广泛的存在车辆遮挡现象,此现象会导致将多目标检测为一个目标,出现漏检和误检现象。图1(d)红色框是车辆互相遮挡情况。
图1 目标车辆检测中的四类问题
以上四类问题的存在使得现有的大型公开数据集如COCO[17]、VOC[18]不适用于高速公路相机拍摄的视角,造成目标车辆的大量误检和漏检。
1.2 数据集构建
要想制作对场景而言丰富有效的数据集,首先就必须有足够的视频数据进行支撑。本文采用实时流协议(RTSP)进行视频的采集,采集流程如图2所示,RTSP是一个用来获取所需要属性(编码方式、分辨率或者帧率等)实时流以及控制实时流的应用层协议。再通过与其他的传输机制配合进行实时流传输。在RTSP 中,可以在SETUP 方法中设置一些参数,选择是用TCP 还是用UDP 作为RTP 的底层传输协议。在完成RTSP 的配置后,通过RTSP定义的URL可以访问获得视频流。编写脚本利用Opencv调用ffmpeg来读取RTSP视频流地址,在读取视频成功后,将视频进行逐帧保存,保存视频的编码格式为高质量的DIVX编码格式,保证图片的质量方便后续的车辆目标标定,帧率选定25 frame/s。
图2 监控视频采集
本文采集了多种场景下多种角度的不同时段视频,场景包括高速公路白天、高速公路夜间、高速公路雨天、隧道低视角以及隧道高视角。样本数据丰富,视频存储总量达到了1.5 TB,为建立多样化数据集奠定了良好的基础。
1.3 不同交通场景的车辆目标数据集构建
为了解决不同交通场景下目标数据集不匹配导致的检测不准确的问题,本文依据采集到的真实视频数据提出并构建了一个涵盖不同交通场景的车辆目标数据集,设计思路如图3 所示。数据集展示图如图4 所示。该多样化数据集包含了多个不同场景以及不同时段,建立多样化数据集的目的就是为了针对性的解决由于交通场景特征变化引起的误检率过高的问题,多样化数据集可以划分为三个子数据集,子数据集的样本情况如表1所示,这三个子数据集根据实际应用场景进行划分组织。
图3 多样化数据集示意图
图4 数据集展示图
表1 数据集样本情况
应用于白天时间段场景的白天应用数据集包含了不同路段的不同监控角度下的大量车辆标记样本。
应用于隧道特殊场景的隧道应用数据集包含了不同隧道路段以及不同视角的大量标记样本,其中还涵盖了隧道光照不好以及监控视角极低的特殊情况,大大增加了数据集对特殊交通场景情况的适用性。
现存的大规模交通数据集极其缺少夜间场景下的交通车辆标记样本,夜间场景下的车辆目标特征极难获取,车辆灯光对车辆目标的识别和标记会产生极大的干扰,样本标记难度很大。本文通过大量观察夜间实际行车数据,最终制定了针对夜晚的特殊标记尺度,远端灯光干扰无法辨认处放弃标记避免训练后结果出现大量检测错误,本文将标记区域限定在可以观察到车辆大致轮廓的监控近端,以此标准制作了一个交通场景夜间应用数据集,由于夜间实际场景的环境限制,数据集可识别区域有限,但在监控近端区域的识别准确率良好,此数据集弥补了夜间交通场景下车辆目标数据集和空缺,使得车辆检测在夜间也可发挥作用。
2 车辆目标检测网络优化
本文采用YOLOv4 网络来进行车辆目标的检测,网络结构如图5 所示,YOLOv4 属于单步检测算法,检测速度快,更容易运用到工程实践中,并且YOLOv4 在YOLOv3的基础上在输入端进行改进,Mosaic数据增强便是YOLOv4 提出的一个基于CutMix[19]数据增强的方法,Mosaic数据增强采用了将4张照片,随机缩放、随机裁剪、随机排布的方式进行拼接,丰富了样本的数量。同时,加入了SPP[20](空间金字塔池化)模块,更有效地增加主干特征的接收范围,显著分离了最重要的上下文特征,可以很好地解决本文开始提到的目标车辆在图片中因位置不同而出现的形变问题。在YOLOv4的基础上,本文还提出了应用多标签和图片拼接检测方法,使得检测性能得到了进一步的提升。在平均精度(mAP)和速度上,YOLOv4 远超YOLOv3 版本,mAP 提升了大约10个点,速度提升了大约12%,在精度差不多的情况下YOLOv4的速度更有优势。
图5 YOLOv4结构图
2.1 多标签检测
文献[22]提出经典模式识别问题中,类在定义上是互斥的。当类在特征空间中重叠时,会发生分类错误。并且研究了一种不同的情况,根据定义,这些类不是互斥的。文献[22]实验表明此工作可以推广到其他相同性质的分类问题。在此基础上,本文在多类别标签的基础上提出了一个多标签关联的思路。标签之间的约束判断流程如算法所示,首先判断输入图形是否为空,然后判断是否存在决定性类别,如果存在,则判断是否有颜色标签,没有缺省,若决定标签不存在,则直接进入下一目标的判断。
依据多标签关联的修改思想,本文提出并制作了一个多属性数据集,并在多标签之间建立约束关系。
数据集中的标签全部采用labelImg标注软件,同一车辆目标的不同属性标签对应的标注框坐标相同,只是标注类别不同,相当于在一个目标上有两个标注框,每个标注框有不同的类别标签。此数据是由隧道场景下数据组成的,隧道场景属于特殊场景,此场景下的车辆特征信息没有普通场景容易分辨,所以在此场景下加入多属性的车辆目标数据集有利于构建更完善准确的车辆信息库,以便于进一步的交通监测和优化。
在传统的单标签分类中,训练集中的每一个样本只有一个相关的标签,这个标签来自于一个不重合的标签集合。多标签分类与多类分类的主要差异就是在最后输出时多类分类只要找出概率最大的那一个标签值就行了,而多标签分类是找到前几个概率最大的标签值,也就是说要设定一个阈值,这个阈值可以人为设定或根据性能度量值设定。
对于多类分类,最后一层使用softmax 函数进行预测,训练阶段使用categorical_crosse-ntropy 作为损失函数,YOLOv4 中已经加入了多标签分类的网络结构,模型不再使用softmax 函数作为最终的分类器,而是使用logistic 作为分类器,对于多标签分类,最后一层使用sigmoid 函数进行预测,训练阶段用binary_crossentropy作为损失函数。
为实现logistic 回归分类器,在每个特征上都乘以一个回归系数,然后把所有的结果值相加,将这个总和带入sigmoid 函数中,进而得到一个范围在0~1 之间的数值。最后设定一个阈值,在大于阈值时判定为1,否则判定为0。以上便是Logistic 回归算法思想,公式(1)就是分类器的函数形式。这一属性使得其适合应用于多标签分类之中,通过对不同类别的判定使得一个目标可以有多个标签属性。
在此基础上对原有的多标签分类做了一些修改,使得标签之间加入了约束关系,决定性类别标签将影响并约束辅助性类别标签。多标签分类中不同类别的标签可能完全不相关,此情况下不同类别标签之间不存在互相约束关系,标签的判定完全依靠置信度,随着不同类别的置信度变化,多标签的显示也会变得混乱,也不利于目标信息的统计与整理。基于此情况,本文设定了一个决定性类别标签概念,并将辅助性类别标签作为关联项,这样标签之间就不再是完全不相关的状态,这些标签之间的联系也有利于检测结果的反向约束检查。
多属性数据集包含车辆类别和车辆颜色,车辆类别有Car、Truck、Bus 三类,车辆颜色有White、Blue、Red、Black,颜色情况如图6所示。其中车辆类别作为决定性类别标签,即车辆目标检测时,检测结果中首先要存在所属的车辆类别,如果存在车辆类别,再将检测到的颜色类别加入车辆属性中,否则在没有车辆类别的情况下,检测到的车辆颜色属性将没有意义,此时默认为没有检测到车辆目标。
图6 车辆颜色多标签属性
通过决定性类别标签的过滤,可以得到准确可用的车辆目标信息,丰富了特殊场景下的车辆属性信息库,多属性目标信息为特殊场景下的交通管控提供了更有利的先决条件,为更好地发展智能交通奠定了良好的基础。
2.2 基于YOLOv4的图像拼接网络设计
实际交通场景下的车辆目标检测对实时性要求高,只有满足实时性,通过目标检测得到的车辆属性信息库才有应用意义,同时因为实际交通道路场景下的监控数量众多,只有提高网络的检测性能才能满足工程应用需求。满足实际应用需求的首要条件就是在保证检测正确率的同时目标检测网络的检测速度足够快,YOLOv4对网络结构进行了轻量化修改使得在准确率相同的情况下速度要远远超过其他目标检测网络,这也是本文以YOLOv4网络作为基础的重要原因之一。
如图7 所示的飞机检测框架是基于SSD 添加了MultiBlock 层和MapBlock 层。通过MultiBlock 层将尺寸很大的遥感图像分解为512×512大小的小图,检测完成后,再通过MapBlock 层将每个块的预测结果都将映射回原始图像[21]。此方法在提升了检测速度的同时也保证了检测结果的完整性与准确性,证明了图像分割与拼接在深度学习目标检测中是可行的。通过对此方法的思考和延伸,本文决定采用先拼接后分解的思路来提升检测网络的性能。
图7 遥感图像中飞机检测网络结构
本文在YOLOv4 的基础上,在输入端加入一个Splicing layer网络层,将4张1 920×1 080的待检测图像拼接成一个3 840×2 160 的大图,拼接示意图如图8 所示。拼接完成后再进行检测,相当于四张图像只需要调用一次检测器,大大提高了车辆目标的检测速度。本文依据此思想,由于图像拼接后,整个图像变大,车辆目标相对原始图像变小,为了保证训练权重适用于拼接图像的检测,本文在多样化数据集基础上重新制作了一个拼接图像数据集,先将图片拼接后再进行样本数据标记工作,用拼接数据集进行深度神经网络训练,得到适用的检测所需权重文件。由于原图片的分辨率已经很高,拼接图片的大小就变得很大,导致训练速度变慢,但为了保证图像的质量,本文并没有对图像做缩放操作,尽可能地保证检测拥有足够的精度。
图8 网络示意图
在车辆目标检测完成后,本文还加入了对应的分解操作,因为检测到的结果是相对于拼接后的大图而言的,需将拼接后的图像检测结果回归到单一的图像帧中。分解层先通过对检测结果进行判断,判定检测框所在的原始图像,再根据不同位置图片对应的坐标位置对检测结果进行修改,从而完成检测结果的分解。经过上述Splicing layer 与Separate layer 的操作,在保证检测精度的同时,大大提高了检测速度。因此,改进的图像拼接网络可以满足实际工程应用中的实时性要求。
3 实验分析与结果
3.1 实验环境与实验数据集
硬件环境:系统类型为Windows10 64 位操作系统和基于x64 的处理器安装RAM 的内存64 GB,使用GPU 为NVIDIA GeForce RTX 3090,24 GB 显卡。软件环境:辅助环境为CUDA v11.1,OpenCV 4.4.0。
对发电机整体在安装弹性支撑为10kN/mm的弹性支撑时进行模态仿真分析,弹性支撑主要参数如表4和表5所示,前9阶振动频率如表6所示,其中前9阶静态刚度时振型如图3所示(由于前9阶振型一致只是频率不一致,动态刚度振型图在此省略)。
本文对不同交通场景运用了不同的对应数据集进行了测试,在实验部分所使用的数据如表2 所示,本文建立的数据集共计74 082 张图片,其中包含了不同场景、不同角度以及不同时段的丰富数据集。
表2 数据集样本数量
不同交通场景下足够丰富的样本量保证了训练结果的适应性和可靠性,提高了车辆目标检测的精度。
3.2 基于YOLOv4的目标检测模型实验
在训练时,将数据集的80%数据用于训练,20%数据用于测试。本文在原数据基础上进行了数据增广,通过Mosaic 方法对图像进行随机缩放,随机裁剪以及随机排布操作,本文设置图像随机旋转参数0.5,随机曝光参数1.5,饱和度参数1.5,丰富了训练数据。本文为设置学习率为0.001,训练最大迭代次数为50 000次,同时为了模型尽可能的收敛,在训练次数达到40 000 次时,调整学习率为0.000 5。输入到网络的图像,分辨率先调整为416×416,训练时采用batch 为8,以便网络快速的运行。模型训练loss 收敛情况如图9 所示,图中展示了随着迭代次数的增加,loss 的收敛情况以及mAP的变化情况。可以看出,无论场景,模型都均在迭代3 000 次时趋于收敛,随着loss 的降低,mAP 也达到了较高水平。
图9 模型训练loss收敛
卷积神经网络会提取图像目标的关键特征,本文检测目标有Car、Truck、Bus三类,每一类的特征如图10各类目标特征图所示,通过不同类别车辆在卷积网络中呈现的不同特征,即可对其进行分类与检测。
图10 分类目标特征图
本文使用以下指标对目标检测结果进行评估:
AP(Average Precision)即平均精度,是主流的目标检测模型的评价指标。要想正确的理解AP,需要用到Precision、Recall 以及IoU 这三个概念。交并比(IoU)衡量的是两个区域的重叠程度,模型产生的目标窗口与原来标记窗口的交叠率,即为检测的准确率IoU。计算公式如式(2)所示,理想情况下,IoU=1,即完全重合。
精准率与召回率(Precision &Recall):目标检测领域,假设有一组图片,里面有若干待检测的目标,Precision就代表模型检测出来的目标有多大比例是真正的目标物体,Recall就代表所有真实的目标有多大比例被模型检测出来了。根据图11,可以直观地看出TP 表示样本被分为正样本且分配正确,TN 表示样本被分为样本且分配正确,FP 表示样本被分为正样本但分配错误,FN表示样本被分为负样本但分配错误。计算Precision 和Recall的值依靠如式(3)、(4)所示:
图11 TP、TN、FP、FN示意图
根据公式计算数值后可以画出一条P-R 曲线,而AP就是对PR曲线上的Precision值求均值,为了使得到的结果更准确,对P-R 曲线做平滑处理,用积分的方式计算平滑曲线下方的面积作为最终的AP值。计算公式如式(5)所示:
F1-Score 又称F1 分数,是分类问题的一个衡量指标,常作为多分类问题的最终指标,它是精度和召回率的调和平均数。对于单个类别的F1 分数,计算公式如式(6)所示:
而后计算所有类别的平均值,记为F1,计算公式如式(7)所示:
mAP 即把所有的类别的AP 都计算出来然后求均值,计算公式如式(8)所示:
3.2.1 对不同场景下单标签模型的评估
根据上述评估维度,本文对训练出的不同应用模型采用对应的数据集中的测试集进行测试评估,评估结果如表3所示。
表3 单标签模型评估结果 %
从表3可以看出,白天场景模型的车辆目标检测效果最好,因为白天时段的可见度好、目标特征明显,得到的模型也更加精准。隧道场景下的光照条件较差,且隧道中的车速较低导致车辆间距小,更易出现车辆互相遮挡情况,特别是卡车或公交体型较大的车对其他车辆的遮挡比较严重,从而影响车辆的整体检测效果。夜晚模型的检测效果相对其他模型来说表现较差,这是由于夜晚时段目标的特征太难分辨,而且夜晚监控中的车辆灯光曝光度很大,使得目标的种类很难被辨认出来,导致检测效果不佳。从整体来看,所有模型的Bus检测准确率比其他类别低,主要因为Bus的样本数量大大少于其他类别。不过三种不同模型的mAP 都达到了80%以上,白天模型更是突破了90%,所以本文提出的模型是可靠的且完全适用于高速公路场景。
同时,检测网络无法精准的检测到小目标一直是目标检测中的一个关键问题,如图12 所示的实验测试结果,网络对图像中小目标的检测效果良好,即使视频远端的小目标也可以被正确的检测出来。
图12 小目标检测测试结果
3.2.2 对隧道多标签模型的评估
隧道多标签实验使用隧道场景测试视频,输入32 705帧分辨率为1 920×1 080 的视频,在车辆类别正确的情况下,统计车辆颜色是否正确。多标签模型实验结果如图13 所示,多标签模型车辆类别的统计结果如表4 所示,多标签车辆颜色统计结果如表5所示。
图13 多标签模型实验结果
表4 多标签模型车辆类别评估结果
从图13中的左图可以看出当车辆在特征容易分辨的监控近端时,车辆类别和颜色都可以正确的检测出来,多标签结果也正确标注在图上。从图13 中的右图可以看出,当车辆行驶到视频远端区域成为形变明显的远端小目标时,车辆类别仍然可以准确检测,但由于距离过远以及隧道光线昏暗,颜色信息无法准确获得,网络会对颜色标签进行缺省。
表4 展示了多标签模型实验中车辆类别的统计结果,三类车辆的检测准确率均可以达到90%以上,Bus的准确率略低,主要原因是Bus的样本数量与其他两类样本数量有较大差距,样本丰富程度不足,且Bus 的特征在光照不好的隧道场景下容易与Truck 产生混淆,从而导致检测准确率下降。
从表5 中可以看出,在车辆类别正确的前提下,检测到的颜色标签实际数量可以达到车辆实际数量的85%~92%,整体检测准确率可以达到应用要求。准确率较低的情况普遍是由于颜色类别所对应的车辆数目较少,特别是卡车和公交的样本颜色分布不均,模型对样本数量小的颜色识别准确率有限,后期可通过增加样本颜色数量来提升检测精度。
表5 多标签模型车辆颜色评估结果
3.3 基于YOLOv4的图像拼接网络实验
进行车辆目标检测效率实验,实验输入一个总计44 094 帧分辨率为1 920×1 080 的视频,验证图像拼接带来的速度效率提升效果,整体实验流程如图14所示,得到正确的检测结果后,根据不同位置图片对应的坐标位置对检测结果进行修改,完成检测结果的分解如图15所示。用无拼图网络和拼图网络分别进行测试并统计测试结果,测试结果如表6所示。
表6 图像拼接网络实验结果
图14 图像拼接网络实验流程
如图15(a)所示,输入四张原始图像,经过拼接网络拼接拼接后执行检测,得到拼接图像的检测结果如图15(b)所示,此时的检测结果坐标是依据拼接后的图像得到的,需要对结果进行分解,检测结果正确的显示到各原始图像上如图15(c)所示。
图15 拼接网络结果分解
坐标分解情况如图16所示,其中x、y代表检测框的左上角坐标,w、h代表检测框的宽高。通过检测框的坐标信息,将检测框回归到原始图像上,例如第一行的第一张图对应的检测框坐标x应当小于1 920,y应当小于1 080,第一行的第二张图对应的检测框坐标x应当大于1 920并小于3 840,y应当小于1 080,以此类推,将拼接检测结果正确地回归到原始图像。
图16 坐标分解结果
根据表6 中数据可以看出在保证平均检测精度(mAP)的同时,使用拼图检测网络的检测速度得到了大幅度提升,检测效率的提升可以使网络可以更好满足实际工程需要,为后期应用奠定了良好的基础。
4 结束语
本文首先构建了一个数据样本丰富的高速场景多样化数据集,数据集涵盖全天候下的高速公路监控不同路段以及不同视角的众多场景,提供了一个针对高速场景下车辆目标检测适用性极强的数据集。同时,本文使用YOLOv4网络进行目标检测,多样化数据集从根源上增加了对车辆目标的检测精度,基于该网络本文研究了多标签检测与拼图检测的方法,多标签检测丰富了目标检测的结果,有利于构建更完善准确的车辆信息库,以便于进一步的交通监测和优化。拼图检测大幅提升了网络运行效率,更加符合工程实践要求,这些改进能够在实际应用中发挥重大作用。