基于改进YOLOv4网络的轻量化交通标志检测模型

作者: 王泽华 宋卫虎 吴建华

基于改进YOLOv4网络的轻量化交通标志检测模型0

摘要:针对在嵌入式车载交通标志识别系统对检测模型的大小以及实时性有着较高的要求,在基于原有YOLOv4的网络架构上,提出一种改进后的目标检测网络Mobilenetv2-YOLOv4-SAP。Mobilenetv2-YOLOv4-SAP通过使用轻量级卷积神经网络Mobilenev2对原YOLOv4网络的特征提取网络CSPDarknet53进行替换融合以及引入注意力机制SAP模块解决多通道池化层的信息冗余问题,从而在减少网络模型参数量和计算量的同时,保持较高的检测精度。通过实验表明,改进后的网络模型在Kaggle Road sign detection比赛数据集上的平均检测精度上达到了95.94%较原YOLOv4网络提升了0.34%,该网络模型的大小为48.97MB,仅为原YOLOv4模型大小的20%,且检测速率FPS达到了61帧/秒,相比于原YOLOv4网络模型提升了265%。

关键词:交通标志识别;Moblienetv2;信息冗余;目标检测;YOLOv4

中图分类号:TP391      文献标识码:A

文章编号:1009-3044(2022)05-0098-04

自从智能交通系统的发展以来,交通标志识别便作为智能交通系统中的重要一环开始研究,起初交通标志识别主要采用了对目标颜色分辨、图像切割以及传统的机器学习方法实现对交通标志的识别,但是这些方法通常面临着识别准确率低、识别速度慢等问题。随着卷积神经网络(Convolutional Neural Networks, CNN)的发展,很好地解决了这些问题,并在图像识别领域有着较为出色的表现。随着CNN的发展,相继延续出了RCNN、VGG[1]、AlexNet[2]等用于图像分类的Two-stage网络结构以及以SSD[3]为主的运用于目标检测的One-stage网络结构。文献[4]通过使用ResNet50-D来作为YOLOv3中的特征提取网络增强网络特征提取能力。文献[5]以YOLOv3作为框架,通过改进特征提取网络以及特征融合网络提升对小目标交通标志的检测性能。文献[6]通过在YOLOv3中融合空间金字塔池化层(SPP)以及改进网络中FPN结构提升算法的检测精度和实时性。文献[7]提出了Cascaded R-CNN算法,在CCTSDB数据集上的检测精度达到99%,但是检测速率则比较慢。文献[8]在YOLOv3的基础上引入深度可分离卷积来减少模型的参数量。文献[9]采用Faster R-CNN对交通标志进行检测,文献[10]在YOLOv2的基础上通过对网络的裁剪降低算法的算量和参数量,同时通过用网格划分输入特征图像增强小目标交通标志的检测性能。

为了解决传统YOLOv4算法运行速度较慢、对设备要求高、不适用于嵌入式设备等缺点,使网络模型可以更好地运用在车载嵌入式设备中,本文采用了改进的YOLOv4算法,对交通标志进行检测,主要贡献如下:

1)引入轻量级神经网络Mobilenetv2作为检测算法的主干网络,提升算法的检测速度。

2)引入SAP模块,解决多通道池化结构产生的信息冗余问题。

3)针对YOLOv4锚框机制不能很好地匹配交通标志检测的问题,利用K-means++聚类算法对数据集进行重新聚类,生成适合交通标志检测的先验框。

2 Mobilenetv2-YOLOv4-SAP网络结构

2.1 Mobilenetv2-YOLOv4网络

YOLOv4算法是为了提升算法的运算精度,而在YOLOv3算法的基础上引入了CSPDarknet53网络作为其主干网络,相比于YOLOv3算法的主干网络Darknet53,CSPDarknet53网络通过增加输入的特征信息以及网络的计算量使运算精度提升,在运用于交通标志检测的车载嵌入式设备上,原YOLOv4模型无疑增大了设备的硬件要求。导致YOLOv4算法在移动端和嵌入式设备中面临着延迟高、速率慢等缺点。通过测试,YOLOv4算法在嵌入式车载交通标志识别装置中的检测速率仅仅达到23帧/秒,远远不能达到对交通标志识别系统检测实时性高的要求。因此,本文受到Google开发的轻量级神经网络Mobilenet[11]的启发,提出了一种新的轻量级网络Mobilenetv2-YOLOv4。

Mobilenet网络是由Google公司在2017年提出的一种专注于移动端的轻量级神经网络,其通过使用深度可分离卷积替换标准卷积,该网络可以在牺牲少量准确率的前提下,降低模型的参数量和运算量。深度可分离卷积分为深度卷积和逐点卷积两部分,深度卷积通过给每一个输入层赋予一个不同的卷积核提取输入图像的特征,逐点卷积是每一层都使用一个1×1的卷积核,处理深度卷积中所提取的特征信息并对其进行整合。在卷积核大小为3×3时,通过深度卷积和逐点卷积两个步骤可使模型的计算量降低到原来的1/9,再通过引入宽度超参数α和分辨率超参数β,使整个网络模型的计算量存在[α2β2]的优化空间。

Mobilenetv2在Mobilenetv1的基础上增加了一个倒残差结构和线性瓶颈结构。倒残差结构首先采用一个1×1的卷积升维,使深度可分离卷积在高维度中提取特征以提升模型的表征能力,再经过一个1×1的卷积进行降维操作,使输出的特征通道数量与输入的特征通道数量保持一致。由于ReLU激活函数在特征通道较少时会导致特征信息丢失的特点,而倒残差结构由于减少了参数量,导致输出特征通道数量较低,为了避免ReLU激活函数影响网络性能Mobilenetv2,使用线性激活函数替换ReLU激活函数形成线性瓶颈层。

Mobilenetv2-YOLOv4通过使用Mobilenetv2网络替换YOLOv4的骨干网络CSPDarknet-53,减少了模型的参数量和计算量。

2.2 SAP模块

He[12]等人通过研究证明,在卷积神经网络中全连接层必须输出固定的特征值,直接对输入图片进行拉伸或压缩会导致输入特征信息的丢失,降低识别精度,从而提出了SPP池化结构。SPP借鉴空间金字塔的思想提取局部和全局的特征信息,使输入图像不再需要固定的大小和比例,就可以产生固定大小的特征表示传输给全连接层,从而解决该问题。

本文在SPP的基础上提出了SAP Module结构,通过把SAP Module结构添加在多尺度融合过程中提升感受野,同时解决池化层的信息冗余问题,获得更多有效的特征信息,SAP Module结构如图1所示。

SAP Module分别使用尺度为5×5、9×9、13×13的三个最大池化窗口,作用于上层卷积所产生的特征图像,然后选取特征图像中的最大值作为池化层的输出值。设置池化层的步长为1来保持特征图像的大小不发生改变,最终通过融合输入特征图像以及经过池化层后的局部特征图来增加感受野。然而对于多通道池化结构,难以避免在特征融合过程中产生冗余信息,冗余信息的产生会加大特征提取的难度,影响模型的识别精度和速率。为了消除冗余信息对模型的影响,本文通过融合池化层与压缩和激励结构解决这一问题。

压缩和激励结构通过在神经网络中引入注意力机制让模型自主获取每一个特征通道的重要程度,并设置不同的权重。以此权重作为参照增强重要的特征通道同时,弱化无用的特征通道,其结构如图2所示。

在经过最大池化层后,SAP模块将输入的特征信息与融合所产生的冗余信息一同传输到压缩与激励结构。如图2所示,首先通过压缩函数[Fsq(ud)]将全局通道信息压缩为一个特征通道信息。压缩函数[Fsq(ud)]如公式(1)所示,其中[zd]表示第[d]层通道所统计的数据,[ud]表示第[d]层通道的特征图。

SAP模块在经过压缩处理后,通过激励函数[Fex]对所聚合的各特征通道信息生成相应的权重S。由于捕捉不同特征通道间的相关性会导致模型泛化性降低,因此设置两个全连接层来实现门控机制。其中全连接层[W1]为降维操作,采用RuLE激活函数来输出结果,全连为升维操作,采用Sigmoid激活函数将权重进行归一化,添加门控机制使激励函数输出的结果在具有非线性的同时,降低了参数量和计算量。激励函数[Fex]如公式(2)所示,其中[σ(x)]为Sigmoid激活函数,[δ(x)]为ReLU激活函数。

[S=Fex(Z,W)=σ(g(Z,W))=σ(W2δ(W1Z))]      (2)

在经过压缩和激励结构后,SAP模块通过函数[Frw]将激励结构所输出的结果与原有的特征信息进行通道乘积,为特征信息的权重进行加权,重新设定每个特征通道的重要程度,[Frw]函数如公式(3)所示。进而增强特征图像的输入特征信息的特征通道,同时弱化融合所产生冗余信息的特征通道,以减少冗余信息对模型特征提取的影响。

[Frw(ud,sd)=ud×sd]                    (3)

Mobilenetv2-YOLOv4-SAP网络结构如图3所示。

2.3 K-means++聚类算法确定锚框

YOLOV4的锚框机制主要是根据VOC数据集聚类得到的,该锚框分为三个尺度,每个尺度又分为三个不同的尺寸。针对交通标志检测,大多数的交通标志形状大小保持一致,利用原始的锚框机制会影响交并比IOU的计算值,导致无法筛选出最优预测框。而K-means算法需要选定合适的初始聚类中心作为初始值,初始聚类中心的选择会影响锚框生成的效果,因此本文采用了K-means++聚类算法保证初始聚类中心选择的离散型,从而提升锚框生成的效果。

本文K-means++算法流程:首先在目标框A中随机选取一个聚类中心点d,计算该聚类中心点d与A中每个样本[α]间的欧氏距离[D(α)],通过公式[D2(α)α∈AD2(α)]计算概率,选取最大概率的点作为下一个样本中心[a1]。重复上述操作,直至选出9个离散的聚类中心。计算9个选取的聚类中心与样本[a]的中心距离,并分别分到相应聚类中心对应的簇中,通过计算聚类中心d,直至聚类中心不再发生改变。

本文将交通标志输入至网络,提取3个不同尺度的特征,并保持原输入的分辨率大小不变以保证图像的特征信息不被压缩,网络通过K-means聚类算法生成8756个边界框来预测交通标志的位置和大小,再通过设定NMS为0.5过滤分数较低的框,保留IOU更大的边界框。

本文最终通过K-means++聚类算法重新生成9个新的锚框参数(32,40)、(50,112)、(64,52)、(112,108)、(164,177)、(198,156)、(284,217)、(326,358)、(576,731)用于交通标志的检测。

3 实验与结果分析

3.1 实验环境配置

本文采用的实验环境为Ubuntu 20.04操作系统。硬件配置:CPU为Intel i7-9700F,内存大小为32GB。GPU采用了NVIDIA GeForce RTX 2080Ti,显存为11GB的显卡。学习框架为PyTorch,编程语言为Python。

3.2 交通标志数据集

本文使用的数据是Kaggle Road sign detection比赛数据集,分为traffic light、stop、speedlimit以及crosswalk四个类别共877张图片,其中随机选取98张图片作为测试集数据,779张图片作为训练集数据。由于数据集的数据量过小,本文在该数据集的基础上实现了数据扩充,包括翻转、亮度调节、添加噪声、模糊处理等9种方法,最终得到数据集7000张。扩充后的数据如图4所示。

上一篇 点击页面呼出菜单 下一篇