基于Faster RCNN和YOLOX模型融合的路况检测算法
2023-10-11汪前进汤贇栋汪弋琛仲兆满
汪前进, 汤贇栋, 汪弋琛, 仲兆满
(1. 江苏海洋大学计算机工程学院, 江苏 连云港 222005; 2. 清华大学深圳国际研究生院物流与交通学部, 广东 深圳 518055)
随着我国人均车辆拥有率不断提高, 交通道路安全已成为备受关注的重要问题.路况检测是自动驾驶中的关键技术之一,可以帮助车辆识别路面标志牌、行人和其他车辆等目标,有效实现安全驾驶.针对目标检测问题, 目前已有若干种结合深度学习算法的解决方案[1-4].在路况检测方面, Kumar等[5]提出了一种基于多层卷积神经网络的改进SSD(single shot multibox detector)算法, 通过选取最佳长宽比值卷积核,有效提高了目标检测的精度,但由于算法依赖于默认框对场景的适应度, 难以保证算法的实时性; 杨薇等[6]提出基于Faster RCNN的车辆实时检测改进算法; Tabernik等[7]则改进了Mask RCNN算法, 提出一种基于几何外观和视觉失真的分布式数据增强技术, 使其适用于大规模路标检测和识别问题, 但由于分类网络丢失数据使算法的精度有所下降; Li等[8]提出了一种基于改进的Faster-RCNN模型的多物体检测和识别的交叉层融合方法, 适用于复杂交通环境,该方法利用VGG16的五层结构获取更多的特征信息, 在小物体目标检测方面取得较高精度, 但是未能解决Faster-RCNN对于全局信息提取与近物识别效果不佳的问题; Carrasco等[9]提出了从全息视角瞄准微小道路目标的识别方法, 结合多尺度模块和空间注意机制调整了YOLOv5模型, 从而提升了YOLO模型对小目标的识别精度,但该算法仅针对特定场景的检测有较大的精度提升,鲁棒性不强; 王超等[10]提出采用深度学习YOLOv2 模型的方法将目标检测视作回归问题, 获得交通标识的类别和位置; 邹雁诗[11]以MobileNets作为特征提取网络, 提出了协作驾驶场景目标检测模型.现有研究多通过单一类别模型完成目标检测, 虽然通过改进模型在一定程度上提高了检测效果, 但在实际路况监测中难以兼顾检测精度与效率.在以YOLO为代表的单阶段目标检测算法和以Faster-RCNN为代表的二阶段目标检测算法中, YOLO对近距离目标检测的精度和速度较好, 但对远距离目标物的检测效果不佳; 而Faster RCNN对远距离目标的检测具有较好的精度, 但对全局信息提取与近物识别效果弱, 且两阶段算法耗时长, 难以实现实时检测.为了克服单一算法目标检测的局限性, 本文融合Faster RCNN和YOLOX-Tiny模型设计路况检测算法, 对交通标识牌和车辆进行目标检测, 并基于双目摄像头进行车辆距离检测, 以期通过模型融合的方法提高驾驶安全预警反馈的速度和准确性.
1 模型融合目标检测算法
图1为具体的模型融合结构图. 先将像素为P×Q的图像按比例缩放至M×N, 然后分别输入YOLOX-Tiny和Faster RCNN模型中进行检测,再将各自检测结果按预设权重计算出最终结果.
图1 模型融合结构图Fig.1 Model fusion structure diagram
YOLOX-Tiny是YOLOX轻量化版本,结构精简, 检测速度快, 其算法框架主要分为骨干网络、颈部和检测头.相较于标准模型, 此模型弱化了Mosaic并将Mix移除, 在性能较差的硬件平台也能有很好的检测效果, 提高了算法的兼容性.该模型由convolutional spatial module(CSM), convolutional spatial unit(CSU)和convolutional component unit(CCUCR)三部分组成.CSM由卷积层和Sigmoid函数及Mul函数组成, 用于提取图像的低级特征, 如边界和色彩; CSU为特征提取层, 包括2个CSM层和Add函数, 可提取图像的高级特征,如形状和结构; CCUCR为分类层, 用于识别目标的不同部分,以便确定目标的位置和类别.在如图1所示的YOLOX-Tiny网络结构中, 将大小为M×N的图像经切片操作后输入特征提取网络, 经2个CSM层提取图像特征后分别使用4个CSM层、2个CCUCR层和2个CSM层、4个CCUCR层进行分类, 在所有CCUCR层之后均采用上采样以确保细节特征和分辨率, 从而更好地实现小物体目标检测效果, 最后将特征融合并转置输出.
Faster RCNN模型[13]是RCNN系列算法中性能最佳的通用目标检测算法之一.在驾驶过程中, 驾驶员须预知前方道路状况,而大多数目标检测算法对于小目标的检测效率都较低,甚至不能识别[14]. 本文采用Faster RCNN网络结构以大幅度提高小目标检测精度和降低容错率.在如图1所示的Faster RCNN网络结构中, 主要包括特征提取网络、区域候选网络(region proposal network, RPN)、兴趣域(region of interest, ROI)池化、分类回归等4个模块.首先将大小为M×N的图像输入特征提取网络, 使用13个卷积、13个线性整流和4个池化提取图像的特征图; 然后将特征图输入RPN, 经过3×3卷积生成多个兴趣域.RPN结构中通过Softmax函数对锚点进行正负分类, 然后计算锚点的边界框回归偏移量, 以获得精确的候选值.候选层则负责综合正锚和对应的边界框回归偏移量获取修正后的候选值, 剔除过小和超出边界的候选值.修正后的候选值被投影到特征图上, 再通过ROI池化层缩放为7×7大小的区域特征图, 然后将区域特征图展平到全连接层,通过Softmax函数归一化,计算类别概率向量,并结合通过边框回归修正物体的精确位置, 输出兴趣区域中物体所属的类别以及物体在图像中的精确位置.
YOLOX-Tiny对近距离目标具有较高的检测精度和速度, 但可能无法检测远距离目标, 故本文模型在进行远距离目标检测时主要依靠Faster RCNN模型, 进行近物识别时主要依靠YOLOX-Tiny模型.采用长沙理工大学CCTSDB数据集(http://www.shujujishi.com/dataset/b3604431-16e2-4771-be74-ae694a2bb4c3.html)测试并确定两种模型的权重.当目标处于适中距离时, 测试YOLOX-Tiny模型的权重在0.6~0.9范围内取不同值时融合模型的检测精度. 平均精度(mean average precision, mAP)和每秒传输帧数(frames persecond, FPS)的结果见表1.表1结果显示, 当YOLOX-Tiny权重为0.7时, 融合模型的效果最好.
表1 YOLOX-Tiny模型不同权重下融合算法的检测结果
2 路况检测
路况检测具体流程如图2所示.首先通过双目摄像头进行路况拍摄, 然后将拍摄截图按照预设尺寸进行缩放后输入已训练的模型中, 获得目标物的分类和坐标,最后根据目标物坐标计算距离, 当检测距离小于安全距离时,通过语音提示驾驶员.
图2 系统流程图Fig.2 System flow chart
考虑到目标检测算法计算资源消耗较大, 如果选用阴影检测或图像处理后再进行检测,会导致系统整体响应速度大幅降低.实际路况检测时, 模型时效性远大于精确性, 宜选用简单模型以保证检测时效性.图3是本模型通过双目摄像头检测目标物距离的原理图.以地平面上点Oa为中心建立Oaxayaza坐标系, 左右相机分别位于Oaxaya平面上与ya轴等距离的两侧, 相机离地面高度均为h.左右相机光心分别为Ol和Or, 基线b=|OlOr|.相机的成像平面经旋转后位于镜头前方, 分别以左右相机成像中心Fl和Fr建立Flxlylzl和Frxryrzr坐标系, 焦距为f.三维空间目标物的P点在左右相机的像点分别为Pl和Pr.视差d=|OlOr|-|PlPr|, 故|PlPr|=|OlOr|-d=b-d.令|PP′|为目标P到双目摄像头的垂直距离, 记作Z, 该垂线交PlPr于Q, |P′Q|=f.根据相似三角形理论, |PlPr|/|PQ|=|OlOr|/|PP′|,即(b-d)/(Z-f)=b-Z, 故目标P到双目摄像头的距离Z=bf/d, 式中视差d可通过检测到的目标在图像中的位置坐标计算得出, 焦距f以算法检测目标为焦点时返回的数值为依据,b为双目摄像头固定参数.
图3 双目系统获取目标距离原理图Fig.3 Schematic diagram of binocular system for acquiring distance to target
3 实验结果
本实验选用长沙理工大学CCTSDB数据集对模型进行训练, 数据集包括指示标志、禁止标志、警告标志、非机动车、机动车等5种类型, 训练集与测试集的比例为8∶2, 训练平台为Python3.8, 显卡为NVIDIA GTX 3060 12 GB.
为了验证算法的检测能力, 将本文模型与YOLOX-Tiny、Faster RCNN、YOLOv3-Tiny、SSD算法进行对比实验.各模型均进行了200轮次的训练, 然后分别对远处目标、近处目标、简单场景、适中场景和复杂场景的数据进行预测.其中,目标占摄像头捕获图像上部的1/3位置为远处目标, 占图像下部2/3位置为近处目标; 仅前方有车辆的高速道路为简单场景; 前方、侧方都有车辆的高速道路为适中场景; 前方、侧方有车辆, 且有交通标识牌的高速道路为复杂场景.表2为各场景下目标检测模型的性能对比.其中AP50是以预测框和实际框重合面积占总面积的比例大于50%为阈值计算的平均精度.由表2可知, Faster RCNN的mAP比本文算法高3.5%, 但本文算法的FPS提升了30.6帧·s-1; 其他算法与本文算法的FPS相差不大, 但是本算法在mAP上具有明显优势.综合而言, 本文的模型具有较好的检测性能.
表2 目标检测模型性能对比
图4为近处和远处目标检测的损失函数曲线.由图4可见, 随训练次数的增加, 各算法的损失函数曲线均趋于稳定, 未出现过拟合现象.远处目标检测中, YOLOX-Tiny与YOLOv3-Tiny的损失函数曲线波动较大且最大值较高, 说明YOLO模型对于远处目标检测能力不稳定.YOLOv3-Tiny整体效率不如YOLOX-Tiny, 原因是YOLOX相较于YOLOv3新增了无锚点模型.检测近处目标时, 各算法的损失函数曲线相近, 但在远处目标检测中本文算法的优势明显, 相较于YOLOv3-Tiny和YOLOX-Tiny在初始阶段对远处目标检测能力较弱的情况得到了明显的改善.相较于SSD和Faster RCNN, 本文算法的损失函数曲线也更平滑.结合表2结果, 基于加权平均法进行的模型融合算法计算量小, 检测性能佳,兼顾了检测速度和精度两方面的需求.不同于常用的以牺牲部分检测速度换取高精度的自助聚合和堆叠法, 基于加权平均法的模型融合算法更适合于在高速公路以及非密集人员区域的交通道路条件下, 对驾驶员的视野边缘区域目标进行检测, 有助于提高驾驶安全性.
图4 近处(a)和远处(b)目标检测的损失函数曲线Fig.4 Loss function curves for near (a) and far (b) target detection