Advertisement

基于YOLO的自动驾驶目标检测研究综述

阅读量:

摘要:自动驾驶是人工智能发展领域的一个重要方向,拥有良好的发展前景,而实时准确的目标检测与识别是保证自动驾驶汽车安全稳定运行的基础与关键。回顾自动驾驶和目标检测技术的发展历程,综述了YOLO算法在车辆、行人、交通标志、灯光、车道线等目标检测上的应用,同时对比分析了精确性与实时性等性能,阐述了自动驾驶目标检测研究领域将要面临的挑战、可能的解决方案和潜在的发展方向。
关键词:自动驾驶;目标检测;YOLO算法

交通是一个国家经济发展的重要基础产业。随着人们生活水平的提高,汽车已经成为人们日常出行的重要交通工具。据公安部统计,2021 年我国汽车保有量达3.02 亿辆[1]。但汽车提供方便的同时,全国的交通事故数量居高不下,据估计,90%的车祸是由人为失误造成的[2]。传统汽车驾驶需要驾驶者高度集中注意力,时刻注意周围环境的变换,然而疲劳、噪音、天气、心理等多方面因素都会影响驾驶者的判断,进而可能产生危险。作为未来汽车的发展方向,自动驾驶汽车拥有自主判断能力,能较大程度地减少人为失误。同时,自动驾驶汽车能更好地节能减排、减少污染[3],有良好的应用前景。
为使自动驾驶汽车能够安全稳定地运行在道路上,对于参与道路交通的各类目标,如:车辆、行人、交通标志、灯光、车道线等,自动驾驶车辆都需要做出实时精确的检测以及判断。对实时目标的精准检测、识别并做出判断是保证其运行的基础与核心。
目前,国内外学者围绕自动驾驶技术做了不同领域的综述,邓伟文等[4]综述了自动驾驶测试领域自动生成仿真场景的方法,吕品等[5]综述了自动驾驶数据处理的边缘计算技术,Zamanakos 等[6]对基于激光雷达的目标检测进行了综述。本文则围绕深度学习的YOLO系列算法在自动驾驶目标检测识别中的应用进行综述,并对其在提升实时检测的效率与精度方面做出相应的总结与展望。

1 自动驾驶简述

自动驾驶汽车中的自动驾驶系统是多技术融合的产物。所谓自动驾驶即通过多种车载传感器(如摄像头、激光雷达、毫米波雷达、GPS、惯性传感器等)来识别车辆所处的周边环境和状态,并根据所获得的环境信息(包括道路信息、交通信息、车辆位置和障碍物信息等)自主做出分析和判断,从而自主地控制车辆运动,最终实现自动驾驶[7]。根据车辆的智能性程度,2021 年8 月20 日,工信部批准发布了GB/T 40429—2021《汽车驾驶自动化分级》标准[8]。该标准将自动驾驶划分为L0~L5 等级,具体分级标准如表1 所示。
20 世纪80 年代,卡内基梅隆大学提出了最早的在结构化环境中驾驶的自动驾驶汽车项目[9],以及慕尼黑联邦大学提出高速公路驾驶项目[10]。1986 年,全球第一辆由计算机驾驶的汽车NavLab1 诞生,1992 年,国防科技大学成功研制出中国第一辆无人驾驶汽车[11]。此后,DARPA大挑战[12-13]等项目不断推动自动驾驶的技术向前发展。
在学术界之外,汽车制造商和科技公司也开展了研究,开发自己的自动驾驶汽车。2000 年,美国通用汽车开发了一套自动碰撞预警/防止系统,夜视和后视报警系统的应用使得汽车具备L0 的应急辅助功能[14]。各种高级驾驶辅助系统,如自适应巡航控制(adaptivecruise control,ACC)、车道保持辅助和车道偏离警告技术,为现代汽车提供了部分自主权,车辆进入L1 的部分驾驶辅助阶段;宝马、奔驰、大众、通用、特斯拉、上汽、吉利、小鹏等品牌汽车在2017 年基本都已实现L2 级别的整车落地与推广,该级别车辆一般搭载有的车道内自动驾驶、换道辅助、自动泊车功能;2020 年后,多款汽车(奔驰、通用、特斯拉、吉利、小鹏等)开始导入L3 与L4 级别以上的自动驾驶[15]。但至今,L2 级别的汽车依然是企业商业化发展的重点。这些技术不仅提高了现代汽车的
安全性,使驾驶变得更容易,而且还为完全自主的汽车铺平了道路。在自动驾驶技术中,提升环境的感知能力能提供更安全的运行环境。

2 面向自动驾驶的目标检测

2.1 评价指标

在介绍目标检测的算法之前,需要了解在目标检测中常用的评价指标。在判断分类的精度一般使用准确度(accuracy)、精确度(precision)、召回率(recall rate)、AP(average precision)、mAP(mean average precision)等,在判断定位的精度一般使用交并比(intersectionover union,IoU),在判断运行的速度时一般采用FPS(frames per second)。
假定待分类目标只有正例(positive)和负例(negative)两种,则有以下四个指标:(1)TP(true positive),被正确识别成正例的正例;(2)FP(false positive),被错误识别成正例的负例;(3)TN(true negative),被正确识别成负例的负例;(4)FN(false negative),被错误识别成负例的正例。


(4)AP 由P-R曲线和坐标围起来的面积组成,用于表示不同召回率下检测的平均正确性。mAP 为各类别AP 的平均值,用于对所有目标类别检测的效果取平均值。性能越好,比值越高。
(5)IoU 表示的是“预测的边框”和原图片标注的“真实边框”的交叠率,是两者交集与并集的比值。比值达到1 时预测的效果达到最佳。
(6)FPS 是目标检测的速度性能评价指标,检测速度代表目标检测算法与模型的计算性能。FPS 即每秒处理图片的帧数,数值越大代表检测速度越快。

2.2 目标检测算法

早期的自动驾驶车辆系统严重依赖精确的传感器数据,利用多传感器设置和昂贵的传感器(如激光雷达)提供精确的环境感知。这些自动驾驶车辆的参数由开发人员设置,并在模拟和现场测试后手动调整[16-17]。这种方法的缺点是需要大量时间手动调整参数[18],而且很难推广到新的应用场景。继深度学习广泛应用于图像分类和语音识别等领域后[19-20],人们开始将深度神经网络(deep neural networks,DNN)应用在自动驾驶车辆上,包括规划和决策[21]、感知[22]以及地图和定位[23]。
目标检测与识别是自动驾驶的感知系统的重要组成部分,在目标检测领域近10 年具有代表性的算法如图1 所示。基于深度学习的目标检测算法包含有Two-Stage 目标检测算法和One-Stage 目标检测算法两类。在深度学习的Two-Stage 目标检测的经典主流算法主要有R-CNN[24]、SPP-Net[25]、Fast R-CNN[26]、FasterR-CNN[27]、R-FCN[28]以及NAS-FPN[29]等。Ross Girshick等[24]于2014 年提出的R-CNN 算法是第一个工业级精度的Two-Stage 目标检测算法,后期基于分类的Two-Stage 算法虽然在检测效果上有了很大提升,但是在算法的速度上,还是不能满足目标检测任务对于实时性的要求(如表2 所示)。
随着One-Stage 目标检测算法的提出,目标检测的效率得到了大幅度的提升,使将其应用于自动驾驶系统中的目标实时感知检测成为可能。One-Stage 目标检测算法是学者们提出的新的一类基于回归思想的检测算法,其中典型的两类算法是SSD(single shot multiboxdetector)系列[30]和YOLO(you only look once)系列。2016 年Redmon 等人提出YOLO算法[31],开创性地将检测问题转化为回归问题,使用卷积神经网络来直接完成目标类别的判定和边界的预测。真正意义上实现了目标的实时检测,开启了目标检测One-Stage 算法的新纪元。
YOLO系列算法满足了目标检测的实时性,但在检测精度上却做出了一定的牺牲,尤其是YOLO v1 对于分布密集的小物体,更是极易出现漏检的情况。近几年Redmon 团队不断改进YOLO 算法,将其更新至YOLOv3[32-33]。2020 年,Bochkovskiy 等人[34]在此基础上改进并发布了YOLO v4,后续YOLO v5 以及YOLO X 版本的更迭,使得YOLO系列算法更适用于工程实践,其精度及实时性都得到改善(见表3),学者们开始将YOLO算法应用到自动驾驶目标的实时监测。

2.3 YOLO算法在自动驾驶的应用

随着自动驾驶车辆和深度学习目标检测不断的研究,学者们将改进后的YOLO算法应用到自动驾驶车辆目标(车辆、行人、交通标志、灯光、车道线等)的实时监测中。

2.3.1 交通标志的检测

在交通安全中,交通标志识别的准确性在高级驾驶员辅助系统、自动驾驶车辆中发挥着关键作用。
Zhang 等[35]通过添加新图像和变换图像扩展了中国交通标志数据集(CTSD),形成新的数据集CCTSDB(CSUST Chinese traffic sign detection benchmark),并在YOLO v2 算法网络的中间层采用多个1×1 卷积层,在顶层减少卷积层,降低计算复杂度。Yang 等[36]同样选择了CCTSDB数据集,分别使用YOLO v3 和YOLO v4 训练训练集。通过测试对比为其在数据集测试中IoU的变化(如图2),YOLO v4 在目标检测方面优于YOLO v3。Dewi 等[37] 则使用生成式对抗网络(generativeadversarialnetworks,GAN) 生成更逼真和多样化的交通标志的训练图片,将合成图像与原始图像相结合,以增强数据集并验证合成数据集的有效性。使用YOLO、YOLO v3 和YOLO v4 迭代。图像混合后识别性能得到了提升,在YOLO v3上mAP(平均精度值)为84.9%,在YOLO v4 mAP 为89.33%。
Mohd-Isa 等[38]通过在YOLO v3 框架中包含空间金字塔池化(SPP),进一步识别真实环境中的远小交通标志。Mangshor 等[39]使用YOLO训练模型以进行识别五种警示交通标志,包括十字路口、右十字路口、左十字路口、马来西亚交通标志的学童横穿和碰撞。实时物体检测的测试结果在交通标志检测和识别上都达到了96.00%的准确率。
吕禾丰等[40]调整了YOLO v5 算法的损失函数,使用EIOU(efficient intersection over union)损失函数代替GIOU(generalized intersection over union)损失函数来提高算法的精度,实现对目标更快速的识别;使用Cluster NMS(non-maximum suppression)代替Weighted-NMS 算法,提高生成检测框的准确率。
在使用YOLO算法进行交通标志的研究过程中,一般分为以下方式进行改变:(1)扩建数据集或者强化数据集。文献[35]扩充了中国交通标志的数据集,文献[37]通过虚拟图片强化原有数据集,但是在实验过程中涉及识别的数据类型并不完全,标注识别的数据围绕三大类:指示标志、禁止标志、警告标志;(2)修改算法的损失函数或网络结构,通常在保证一定的检测速度优势的基础上提升原算法的检测精度,文献[38]添加池化层,文献[40]使用GIOU损失函数取代(如表4 所示)。

2.3.2 交通灯的检测

交通信号图像是道路上最重要的信息之一,交通信号灯检测是智能车辆和驾驶辅助系统的重要组成部分。Jensen 等[41]应用了实时目标检测系统YOLO,检测公共LISA交通灯数据集,该数据集包含大量在不同光照和天气条件下捕获的带标签的交通灯,达到了90%的准确率。Possatti 等[42]使用YOLOv3 模型,与智能汽车使用的先验地图相结合,识别预定义路线的相关交通灯。
该实验的数据集分类过程中只考虑了两类对象:红-黄和绿交通灯。通过混合红色和黄色信号灯的方式,克服黄色样品的不足,实现实时的现实交通信号灯的检测。
Gao 等[43]使用YOLO v3 和YOLO v4 算法对道路上的交通信号图像进行检测和识别实验,结果表明,YOLO v4网络的准确率高于YOLO v3 网络。
在交通信号灯的检测过程中,在较长时间内使用的公共数据集偏小,无法提供足够的标签来训练,深度神经网络。文献[41]通过合并样本的方式解决数据问题,文献[44]则创建了一个覆盖多种自然环境的大型的数据集。

2.3.3 交通车辆的检测

随着交通需求量的提升,道路交通压力也在不断的增加。不同的车辆类型都需要进行检测,包括机动车与非机动车。
叶佳林等[45]在YOLO v3 框架下,设计特征融合结构和采用GIOU 损失函数,降低非机动车漏检率,提高定位准确度。Zhou 等[46]将毫米波雷达与摄像机信息融合,利用时空同步关联多传感器数据,通过YOLO v2 算法实现深度融合对车辆的目标检测识别。张成标等[47]改动原YOLO v2 网络框架,添加改进的残差网络(如图
3)和Kelu 激活函数来提高检测准确率,添加多尺度层来提升对图片中不同尺寸目标的检测精度。Chen 等[48]提出YOLO v3-live,是在Tiny-YOLO v3的网络层结构上进行裁剪,量化网络中的网络参数,这种方式降低了嵌入式设备的计算复杂度,速度得到提升可以达到28 FPS,但是在同样的数据集上,mAP 降低了18%。Wu 等[49]在YOLO v5s 神经网络结构的基础上,提出了YOLO v5-Ghost。调整了YOLO v5s 的网络层结构。计算复杂度降低,更适合嵌入式设备。用该结构实现车辆和距离的实时检测,YOLO v5-Ghost 的检测速度提高19 FPS,但是mAP 降低3%。在使用YOLO算法进行交通车辆的研究过程中,文献[45]使用GIOU损失函数,文献[47]添加KeLU激活函数来提升监测精度。文献[45]根据实际情况修改候选框的值、增加多尺度检测,能在一定程度上降低漏检率,提升不同尺度目标的检测精度(如表5 所示)。上述文献所使用的数据集并不统一,测试出的准确度仅限参考。

2.3.4 行人的检测

在交通中,行人同样是研究的重要部分。智能或无人驾驶车辆需要检测行人,识别他们的肢体运动,并了解他们行为的意义,然后再做出适当的响应决策。Lan 等[50]在YOLO v2 的网络结构中,将穿透层连接数从16 层改为12 层,检测速度得到提升,同时由实验结果看降低了漏检率(Miss Rate)(如图4)。

全部评论 (0)

还没有任何评论哟~