鲍日湧, 张康宜, 林 毅, 连培昆
(福建农林大学 交通与土木工程学院, 福州 350002)
随着智能交通系统的快速发展,交通目标检测技术显得尤为重要. 高效准确的交通检测不仅关系到道路交通管理决策的科学性,也是智能驾驶等新技术实现的基础[1]. 传统的交通检测算法主要基于特定场景的需求进行繁琐的手工设计,往往不具有通用性,当图像的场景或者识别的角度变化时,容易导致效果不佳,难以适应复杂多变的交通场景执行车辆检测任务[2-3]. 近年来随着深度学习技术的快速发展,基于计算机视觉结合深度学习的交通检测方法取得了很大的进展,并逐渐成为该领域的主流方法. 这种基于图像处理的方法可避免传统硬件传感器车流检测的弊端,不受天气条件的影响. 相比传统车辆检测方法,它具有更强的鲁棒性以及更广的适用场景. 目前主流的目标检测算法代表有YOLO系列[4-5]、SSD系列[6]等单阶段检测算法和RCNN[7]、Fast RCNN[8]等两阶段检测算法. 尽管两阶段检测算法检测精度更高,但其效率较低,计算耗时更长. 而单阶段检测算法更简单高效,可在一阶段直接提取特征并输出目标类别和位置,计算速度更快,算力要求也更低. 因此,目前大部分交通目标检测任务仍以使用单阶段算法为主,且有大量的学者在YOLO检测算法的基础上改进得到不错的效果. 李珣等[9]等通过对道路场景的分析,改进了YOLO-voc网络模型,改善了道路车辆目标检测率低及鲁棒性差的问题;胡习之等[10]通过融合Camshift与YOLOv4的车辆检测算法,根据哈希值来选择不同的检测方式的方法,在检测速度方面得到了明显的改善;蒲玲玲等[11]提出了1种基于动态IOU阈值的非极大值抑制算法,解决了车辆相互遮挡问题,提高了算法的跟踪精度;邝先验等[12]通过在YOLOv5s网络基础上添加卷积注意力模块,同时加深网络主干的方法,以提高在车辆目标小与遮挡较多复杂场景的检测精度;袁小平等[13]以YOLOv4算法框架结构作为基础,提出改进注意力机制的多尺度特征,提取融合检测网络. 在保证基本的实时性的基础上,更适用于复杂交通场景下的混合目标检测任务;董天天等[14]提出了1种基于AlexNet融合改进的 YOLOv3 网络模型,不同天气状况使用不同方法去除干扰,大大提升了在复杂天气条件下的检测精度. 虽然相比改进前在检测精度方面有所提升,但其在部分特定场景的表现仍有空间. 如,对于有大量非机动车且无机非分离、地面受到阳光反射、交通流比较拥堵的道路和视频远处行驶的车辆,上述方法大多存在着误检、漏检等检测精度不足的问题. 除此之外,官方提供的YOLOv5预训练模型对于一些特定的交通场景,也存在着误检、漏检的情况. 例如,使用官方的模型识别电动摩托车时,通常只能识别到车上的人,一定程度上影响了数据的精准性. 同时,使用特定场景制作的数据集所训练出来的模型也仅在特定的交通场景表现理想,对其他交通场景的适应性较差. 针对上述问题,本文通过对数据集的预处理,加入公共数据集与特定场景标定的数据集进行融合,在此基础上使用官网提供的预训练模型迁移学习并进行测试及性能比较,验证模型检测的精准率和鲁棒性.
YOLOv5是在YOLOv4的基础上改进新思路,具有速度更快、检测精度更高、文件更小等特点. YOLOv5网络主要分为输入端、骨干网络、颈部网络、头部网络4个部分. 输入端采用Mosaic数据增强的方法,这种方法采用4张图片,随机缩放、裁剪、排布的方式进行拼接,可提高数据的多样性,特别是随机缩放增加了很多小目标,让网络的鲁棒性更好. YOLOv5将自适应锚框计算嵌入到代码中,每次训练不同的数据集都有初始设定长框的锚框. 在开始训练时自适应计算训练集中的最佳锚框值. 自适应图片缩放,因为不同的图片长宽也不相同,因此需要将原始图片统一缩放到1个标准尺寸. 自适应图片缩放技术尽量保持高宽比,缺的用灰边补齐达到固定的尺寸,再输入到网络中进行检测. 骨干网络主要是用来提取特征的网络,其作用就是提取图片中的信息,以供后面的网络使用. 由Focus结构,CSP结构组成,其中Focus结构最重要的是切片,将图像切片后变成特征图,再经过卷积核进行卷积操作. 而CSP将之前所有层的输出特征连接起来,作为下一层的输入,最大化网络层间的宽度,由梯度信息结合的思想,让高网络层间的宽度和稀疏连接来提升网络的学习能力. 颈部网络采用FPN+PAN结构,FPN是自上向下的1个特征金字塔,把高层的强语义特征传递下来,但是FPN中间经过多层的网络后,底层的目标信息已经非常模糊,因此PAN又加入了自底向上的路线将低层的定位特征传递上去,弥补并加强了定位信息. 头部网络拥有3种不同尺寸的特征图像,根据各特征生成预测框进行非极大值抑制,保留局部类别置信度较高的预测框.
图1 YOLOv5网络结构
1.2.1 数据处理部分
图像数据集的质量直接影响着车辆识别模型的性能好坏,当前常用的数据集有PASCAL VOC2012、KITTI和COCO数据集等,本文普适性结构设计选用的是COCO2017数据集,COCO 2017数据集是 1个常用的大型图像数据集,其图像均采集自真实场景,类别较为丰富,且每张图像不仅有边界框标注,还有分割标注,以及图像描述的文本标注,它的图像和标注真实反映复杂场景,是测试算法泛化能力的好基准,也是训练和评价算法的重要资源. COCO数据集中的图像分为训练集118 287张、验证集5 000张和测试集40 670张,一共有80个类别.
1.2.2 结构设计部分
YOLOv5的普适性结构部分主要是针对模型整体而言,目的是提高模型的泛化能力和鲁棒性. 首先采用预训练权重可提高模型的泛化能力和鲁棒性. 在实际应用中,不同的数据集可能存在一些相似之处,通过使用预训练权重,可更好地利用这些相似之处,从而减少对数据集的依赖,提高模型的泛化能力. 同样地,使用冻结主干网络则保持了底层特征提取网络的权重不变,仅更新后面的检测头部网络. 这将大大减轻对大量标注数据的需求,避免模型过度拟合当前数据集. 冻结主干网络具体实现代码见图2. 在训练过程中使用随机梯度下降法,以优化参数调整并提高预测性能. 该方法能快速找到损失函数的局部最小值,从而加快训练进程,比较适用于大型数据集,同时设置回调函数,记录验证集上性能最佳的模型参数,以保证检测性能.
图2 冻结主干网络代码实现
1.3.1 数据处理部分
有限的数据集,想要获得1个效果较好的模型比较困难,因为数据量的不足很容易导致模型过拟合. 为了解决这个问题,使用迁移学习的思路. 首先使用在大型的公开数据集上预训练的模型,然后再在自建较小的数据集进行微调. 因此本文使用的是交叉口视频数据,这些视频拍摄于不同时段的卡口,包含多样化的场景和车辆,对这些图像进行了手工标注. 标注工具采用Darklabel开源软件的2.4版本. 标注后的数据与COCO数据集合并在一起,作为迁移学习所需的数据集. 相比于从零开始训练,迁移学习可充分利用COCO数据集上预训练好的模型,并使用额外标注数据进行微调,使模型更好地适应目标场景. 同时,不同视角、不同时段所拍数据的多样性,也为模型泛化提供了支持. 在有限数据条件下,这种方式可获得1个效果更佳的模型.
1.3.2 结构设计部分
YOLOv5的特适性结构部分主要是针对模型的检测能力和性能而言,目的是提高模型的检测精度和鲁棒性. 在检测中,同一目标可能会出现许多大小不同的预测框、很多冗余的预测框,通过NMS操作可删除冗余检测的结果. YOLOv5算法中原有的NMS中,IoU是唯一的筛选规则,缺点是会将相邻的检测框的分数均强制归零. 由于测试场景会出现很多重叠的现象,在筛选2个靠近的物时有可能就直接筛选掉另外1个物体的筛选框,导致漏检的情况,从而影响检测精度. 因此本文使用DIoU-NMS算法[15],代替经典的NMS算法,DIoU-NMS在NMS的基础上,不仅考虑了相邻两预测框重叠的部分,还考虑了相邻2个预测框中心点间距离的问题见式(1):
(1)
式中,si为当前类别的得分;IoU为预测框和真实框的交并比;HDIOU为DIOU损失函数的惩罚项;α为预测框中分数最高的那个框;Bi为相比较的边界框;ε为NMS的阈值;ρ2(b,bgt)为预测框和真实框中心点的欧拉距离;c为预测框和真实框最小外接框的对角线长度.
在普适性场景中,常见的车辆检测场景包括城市道路、高速公路、收费站、停车场等. 这些场景中车辆行驶畅顺、车速相对较快且车辆密集有序,比较容易进行车辆检测. 然而,特殊场景则比较复杂. 例如含有摩托车的城市道路场景. 这类场景的车辆不仅包括普通的机动车,还包括摩托车和电动车等,这些车辆的速度和大小都存在较大差异,因此需要更为复杂的车辆检测算法和技术. 此外,特殊场景还包括交通拥堵严重的路段、夜间光线昏暗的路段以及雨雾等恶劣天气条件下的路段. 这些场景中的车辆行驶速度缓慢,车辆密度大,需要更为高效的算法和技术才能准确地进行车辆检测.
本文自定义的数据集类别设定了5类检测目标:行人、摩托车、小汽车、公交车、货车. 为了减少训练时间,通过代码将COCO数据集80个类别中非本文需要的75个类别的数据删除后,只保留部分相关图片共计13 541张. 但是COCO2017中并没有摩托车这一类别,而需要检测的视频中摩托车占大部分,因此就需要加入大量的摩托车数据集,通过采集交叉路口固定机位所拍摄的视频,选用了3 581张图片制作人工数据集. 最终的总数据集一共有 17 122张图片,部分数据集图片见图3.
图3 部分数据示意图
其中人工数据集使用的是Darklabel2.4多目标跟踪标注工具标定,Darklabel支持对视频进行半自动化跟踪框选,大大减轻了人工标注量. 在标注过程中,通过加载目标监控视频,利用Darklabel绘制并跟踪标定目标框,输出标定文件. Darklabel可生成多类别多目标的矩形边界框,输出格式支持Pascal VOC标准的XML文件,保证了数据格式与COCO数据集的一致性. 最后将准备好的数据集放入模型中训练,选取指标最优的模型进行结果分析. 具体实验过程设计见图4.
图4 实验流程设计
模型的训练和测试操作系统为:Ubuntu22.04、CPU为Intel® Xeon® Silver 4216、GPU为Tesla T4 16G、Python 3.8、PyTorch1.6. 为了避免在训练过程中破坏骨干网络的特征提取能力,同时可加快训练速度. 训练时利用框架提供的接口,将主干层的前10层冻结住,保持前几层不变,这将大大加快了训练模型的速度. 本次部分网络超参数设定如表1所示.
表1 训练参数设置
在目标检测中,对模型的性能评价指标[16]包括查准率(Precision)、召回率(Recall)、平均精确率(AP)、均值平均精确率(mAP)见式(2)~(4):
(2)
(3)
(4)
式中,TP为真样本被识别为真的数量,即被正确识别的车辆目标;FN为真样本没有被识别出来的数量,即被漏检的车辆目标;FP为假样本被识别为真的数量,即被误检的车辆目标;n为总类别的数量.
本次实验一共进行100轮训练,每10轮次保存 1个训练模型,最后输出均值平均精确率的变化情况,见图5. 均值平均精确率的指标从0.839逐步提高到0.901,整体上呈现稳步上升的趋势. 在前 15轮,模型性能进步最快,均值平均精确率从0.839提高到峰值0.893. 此后指标仍有波动上升,但速度开始放缓,大多数轮次保持在0.89~0.90这个区间. 特别是在最后20轮左右,均值平均精确率指标基本稳定在0.901上下浮动,说明模型训练已经进入稳定期. 从整个过程可看出,均值平均精确率指标与训练轮次之间呈现出典型的机器学习训练曲线分布,在早期快速上升后逐渐达到饱和.
图5 均值平均精确率(mAP)
为了验证本文提出模型的优势,在YOLOv5预训练模型基础上融合预处理的COCO数据集和特殊场景人工数据集后微调训练出来的模型YOLOv5-A与其他常见模型[17-18]在同一数据集下进行对比,测得实验结果见表2.
表2 测试结果
由表2可看出YOLOv5-A相比于YOLOv3-tiny、YOLOv4、YOLOv5查准率分别提高了9.4%、11.2%、5.4%;召回率分别提高了12.8%、15%、6.4%;均值平均精确率分别提高了8.9%、10.9%、5.0%;分析可知,本文提出的YOLOv5-A对比其他常见模型均有所提升,检测速度也高于大多数模型,其FPS可达到 44 FPS. 这说明YOLOv5-A模型不仅可保证高精度的检测性能、满足不同应用场景的检测需求、实现对多类别目标的准确识别,还具有很强的实时检测能力. 其检测速度和精度的协同提升使其泛化能力强,可适应更广域的交通环境,完成复杂条件下的多类别交通目标检测与识别.
为了更直观地对比改进后模型的检测效果,选取复杂情况的道路进行测试,识别效果对比见图6,可看出YOLOv5检测算法会将摩托车上的人一并识别出来,还会把小汽车误识别为货车,这将导致在最后进行交通流统计的时候会产生很大的干扰,而改进后的模型YOLOv5-A不仅准确的检测出,而且对其进行了正确的分类,因此在复杂道路情况下改进后的模型的表现更好.
图6 识别效果对比
本文基于普适性和特适性需求融合的交通检测方法研究,以改善针对于特殊交通工具类型的场景适应性较差问题. 通过对模型的普适性与特适性架构的设计,首先在预处理的COCO数据集上添加大量特殊交通工具类型的样本数据集,其次在YOLOv5预训练模型上迁移学习,通过冻结主干网络提升训练速度,并使用DIoU-NMS算法代替经典的NMS算法,从而提升检测效果. 实验结果表明,YOLOv5-A对于复杂场景的识别相比于YOLOv3-tiny、YOLOv4、YOLOv5的平均准确率均值mAP分别提高了8.9%、10.9%、5.0%,且在不同的场景下依然具有良好的鲁棒性,优于同类型模型的检测效果,并且其实时性也能达到车辆检测的要求.