(1.郑州大学电气与信息工程学院,河南郑州450001;2.河南省交通调度指挥中心,河南郑州450001)
关键词:交通标志检测;轻量化YOLOv5;SIoU损失函数;Ghost卷积;TT100K;BiFPN
随着算力水平的提高,基于深度学习的目标检测算法已经成为科研人员的主流选择。两阶段目标检测算法和单阶段目标检测算法相继被研究学者提出。Girshick等[1]提出的R-CNN(regionconvolutionalneuralnetworks)被认为是两阶段检测算法的先驱,该算法先提取候选区域,再使用卷积神经网络和SVM分类器进行分类预测。在此基础上,科研人员相继提出FastR-CNN[2]、FasterR-CNN[3]、MaskR-CNN[4]等更高效的两阶段检测算法,但囿于其特点,两阶段算法很难达到实时检测的要求。另一类目标检测算法为YOLO(youonlylookonce)系列,YOLO算法由Redmon等[5]提出,该算法创新性地将检测视为回归问题,使用预设锚框的方式代替候选区域选取。此后,YOLO9000[6]、YOLOv3[7]、YOLOv4[8]等YOLO的算法以及SSD(singleshotmultiboxdetector)[9]算法相继被提出,在精度和速度方面的表现也越来越优秀。
综上所述,由于交通标志检测的实时性要求较高,而目前模型无法同时满足检测速度快并且检测精度高的要求,因此,为了在提高模型检测速度的同时不损失检测精度,并降低模型的参数量和计算量,本文提出一种轻量化的YOLOv5算法用于交通标志检测。使用本文构建的GhostBottleneck替换主干网络中的Bottleneck,并融合到主干网络(Backbone)和颈部网络(Neck)中,利用Ghost卷积减少计算量和参数量;为了维持模型检测精度,本文使用双向加权特征金字塔网络(bidirectionalfeaturepyramidnetwork,BiFPN)替换PANet结构,提升网络特征学习能力;将CIoU损失函数替换为SIoU损失函数,优化定位损失,提高算法精度。
YOLOv5是首款使用Pytorch框架编写的YOLO系列算法,适合在生产环境中使用,更容易部署,模型参数更少。目前YOLOv5系列仍在继续优化改进,不断更新迭代新的版本,本文以6.1版本的YOLOv5s为基础进行实验和改进。
该版本的YOLOv5模型可以分为输入端、主干网络、颈部网络及检测端4个部分。数据首先在输入端经过马赛克数据增强,丰富了数据的多样性,提高训练效率。主干网络使用C3模块,即简化版的BottleneckCSP,大幅减少参数量。颈部网络借鉴PANet网络[17],采用FPN+PAN结构,FPN结构通过将深层的语义特征传到浅层,增强多个尺度上的语义信息。PAN结构则相反把浅层的定位信息传导到深层,增强多个尺度上的定位能力。Neck部分还增加了快速空间金字塔池化(spatialpyramidpoolingfast,SPPF)模块,SPPF使用3个5×5的最大池化代替SPP的5×5、9×9、13×13最大池化操作,为此达到使用小卷积核大幅提升计算速度的目的。检测端含有3个并行的卷积层,当输入图片大小为640×640×3时,3个卷积层的输出分别为80×80×255,40×40×255,20×20×255。YOLOv5的网络结构如图1所示。
图1YOLOv5结构
Figure1StructureofYOLOv5
Ghost模块是Han等[18]在2020年提出的一种轻量级特征提取模块,使用更少的参数量生成特征图。Ghost模块的基本结构是Ghost卷积,普通卷积与Ghost卷积结构如图2所示。
图2普通卷积与Ghost卷积
Figure2NormalconvolutionandGhostconvolution
由图2可以看出,Ghost卷积首先对原始图片经过一次小计算量的普通卷积操作,得到本征特征图;然后对本征图中的m个通道的基础特征使用低成本的线性运算,即卷积核大小为d×d的深度卷积,得到m个新的相似特征图;最后将本征特征图和m个相似特征拼接,得到最终的特征图。
普通卷积的计算量可表示为
n×h′×w′×c×k×k。
(1)
式中:n表示特征图个数;h′和w′分别表示输出图片的高度和宽度;c表示输入图片通道数;k表示标准卷积核大小。
Ghost卷积操作的计算量可以表示为
(2)
式中:s表示本征图参与线性变换的数量;d表示深度可分离卷积的卷积核大小。
因为d×d的卷积核与k×k的卷积核大小相似,且s< 普通卷积的参数量可以表示为 n×c×k×k。 (3) Ghost卷积的参数量可以表示为 (4) 同理,普通卷积与Ghost卷积的比值rc≈c,证明Ghost卷积比普通卷积也能在参数量上得到削减。 GhostBottleneck模块就是以Ghost模块为基础构建的一款骨干网络,Han等[18]给出了2种骨干网络,如图3所示。步长为1(图3(a))与步长为2(图3(b))都采用残差结构,且图3(b)在Ghost模块中间多了1个深度卷积,并且残差路径由1个下采样层和1个步长为2的深度卷积实现。 图3GhostBottleneck模块 Figure3GhostBottleneckmodule 本文中采用步长为2的GhostBottleneck结构替换YOLOv5主干网络中的C3结构的Bottleneck,从而达到进一步降低计算量和参数量的目的,如图4所示,图4中的CBS模块指的是卷积+批量归一化+SiLU激活函数。 图4本文使用的GhostBottleneck Figure4GhostBottleneckinthisarticle 基于GhostBottleneck构建的C3-Ghost结构如图5所示,用该结构替换YOLOv5网络中除第1个C3外的其他C3模块。 图5基于C3构建的C3-Ghost模块 Figure5C3-GhostmodulebasedonC3 由于使用Ghost卷积降低参数量和计算量的同时也造成了检测精度下降,因此选择将BiFPN引入YOLOv5的Neck网络部分,构建Concat操作替换普通Concat层,通过可学习权重进一步增强网络特征融合能力。 BiFPN[19]是谷歌大脑提出的一种加权双向特征金字塔网络,由于特征金字塔网络(featurepyramidnetwork,FPN)仅通过一条自顶向下的路径传递特征,可能会遇到特征信息丢失的情况,精度不高,结构如图6(a)所示。PANet是在上述网络的基础上增加一条相反的路径,用于传达丢失的位置信息,如图6(b)所示。BiFPN则是在PANet的基础上删除只有一个输入的节点,在不丢失重要信息的前提下简化网络,同时若输入节点和输出节点位于同一层则添加一条额外的边,以融合更多特征,其结构如图6(c)所示。更重要的是,BiFPN提出使用带权重的特征融合机制,给每条路径分配一个可学习的权重,通过对数据特征的学习不断更新权重,从而获取更重要的信息。以中间层P6层为例,其最终输出可以表示为 (5) 图6FPN、PANet与BiFPN结构 Figure6StructuresofFPN,PANetandBiFPN 式中:分别为各自层输入的权重;为P6层的输入;为P5层的输出;ε取0.0001,作用是避免分母为为P6中间层的输出,可由式(6)表示。 (6) 式中:w1、w2为各自可学习权重;为P7层的输入。 YOLOv5的损失函数包含3个部分,分别为定位损失box_loss、置信度损失obj_loss及分类损失cls_loss。定位损失用于计算预测框与真实框的误差;置信度损失用于计算网络的置信度;分类损失用于计算锚框与对应的标定分类是否正确。 针对定位损失,Gevorgyan[20]认为应该进一步考虑预测框与真实框的角度信息,从而提出了新的损失函数SIoU损失函数,该损失函数由预测框与真实框的角度、距离和形状以及传统IoU4部分损失组成,其中角度损失可以表示为 (7) 式中:σ表示真实框与预测框中心点连线与水平轴的夹角,ch表示真实框中心点与预测框中心点之间的垂直距离,二者计算公式为 (8) (9) 式中:与表示真实框的坐标;bcx与bcy表示预测框的坐标。 距离损失可以表示为 (10) 式中:和ch为预测框与真实框最小外接矩形框的宽和高;γ=2-Λ。 形状损失可以表示为 (11) 最后一项为传统的交并比损失,因此SIoU损失函数的最终损失可以表示为 (12) 改进后的轻量化YOLOv5模型如图7所示,使用C3-Ghost替换原始YOLOv5中的C3模块,在颈部网络引入BiFPN结构,以及使用SIoU损失函数。 图7轻量化YOLOv5结构 Figure7StructureoflightweightYOLOv5 改进后模型的算法流程如下。 步骤1图片经过输入层的处理,计算预设锚框与真实锚框的差值并聚类得到新的一组预设锚框。 步骤2将图片送入新的主干网络,利用加入Ghost卷积的模块和卷积层提取特征。 步骤3图片经过在颈部网络设计的BiFPN结构增加短接和跳跃连接,加强特征融合能力。 步骤4图片到达输出层,通过使用SIoU计算真实框与预测框之间的误差,降低定位损失。 目前开源的和针对中国实际道路的交通标志数据集有CCTSDB,以及腾讯和清华大学使用街景图像构建的TT100K[21]数据集等。CCTSDB数据集仅仅将数据分为指示、警告和禁止标志3类,没有详细内容的区分。而TT100K数据集对实地采集且有详细分类,因此选择TT100K数据集作为本次实验的数据集。 TT100K数据集一共包括了上百个交通标志类别,但大多数标志实例个数较少。数据集分布不均衡,有些实例的个数在3000以上,有些实例数量仅为个位数,并且包含上百个种类,因此需要先对数据集进行筛选,将得到的交通标志实例个数在200个以上的类别进行实验,避免由于数据集的缺陷无法得到最优模型。以下为预处理步骤。 步骤1读取json标注文件,遍历标注信息,保存实例个数大于等于200的标签。 步骤2对原始json标注文件中的标注信息按照训练集与验证集为8比2的比例划分为2个json文件。 步骤3将划分好的json格式标注信息转换成YOLOv5训练需要的TXT格式进行保存。 步骤4根据划分好的标注文件将原始图片分开存放。 经过上述步骤后得到24个常见交通标志类别,共8521张图片,其中训练集6801张,验证集1720张,具体类别如图8所示。 图824个交通标志类别 Figure824trafficsigncategories 准确率P指预测正确的正样本数量占所有预测为正样本数量的百分比;召回率R指预测正确的正样本占所有正样本的比值;平均精确率AP表示PR曲线与坐标轴所围成的图形面积;mAP@0.5表示在IoU阈值为0.5时所有类别AP的平均值;mAP@0.5∶0.95表示不同IoU阈值(从0.5到0.95,步长0.05)上的平均mAP;参数量用来衡量模型大小,参数量和计算量越小说明模型越轻量;帧率表示每秒刷新的图片数,可以用来评估模型在检测时的效率。 本次实验使用的硬件平台GPU为NVIDIARTX3090,显存24GB,CPU为Intel(R)Xeon(R)Platinum8350C@2.60GHz,内存45GB。系统环境为Linux,CUDA版本11.1,Pytorch版本1.8.1,Python版本3.8,batch-size设置为16,进行200个epoch迭代。超参设置为系统默认,即初始学习率设置为0.01,使用SGD优化器,初始动量设置为0.937,权重衰减系数设置为0.0005。 训练过程如图9所示,由图9可以看出,改进后的YOLOv5大概在130个轮次之后达到峰值并趋于稳定,而原始YOLOv5则在160个轮次之后才趋于稳定状态,并且改进后的YOLOv5训练过程更平稳,极少出现大幅度变化过程,说明改进后的YOLOv5具有更良好的性能。 图9训练过程曲线 Figure9Trainingprocesscurve 经过实验分析,原始YOLOv5模型与改进后的YOLOv5模型在TT100K数据集上的结果对比如表1所示。 表1改进后的YOLOv5模型与原始YOLOv5模型在TT100K数据集上的结果对比 Table1ComparisonofresultsbetweentheimprovedYOLOv5modelandtheoriginalYOLOv5modelontheTT100Kdataset 模型P/%R/%mAP@0.5/%mAP@0.5∶0.95/%参数量/106计算量/GFLOPs帧率/(帧·s-1)YOLOv584.878.485.563.97.0716.15175本文模型84.081.285.462.95.0211.40209 由表1可以看出,改进后的YOLOv5模型的P下降了0.8百分点,R提高了2.8百分点,在参数量减少29%、计算量减少29.4%的情况下,mAP@0.5仅减少了0.1百分点,mAP@0.5∶0.95仅减少了1.0百分点,但检测的速率提升了34帧。达到了几乎不损失精确率的前提下,简化YOLOv5网络的目的。 其中每个类别的AP值如表2所示,由表2可以看出,有50%的标签在改进后网络中的平均精确率高于原始网络,说明尽管参数量和计算量有所下降,但是由于BiFPN结构和SIoU损失的加入,也使得某些特征的学习能力得到加强。 表2每个类别AP值 Table2APvalueofeachcategory% 类别YOLOv5本文模型类别YOLOv5本文模型i285.286.8pl10093.488.6i493.191.8pl12091.483.3i595.096.4pl3078.480.5il6098.097.8pl4079.678.1il8090.790.5pl586.386.4io82.384.8pl5073.280.3ip81.985.4pl6076.067.5p1077.276.7pl8082.584.3pll77.981.4pn92.393.4p2387.083.6pne95.597.0p2689.287.7po77.375.5p595.794.2w5772.378.9 为了进一步研究各个模块对网络的影响,本文设置了消融实验证明改进后网络的各模块带来的影响,具体数据如表3所示。 表3消融实验 Table3Ablationexperiment 模型mAP@0.5/%参数量/106计算量/GFLOPsYOLOv585.57.0716.15YOLOv5+Ghost83.25.0311.30YOLOv5+BiFPN86.17.1416.20YOLOv5+SIoU85.77.0716.15YOLOv5+Ghost+BiFPN+SIoU85.45.0211.40 由表3可以看出,单独增加Ghost模块后,整体参数量和计算量都会大幅减少,但同时也会导致mAP@0.5降低2.3百分点;单独增加BiFPN结构会在稍微提高参数量和计算量的同时提高0.6百分点的mAP@0.5;单独增加SIoU损失函数则不会对参数量和计算量有所影响,却能带来0.2百分点的mAP@0.5提升。当3种改进同时添加到YOLOv5模型之后,在参数量降低29.0%、计算量降低29.4%的同时仅仅牺牲0.1百分点mAP@0.5。所以该改进方法是可行的。 本文使用SSD模型、FasterR-CNN模型、YOLOv3-tiny模型、YOLOv4模型以及本文提出的模型进行对比,实验结果如表4所示。 表45种算法性能对比 Table4Performanceoffivealgorithms 模型mAP@0.5/%帧率/(帧·s-1)权重大小/MBSSD79.128.4159.0FasterR-CNN92.914.2100.2YOLOv3-tiny83.4120.833.8YOLOv487.820.7246.0本文模型85.5209.010.0 由表4可知,相比其他几项传统的目标检测算法,本文提出的轻量化模型在保持较高的检测精度的基础上,检测速度最快、权重最小。 表5推理实验 Table5Interfaceexperimentsms 模型GPU推理用时CPU推理用时YOLOv526.3167.6本文模型18.6110.5 图10为使用改进前后模型检测不同图片的结果。图10(a)、10(b)是有多个目标的图片检测结果对比,可以看出除了“限低速60”的检测精度下降之外,其标志的检测结果均有不同幅度的提升;而“限低速100”两次都没被检测出来是因为本次训练集中未包含该标签。图10(c)、10(d)则是只包含单个检测目标的图片检测结果对比,图10(c)发现有误检结果,将远处一个医院的红十字错误检测成“限速50”的标志,经改进后的网络检测结果如图10(d)所示,并没有误检现象出现,且“禁止掉头”的检测精度有略微提升。 图10改进前后检测结果 Figure10Resultsbeforeandafterimprovement 改进后的YOLOv5在参数量降低29.0%、计算量降低29.4%的情况下,mAP@0.5仅下降了0.1百分点,同时检测帧率提升了34帧/s,取得较好的效果。 (1)使用参数量大幅减少的Ghost卷积和深度可分离卷积构建GhostBottleneck,替换主干网络和颈部中的部分Bottleneck,简化网络参数和计算量。 (2)使用BiFPN替换原始的PANet结构,增强特征融合能力,提高检测准确率。 下一步将考虑在进一步降低参数量和计算量的基础上提高检测精度,加入注意力机制等改进方案,使模型能够部署到移动设备进行实际运用。 参考文献: [1]GIRSHICKR,DONAHUEJ,DARRELLT,etal.Richfeaturehierarchiesforaccurateobjectdetectionandsemanticsegmentation[C]∥2014IEEEConferenceonComputerVisionandPatternRecognition.Piscataway:IEEE,2014:580-587. [2]GIRSHICKR.FastR-CNN[C]∥2015IEEEInternationalConferenceonComputerVision(ICCV).Piscataway:IEEE,2016:1440-1448. [3]RENSQ,HEKM,GIRSHICKR,etal.FasterR-CNN:towardsreal-timeobjectdetectionwithregionproposalnetworks[J].IEEETransactionsonPatternAnalysisandMachineIntelligence,2017,39(6):1137-1149. [4]HEKM,GKIOXARIG,DOLLRP,etal.MaskR-CNN[C]∥2017IEEEInternationalConferenceonComputerVision(ICCV).Piscataway:IEEE,2017:2980-2988. [5]REDMONJ,DIVVALAS,GIRSHICKR,etal.Youonlylookonce:unified,real-timeobjectdetection[C]∥2016IEEEConferenceonComputerVisionandPatternRecognition(CVPR).Piscataway:IEEE,2016:779-788. [6]REDMONJ,FARHADIA.YOLO9000:better,faster,stronger[C]∥2017IEEEConferenceonComputerVisionandPatternRecognition(CVPR).Piscataway:IEEE,2017:6517-6525. [7]REDMONJ,FARHADIA.YOLOV3:Anincrementalimprovement[C]∥Proceedingsof2018IEEEConferenceonComputerVisionandPatternRecognition.Pisca-taway:IEEE,2018:1-6. [9]LIUW,ANGUELOVD,ERHAND,etal.SSD:singleshotmultiboxdetector[C]∥EuropeanConferenceonComputerVision.Cham:Springer,2016:21-37. [10]SUDHAM,GALDISPUSHPARATHIDVP.TrafficsigndetectionandrecognitionusingRGSMandanovelfeatureextractionmethod[J].Peer-to-PeerNetworkingandApplications,2021,14(4):2026-2037. [11]HANC,GAOGY,ZHANGY.Real-timesmalltrafficsigndetectionwithrevisedfaster-RCNN[J].MultimediaToolsandApplications,2019,78(10):13263-13278. [12]WANJX,DINGW,ZHUHL,etal.AnefficientsmalltrafficsigndetectionmethodbasedonYOLOv3[J].JournalofSignalProcessingSystems,2021,93(8):899-911. [13]尹靖涵,瞿绍军,姚泽楷,等.基于YOLOv5的雾霾天气下交通标志识别模型[J].计算机应用,2022,42(9):2876-2884. YINJH,QUSJ,YAOZK,etal.TrafficsignrecognitionmodelinhazeweatherbasedonYOLOv5[J].JournalofComputerApplications,2022,42(9):2876-2884. [14]张毅,龚致远,韦文闻.基于改进FasterR-CNN模型的交通标志检测[J].激光与光电子学进展,2020,57(18):173-181. ZHANGY,GONGZY,WEIWW.TrafficsigndetectionbasedonimprovedfasterR-CNNmodel[J].Laser&OptoelectronicsProgress,2020,57(18):173-181. [15]李宇琼,周永军,蒋淑霞,等.基于注意力机制的交通标志识别[J].电子测量技术,2022,45(8):116-120. LIYQ,ZHOUYJ,JIANGSX,etal.Trafficsignrecognitionbasedonattentionmechanism[J].ElectronicMeasurementTechnology,2022,45(8):116-120. [16]郭继峰,孙文博,庞志奇,等.一种改进YOLOv4的交通标志识别算法[J].小型微型计算机系统,2022,43(7):1471-1476. GUOJF,SUNWB,PANGZQ,etal.ImprovedtrafficsignrecognitionalgorithmforYOLOv4[J].JournalofChineseComputerSystems,2022,43(7):1471-1476. [17]LIUS,QIL,QINHF,etal.Pathaggregationnetworkforinstancesegmentation[C]∥2018IEEE/CVFConferenceonComputerVisionandPatternRecognition.Piscataway:IEEE,2018:8759-8768. [18]HANK,WANGYH,TIANQ,etal.GhostNet:morefeaturesfromcheapoperations[C]∥2020IEEE/CVFConferenceonComputerVisionandPatternRecognition(CVPR).Piscataway:IEEE,2020:1577-1586. [19]TANMX,PANGRM,LEQV.EfficientDet:scalableandefficientobjectdetection[C]∥2020IEEE/CVFConferenceonComputerVisionandPatternRecognition(CVPR).Piscataway:IEEE,2020:10778-10787. [21]ZHUZ,LIANGD,ZHANGSH,etal.Traffic-signdetectionandclassificationinthewild[C]∥2016IEEEConferenceonComputerVisionandPatternRecognition(CVPR).Piscataway:IEEE,2016:2110-2118. ZHANGZhen1,WANGXiaojie1,JINZhihua1,MAJijun2 (1.SchoolofElectricalandInformationEngineering,ZhengzhouUniversity,Zhengzhou450001,China;2.HenanProvinceTransportationDispatchingCommandCenter,Zhengzhou450001,China) Keywords:trafficsigndetection;lightweightYOLOv5;SIoUlossfunction;Ghostconvolution;TT100K;BiFPN 中图分类号:TP311.5 文献标志码:A doi:10.13705/j.issn.1671-6833.2023.05.014 收稿日期:2023-04-16;修订日期:2023-06-01 基金项目:国家重点研发计划重点专项(2018XXXXXXXX03);河南省交通运输厅科技项目(2019G3)。 作者简介:张震(1966—),男,河南郑州人,郑州大学教授,博士,博士生导师,主要从事计算机视觉研究,E-mail:zhangzhen66@126.com。 引用本文:张震,王晓杰,晋志华,等.基于轻量化YOLOv5的交通标志检测[J].郑州大学学报(工学版),2024,45(2):12-19.(ZHANGZ,WANGXJ,JINZH,etal.TrafficsigndetectionbasedonlightweightYOLOv5[J].JournalofZhengzhouUniversity(EngineeringScience),2024,45(2):12-19.)