«上一篇 下一篇»
  计算机工程  2022, Vol. 48 Issue (8): 206-214  DOI: 10.19678/j.issn.1000-3428.0062216
0

引用本文  

张宝朋, 康谦泽, 李佳萌, 等. 轻量化的YOLOv4目标检测算法[J]. 计算机工程, 2022, 48(8), 206-214. DOI: 10.19678/j.issn.1000-3428.0062216.
ZHANG Baopeng, KANG Qianze, LI Jiameng, et al. Lightweight YOLOv4 Target Detection Algorithm[J]. Computer Engineering, 2022, 48(8), 206-214. DOI: 10.19678/j.issn.1000-3428.0062216.

基金项目

辽宁省自然科学基金面上项目“高速列车无线健康管理通信系统关键技术研究”(2021-MS-298);辽宁省教育厅科学研究项目“列控系统故障诊断和预警机制的研究”(JDL2020006)

作者简介

张宝朋(1995—),男,硕士研究生,主研方向为FPGA开发、车辆信息控制、目标检测;
康谦泽,硕士研究生;
李佳萌,硕士研究生;
郭俊宇,硕士研究生;
陈少华,教授、博士

文章历史

收稿日期:2021-07-30
修回日期:2021-09-30
轻量化的YOLOv4目标检测算法
张宝朋 , 康谦泽 , 李佳萌 , 郭俊宇 , 陈少华     
大连交通大学 计算机与通信工程学院, 辽宁 大连 116028
摘要:YOLOv4目标检测算法主干网络庞大且参数量和计算量过多,难以部署在算力和存储资源有限的移动端嵌入式设备上。提出一种改进的YOLOv4目标检测算法,使用轻量化的ShuffleNet V2网络作为主干特征提取网络,更换模型激活函数及扩大卷积核,同时将YOLOv4网络中的普通卷积替换为深度可分离卷积,降低算法参数量、计算量和模型占用空间。在ShuffleNet V2网络结构的改进过程中分析并剪裁其基本组件,利用2个3 $ \times $ 3卷积核级联的方式增强网络感受野,并使用Mish激活函数进一步提升网络检测精度和模型推理速度。在GPU平台和VisDrone 2020数据集上的实验结果表明,与YOLOv4算法相比,改进的YOLOv4算法在牺牲1.8个百分点的检测精度情况下,提高了27%的检测速度,压缩了23.7%的模型容量,并且能够充分发挥ZYNQ平台并行高速数据处理及低功耗的优势。
关键词YOLOv4目标检测    ShuffleNet V2网络模型    卷积运算    轻量化网络    ZYNQ平台    
Lightweight YOLOv4 Target Detection Algorithm
ZHANG Baopeng , KANG Qianze , LI Jiameng , GUO Junyu , CHEN Shaohua     
School of Computer and Communication Engineering, Dalian Jiaotong University, Dalian, Liaoning 116028, China
Abstract: The YOLOv4 algorithm has a large backbone network and involves a large amount of parameters, due to which it is difficult to use the algorithmfor mobile embedded devices with limited computing power and storage. Aiming at solving these disadvantages, this study proposes an improved YOLOv4 target detection algorithm. It uses the lightweight ShuffleNetV2 network as the backbone feature extraction network, replaces the model activation function, and expands the convolution kernel. Moreover, the ordinary convolutions in the YOLOv4 network are replaced with depthwise separable convolutions, which reduce the amount of algorithm parameters and computations, and the size of the network model. Using the improved ShuffleNetV2 network structure, the basic components of the network structure are analyzed and clipped, the network receptive field is improved by cascading two 3×3 convolution cores, and the Mish activation function is used to further improve the network accuracy and speed of model reasoning. The experimental results on the GPU platform and the VisDrone 2020 dataset show that compared with the YOLOv4 algorithm, the proposed YOLOv4 algorithm improves the detection speed by 27% and compresses the algorithm capacity by 23.7%;however, detection accuracy is reduced by 1.8 percentage points. At the same time, the proposed algorithm can give full play to the advantages of parallel high-speed data processing and low power consumption of the ZYNQ platform.
Key words: YOLOv4 target detection    ShuffleNet V2 network model    convolution operation    lightweight network    ZYNQ platform    

开放科学(资源服务)标志码(OSID):

0 概述

目标检测是计算机视觉中的重要分支,广泛应用于图像分割、物体追踪、关键点检测等任务,主要分为Two Stage和One Stage两类算法。Two Stage目标检测算法包括R-CNN[1]、Faster RCNN[2]、Fast-RCNN[3]等算法,先进行区域生成,此区域通常称为候选区域(Region Proposal,RP),即可能包含需要检测物体的预选框,再通过卷积神经网络进行分类;One Stage目标检测算法包括YOLO[4-6]系列、SSD[7]、RetinaNET[8]等算法,不使用RP,通过特征提取网络提取图像特征,直接利用提取的特征预测物体分类和位置。相较于Two Stage目标检测算法复杂的网络结构,One Stage目标检测算法具有检测速度快、模型简单轻量的特点,适合部署在移动端嵌入式设备上。

YOLOv4算法是YOLO系列算法中的第4版,相较于之前的YOLO系列算法,在原有YOLO目标检测架构的基础上,分别在加强特征提取、增强网络模型非线性、防止过度拟合等方面做了优化。从YOLOv1到YOLOv4[9],YOLO算法在经过数次迭代之后,逐渐弥补了许多缺陷,同时在保持速度优势的前提下,兼顾了检测准确度和实时性能。

本文在YOLOv4目标检测算法的基础上对其网络结构进行改进,将CSPDarkNet53主干特征提取网络替换为改进的ShuffleNet V2网络,并使用深度可分离卷积替换原算法网络中的普通卷积,进一步降低算法参数量、计算量和模型占用空间,使其满足移动端嵌入式设备存储容量小、算力低的要求。

1 YOLOv4和ShuffleNet V2网络结构 1.1 YOLOv4网络结构

YOLOv4网络结构如图 1所示,主干特征提取网络CSPDarkNet53结合了CSPNet[10]和DarkNet53的优点,在提高网络推理速度和准确性的同时,又能降低主干网络的计算量。相较于YOLOv3,YOLOv4的颈部网络NECK采用空间金字塔池化(Spatial Pyramid Pooling,SPP)[11]和路径聚合网络(Path Aggregation Network,PANet)的网络结构。SPP可以使得图片数据矩阵以固定大小的格式输出到YOLOv4的预测网络模块(Head),避免直接对图片进行剪裁缩放造成数据信息丢失,进而导致预测网络可信度降低。同时,在提取图片各维度特征方面,不再使用YOLOv3算法中的特征金字塔网络(Feature Pyramid Networks,FPN),而是采用一种金字塔和倒金字塔并行的PANet网络结构。

Download:
图 1 YOLOv4网络结构 Fig. 1 YOLOv4 network structure
1.2 ShuffleNet V2网络结构

ShuffleNet V2是一种适合部署在移动端的轻量化网络结构。MA等[12]在相同的硬件实现平台上,分别对ShuffleNet V1和MobileNet V2[13]的执行情况进行研究,结合理论分析和实验数据得出以下4条轻量化网络模型设计准则:

1)输入输出通道数相同,则内存占用量最小。

2)过多的分组卷积会增加内存占用量。

3)多路结构的网络分支会降低并行性,应尽量减少网络分支。

4)合理剪裁元素级运算,例如ReLU[14]和Add函数,可加快模型推理速度。

本文后续对ShuffleNet V2和YOLOv4网络结构的改进也依据以上4条设计准则展开。

ShuffleNet V2网络模型的基本组件(如图 2所示)大致可分为:1)基本组件1,在特征图输入后有一个通道分支(Channel Split)操作,该操作将输入通道数为c的特征图分为c-c′和c′,左边的分支不做任何操作,右边的分支包含3个卷积操作,并且2个1×1卷积已经由ShuffleNet V1中的分组卷积更换为普通卷积,再将这2个分支通道中的数据用Concat+Channel Shuffle操作进行合并,这样不仅可以使得该基础模块的输入输出通道数一样,而且避免了Add操作,加快模型了推理速度,最后进行通道重组(Channel Shuffle)操作;2)基本组件2,该组件没有Channel Split操作,因此输出通道数是输入通道数的2倍,左右分支的操作过程和基本组件1基本一致,此处不再赘述。

Download:
图 2 ShuffleNet V2网络模型的基本组件 Fig. 2 Basic components of ShuffleNet V2 network model
2 目标检测算法的改进 2.1 总体改进思路

YOLOv4目标检测算法在采用众多优化策略改进自身不足后性能表现优异,但在移动端设备部署目标检测算法的背景下,根据应用环境的不同,算法不一定需要很高的精确度,但需要较快的预测速度,在移动端设备算力及内存资源有限的情况下,算法模型的大小也变得尤为重要。显然,原YOLOv4算法很难适用于移动端的目标检测设备。

基于此,本文对YOLOv4目标检测算法进行改进,具体改进工作主要从以下2个方面展开:

1)改进轻量化网络模型ShuffleNet V2,使模型在进一步剪裁、压缩和降低计算量和参数量的同时,尽可能地使其精度符合预期要求,并使用改进的ShuffleNet V2网络替换原YOLOv4目标检测算法中的主干特征提取网络CSPDarkNet53。

2)剪裁YOLOv4颈部网络尾部的CBL+Conv(CBL=Conv+BN+ReLU)结构,压缩模型容量,降低计算量。

2.2 ShuffleNet V2网络结构的改进 2.2.1 卷积剪裁

在观察ShuffleNet V2网络模型的基本组件后发现,在组件的单侧分支中,输入特征首先经过一个以普通1×1卷积(Conv1×1)为主的Conv1×1+BN+ReLU卷积处理模块,然后进入一个DWConv3×3+BN模块,其中DWConv3×3是一个卷积核大小为3的深度可分离卷积,最后进入一个普通Conv1×1,也就是说DWConv3×3的前后各有一个普通的Conv1×1。在一般情况下,在深度可分离卷积前后使用1×1卷积的目的有两种,一种是为了升维或者降维,另一种是为了通道信息融合。在ShuffleNet V2模型设计时为了遵循轻量化网络模型设计准则中的准则1,每一分支的卷积层都需要保证输入输出通道相同,因此普通的Conv1×1并不是为了对卷积核的通道数进行降维或者升维操作,而是为了融合通道信息,弥补深度可分离卷积的通道信息融合能力。

根据以上分析,在每一分支上使用2个普通的Conv1×1进行通道信息融合略显冗余,使用1个Conv1×1便可以满足移动端目标检测设备对精度的要求。因此,将图 3中虚线部分的普通Conv1×1剪裁掉。

Download:
图 3 ShuffleNet V2网络模型基本组件的1×1卷积剪裁 Fig. 3 1×1 convolution clipping in the basic components of ShuffleNet V2 network model
2.2.2 卷积核扩大

在卷积神经网络中,感受野的大小是衡量这个网络性能的重要指标参数,更大的感受野可以提取到图片中的更多细节特征。根据文献[15]得到如下感受野反向计算公式:

$ {R}_{i}=({R}_{i+1}-1)\times {S}_{i}+{K}_{i} $ (1)

其中:$ {R}_{i} $是第i层卷积层上的感受野;$ {R}_{i+1} $是第i+1层上的感受野;$ {S}_{i} $是第i层的卷积步长(Stride);$ {K}_{i} $是第i层的卷积核大小。

根据式(1)可以得知,感受野的大小和卷积步长和卷积核大小有直接关系,扩大卷积步长和卷积核大小可以有效增大卷积层上的感受野。然而根据式(2)可以看出,扩大卷积步长和卷积核大小都会对卷积输出产生影响,其中卷积步长的增大对卷积输出的影响更为明显。

$ {o}_{\mathrm{s}\mathrm{i}\mathrm{z}\mathrm{e}}=[1+({i}_{\mathrm{s}\mathrm{i}\mathrm{z}\mathrm{e}}+2\times p-{K}_{\mathrm{s}\mathrm{i}\mathrm{z}\mathrm{e}}\left)\right]/S $ (2)

其中:$ {o}_{\mathrm{s}\mathrm{i}\mathrm{z}\mathrm{e}} $是卷积计算的输出值;$ {i}_{\mathrm{s}\mathrm{i}\mathrm{z}\mathrm{e}} $是输入图像的矩阵大小;$ p $是对输入图像矩阵高或宽上的补充(padding)值;$ {K}_{\mathrm{s}\mathrm{i}\mathrm{z}\mathrm{e}} $是卷积运算中的卷积核大小。由此可见,S的大小对$ {o}_{\mathrm{s}\mathrm{i}\mathrm{z}\mathrm{e}} $的影响很大,S过大会严重影响卷积层对特征图细节信息的提取,甚至完全遗漏掉两次卷积操作的中间信息。

图 4所示,使用一个3×3的卷积核对一个6×6的输入特征图进行卷积运算操作,其中黑色为参与1次卷积计算部分,深灰色为参与2次卷积计算部分,白色代表未参与卷积计算,浅灰色为第1、2次卷积计算均有参与,虚线表示padding。在卷积运算时:如果Stride为2,则卷积核大小范围的边缘部分数据参与2次卷积计算,这样既不会造成边缘部分细节特征的丢失,又可以进一步加强提取边缘交叉处不易于提取的特征值;如果卷积操作时Stride为3,则卷积核大小范围的边缘部分数据仅参与过1次卷积计算,即1次特征值的提取,这样很容易造成边缘处特征信息的丢失;如果卷积操作时Stride为4,则会完全丢失2次卷积操作间的特征信息。

Download:
图 4 不同卷积步长的卷积操作 Fig. 4 Convolution operations with different convolution strides

由此可见,加大卷积步长和卷积核大小可以有效增加感受野,但是加大卷积步长会导致卷积操作中丢失部分特征信息,因此本文原本决定从扩大卷积核的大小入手,对深度可分离卷积进行一个卷积核的扩张,即将ShuffleNet V2模型中原来的3×3卷积核替换为5×5卷积核,然而大尺寸的卷积核随之带来的是更多的参数量,在CNN网络中参数量的计算和输入特征图的参数无关,仅和卷积核的大小、BN以及偏置有关。假设卷积核kernel=(KSCO),其中KSCO分别是卷积操作时卷积核大小、步长、特征图输入通道数、输出通道数。卷积操作的参数量可以根据式(3)进行求解:

$ {P}_{\mathrm{c}\mathrm{o}\mathrm{n}\mathrm{v}}={K}^{2}\times C\times O $ (3)

K=5和K=3分别代入式(3),在输入输出通道数均相同的情况下,经计算得知K=5时的参数量是K=3时的2.6倍。因此,本文借鉴文献[16]方法,采用2个3×3卷积核级联的方式代替5×5卷积核,这种方式可以在有效降低计算量的同时,获得和5×5卷积核相同的感受野。简化式(2),在Stride为1且不考虑padding时得到式(4):

$ {o}_{\mathrm{s}\mathrm{i}\mathrm{z}\mathrm{e}}=1+{i}_{\mathrm{s}\mathrm{i}\mathrm{z}\mathrm{e}}-{K}_{\mathrm{s}\mathrm{i}\mathrm{z}\mathrm{e}} $ (4)

在卷积运算输出方面,假设$ {i}_{\mathrm{s}\mathrm{i}\mathrm{z}\mathrm{e}} $的大小为9,$ {K}_{\mathrm{s}\mathrm{i}\mathrm{z}\mathrm{e}} $的值为5,代入式(4)经计算得出$ {o}_{\mathrm{s}\mathrm{i}\mathrm{z}\mathrm{e}} $的值为5。在同样情况下,将$ {K}_{\mathrm{s}\mathrm{i}\mathrm{z}\mathrm{e}} $的值设为3,经过2次级联的3×3卷积核运算后得出$ {o}_{\mathrm{s}\mathrm{i}\mathrm{z}\mathrm{e}} $的值也是5。同理,在参数量方面,假定输入输出通道的值均为3,分别将K=5和K=3代入式(3),经计算可知5×5卷积操作的参数量为234,两个级联的3×3卷积操作的参数量为180,远比一个5×5卷积操作的参数量要低很多。

2.2.3 激活函数替换

Mish函数是MISRA于2019年提出的一种新型激活函数[17],函数表达式如式(5)所示:

$ \mathrm{M}\mathrm{i}\mathrm{s}\mathrm{h}=X\times \mathrm{t}\mathrm{a}\mathrm{n}\mathrm{h}\left(\mathrm{l}\mathrm{n}\right(1+{\mathrm{e}}^{x}\left)\right) $ (5)

其中:x是由归一化层传入的参数值。

由如图 5所示的Mish激活函数示意图可知:1)Mish激活函数在负值时并非完全截断,更好地保证了信息流入;2)Mish激活函数无边界,在左右极限的情况下梯度趋近于1,可避免梯度饱和;3)Mish激活函数的梯度下降效果更好,可以尽可能地保证每一个点的平滑。基于此,本文将ShuffleNet V2网络模型中原本的ReLU函数替换为Mish激活函数。

Download:
图 5 Mish激活函数示意图 Fig. 5 Schematic diagram of Mish activation function
2.2.4 改进的ShuffleNet V2最小基本组件

综合以上关于ShuffleNet V2网络模型的改进方法,得到新的ShuffleNet V2网络模型最小基本组件,如图 6所示。

Download:
图 6 改进的ShuffleNet V2网络模型最小基本组件 Fig. 6 Minimum basic components of improved ShuffleNet V2 network model
2.3 YOLOv4网络结构的改进 2.3.1 颈部网络结构剪裁

通过分析YOLOv4网络结构可知,在其颈部网络和YOLO-Head之间有CBL+Conv结构,然而特征图在输入到这一结构之前,就已经在颈部网络中经过了5次CBL操作,而且如图 7所示的CBL操作中也包含Conv操作,这样共有6次CBL操作再加1次Conv,然后输入到YOLO-Head中进行预测。因此,在颈部网络和YOLO-Head间进行1次CBL+Conv操作则显得多余,删除该操作不仅对后续的网络预测没有任何影响,而且还会加快网络推理速度。

Download:
图 7 CBL结构组成 Fig. 7 CBL structure composition
2.3.2 深度可分离卷积替换

通过进一步分析YOLOv4网络结构可知,其在颈部网络中使用了大量的CBL结构,而由于CBL基本组成结构为CBL=Conv+BN+Leaky ReLU,因此颈部网络中包含了大量的普通卷积运算,借鉴文献[18]研究思想,采用深度可分离卷积代替普通卷积可以大大降低卷积运算的参数量,而在神经网络中参数量的多少直接影响了网络模型容量的大小和网络模型在计算过程中的浮点数计算量(Floating Point Operations Per second,FLOPs)。普通卷积和深度可分离卷积示意图如图 8图 9所示。由图 8图 9可以看出,普通卷积是使用4个3×3×3的Filter(过滤器)对输入特征图进行卷积操作,先将特征图的每个Channel(通道)和对应的Kernel(卷积核)做卷积运算,然后将3个Channel的运算结果融合成一个Map(图层)输出,而深度可分离卷积是将以上操作步骤分解为两部分完成,首先使用3个3×3×1的Filter对输入特征图的每个Channel分别进行卷积得到由3个Map组成的特征图,这一过程称为逐通道卷积,然后再用4个1×1×1的Filter对上一步的输出特征图进行卷积运算,最后输出由4个Map组成的特征图,这一过程称为逐点卷积。逐通道卷积和逐点卷积经过以上运算流程共同组成深度可分离卷积[19]

Download:
图 8 普通卷积示意图 Fig. 8 Schematic diagram of ordinary convolution
Download:
图 9 深度可分离卷积示意图 Fig. 9 Schematic diagram of depthwise separable convolution

图 9可以分析得出深度可分离卷积的参数量计算公式:

$ {P}_{\mathrm{d}\mathrm{w}-\mathrm{c}\mathrm{o}\mathrm{n}\mathrm{v}}={P}_{3\times 3\mathrm{ }\mathrm{c}\mathrm{o}\mathrm{n}\mathrm{v}}+{P}_{1\times 1\mathrm{ }\mathrm{c}\mathrm{o}\mathrm{n}\mathrm{v}} $ (6)

根据式(3)化简后的深度可分离卷积参数量计算如下:

$ {P}_{\mathrm{d}\mathrm{w}-\mathrm{c}\mathrm{o}\mathrm{n}\mathrm{v}}={K}^{2}\times C\times O+C\times O $ (7)

因为在逐通道卷积计算时,每个Filter仅包含1个Kernel,而普通卷积的每个Filter包含3个Kernel,相当于逐通道卷积时的$ {C}_{\mathrm{d}\mathrm{w}}=1 $,普通卷积和逐点卷积时$ {C}_{\mathrm{p}\mathrm{w}}={C}_{\mathrm{c}\mathrm{o}\mathrm{n}\mathrm{v}}={C}_{\mathrm{i}\mathrm{n}\mathrm{p}\mathrm{u}\mathrm{t}} $,则深度可分离卷积和普通卷积的参数量比值[20]计算如下:

$ k=\frac{{P}_{\mathrm{d}\mathrm{w}-\mathrm{c}\mathrm{o}\mathrm{n}\mathrm{v}}}{{P}_{\mathrm{c}\mathrm{o}\mathrm{n}\mathrm{v}}}=\frac{{K}^{2}\times {C}_{\mathrm{d}\mathrm{w}}+{O}_{\mathrm{d}\mathrm{w}}+{C}_{\mathrm{p}\mathrm{w}}+{O}_{\mathrm{p}\mathrm{w}}}{{K}^{2}\times {C}_{\mathrm{c}\mathrm{o}\mathrm{n}\mathrm{v}}\times {O}_{\mathrm{c}\mathrm{o}\mathrm{n}\mathrm{v}}} $ (8)

图 8图 9的Filter中卷积核大小和输入输出通道数代入式(6)、式(7)中可知:在普通卷积的情况下计算参数量$ {P}_{\mathrm{c}\mathrm{o}\mathrm{n}\mathrm{v}} $为108,在深度可分离卷积的情况下计算参数量$ {P}_{\mathrm{d}\mathrm{w}-\mathrm{c}\mathrm{o}\mathrm{n}\mathrm{v}} $为39。

假定输出特征层的宽和高分别为$ {w}_{\mathrm{o}\mathrm{u}\mathrm{t}}\mathrm{和}{h}_{\mathrm{o}\mathrm{u}\mathrm{t}} $,那么普通卷积和深度可分离卷积的计算量公式如式(9)、式(10)所示:

$ {F}_{\mathrm{c}\mathrm{o}\mathrm{n}\mathrm{v}}={K}^{2}\times {C}_{\mathrm{c}\mathrm{o}\mathrm{n}\mathrm{v}}\times {O}_{\mathrm{c}\mathrm{o}\mathrm{n}\mathrm{v}}\times {w}_{\mathrm{o}\mathrm{u}\mathrm{t}}\times {h}_{\mathrm{o}\mathrm{u}\mathrm{t}} $ (9)
$ {F}_{\mathrm{d}\mathrm{w}-\mathrm{c}\mathrm{o}\mathrm{n}\mathrm{v}}=({K}^{2}+1)\times {C}_{\mathrm{d}\mathrm{w}-\mathrm{c}\mathrm{o}\mathrm{n}\mathrm{v}}\times {O}_{\mathrm{d}\mathrm{w}-\mathrm{c}\mathrm{o}\mathrm{n}\mathrm{v}}\times {w}_{\mathrm{o}\mathrm{u}\mathrm{t}}\times {h}_{\mathrm{o}\mathrm{u}\mathrm{t}} $ (10)

经化简后两者的比值如下:

$ k=\frac{1}{{C}_{\mathrm{o}\mathrm{u}\mathrm{t}}}+\frac{1}{{K}^{2}} $ (11)

由此可知,将YOLOv4颈部网络中的普通卷积全部替换为深度可分离卷积能够直观有效地降低模型参数量和计算量。

2.3.3 改进的网络结构

在使用卷积剪裁、扩大卷积核、替换深度可分离卷积等方式对ShuffleNet V2、YOLOv4网络结构进行轻量化改进后得到改进的YOLOv4网络结构,如图 10所示。

Download:
图 10 改进的YOLOv4网络结构 Fig. 10 Improved YOLOv4 network structure
3 实验结果与分析

选用PC和ZYNQ 7020开发板卡为硬件实现平台,PC的硬件配置CPU为AMD R5 4600H,GPU为GTX 1660,ZYNQ平台为ALINX公司的AX7020型开发板,详细的逻辑资源此处不再赘述。实验数据集来自天津大学机器学习和数据挖掘实验室开源的VisDrone 2020数据集[21],该数据集由航拍无人机捕获收集,横跨中国多个城市的市内及郊区环境,包含丰富的视频及图片数据。

3.1 消融实验 3.1.1 ShuffleNet V2改进实验对比

针对改进的ShuffleNet V2网络结构进行目标分类实验,得出如表 1所示的ShuffleNet V2消融实验对比数据,其中剪裁普通Conv1×1结构后的网络命名为ShuffleNet_lit,扩大卷积核后的网络命名为ShuffleNet_2DW,替换激活函数后的网络命名为ShuffleNet_M。

下载CSV 表 1 ShuffleNet V2消融实验数据对比 Table 1 Comparison of ShuffleNet V2 ablation experimental data

表 1数据可知,除ShuffleNet_lit外,ShuffleNet_M和ShuffleNet_2DW相较于ShuffleNet V2都提高了Top-1准确率,其中ShuffleNet_2DW提升效果更显著,但是这两个网络在提高检测精度的同时也带来了FLOPs、参数量及模型容量的增加。改进的ShuffleNet V2网络的检测精度较原网络有了显著提高,并有效降低了原网络的计算量、参数量和模型容量。

3.1.2 YOLOv4改进实验对比

针对改进的YOLOv4网络结构进行目标分类实验,得出如表 2所示的YOLOv4消融实验对比数据,其中对颈部网络剪裁后的网络命名为YOLOv4_lit,替换深度可分离卷积的网络命名为YOLOv4_DW。

下载CSV 表 2 YOLOv4消融实验数据对比 Table 2 Comparison of YOLOv4 ablation experimental data

表 2数据可知,两种改进方式分别对YOLOv4网络的FLOPs、参数量和模型容量做了不同程度上的压缩,其中采用深度可分离卷积代替普通卷积方式改进的YOLOv4_DW网络效果更明显。

3.2 GPU平台上目标检测算法的性能对比

将YOLOv4算法、改进的YOLOv4算法、文献[22]算法和YOLOv5算法[23]在相同软硬件平台和VisDrone 2020数据集上进行目标检测实验,输入图片固定为800×800像素,得到的平均精度均值(mean Average Precision,mAP)、检测速度和模型容量结果如表 3所示。4种算法在相同GPU平台和VisDrone 2020数据集上的图像目标检测实验可视化结果如图 11~图 14所示。

下载CSV 表 3 目标检测算法性能对比 Table 3 Performance comparison of target detection algorithms
Download:
图 11 YOLOv4算法在VisDrone 2020数据集上的图像目标检测结果 Fig. 11 Image target detection results of YOLOv4 algorithm on VisDrone 2020 dataset
Download:
图 12 改进的YOLOv4算法在VisDrone 2020数据集上的图像目标检测结果 Fig. 12 Image target detection results of improved YOLOv4 algorithm on VisDrone 2020 dataset
Download:
图 13 文献[22]算法在VisDrone 2020数据集上的图像目标检测结果 Fig. 13 Image target detection results of the algorithm in reference [22] on VisDrone 2020 dataset
Download:
图 14 YOLOv5算法在VisDrone 2020数据集上的图像目标检测结果 Fig. 14 Image target detection results of YOLOv5 algorithm on VisDrone 2020 dataset

表 3图 11图 12图 13检测结果可知,YOLOv4算法、改进的YOLOv4算法和文献[22]算法在VisDrone2020数据集上具有大致相同的检测结果,但是改进的YOLOv4算法相较于YOLOv4算法,在mAP上降低了1.8个百分点,检测速度却提高了27%,模型容量降低了23.7%,相较于文献[22]算法,在mAP上降低了0.5个百分点,模型容量增加了13%,但运行速度却提高了18.75%。

表 3图 14检测结果可知,YOLO5算法在检测速度和模型容量上均比改进的YOLOv4算法有着极大的提高,但是在mAP上却比改进的YOLOv4算法降低了7.9个百分点,而且对比图 12图 14可以看出,YOLO5算法对小目标的检测效果并不理想,甚至有些小目标未检测到,不适用于目标较多、目标尺度不均的复杂检测环境。

3.3 不同硬件平台上改进的YOLOv4算法性能对比

使用改进的YOLOv4目标检测算法分别在GPU平台和ZYNQ平台上进行目标检测实验,结果如表 4所示,这种纵向对比实验主要是为了衡量在相同功耗下,该算法能否发挥ZYNQ功耗低、数据并行处理能力强的优势。改进的YOLOv4算法在ZYNQ平台和VisDrone 2020数据集上的图像目标检测可视化结果,如图 15所示。

下载CSV 表 4 改进的YOLOv4算法在不同硬件平台上的性能对比 Table 4 Performance comparison of the improved YOLOv4 algorithm on different hardware platforms
Download:
图 15 改进的YOLOv4算法在ZYNQ平台上的图像目标检测结果 Fig. 15 Image target detection results of improved YOLOv4 algorithm on ZYNQ platform

对比表 4图 12图 15中的数据及检测结果可知,改进的YOLOv4算法在GPU平台上的检测速度更快,但是由于该纵向对比实验并不是为了证明GPU和ZYNQ检测速度,而是通过对比两者的功耗比,即处理一张图片所消耗的功率,从而验证改进的YOLOv4算法能否发挥出ZYNQ在处理任务时既速度快又功耗低的优势。通过对比和分析表 4中数据可知,虽然GPU的处理速度比ZYNQ快了1.6倍,但是在功耗方面,GPU却是ZYNQ的10倍多。显然,本文改进的YOLOv4目标检测算法充分发挥了ZYNQ平台的优势,非常适合部署在以ZYNQ为硬件实现平台的移动端目标检测环境中。

4 结束语

本文在改进ShuffleNet V2和YOLOv4网络结构的基础上,提出一种轻量化的目标检测算法,并将其部署在GPU和ZYNQ平台上。实验结果表明,该轻量化算法在GPU平台上运行时检测精度仅减少1.8个百分点的情况下,降低了模型容量并提高了检测速度,充分发挥了ZYNQ平台并行高速数据处理及低功耗的优势。下一步将继续研究目标检测算法的轻量化改进方法,在尽可能降低计算量、参数量和模型容量的前提下,进一步提升检测精度和检测速度。

参考文献
[1]
MEKHALFI M L, NICOLÒ C, BAZI Y, et al. Detecting crop circles in Google earth images with mask R-CNN and YOLOv3[J]. Applied Sciences, 2021, 11(5): 2238. DOI:10.3390/app11052238
[2]
REN S Q, HE K M, GIRSHICK R, et al. Faster R-CNN: towards real-time object detection with region proposal networks[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017, 39(6): 1137-1149. DOI:10.1109/TPAMI.2016.2577031
[3]
GIRSHICK R. Fast R-CNN[C]//Proceedings of IEEE International Conference on Computer Vision. Washington D. C., USA: IEEE Press, 2015: 1440-1448.
[4]
GAO X W, LI S Q, JIN B Y, et al. Intelligent crack damage detection system in shield tunnel using combination of RetinaNET and optimal adaptive selection[J]. Journal of Intelligent & Fuzzy Systems, 2021, 40(3): 4453-4469.
[5]
REDMON J, DIVVALA S, GIRSHICK R, et al. You only look once: unified, real-time object detection[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition. Washington D. C., USA: IEEE Press, 2016: 779-788.
[6]
REDMON J, FARHADI A. YOLO9000: better, faster, stronger[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition. Washington D. C., USA: IEEE Press, 2017: 6517-6525.
[7]
LIU W, ANGUELOV D, ERHAN D, et al. SSD: single shot multibox detector[C]//Proceedings of European Conference on Computer Vision. Berlin, Germany: Springer, 2016: 21-37.
[8]
ZHENG Z, QI H Y, ZHUANG L, et al. Automated rail surface crack analytics using deep data-driven models and transfer learning[J]. Sustainable Cities and Society, 2021, 70: 102898. DOI:10.1016/j.scs.2021.102898
[9]
BOCHKOVSKIY A, WANG C Y, LIAO H Y M. YOLOv4: optimal speed and accuracy of object detection[EB/OL]. [2021-06-04]. https://arxiv.org/abs/2004.10934.
[10]
WANG C Y, MARK L H Y, WU Y H, et al. CSPNet: a new backbone that can enhance learning capability of CNN[C]//Proceedings of 2020 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Washington D. C., USA: IEEE Press, 2020: 12-25.
[11]
HE K M, ZHANG X Y, REN S Q, et al. Spatial pyramid pooling in deep convolutional networks for visual recognition[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2015, 37(9): 1904-1916. DOI:10.1109/TPAMI.2015.2389824
[12]
MA N N, ZHANG X Y, ZHENG H T, et al. ShuffleNet V2: practical guidelines for efficient CNN architecture design[C]//Proceedings of European Conference on Computer Vision. Berlin, Germany: Springer, 2018: 1-8.
[13]
SANDLER M, HOWARD A, ZHU M L, et al. MobileNet V2: inverted residuals and linear bottlenecks[C]//Proceedings of IEEE/CVF Conference on Computer Vision and Pattern Recognition. Washington D. C., USA: IEEE Press, 2018: 4510-4520.
[14]
SERRA T, YU X, KUMAR A, et al. Scaling up exact neural network compression by ReLU stability[EB/OL]. [2021-06-04]. https://arxiv.org/abs/2102.07804.
[15]
LUO W J, LI Y J, URTASUN R, et al. Understanding the effective receptive field in deep convolutional neural networks[EB/OL]. [2021-06-04]. https://arxiv.org/abs/1701.04128v2.
[16]
SZEGEDY C, VANHOUCKE V, IOFFE S, et al. Rethinking the inception architecture for computer vision[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition. Washington D. C., USA: IEEE Press, 2016: 2818-2826.
[17]
MISRA D. Mish: a self regularized non-monotonic activation function[EB/OL]. [2021-06-04]. https://arxiv.org/abs/1908.08681v2.
[18]
CHOLLET F. Xception: deep learning with depthwise separable convolutions[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition. Washington D. C., USA: IEEE Press, 2017: 1800-1807.
[19]
HOWARD A G, ZHU M L, CHEN B, et al. MobileNets: efficient convolutional neural networks for mobile vision applications[EB/OL]. [2021-06-04]. https://arxiv.org/abs/1704.04861.
[20]
刘超, 张晓晖, 胡清平. 图像超分辨率卷积神经网络加速算法[J]. 国防科技大学学报, 2019, 41(2): 91-97.
LIU C, ZHANG X H, HU Q P. Image super resolution convolution neural network acceleration algorithm[J]. Journal of National University of Defense Technology, 2019, 41(2): 91-97. (in Chinese)
[21]
DU D W, WEN L Y, ZHU P F, et al. VisDrone-DET2020: the vision meets drone object detection in image challenge results[C]//Proceedings of 2019 IEEE/CV International Conference on Computer Vision Workshop. Washington D. C., USA: IEEE Press, 2020: 692-712.
[22]
孔维刚, 李文婧, 王秋艳, 等. 基于改进YOLOv4算法的轻量化网络设计与实现[J]. 计算机工程, 2022, 48(3): 181-188.
KONG W G, LI W J, WANG Q Y, et al. Design and implementation of lightweight network based on improved YOLOv4 algorithm[J]. Computer Engineering, 2022, 48(3): 181-188. (in Chinese)
[23]
KASPER-EULAERS M, HAHN N, BERGER S, et al. Short communication: detecting heavy goods vehicles in rest areas in winter conditions using YOLOv5[J]. Algorithms, 2021, 14(4): 114.