1. 引言
随着深度学习的技术不断攀升,在目标检测方面应用基于深度卷积神经网络的一系列算法之后,在速度和精度上都取得了极大的进步。卷积神经网络实现了在特征提取、边界框的以及目标分类的判别。
目前基于卷积神经网络的目标检测算法大体分为两类:两阶段检测算法,例如,R-CNN [1]、Fast R-CNN [2] 和Faster R-CNN等算法;单阶段检测算法,例如YOLO算法和SSD等算法 [3]。两阶段目标检测算法有两个步骤,先是生成候选区域,然后对候选区域进行分类、回归,产生最后结果。由此可见,这类目标检测算法步骤多,训练困难,虽然准确度高,但是检测速度慢 [4]。于是学者们将两个阶段融合为一个阶段,即单阶段目标检测算法。该类算法通过将目标定位转换为回归,可以一步获取目标的类别概率以及坐标位置,不再使用候选框 [5]。这类算法虽然提高了检测速率,但是检测的准确率也降低了。但无论是两阶段目标检测算法还是单阶目标检测算法,为了更好地进行目标特征提取,网络层数不断深化,但是由此也导致了参数量剧增,极大地增加了浮点运算的运算量,并且对内存资源的占用也是极大的负担 [6]。
于是学者们开始对网络进行轻量化设计,2016年,Iandola等在文献 [7] 中提出SqueezeNet轻量化网络,该网络是基于Fire module模块构建的,与Inception的网络构建一致,参数量有所减少。2017年Howard 等在文献 [8] 中提出Mobilenet_v1轻量化网络,基本组件就是引入的深度可分离卷积,同时引入两个超参数,经过改进模型参数量得到进一步降低。同年,Zhang等人提出了ShuffleNet v1轻量化网络,该算法使用分组卷积代替1 × 1卷积,并进行Channel Shuffle,达成通道间信息交互,保证网络性能。2018年,Mark [9] 等在文献 [9] 中提出了Mobilenet_v2轻量化网络,该网络是在Howard的基础上引入了倒残差网络以及线性瓶颈结构,用Relu6激活函数代替 Narrow layer后的ReLU,因为Relu6在增加高维空间非线性方面更加有效,这样能够保持特征多样性,增强网络表达能力。同年Ma [10] 等人在文献 [10] 中提出ShuffleNet v2轻量化网络,该网络先划分通道,一个分支不操作,一个分支卷积,然后先拼接再进行Channel Shuffle操作。2019年Grace [11] 等在文献 [11] 中提出Mobilenet_v3轻量化网路,该网络是对Mobilenet_v2的改进,在MobileNet_v3中先进行平均池化 [12],再使用1 × 1卷积,保留了高维特性,还减少了延迟,与Mobilenet_v2的瞬息相反,此外,Mobilenet_v3主要使用了NAS (Neural Network Search),并引入轻量级注意力模型(SE)、h-swish激活函数,使用5 × 5的卷积 [13]。但是这些轻量化网络都存在同一个问题,网络为全卷积网络,浮点运算量非常大。
本文以YOLOv4算法为基础,对YOLOv4进行轻量化设计,减少浮点运算,从而提高检测速度。将GhostNet引入YOLOv4算法,代替原网络中CSPDarknet-53,达到使用更少的参数数据生成更多有效特征的目的。并与其他轻量化网络进行对比,验证GhostNet的有效性。为保证目标检测的精度,在GhostNet网络中引入混合注意力机制(CBAM) [14],使得网络模型更加关注有效的信息,提取出有效的特征信息,使用HDC (混合空洞卷积)代替原网络中的SPPNet,保留浅层网络特征,从而保证检测精度。
2. 算法概述
2.1. YOLOv4算法
YOLOv4算法作为最近两年目标检测的热门算法,是在原有的YOLO算法的检测架构上从数据处理、主干网络、网络训练、激活函数以及损失函数等各个方面做出了改进 [15],其网络结构如图1所示。
Figure 1. The Structure diagram of YOLOv4
图1. YOLOv4结构图
从上图可以看出,其主干网络采用了CSPDarknet53,该部分主要是一系列的残差网络构成,都是全卷积,所以浮点运算量很大。相较于Darknet53,它增加SPPnet (Spatial Pyramid Pooling network),就是对特征图进行不同程度的池化,目的是增加感受野,但是这样会降低所提取的特征的分辨率,丢失掉一些细节信息。其次在neck部分采用PANet (Path Aggregation Network for Instance Segmentation),充分融合特征 [16]。原始的YOLOv4算法在梯度消失方面做了弥补,模型的学习能力有所提高,但是模型的参数量和计算量非常大。
2.2. 算法改进
本文针对上节所述不足对YOLOv4算法进行改进。
1) 针对原始YOLOv4算法浮点运算量大的问题,本文使用GhostNet [17] 代替CSPDarknet53,使用简单的线性运算代替部分卷积神经网络,以此减少参数量以及浮点运算量。
通过标准卷积得到的特征图如图2(a)所示,特征图均由卷积运算生成,有很多冗余信息,其浮点运算量为:
(1)
本文在YOLOv4的特征提取网络引入GhostNet网络,对输入的图片包括两次卷积操作,第一次通过卷积生成一部分特征图,假设输出通道数为m × s,则生成m个特征图;第二次是用第一次的特征图映射生成s − 1个新特征图,从而生成
个特征图,最后把两次卷积的到的特征图拼接起来作为输出,最后的通道数是m × s。
Figure 2. Ordinary convolution and Ghost module
图2. 普通卷积与Ghost module
如图2(b)所示,Ghost module在进行运算时,Identity部分作为标准卷积部分,输入数据
,其中c为输入通道数,h是输入数据的长,w是输入数据的宽,
,k是卷积核尺寸,m是标准卷积部分的卷积核数量,m ≤ n于是得到获取特征图的公式:
(2)
其中,
是输出特征图,
和
分别表示输出特征图的长和宽,b表示偏置。那么利用线性操作得到的特征图为:
(3)
其中,
是Y中的第i个特征图,
是对第
个特征图的第j次线性运算,得到第
个特征图。当j = s时,得到m × s个特征图,通卷积的通道数保持一致。
通过这种方法的浮点运算量
(4)
于是能够得到理论加速比:
(5)
其中d × d是线性运算的内核大小,其幅度与k × k的幅度相似,当
时:
(6)
当
时,使用Ghost Module的速度理论上能比原本提升s倍。
用两个Ghost Module进行堆叠,构成Ghost Bottleneck,和残差结构有些类似,第一个Ghost Module是为了增加特征维度,第二Ghost Module是为了减少特征维度,使其通道数与短接过来的通道数一致。
为保证目标检测的精度,相对于原始的GhostNet网络,本文综合空间注意力和通道注意力的优势,在GhostNet特征提取网络中加入了CBAM模块,如图3所示。在通道和空间上都使用attention。第一步,对输入数据进行全局最大池化和全局平均池化,得到两个特征映射,这里基于通道注意力机制进行;第二步,将两个特征图拼接后降维为1个通道;第三步,通过sigmoid生成空间注意力特征图;第四步,利用第三步的特征图乘以该模块的输入特征图生成最终特征图。
2) 针对使用普通池化所存在的缺陷,本文使用HDC代替原始YOLOv4网络中的SPPNet。
空洞卷积就是在卷积核中填充0,使用不同大小的空洞率,同样达到增大感受野的目的,还使得获取的特征信息来自不同尺度。如图4所示,是空洞率为2的空洞卷积。不直接使用空洞卷积是因为空洞卷积虽然增大了浅层特征的感受野,但是容易导致丢失局部信息。
Figure 4. The rate of atrous convolution = 2
图4. 空洞率 = 2的空洞卷积
3. 实验与分析
3.1. 实验平台数据
本次实验算法基于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进行网络模型训练。
3.2. 实验结果分析
本次实验采用P-R曲线作为模型性能的测评标准,P-R曲线以召回率(Recall, R)为横坐标,以精确率(Precision, P)作为纵坐标。经过实验测试,得到各目标的检测性能。由于所用数据集类别较多,选取其中car类别和bicycle类别的PR曲线做对比如图5和图6所示,该曲线所围成的阴影部分的面积即为平均精确度值。
Figure 5. P-R curves of car class under different lightweight models
图5. 不同轻量化模型下car类的P-R曲线
如表1所示,各个轻量化网络的参数量都有所减少,如图7所示,是该数据集在不同轻量化模型下部分类别的mAP,本文算法mAP有所提升,速度提高了很多。
Table 1. Comparison of each lightweight model
表1. 各个轻量化模型对比
Figure 6. P-R curves of bicycle class under different lightweight models
图6. 不同轻量化模型下car类的P-R曲线
Figure 7. mAP comparison of each lightweight model
图7. 各个轻量化模型的mAP
如图8所示,是部分图片的目标识别的可视化图,图9是自取数据测试的可视化图。
Figure 8. Visualization of the test section of the dataset
图8. 数据集测试部分可视化图
Figure 9. Visualization of self-fetching data test
图9. 自取数据测试可视化图
4. 结论
针对目前YOLOv4网络模型过大,导致检测效率低下,本文在YOLOv4的基础上,对网络模型进行轻量化改造。使用GhostNet通过用标准卷积产生部分特征图,再使用这部分特征图通过线性运算产生相似特征图,减少了卷积操作,从而减少浮点运算量,达到提升检测速率的效果。使用HDC代替原网络中SPP网络,增大感受野的同时,减少了浅层网络的特征丢失,也增加了不同尺度的特征信息。为了提高模型的泛化能力,在引入Ghost的基础上加上了CBAM模块,使得实验结果在提升速度的情况下保证精度。通过几种轻量化网络的对比实验,实验结果证明,本文算法有效地减少了浮点运算量,对模型进行了有效的压缩,并且在保证精度的情况下,在速度上得到了很大的提升,但本文的HDC中,空洞率不宜过大,过大时会丢失图片的全局信息,反而适得其反。
基金项目
西南民族大学研究生创新型科研项目(项目编号:CX2021SP103)。