尹宋麟,谭 飞,2,周 晴,鲜 阳
(1.四川轻化工大学 自动化与信息工程学院,四川 自贡 643000;2.人工智能四川省重点实验室,四川 宜宾 644000)
随着智能交通系统(Intelligent Traffic System,ITS)的出现,自动驾驶成为ITS开发中的必要主题,而对于交通标志的检测识别又是自动驾驶领域中一项极其重要的工作。由于交通标志在现实生活中的位置往往不固定,而且车载设备拍摄的图像中交通标志往往只占据图像很小的一部分,导致对其检测与识别存在一定的困难。
随着计算机计算水平的不断提升,深度学习迅速崛起,各种基于深度学习的检测算法也不断发展,深度学习所涉及的领域很广,在交通标志检测领域也取得了很大的成就。目前,基于深度学习的检测方法可以分为2类:两阶段检测方法和一阶段目标检测方法。两阶段检测方法又称为基于候选框的检测,其中最具代表性的是Faster R-CNN[1],它先提取输入图像中物体的区域生成候选框,然后再对候选框区域进行卷积分类识别,两阶段检测方法获得的结果精度很高,但速度慢;以YOLO[2]和SSD[3]为代表的一阶段目标检测方法将目标框的定位和识别任务同时进行,直接回归目标的位置坐标和分类概率,在输出层通过卷积直接预测,速度较两阶段目标检测方法变快了,但精度下降了。在实际应用中,实时性是一直被关注的关键指标,因此一阶段目标检测方法受到更多学者的研究,如何提高算法的精度是个难题。目前,已有大量学者进行了实验改进并获得了不错的成果。
王林等[4]在YOLOv3基础上提出了一种融合注意力机制与上下文信息的交通标志检测方法,充分利用上下文信息增强对小目标的检测,并在TT100K[5]数据集上提升了3.03%的精确度。Shen等[6]提出了GMSA模块,增强了小目标的特征表示,并设计了特征融合模块,有助于多尺度检测,同时改进了损失函数,在多种交通标志数据集上都取得了不错的结果。郭璠等[7]提出了一种通过对检测分支特征在通道和空间2个维度进行重新标定的YOLOv3-A算法,改善了对小目标的检测性能,在原有算法上精度和召回率分别提升了1.9%和2.8%。胡鹏等[8]通过改进YOLOv3的网络结构,结合Softer-NMS算法,减少了模型计算量,加快了检测速度,与原算法相比快了10.95%。蔡军等[9]通过在YOLOv3中加入上下文模块并融合网络损失函数来解决交通标志漏检和虚警问题,在TT100K中取得了较好的检测效果。Dubey等[10]以RetinaNet[11]为基础,使用层数更深的ResNet[12]为基础网络,并提出一种两步TSR方法,最后在GTSDB(German Traffic Sign Detection Benchmark)数据集上进行分类测试,得到了更好的分类精度。
本文基于YOLOv4模型,针对交通标志在图像中尺寸较小的问题,改进算法结构的检测层,加入152×152的检测层,去掉19×19的大感受野检测层;在算法中加入注意力机制使网络聚焦于有用特征,提高算法对小尺度目标的检测能力;利用K-means算法对候选框重新聚类,加快网络的收敛。最终算法得出模型在测试集上取得了更好的性能,精度有了较大的提升。
YOLOv4算法是YOLOv3的改进版,在v3的基础上增加了很多实用技巧,在检测时实现目标框定位和识别同时进行,实现“端到端”的检测[13]。YOLOv4算法的骨干网络采用CSPDarknet53,它是在Darknet53基础上改进而来,在残差结构中使用了CSPNet,加强了网络学习能力的同时,保证了精度并降低了内存消耗和计算成本。同时,也改变了激活函数,使用了Mish[14]激活函数,Mish激活函数相比于LeakyReLU激活函数,在负值区域更为平滑,有利于梯度的计算和更新,能获得更好的准确性和泛化能力。在骨干网络之后引入了空间金字塔池化(Spatial Pyramid Pooling,SPP)结构,该结构利用1×1,5×5,9×9和13×13四个不同的池化核进行池化处理,能够有效地将浅层的细节信息和深层的语义信息进行特征融合,增加感受野。路径聚合网络由特征金字塔网络(Feature Pyramid Network,FPN)和路径增强网络(Path Aggregation Network,PAN)2部分组成,FPN将深层的语义信息传递下来,PAN将浅层的定位信息传递上去,加强了网络的表征能力。检测头沿用了YOLOv3中的Head,由3×3和1×1卷积层组成,对PAN处理后输出的特征层进行结果预测[15]。
YOLOv4会根据图片的输入尺寸将图像划分成对应个数的网格,每个网格有3个先验框对应,最终网络预测到图像上的目标框就是模型通过参数对3个先验框优化得到。因此,当这3个先验框离目标的真实框越接近,网络的误差就越小,收敛得就越快。在YOLOv4中,先验框是根据COCO数据集得到,而本文实验采用的是TT100K数据集,数据集中多是小目标,与COCO数据集差别较大,所以重新使用K-means聚类算法对先验框进行更新以提高定位精度。由于TT100K数据集种类高达221,而且其中有很多种类个数极少,如果对这221类交通标志进行训练,由于种类分布极其不均,会导致训练效果不满意,因此本文通过python脚本选出数据集中类别的样本个数最多的20类进行聚类,得到的结果如图1所示。其中,9种不同颜色分别代表由K-means聚类得到的簇。
图1 20类交通标志标注框大小分布
由于TT100K交通标志数据集大多是小目标且比较集中,由图1可以看出,聚类的先验框分布在[5,40],因此少量偏大或偏小的目标不能被包含,于是对 K-means算法得到的先验框再进行一次线性缩放[16]:
x′1=αx1,
(1)
x′9=βx9,
高管是提高企业技术创新的关键人物。采用高薪激励高管,可以让高管在企业技术创新中发挥重要作用。但在高薪激励的过程中,应当采用多元化的激励方式,并注重不同激励方式的交互关系和协同作用,以充分、高效发挥激励效果。
(2)
(3)
(4)
式中,i∈[2,8];经多次实验,取α=0.5,β=3时,训练效果最好。更新后的先验框大小如表1所示。
表1 线性缩放后的先验框
YOLOv4算法的目标检测框使用了3个尺度:19×19,38×38和76×76,对图像的大、中、小3类目标进行检测。但这3个尺度是根据COCO数据集中类别的尺寸大小设定的,而本文使用的是TT100K数据集,其中的交通标志类别尺寸相较于COCO较小,因此若采用v4默认的3个尺度,会在实际测试中出现漏检和错检的现象,导致模型精度降低。基于上述问题,本文提出了一种改进的特征提取网络,结构如图2所示。
图2 改进后的YOLOv4结构
改进后的YOLOv4结构去除了原算法结构中的19×19尺度,换成了152×152尺度,原因是相较于交通标志这种小目标检测,尺度越大的检测框在输入图像中的感受野越小,更能捕捉到交通标志。将骨干网络的76×76特征层与SPP池化后2次上采样的特征层进行拼接后,再次上采样与骨干网络的152×152特征层进行拼接,最后让其进行5次卷积,输出到网络预测层进行预测;SPP网络处理的特征层经过一次上采样后,和骨干网络中的38×38特征层进行拼接,然后与PAN网络中的76×76层下采样后的特征层进行拼接,最后输入38×38尺度的预测层进行预测;预测网络中的76×76尺度经过SPP网络2次上采样后,再与152×152尺度下采样一次拼接得到。
人类在学习和理解未知的事物时,会迅速将注意力放到关键部位,而忽略掉无用的信息,这样才能快速准确地得到需要的信息。研究者们受此启发,把注意力机制加入到了卷积神经网络中,在牺牲少量计算量的同时,大大提高传统网络模型的性能。本文在YOLOv4中加入高效通道注意力(Efficient Channel Attention,ECA)模块[17],在对主干网络提取的3个特征层的通道维度上进行权重训练,使模型更加关注有用信息,ECA模块结构如图3所示。
图3 ECA模块结构
ECA模块可以看作是Squeeze-and-Excitation(SE)模块[18]的改进版本,ECA的作者认为SE对通道注意力机制的预测带来了副作用,捕获所有通道的依赖关系是低效且不必要的,而卷积具有良好的跨通道信息获取能力,因此ECA模块用1D卷积替换了SE模块的2次全连接。1D卷积的卷积核大小会影响跨通道交互的覆盖率,因此对1D卷积核大小k的选择就变得非常重要,虽然k可以通过手动调整,但是这样会浪费大量的时间和精力。k与C成非线性比例,C越大,长期交互作用越强;反之C越小,短期交互作用越强,即:
C=φ(k)=2(γ×k-b)。
(5)
当确定通道维数C后,卷积核大小k为:
(6)
式中,γ,b是调节参数;|t|odd表示最近的奇数t。
图4 加入ECA的部分网络结构
实验采用TT100K交通标志数据集。该数据集包含的交通标志种类较多,场景丰富,涵盖了照度和天气条件的巨大变化,可以客观地反映现实条件下的交通标志情况。TT100K数据集中的交通标志在图像中所占比例较小,因此会显得相对模糊,加之图像又包含大量的无关背景信息,导致模型检测相对困难,具有较大的挑战[19]。本研究选取了8 000张涵盖了20种类型的交通标志图,部分图案如图5所示。本次实验以8∶1∶1的比例来划分训练集、验证集和测试集,实验中的部分数据集图片如图6所示。
(a)i2
图6 部分数据集图片
实验使用一张显存大小为11 GB的NVIDIA GeForce 1080Ti显卡训练和测试所有模型。在训练过程中,对网络设定的部分超参数设置如表2所示。本文改进算法模型的损失函数曲线如图7所示,当训练达到80轮时,损失函数趋于平稳,模型收敛。
表2 部分超参数设置
图7 改进模型的训练损失函数曲线
评估算法的优劣需要多个指标,本文采用准确率P(Precision)、召回率R(Recall)、平均准确率均值mAP(mean Average Precision)以及检测速率帧每秒FPS(Frame Per Second)来判断模型性能的好坏[20]。计算如下:
(7)
(8)
(9)
式中,TP表示针对某个目标类,被模型判定和实际都是正样本的数目;FP表示模型判定为正样本,实际上是负样本的数目;FN表示模型判定为负样本,实际上是正样本的数目;mAP表示所有检测类别平均准确率的均值。
为了论证上述改进方法的有效性,本文在TT100K数据集20类的所有尺度目标上进行消融实验,通过组合上述所提及的K-means改进先验框、改进特征提取网络、加入注意力机制,来验证不同模块对网络性能的提升。测试结果如表3所示。实验结果表明,K-means改进先验框、改进特征提取网络、加入注意力机制都提升了模型的性能,并在mAP上分别提高了0.42%,0.94%,0.55%。而集合3个模块后的改进算法在P,R,mAP上均取得了最好的结果,与YOLOv4相比,分别提升了3.33%,3.83%,4.58%。可以看出,改进后的算法对于网络性能的提升是有效的。
表3 TT100K数据集上消融实验结果
将改进后的网络与其他的检测算法进行实验对比,包括YOLOv3,Faster R-CNN以及SSD。取准确率P、召回率R、IOU为0.5时的mAP和FPS作为评估标准,对比实验结果如表4所示。由表4可以看出,本文算法的mAP比第2的Faster R-CNN高出10.37%;在FPS上,本文算法比YOLOv3每秒只高出5张图片,但高出Faster R-CNN每秒24张图片。可以看出,改进后的算法在网络模型的精度和实时性方面都表现良好。
表4 4种检测网络对比
为了能够直观地看出本文改进算法模型的性能,从TT100K数据集中选出3张图片进行测试,测试结果如图8所示。其中,图8(a)~(c)为YOLOv4网络的检测结果,图8(d)~(f)为本文改进算法对网络的检测结果。
对比图8(a)和图8(d)可以看出,图8(a)漏检了pn而图8(d)检测出来了,因为这张图片上pn的像素太小,改进的特征提取网络利用152×152尺度的检测头,能搜索到图像中感受野更小的区域,从而避免了漏检;在图8(b)和图8(e)上模型效果对比更加明显,图8(b)中一个交通标志都未检测到,图8(e)将图像中的所有交通标志都检测到了;对比图8(c)和图8(f)可以看出,图8(c)的预测框覆盖范围远远大于图像中交通标志的位置,图8(f)的预测框重合度较高,因为改进的K-means聚类先验框能更准确快速地拟合到真实框,并且在图8(f)中未出现对pn的漏检。综合来看,本文改进算法训练的网络模型对交通标志小目标的检测以及漏检方面要优于YOLOv4。
(a)YOLOv4
本文主要介绍了改进的YOLOv4交通标志检测模型,针对交通标志在图像中占据位置小、检测精度较低的问题,在原算法中去除了19×19的大感受野检测层,加入152×152的小感受野检测层;在算法中加入ECA模块,使得网络把注意力聚焦在有用的信息上,提高了算法的检测能力;同时利用K-means聚类算法重新生成网络的先验框,加速网络收敛。通过消融实验验证了本文所提3个改进方案对比原算法均有提升;通过与YOLOv3,Faster R-CNN和SSD三种算法训练的模型效果对比,证明了改进后的算法训练出的模型在小目标检测、精度、实时性以及漏检方面的有效性。