APP下载

轻量化网络模型的道路目标检测算法

2023-03-17谭功全尹宋麟

无线电工程 2023年3期
关键词:轻量化卷积聚类

周 晴, 谭功全,2, 尹宋麟, 赵 亮

(1.四川轻化工大学 自动化与信息工程学院, 四川 宜宾 644000;2.四川轻化工大学 人工智能四川省重点实验室, 四川 宜宾 644005)

0 引言

道路目标检测是现代智能驾驶与辅助驾驶技术的关键部分,在驾驶过程复杂的交通场景下,若道路目标检测系统能根据检测结果,及时地将目标种类以及数据反馈给司机,对道路驾驶安全性的提升起到很大作用。 研究表明,智能驾驶系统实现无人驾驶,可以降低90%的交通事故发生率。 目前,主流的目标检测算法分为2 类:一类是基于两阶段的目标检测算法,主要特点是检测准确率高,但由于参数量大导致运算速度较慢;另一类是基于回归的目标检测算法,以YOLO[1],SSD[2]为代表的单阶段目标检测算法。

文献[3]通过采用多个不同尺度的卷积核对Faster R-CNN 进行改进,并结合当前的卷积神经网络技术,提高了在复杂道路交通环境下的道路目标检测精度。 文献[4]构建了一种基于Faster R-CNN的快速、精确道路目标检测算法,通过引入反卷积结构,设计AORN 网络和OALN 网络的损失函数,提高小目标的检测性能,相对于原始算法精度提升了0.15%。 文献[5]将K-Means++聚类算法应用到YOLOv3 算法中,改善了聚类结果不稳定的问题,并改进损失函数利用DIOU-NMS 去除余框,减少错误抑制,改进后的算法模型准确率有了一定程度的提升。 文献[6]为解决真实道路场景下近、远目标车辆检测率低与鲁棒性差的问题,重新构造Darknet-53 的内部网络结构,增加了一个检测层,并利用K-Means聚类算法选取合适的先验框,引入GIOU 损失函数对交并比(Intersection over Union,IoU)损失函数进行改进,模型的实验结果平均精度与召回率分别提升了11.05%和5. 20%。 文献[7]通过无人机获取树木数据集,并将数据集分为2 个子集分别用来训练和验证。 基于3 种目标检测算法R-CNN,YOLOv3以及SSD 分别进行训练与验证,结果表明3 种模型评估后的准确率都超过93%,SSD 模型的牙冠拔除效果最好,R-CNN 模型推断速度优于YOLOv3。

以上研究对目标识别与检测的准确率有了提升,但是为了提升准确率导致深度神经网络[8]变得越来越深,同时计算量与参数越来越大。 这些计算密集型[9]与存储密集型[10]的深度卷积神经网络的运算力,已经不能被移动端设备所承载。 在实际道路目标检测中,算法模型的推断速度对算法性能的评估至关重要。 Howard 等在2017 年提出轻量级骨干网络模型——MobileNet[11],该网络模型引入深度可分离卷积模块,减少了大量的卷积运算与浮点运算。

为进一步减少模型的参数量,本文以YOLOv3为基础,将主干网络替换为轻量化的MobileNetv3-Large 网络,同时为了加速训练中模型的收敛,融合注意力机制CBAM[12]保证模型轻量化。 对YOLOv3算法网络模型使用动态聚类算法ISODATA[13],重新设计与检测目标中相比较匹配的先验锚框,并分配对应的检测尺度。 将主干网络替换为CBAM 与MobileNetv3-Large 结合的特征提取网络,在保证检测准确率的前提下,提升算法的推断速度,经改进后的算法模型可以嵌入移动设备端应用于辅助驾驶。

1 YOLOv3 网络结构分析

2016 年Redmon 等提出了一种单阶段的目标检测算法——YOLO(You Only Look Once)[14],经过一系列发展从YOLOv1,YOLOv2 再到2018 年提出了YOLOv3。 YOLOv3 相对于YOLOv2 将主干特征提取网络替换为Darknet-53[15],共包含53 个卷积层且引入了残差块,是一个全卷积网络,在Darknet-53 网络结构中,采用了大量的3×3 和1×1 卷积[16],分别用来增加网络的通道数和改变数据维度。 Darknet-53的网络结构如图1 所示。

图1 Darknet-53 的网络结构Fig.1 Network structure of Darknet-53

Darknet-53 是YOLOv3 用来对输入图像进行特征提取的网络,借鉴了YOLOv2 中的Darknet-19 网络结构思想,不同的是,Darknet-53 引入了大量的残差模块,为了增加网络的深度提取更高级别的语义特征[17]。

2 基于轻量化网络模型的检测网络

2.1 改进网络结构

针对道路目标检测中算法模型参数量较大的问题,原始YOLOv3 算法模型参数量较大,不能应用于移动设备。 因此本文提出以YOLOv3 检测算法为基础,将算法的主干网络部分替换为轻量化网络模型MobileNetv3,保证了网络的轻量化,在特征融合模块与Bneck[18]模块中加入了CBAM 注意力机制,网络结构如图2 所示。 输入416×416 图片在主干特征提取后经过5 次卷积,送入13×13 尺度的预测层进行预测的同时进行上采样,与主干网络26×26 尺度的特征图进行拼接送入26×26 尺度预测,最后的52×52 尺度预测层是由主干网络输出特征图经过2 次上采样后与特征提取网络中52×52 尺度的特征图拼接得到。

图2 YOLOv3_M 算法网络结构Fig.2 YOLOv3_M algorithm network structure

MobileNet 轻量化模型是最先进的目标检测算法之一,2019 年由Google 发布,在轻量级神经网络中比较具有代表性。 MobileNet 是能够在移动端使用的轻量化网络模型,可以在移动终端实现众多应用。 它的主要思想是使用深度可分离卷积代替普通的2D 卷积,用深度卷积搭配逐点卷积的方式提取待检测图像的特征,以减少卷积层的时间与空间的复杂度。 MobileNetv1 与MobileNetv2 的微结构如图3所示。

图3 MobileNetv1 与MobileNetv2 微结构Fig.3 MobileNetv1 and MobileNetv2 microstructures

MobileNetv2 相对于V1 加了一个1×1 的“扩张”层(PW),用来提升维度,在3×3 网络之后再利用1×1 进行降维,并去掉第2 个逐点卷积后的激活函数,不再进行ReLU6 层,因为经过ReLU6 层将会损失部分特征,所以直接进行残差网络的加法。

MobileNetv3 相对于2 个基础之上加入了轻量化注意力模型,加快了网络的运算速度。 Bneck 结构如图4 所示,整体由2 部分构成,上半部分是Bneck 结构的主干网络部分,下半部分是Bneck 结构的残差边部分。 MobileNetv3 与MobileNetv2 一样,首先会对输入进来的特征层利用一个1×1 卷积层对升维,使通道数扩张后进行深度可分离卷积特征提取。 Mobile-Netv3 模型会将提取出来的图像特征输入注意力SE模块中,全局平均池化(Global Average Pooling,GAP)后输入全连接层FC1 中,将通道数减小为原来的1/4,再经过一个激活函数ReLU[19],FC2 将通道数变为原来一样后接一个h-swish 函数,将得到的最终向量中的每个元素相乘后送入SE 层特征的对应通道特征矩阵,经过加权后再用 1×1 卷积对特征降维,最终输出特征图。

图4 MobileNetv3 的Bneck 结构Fig.4 Bneck structure of MobileNetv3

2.2 ISODATA 聚类算法

传统YOLOv3 算法中的先验框是由COCO 数据集通过K-means 聚类生成的。 K-means 聚类算法是将样本聚类成k个簇,选择合适的k个质心对算法收敛速度有直接的影响,K-Means++是对k进行优化,再对数据进行聚类时随机性很小,可以减少实验结果的数据偏差。 但是K-Means 与K-Means++算法的聚类中心k是固定不变的。 而ISODATA 聚类算法可以根据每个目标种类的实际情况来调整聚类中心k,通过2 个操作完成对聚类中心k的调整,即分裂操作与合并操作,目的是为了使数据集的聚类中心靠近客观真实的聚类结果。 本文选用ISODATA算法对改进数据集重新聚类生成先验框,具体操作流程如图5 所示。

图5 ISODATA 算法聚类流程Fig.5 ISODATA algorithm clustering flowchart

在进行分裂操作时要计算这个簇在横纵维度上的方差,如果最大的方差σmax超过了设定的阈值σ,那么就在最大方差的维度上分裂成2 个,另一个维度的值保持不变,然后删除原本的聚类中心:

式中,(λi+,η),(λi-,η)表示分裂后的2 个中心。

在进行合并操作时,计算各个聚类中心的欧式距离,当出现小于设定的阈值dmin时,将这2 个簇合并,重新使用加权平均的方法计算新的聚类中心:

重新生成的先验框如表1 所示。

表1 更新后的先验框Tab.1 Updated prior box

2.3 嵌入注意力机制

卷积注意力模块是一种结合通道和空间2 个维度的注意力模块,原理如图6 所示。

图6 卷积注意力模块Fig.6 Convolutional attention module

对于特征提取出来的特征图,CBAM 模块会先沿着通道维度推断注意力图,然后与输入特征图相乘后得到的特征图再沿着空间维度进行推断,最后再与通道维度后的特征图进行相乘输出:

CBAM 是轻量级的通用模块且有即插即用的特点,因此可以忽略该模块的计算量并将其嵌入到所改进的卷积网络模型中,训练的模型体积也不会因为嵌入CBAM 而变大。

通道注意力模块的网络结构如图7 所示。 首先将提取后的特征图送入最大池化层与平均池化层,图片在被进行池化操作后输入全连接层,然后将得到的特征语义信息进行相加后经过激活函数得到基于通道注意力的权值结果。 通道注意力的运行机制是在空间维度上对输入的特征图进行压缩,压缩后得到的矢量结果再输入下一步操作。 在操作过程中,平均池化和最大池化用来聚合特征映射的空间信息,不同的是平均池化操作对于特征图的操作是每一个像素点都有反馈,而最大池化在进行梯度反向传播计算时,只有特征图中响应最大的地方有梯度的反馈。

图7 通道注意力模块Fig.7 Channel attention module

通道注意力机制的表达如下:

空间注意力模块结构如图8 所示,输入特征图为通道注意力模块的输出特征图。

图8 空间注意力模块Fig.8 Spatial attention module

首先对输入的特征图做基于通道的最大池化与平均池化操作,然后将2 个池化的结果基于通道做拼接操作,再将特征图做一个卷积操作对通道进行降维,降为1 个通道数。 最后空间注意力模块对通道进行压缩操作,计算如下:

式中,7×7 表示卷积核大小;σ表示进行激活操作。

本文将CBAM 嵌入到改进的网络结构中,使得网络能够有效地关注有用的信息,抑制无关的信息,具体的嵌入位置如图9 所示。

图9 改进的特征融合层Fig.9 Improved feature fusion layer

3 实验与分析

3.1 实验环境与网络训练

本文的实验环境配置如表2 所示。

表2 实验室环境配置Tab.2 Laboratory environment configuration

在实验过程中的网络参数配置如下:设置动量为0.9,权重衰减为0. 000 5,训练中迭代次数设置为100 轮(epoch),同时对学习率使用分步策略,初始值设置为0.001,比率为0. 15 和0. 1。 学习率决定了得到最优值参数的快慢,如果学习率过大,可能使得参数跳过最优值从而导致网络无法收敛甚至发散;如果学习率过小,则优化效率过低,长时间无法收敛,可能得到局部最优。 因此,在训练中设置权值衰减系数,此参数会根据模型训练情况动态改变学习率大小,使得网络在训练迭代中总能得到最优值参数。

3.2 实验数据集

针对本文所研究的道路目标检测问题需求,实验所采用的数据集为混合数据集。 在公开驾驶BDD 数据集中随机选取7 900 张图片,数据集中共有8 个类别(car,bus,person,truck,rider,bike,traffic light,traffic sign),在道路目标检测中,将骑车子的人(rider)以及在道路上的自行车(bike)统归为rider 类。 同时,使用自动驾驶场景下计算机视觉数据集KITTI,针对现实生活中道路上的目标以及样本数量不均衡问题,选择在KITTI 数据集中删除Van,Train,Dontcare,Misc 这4 个样本量很少的类别,并且将骑车子的人(Cyclist)这一类别合并在rider 类中去,将Pedestrain,Person-sitting 这2 类合并为person 类。 实验中部分数据集样本如图10 所示。

图10 部分数据样本Fig.10 Partial data samples

处理好的数据集共15 381 张图片,分为7 个类别(car,bus,person,truck,rider,traffic light,traffic sign),并根据处理后的类别生成对应的xml 格式的标签。 图片按照9 ∶1 的比例将13 843 张图片划分为训练集,1 538 张图片划分为测试集,并且在训练集中也按照9 ∶1 的比例划分出1 384 张验证集,验证训练效果。

3.3 评价指标

在目标检测任务算法中,衡量算法性能好坏的指标包括图像识别检测的准确率、测试的时间长短以及训练模型的参数量。 对实验结果的最主要评价是看检测目标值与真实目标值的相符度。 本文中采取如下几个指标对实验结果进行评估:

精确率(Precision)是指模型预测结果为正的样本中,有多少是真的正样本的数值的比率:

召回率(Recall)是指原始数据集中正样本有多少被模型成功预测正确的数值的比率:

式中,TP,FP和FN分别表示正确检测框、误检框和漏检框的数量。

平均精度均值(mean Average Precision,mAP)的计算为单个类别的精确度的综合除以整体类别数。以每秒检测帧数(Frames per Second,FPS)作为道路目标检测过程中检测实验结果的好坏评价指标,即:

4 实验结果与评估分析

本文实验过程中, 将混合数据集分别在YOLOv3,YOLOv3_ISODATA 以 及YOLOv3_M 上 进行训练100 个epoch,训练每一个epoch 记录一次损失值数据,网络模型的损失函数曲线如图11 所示。

图11 损失函数曲线Fig.11 Loss function curve

可以看出,改进后的YOLOv3_M 算法相比较YOLOv3 算法训练的前20 轮下降速度较快,在75 轮之后开始收敛,相比较未改进之前的算法收敛性较强,可以证明改进算法的有效性。

本文为对比改进后算法模型的作用,分别使用BDD 与KITTI 混合数据集对YOLOv3,YOLOv3_ISODATA 以及YOLOv3_M 三种网络模型进行训练实验。 编写代码使用各个网络训练得到的权重模型计算P,R 值,并绘制成PR 曲线图,得到各个算法类别AP 值,本次实验中共有7 个类别,按照标签框数量选取4 个类别的PR 曲线,目标类别分别为car,traffic light,person,truck,如图12 和图13 所示。 可以看出,4 个类别在改进后的算法模型YOLOv3_M 上的AP 值相对于原始YOLOv3 算法分别提高了3.81%,5.79%,4.17%和2.66%。

图12 改进前网络类别AP 曲线(YOLOv3)Fig.12 AP Curve of network before improvement (YOLOv3)

图13 改进后网络类别AP 曲线(YOLOv3_M)Fig.13 AP curve of network after improvement (YOLOv3_M)

为了确定算法改进的有效性,选取经典的目标检测算法和改进后的算法进行实验结果对比分析,对比实验的数据主要为模型的大小、算法的训练速度以及mAP。 本文选择了经典的一阶段目标检测算法 (Single Shot Multibox Detector,SSD),其主干特征提取网络VGG16 包含13 个卷积层和3 个全连接层,所有的卷积层采用3×3 的卷积核进行卷积,加深了卷积神经网络,由于VGG16 网络架构权重数量相当大且全连接节点的数量较多,训练数据非常慢。另外,选择了二阶段目标检测算法Faster R-CNN,其主干特征提取网络ResNet50 加入残差学习的思想,解决了深层网络中梯度弥散和精度下降的问题,模型大小相当于VGG16 的一半,但是训练的速度却很缓慢。 为了进一步验证算法改进的有效性,选择YOLO 系列的目标检测算法进行训练测试,YOLOv4算法的主干特征提取网络的模型参数相比较基础YOLOv3 算法要小很多,但是相比较改进后的YOLOv3_M 算法模型,YOLOv4 参数仍然很大。 轻量化模型YOLOv4_tiny 是YOLOv4 的简化版,权重大小只有87 MB,相对于本文改进的YOLOv3_M 算法模型参数少了很多,但是更少参数以及更快速度的代价是牺牲了准确率,并且YOLOv4_tiny 只有2 个检测头,所以对于小物体检测以及目标有重叠或者遮时检测精度较差,具体实验的结果数据如表3 所示。

表3 各网络精度对比Tab.3 Comparison of accuracy of each network

数据对比分析:VGG16 训练模型达到280 MB,训练速度56 帧/秒,比YOLOv3_M 算法运行速度慢且检测精度低很多。 ResNet50 模型大小相当于VGG16 的一半大小,但训练的速度缓慢,只达到136 帧/秒,且精度不高。 YOLOv4_tiny 虽然权重大小只有87 MB,但是检测精度较差,只有46.68%,比YOLOv3_M 低14. 27%。 本文的应用场景是在辅助驾驶中的道路目标检测,需要兼顾目标检测的速度与准确率。 YOLOv3_M 训练后检测结果比YOLOv3算法的mAP 提升了0. 7%,用轻量化模型Mobile-Netv3 代替主干特征提取网络Darknet-53,并在特征融合部分引入了注意力机制CBAM 后,模型的推断速度达到了84.3 帧/秒,提升了18.3 帧/秒,且模型的大小相比较原始算法YOLOv3 缩减了229. 4 MB。综上所述,YOLOv3_M 综合评价上优于YOLOv4_tiny算法,兼顾了推断速度与检测精度,在实际道路目标检测中场景中,符合轻量化模型这一需求。

5 结束语

针对传统YOLOv3 算法模型参数大、在实际应用中训练数据时间较长且应用终端设备受限的问题,本文提出了一种轻量化的道路目标检测算法——YOLOv3_M。 该方法以单阶段目标检测算法YOLOv3 为基础,运用轻量化模型与注意力机制的相关知识,将改进后的模型在混合数据集上进行训练。 所提出的算法在BDD 与KITTI 混合数据集上测试的mAP 为60.95%,训练速度为84.3 帧/秒,结果证明该算法是可行且有效的,并且可以将该算法移植于移动端设备中以辅助驾驶,具有广阔的应用前景。

猜你喜欢

轻量化卷积聚类
汽车轻量化集成制造专题主编
基于3D-Winograd的快速卷积算法设计及FPGA实现
从滤波器理解卷积
一种轻量化自卸半挂车结构设计
一种轻量化自卸半挂车结构设计
基于傅里叶域卷积表示的目标跟踪算法
基于DBSACN聚类算法的XML文档聚类
基于高斯混合聚类的阵列干涉SAR三维成像
瞄准挂车轻量化 锣响挂车正式挂牌成立
用户:轻量化挂车的使用体验