王靖逸,刘树惠
(武汉邮电科学研究院,湖北 武汉 430074)
随着我国经济的高速发展和社会的不断进步,人均收入大幅增长,机动车的保有量也年年攀升。但是人们的道路安全意识却没有随之提升,国内重大交通事故频频发生,道路交通安全已经成为当今社会的一个重要问题。而十几年来GPU 等硬件性能的不断提升以及近年来大数据技术和互联网技术的快速发展,使得车载智能驾驶辅助系统甚至无人驾驶成为可能,进而可以使用这些新兴技术来解决因驾驶时人为因素而导致的交通事故问题。交通标志识别是车载智能驾驶辅助系统与无人驾驶技术环境感知环节的必要部分,道路交通标志能够被准确识别出来,并且能将识别出来的交通标志反馈至驾驶员、智能驾驶辅助系统和无人驾驶车辆决策端,对提升道路交通安全具有非常重要的意义[1]。
针对上述问题,该文提出了一种基于改进YOLOv4的交通标志识别方法,通过对YOLOv4 的主干CSPD arknet53 修改使其在速度与准确率方面达到平衡。通过实验表明,其识别率与速度较原版均有一定提升,具有一定的应用价值。
YOLOv4 算法是基于YOLOv3 算法的改进算法,对原型YOLOv3 算法在诸多方面进行了改进,使其相对于原版算法在检测速度和检测精度两方面均有较大提升。YOLO 系列算法(YOLOv1[2]、YOLOv3[3]、YOLO9000[4]等)最早是由Redmon 等人提出的,该算法主要思想是通过将整张图片作为神经网络的输入,中间不进行通道信息交互,使其最终能直接在输出层输出所需的回归后卷积、目标框位置信息和类别信息。不同于以Faster R-CNN[5]为代表的两阶段算法需要在中间层生成候选区域,单阶段的YOLO算法采用直接回归的思路,实现了端到端的结构,这使得算法在输入的图片大小为448×448 时,每秒帧数(Frames Per Second,FPS)能够达到45,经过改进后的精简版本Fast YOLO 的FPS 甚至可以达到155,其检测速度远远快于Faster R-CNN。在这之后又陆续提出了YOLOv2 和YOLOv3 两种升级版本算法,用于解决YOLO 算法存在的对小目标和密集目标检测效果差以及泛化能力较弱这两个主要问题。之后Alexey[6]继续改进,诞生了YOLOv4。
YOLOv4 算法使用引入了CSP 模块[7]的CSPD arknet53 替代了原本的Darknet53 作为特征提取层,换用Mish 激活函数[8]和Dropblock[9]。之后插入了SPP(Spatial Pyramid Pooling)模块[10],并将FPN(Feature Pyramid Network)结构改为FPN+PAN(Path Aggregation Network)的结构[11]。最后将预测框由原先的nms 变为DIOU_nms。
在输入端方面使用Mosaic 数据增强等方式对输入进行改进。
为在目标检测项目中实现高精度与实时性,模型缩放技术应运而生。初始的模型放缩技术主要更改卷积神经网络骨干网络的深度或宽度,随后经由Huang[12]、Xie[13]、Tan[14]、Tian[15]等人对模型缩放技术在目标检测领域的不断研究,统合深度、宽度的复合缩放版本,新算法陆续出现。
为评估模型缩放的效果,需要对其进行定量分析。一般来说,当缩放比例增大时,要增加的定量成本越低,模型的效果越好;相对应地,当缩放比例减小时,要减少的定量成本越高,模型的效果越好。例如对于YOLOv3 的骨干网络Darknet53 的Darknet 层进行评估,设其基本通道数为b,层数为k,那么其计算量为k×{conv1*1,b/2-conv3*3,b}。设其调整图像大小、层数和通道数的缩放因子为α、β和γ,可得其原始计算成本如式(1)所示:
改变缩放因子α得到的计算成本为dα=α2d,改变缩放因子β得到的计算成本为dβ=β2d,改变缩放因子γ得到的计算成本为dγ=γ2d。分别缩放尺寸、深度和宽度会导致计算成本分别呈现出平方增加、线性增加和平方增加。
若此时将CSP 引入Darknet 层,可得其计算成本如式(2)所示:
可见相较于原始Darknet,减少了50%的计算成本。因此,将模型CSP 化能有效减少计算量,提升算法运行速度。
由上文的思路,将YOLOv4 CSP 化能获得更平衡的速度与精度。
残差模块中的跨阶段处理下采样卷积计算过程在YOLOv4算法的原始主干框架CSPDarknet53的设计中并没有包含进去,因此可以得到每个CSPDarknet 的计算成本,如式(3)所示:
对比式(3)及式(1)可知,主干框架CSPDarknet仅在k大于1 时才能获得相较于YOLOv3 的主干框架Darknet 更佳的计算成本。而CSPDarknet53 中每个阶段的剩余层数为1-2-8-8-4。为降低计算成本,将第一个CSPDarknet 阶段转化为Darknet 残留层。
为进一步减少计算量以加快算法速度,接着对YOLOv4 颈部的PAN 结构进行CSP 化。原始PAN 体系结构主要是由不同特征金字塔的特征集成得到的,之后两组反向的Darknet 残差层被穿过而没有建立快捷连接。将如图1 所示的原始PAN 体系结构CSP 化,转变成如图2 所示的结构。新结构较原先结构,减少了40%的计算量[16]。
图1 原始PAN体系结构
图2 CSP化PAN体系结构
YOLOv4 的SPP 模块位于颈部的第一个计算列表组的中间。因此,也将SPP 模块放置到CSPPAN 体系结构的第一个计算列表组的中间。
为了提高算法精度,将原先CSPDarknet53 中每阶段层数1-2-8-8-4 拓宽至1-3-15-15-7。
经过以上改进的完整结构图如图3 所示。
图3 YOLOv4 改进版完整结构图
采用清华大学与腾讯公司联合开发的TT100K数据集来评估该文算法对于真实道路环境下交通标志的检测性能。TT100K 数据集是进行了人工标注的腾讯街景地图截取图片的街道交通标志图像数据集。其中,数据集的图像分辨率为2 048 px×2 048 px,数据集标注类别数为221 类,数据集分为训练集(6 107张)和测试集(3 073张)。为了增加数据集数据的多样性,数据集覆盖了多种天气条件下和多种光照状况下的交通标志图像。
由于自身电脑硬件条件限制,无法使用原始图像进行训练、测试等,故先将图像尺寸处理修改为608×608。同时由于数据集中各个交通标志数量并不均衡,因此实验仅选取数据集中的45 类数量较多的交通标志图片进行识别测试实验。经过对45 类交通标志图片进行随机选取后的训练集包括7 200张图片,测试集包括1 972 张图片,其中45 类交通标志如下:i2、i4、i5、il100、il60、il80、io、ip、p10、p11、p12、p19、p23、p26、p27、p3、p5、p6、pg、ph4、ph4.5、ph5、pl100、pl120、pl20、pl30、pl40、pl5、pl50、pl60、pl70、pl80、pm20、pm30、pm55、pn、pne、po、pr40、w13、w32、w55、w57、w59、wo。
该文实验的硬件配置如表1 所示,搭配环境为Windows10、CUDAv11.1、cudnnv8.0.4.30、Tensorflow 2.4.0、OpenCV3.5.0。
表1 硬件配置
该文对算法模型进行性能评估的两个指标分别为平均精度均值(mean Average Precision,mAP)和FPS。
平均精度均值(mAP)通过首先计算数据集中的每个类别的平均精度值(Average Precision,AP),接着再对数据集中所有类别的平均精度求取均值而得到[17-18],计算如式(4)所示:
其中,TP(True Positive)为真正例,表示预测为真实际也为真;FP(False Positive)为假正例,表示预测为真实际为假;FN(False Negative)为假负例,表示预测为假实际为真;Nc表示第c类划分精确率P(Precision)和召回率R(Recall)的数量,p(rc)表示在c类召回率为rc时的p值。
另一个在实时检测任务中极其重要的指标是FPS值,FPS值的大小与检测速度快慢直接相关联,某些任务应用场景对应用算法的FPS值有硬性要求。
在对原版YOLOv4 进行CSP 处理和层数缩放后,将改进版算法和原版YOLOv4 算法及YOLOv3 算法进行对比,对比结果如表2 所示。
表2 改进算法与其他算法对比
其中,IOU=0.5,在对YOLOv4 改进后,其mAP 值达到了86.52%,相较于原版和YOLOv3高出了2.6%和11.89%。输入图像数据(1 024×768)后其平均FPS 值达到了42.4,相较于原版和YOLOv3高出了4.1和5.0。
再对细化到每类交通标志的AP 值进行对比,具体结果如表3 所示。可见在每个类别上的检测效果绝大部分优于原版YOLOv4 算法。
表3 与原版算法的AP值对比
该文提出一种基于YOLOv4 的改进算法,旨在解决交通标志识别任务中存在的检测精度低和实时性较差的问题。改进算法通过将卷积网络CSP 化降低了模型计算量,提升了检测速度;通过扩展网络主干宽度,提升检测精度。实验结果表明,该文改进方法真实有效,相比通常的交通标志识别算法在检测精度和速度方面均有提高,具有一定的实用性。但是现实场景相较数据集图像更为复杂多变,未来可以进一步加入更多复杂情形下的交通标志图片拓展数据集,并在算法精度方面进一步优化提升。