针对YOLOv4算法网络模型大、运算量大、运行效率低的问题,本文提出一种基于GhostNet的YOLOv4轻量化模型,使用GhostNet代替原网络中的CSPDarknet-53,通过一些简单的线性运算代替部分卷积,减少卷积运算,从而减少参数量以及浮点运算量。然后,在GhostNet中引入CBAM模块,结合通道注意力机制和通道注意力机制,增强模型对有效特征关注。另外使用HDC代替原始网路中的SPPNet,减少浅层网络特征的丢失。最后,将改进的算法与基于其他轻量化网络的YOLOv4算法对比。实验结果证明,与原始YOLOv4相比,在精度损失较小的情况下,基于GhostNet以及注意力机制的YOLOv4轻量化模型的大小得到了压缩,检测速度有了明显的提升。 In view of the problems of large network model, large amount of computation and low operation efficiency of YOLOv4algorithm, this thesis proposes a lightweight model of YOLOv4based on Ghost-Net. The CSPDarknet-53 in the original network is replaced by GhostNet. And partial convolution is replaced by some simple linear operations to reduce convolution operation, thus reducing the number of arguments and floating point operations. Then, CBAM module is introduced into Ghost-Net, combining channel attention mechanism and channel attention mechanism, to enhance the model’s attention to effective features. In addition, HDC is used instead of SPPNet in the original network to reduce the loss of shallow network features. Finally, the improved algorithm is compared with YOLOv4algorithm based on other lightweight networks. Experimental results show that, compared with the original YOLOv4, the size of the lightweight model of YOLOv4based on GhostNet and attention mechanism is compressed and the detection speed is significantly improved under the condition of less accuracy loss.
针对YOLOv4算法网络模型大、运算量大、运行效率低的问题,本文提出一种基于GhostNet的YOLOv4轻量化模型,使用GhostNet代替原网络中的CSPDarknet-53,通过一些简单的线性运算代替部分卷积,减少卷积运算,从而减少参数量以及浮点运算量。然后,在GhostNet中引入CBAM模块,结合通道注意力机制和通道注意力机制,增强模型对有效特征关注。另外使用HDC代替原始网路中的SPPNet,减少浅层网络特征的丢失。最后,将改进的算法与基于其他轻量化网络的YOLOv4算法对比。实验结果证明,与原始YOLOv4相比,在精度损失较小的情况下,基于GhostNet以及注意力机制的YOLOv4轻量化模型的大小得到了压缩,检测速度有了明显的提升。
目标检测,YOLOv4,轻量化模型,GhostNet,CBAM模块,HDC
Xiaoyan Zhang, Huazhang Wang
School of Electrical Engineering, Southwest Minzu University, Chengdu Sichuan
Received: Aug. 14th, 2021; accepted: Sep. 10th, 2021; published: Sep. 17th, 2021
In view of the problems of large network model, large amount of computation and low operation efficiency of YOLOv4 algorithm, this thesis proposes a lightweight model of YOLOv4 based on GhostNet. The CSPDarknet-53 in the original network is replaced by GhostNet. And partial convolution is replaced by some simple linear operations to reduce convolution operation, thus reducing the number of arguments and floating point operations. Then, CBAM module is introduced into GhostNet, combining channel attention mechanism and channel attention mechanism, to enhance the model’s attention to effective features. In addition, HDC is used instead of SPPNet in the original network to reduce the loss of shallow network features. Finally, the improved algorithm is compared with YOLOv4 algorithm based on other lightweight networks. Experimental results show that, compared with the original YOLOv4, the size of the lightweight model of YOLOv4 based on GhostNet and attention mechanism is compressed and the detection speed is significantly improved under the condition of less accuracy loss.
Keywords:Target Detection, YOLOv4, Lightweight Model, GhostNet, CBAM Module, HDC
Copyright © 2021 by author(s) and beplay安卓登录
This work is licensed under the Creative Commons Attribution International License (CC BY 4.0).
http://creativecommons.org/licenses/by/4.0/
随着深度学习的技术不断攀升,在目标检测方面应用基于深度卷积神经网络的一系列算法之后,在速度和精度上都取得了极大的进步。卷积神经网络实现了在特征提取、边界框的以及目标分类的判别。
目前基于卷积神经网络的目标检测算法大体分为两类:两阶段检测算法,例如,R-CNN [
于是学者们开始对网络进行轻量化设计,2016年,Iandola等在文献 [
本文以YOLOv4算法为基础,对YOLOv4进行轻量化设计,减少浮点运算,从而提高检测速度。将GhostNet引入YOLOv4算法,代替原网络中CSPDarknet-53,达到使用更少的参数数据生成更多有效特征的目的。并与其他轻量化网络进行对比,验证GhostNet的有效性。为保证目标检测的精度,在GhostNet网络中引入混合注意力机制(CBAM) [
YOLOv4算法作为最近两年目标检测的热门算法,是在原有的YOLO算法的检测架构上从数据处理、主干网络、网络训练、激活函数以及损失函数等各个方面做出了改进 [
图1. YOLOv4结构图
从上图可以看出,其主干网络采用了CSPDarknet53,该部分主要是一系列的残差网络构成,都是全卷积,所以浮点运算量很大。相较于Darknet53,它增加SPPnet (Spatial Pyramid Pooling network),就是对特征图进行不同程度的池化,目的是增加感受野,但是这样会降低所提取的特征的分辨率,丢失掉一些细节信息。其次在neck部分采用PANet (Path Aggregation Network for Instance Segmentation),充分融合特征 [
本文针对上节所述不足对YOLOv4算法进行改进。
1) 针对原始YOLOv4算法浮点运算量大的问题,本文使用GhostNet [
通过标准卷积得到的特征图如图2(a)所示,特征图均由卷积运算生成,有很多冗余信息,其浮点运算量为:
Q 1 = n × h ′ × w ′ × c × k × k (1)
本文在YOLOv4的特征提取网络引入GhostNet网络,对输入的图片包括两次卷积操作,第一次通过卷积生成一部分特征图,假设输出通道数为m × s,则生成m个特征图;第二次是用第一次的特征图映射生成s − 1个新特征图,从而生成 m × ( s − 1 ) 个特征图,最后把两次卷积的到的特征图拼接起来作为输出,最后的通道数是m × s。
图2. 普通卷积与Ghost module
如图2(b)所示,Ghost module在进行运算时,Identity部分作为标准卷积部分,输入数据 X ∈ R c × h × w ,其中c为输入通道数,h是输入数据的长,w是输入数据的宽, f ∈ R c × k × k × m ,k是卷积核尺寸,m是标准卷积部分的卷积核数量,m ≤ n于是得到获取特征图的公式:
Y = X ∗ f + b (2)
其中, Y ∈ R m × h ′ × w ′ 是输出特征图, h ′ 和 w ′ 分别表示输出特征图的长和宽,b表示偏置。那么利用线性操作得到的特征图为:
y i j = ϕ i , j ( y ′ i ) (3)
其中, y ′ i 是Y中的第i个特征图, ϕ i , j 是对第 y ′ i 个特征图的第j次线性运算,得到第 y i j 个特征图。当j = s时,得到m × s个特征图,通卷积的通道数保持一致。
通过这种方法的浮点运算量
Q 2 = 1 s × Q 1 + ( s − 1 ) × 1 s × h ′ × w ′ × d × d (4)
于是能够得到理论加速比:
R = Q 1 Q 2 = s × c c + s − 1 (5)
其中d × d是线性运算的内核大小,其幅度与k × k的幅度相似,当 s ≪ c 时:
R ≈ s × c c + s − 1 = s 1 + s − 1 c ≈ s (6)
当 d × d = k × k 时,使用Ghost Module的速度理论上能比原本提升s倍。
用两个Ghost Module进行堆叠,构成Ghost Bottleneck,和残差结构有些类似,第一个Ghost Module是为了增加特征维度,第二Ghost Module是为了减少特征维度,使其通道数与短接过来的通道数一致。
为保证目标检测的精度,相对于原始的GhostNet网络,本文综合空间注意力和通道注意力的优势,在GhostNet特征提取网络中加入了CBAM模块,如图3所示。在通道和空间上都使用attention。第一步,对输入数据进行全局最大池化和全局平均池化,得到两个特征映射,这里基于通道注意力机制进行;第二步,将两个特征图拼接后降维为1个通道;第三步,通过sigmoid生成空间注意力特征图;第四步,利用第三步的特征图乘以该模块的输入特征图生成最终特征图。
图3. 混合主力机制
2) 针对使用普通池化所存在的缺陷,本文使用HDC代替原始YOLOv4网络中的SPPNet。
空洞卷积就是在卷积核中填充0,使用不同大小的空洞率,同样达到增大感受野的目的,还使得获取的特征信息来自不同尺度。如图4所示,是空洞率为2的空洞卷积。不直接使用空洞卷积是因为空洞卷积虽然增大了浅层特征的感受野,但是容易导致丢失局部信息。
图4. 空洞率 = 2的空洞卷积
本次实验算法基于CUDA 10.2以及pytorch1.2.0编程语言实现,使用了NVIDIA Geforce GTX 1080ti 11G 进行训练。超参数设置如下:Batch size = 4,初始学习率为0.001,Epoch = 100,输入图片尺寸为416 × 416。
为了验证本次实验的有效性,本次实验的所有对比试验均在同等的环境下,采用的数据集为公开数据集PASCAL VOC2007 + 2012,该数据集一共11,530张标注过的图片,共27,450个物体被标定,一共20个类别。用Mobilenetv2、v3以及ShuffleNet分别代替原网络中的目标提取网络作为对比实验。使用本文改进的YOLOv4进行网络模型训练。
本次实验采用P-R曲线作为模型性能的测评标准,P-R曲线以召回率(Recall, R)为横坐标,以精确率(Precision, P)作为纵坐标。经过实验测试,得到各目标的检测性能。由于所用数据集类别较多,选取其中car类别和bicycle类别的PR曲线做对比如图5和图6所示,该曲线所围成的阴影部分的面积即为平均精确度值。
图5. 不同轻量化模型下car类的P-R曲线
如表1所示,各个轻量化网络的参数量都有所减少,如图7所示,是该数据集在不同轻量化模型下部分类别的mAP,本文算法mAP有所提升,速度提高了很多。
Model (基于YOLOv4) | Parms | 浮点运算量 | mAP/% | FPS |
---|---|---|---|---|
ShuffleNetv2 | 48.42M | 120.46 | 81.96 | 22.62 |
Mobilenet_v2 | 44.74M | 115.83 | 82.73 | 23.34 |
Mobilenet_v3 | 43.58M | 107.48 | 87.86 | 26.71 |
本文算法 | 19.53M | 62.56 | 89.54 | 44.63 |
表1. 各个轻量化模型对比
图6. 不同轻量化模型下car类的P-R曲线
图7. 各个轻量化模型的mAP
如图8所示,是部分图片的目标识别的可视化图,图9是自取数据测试的可视化图。
图8. 数据集测试部分可视化图
图9. 自取数据测试可视化图
针对目前YOLOv4网络模型过大,导致检测效率低下,本文在YOLOv4的基础上,对网络模型进行轻量化改造。使用GhostNet通过用标准卷积产生部分特征图,再使用这部分特征图通过线性运算产生相似特征图,减少了卷积操作,从而减少浮点运算量,达到提升检测速率的效果。使用HDC代替原网络中SPP网络,增大感受野的同时,减少了浅层网络的特征丢失,也增加了不同尺度的特征信息。为了提高模型的泛化能力,在引入Ghost的基础上加上了CBAM模块,使得实验结果在提升速度的情况下保证精度。通过几种轻量化网络的对比实验,实验结果证明,本文算法有效地减少了浮点运算量,对模型进行了有效的压缩,并且在保证精度的情况下,在速度上得到了很大的提升,但本文的HDC中,空洞率不宜过大,过大时会丢失图片的全局信息,反而适得其反。
西南民族大学研究生创新型科研项目(项目编号:CX2021SP103)。
张小燕,汪华章. 基于轻量化网络的YOLOv4检测算法研究Research on YOLOv4Detection Algorithm Based on Lightweight Network[J]. 计算机科学与应用, 2021, 11(09): 2333-2341. https://doi.org/10.12677/CSA.2021.119238
https://doi.org/10.1109/TPAMI.2015.2437384
https://doi.org/10.1109/TPAMI.2016.2577031
https://doi.org/10.1088/1742-6596/1684/1/012028
https://doi.org/10.3389/fpls.2020.00898
https://doi.org/10.1088/1742-6596/1952/2/022061
https://doi.org/10.1016/j.icheatmasstransfer.2021.105433
https://doi.org/10.1109/ICCV.2019.00140
https://doi.org/10.3390/sym13040623
https://doi.org/10.19678/j.issn.1000-3428.0060948, 2021-09-14.
https://doi.org/10.1109/CVPR42600.2020.00165