融合GhostNet的YOLOv4轻量化网络设计与实现

2024-03-05 01:41石博雅董学峰
小型微型计算机系统 2024年3期
关键词:注意力卷积精度

石博雅,董学峰

(天津工业大学 电子与信息工程学院,天津 300387)

0 引 言

在人工智能领域中,计算机视觉技术已广泛地应用于智能安防[1]、自动驾驶[2]、遥感监测[3]等领域.其中卷积神经网络以其优越的性能,在目标检测领域中有着出色的表现.随着目标检测算法性能逐渐提升和边缘计算不断发展,一方面网络参数和计算量在不断地增长,另一方面边缘计算中大部分的目标检测任务需要在资源有限的嵌入式设备上进行部署,二者的矛盾愈发突出,这在一定程度上阻碍了深度学习技术在实际场景的应用.因此针对存储容量小、算力有限的嵌入式设备,需要对网络进行轻量化改进.

基于深度学习的目标检测算法有两类:2阶段(two stage)和1阶段检测算法(one stage).2阶段检测算法的代表有:R-CNN[4]、Fast R-CNN[5]、Faster R-CNN[6]等,它的特征是先由算法产生一系列样本候选框然后利用卷积对样本进行分类,最后通过分阶段操作,使其检测精度较高,但检测速度较慢,达不到实时检测.1阶段检测算法的代表有:SSD[7]、YOLO[8]等,它是通过回归直接输出目标的位置及类别,不需要进行候选框操作,提升了检测速度.针对基于深度学习的目标检测算法在嵌入式设备难以部署的问题,研究人员在算法层面进行了改进.田港等[9]提出一种基于YOLOv4的改进网络模型,采用双尺度预测模型,并进行了通道裁剪,针对无人机目标检测,模型尺寸相比YOLOv4减小了60%,速度达到58FPS,mAP下降了1.52%.Liu等[10]提出一种基于YOLOv4的改进网络模型,采用反向深度可分离卷积(RDSC),并应用于原网络的主干网络以及特征增强网络中,针对无人水面航行器(USA)的目标检测,模型权重大小相比YOLOv4减小了40%.Fang等[11]在YOLOv4基础上,采用MobileNetv3作为主干网络,并使用深度可分离卷积以及通道注意力机制(ECA)优化SPP以及PANet网络,改进后参数量为原模型的一半,针对变电站人员不规则行为的检测速率达到38.06FPS.Ying等[12]基于YOLOv4进行改进,采用MobileNetv3-Small作为主干网络,引入深度可分离卷积以及倒置的残差结构,并引入注意力机制,针对田间杂草检测,模型尺寸相较于YOLOv4减小了37.9%,检测精度下降了0.49%.以上算法虽对网络结构进行了改进,但网络的参数量对于需低功耗且资源有限的嵌入式设备还有待改进.

本文的目的是针对嵌入式设备,设计一个参数量小的轻量化网络结构来完成推断工作,所做的工作主要分为以下几点:

1)在YOLOv4基础上,采用GhostNet[13]代替CSPDarknet53[14]作为主干特征提取网络,利用标准卷积和线性变换相结合降低模型参数和计算量.

2)在YOLOv4-GhostNet的基础上引入CBAM[15]注意力机制,在不增加计算开销的同时提升检测精度.

3)对YOLOv4-GhostNet-CBAM网络进行8bit量化操作得到YOLOv4-Light模型,在牺牲少量检测精度的前提下,大幅降低网络模型尺寸,提升检测速率,实现实时检测.

4)在PC端和NVIDIA Jetson Xavier NX上,分别对YOLOv4、YOLOv4-GhostNet-CBAM和YOLOv4-Light模型进行无人机数据集多目标检测实验,验证模型性能.

1 YOLOv4网络结构

YOLOv4网络结构分为3部分:主干特征提取网络、颈部网络和目标检测器,如图1所示.

图1 YOLOv4网络结构图Fig.1 YOLOv4 network structure diagram

YOLOv4在YOLOv3算法基础上进行了多方面的优化.首先将主干特征提取网络Darknet53更换为CSPDarknet53.CSPDarknet53中包含着5个CSP模块,该模块将基础层的特征映射分为两部分,然后通过跨阶段层次结构进行合并,这样在大大减小参数量的同时可以保证检测精度.其次在颈部网络采用空间金字塔池化(SPP)和路径聚合网络(PANet)结构.在加强特征提取网络中引入SPP[16],使用不同尺寸的最大池化方式,再将不同尺度的特征图进行Concat操作,大大增加了特征信息的感受野,获得更高的语义信息;采用PANet方式进行自底向上路径强化,利用精确的低层定位信号加强整个特征层次,从而缩短了底层与顶层特征间的信息路径.然后与FPN层相结合,实现高语义信息自顶向下的传递,再结合PAN结构实现自底向上传递强定位特征,从而实现了不同特征层的特征融合.另外在输入端引入了Mosaic数据增强方式,丰富了检测数据集,尤其是缩放增加了很多小目标,增强了网络的鲁棒性.同时采用Mish激活函数,提高了YOLOv4网络模型的泛化能力.对YOLOv4算法进行上述几点改进后,检测速度和精度均得到了提高.

2 YOLOv4网络改进

2.1 主干网络优化

目前广泛使用的轻量化网络主要有MobileNet和GhostNet.MobileNet中最具代表性的是MobileNetv3,其融合了MobileNetv1和MobileNetv2的深度可分离卷积以及倒残差结构,并引用了SE(Squeeze and Excitation)[17]轻量级注意力机制,在损失有限精度的前提下,检测速度可明显提升.而在ImageNet 分类任务中,GhostNet在保持与MobileNetv3相似计算量的前提下,检测精度有1%左右的提升.因此本文将YOLOv4的主干提取网络改为GhostNet网络.针对深度神经网络中的大量卷积运算,GhostNet网络中的Ghost模块通过线性变换与标准卷积相结合,从而减少模型参数和计算量.

Ghost模块将标准卷积层分为两部分,其中一部分用于做标准卷积,但是严格控制其数量,然后另一部分将第一部分生成的固有特征图进行一系列的简单线性运算用于生成最终的输出特征图,最后将两部分进行Concat操作得到完整的输出层.这样在不改变输出特征图大小的情况下,通过更小的计算成本即可获得完整的输出层特征图.标准卷积与Ghost模块如图2所示.

图2 标准卷积与Ghost模块Fig.2 Standard convolution and Ghost module

对于标准卷积操作,给定输入数据X∈Rh×w×c,其中h是输入特征图的高度,w是输入特征图的宽度,c是输入通道数,则生成n个特征图的任意卷积层的运算如公式(1)所示:

Y=X×f+b

(1)

其中b为偏差项,f∈Rc×k×k×n是该特征层的卷积核,Y∈Rh′×w′×n是有n个输出通道的输出特征图.在此卷积过程中,其计算量FLOPS是巨大的,它的运算如公式(2)所示:

FLOPS=c×k×k×n×h′×w′

(2)

其中h′、w′分别为输出特征图的高度和宽度,k为卷积核f的尺寸.

而Ghost模块是对其中一部分特征图进行卷积操作,也就是对m个原始输出特征图Y′∈Rh′×w′×m使用一次标准卷积完成,其中m≤n,运算如公式(3)所示:

Y′=X*f′

(3)

其中f′∈Rc×k×k×m是该特征层使用的卷积核,不包含偏差项.为了进一步获取所需的n个特征图,对得到的m维的特征图进行一系列的简单线性变化,以生成s个相似特征图,运算如公式(4)所示:

(4)

(5)

其中d为每个线性操作的平均内核大小.从公式(5)可知,Ghost模块将计算分为两部分,一部分是普通卷积运算,另一部分是线性变换运算,结合公式(2)得出模型的压缩比约为s,大大减小了参数量.

为构建GhostNet,设计了Ghost Bottleneck模块,该模块类似于ResNet中的基本残差块,由两个Ghost模块堆叠而成,如图3所示.其中第1个Ghost模块是用来增加通道数的扩展层;第2个Ghost模块用于减少通道数,使其与输入端的通道数量相匹配.

图3 Ghost Bottleneck模块Fig.3 Ghost Bottleneck module

当输入尺寸为416×416时,GhostNet网络架构如表1所示.

表1 GhostNet网络架构Table 1 GhostNet network architecture

2.2 CBAM注意力机制

CBAM(Convolutional Block Attention Module)注意力机制是在SE注意力机制的基础上进行了改进.SE注意力机制仅关注了在卷积池化过程中特征图的不同通道的重要程度不同,未考虑同一通道不同位置的重要程度也是不同的问题.CBAM注意力机制既聚焦于通道维度,又聚焦于空间维度.在通道注意力机制模块相比SE注意力机制增加了一个并行的global maxpooling操作,使得提取的高层次语义信息更加丰富.然后再通过空间注意力机制模块的最大池化与平均池化的操作,使其通过学习的方式更加关注目标区域,同时抑制无用信息.

CBAM注意力机制属于轻量级的注意力机制模块,带来的计算开销可以忽略不计.CBAM的模块组成如图4所示.将CBAM注意力机制加入到YOLOv4-GhostNet中,构成改进后的YOLOv4-GhostNet-CBAM网络,结构如图5所示.

图4 CBAM注意力机制Fig.4 CBAM attention mechanism

图5 YOLOv4-GhostNet-CBAM网络结构图Fig.5 YOLOv4-GhostNet-CBAM network structure

2.3 量 化

量化是指用于执行计算时以低于浮点精度的位宽存储张量的技术[18].通过对模型的权重数值进行量化,减小模型尺寸,同时提高系统吞吐量,降低系统延时,使其能够更好的应用到移动端环境.

本文选择的是在pytorch框架下进行量化,该框架提供了3种量化方法:

1)训练后动态量化:其中权重被提前量化,但是激活值在推理过程中被动态量化,为最简单的一种量化方法.

2)训练后静态量化:其中权重被提前量化,并在校准过程中计算激活张量的比例因子和偏差,整个过程不存在两个参数的二次计算.

3)感知量化训练:在训练过程中进行量化,通过torch.quantization.FakeQuantize函数模拟量化过程,量化后的权重仍为float32,但大小和INT8权重大小相同.此方法的优点是精度比训练后量化更高.

本文采用感知量化方法,将模型由float32量化为INT8的形式.量化过程中使用缩放因子和偏移量两个因子来保证区间内的变量都能精确地映射到要量化的整形数值区间.量化过程中的缩放因子如公式(6)所示:

(6)

其中X代表原始浮点数,Q代表量化后的整形数,Scale表示量化前后的网络参数的对应关系,由神经网络训练出来的参数Xmax,Xmin和本文要量化的整形数据格式Qmax,Qmin计算得出.

量化过程中的偏移量如公式(7)所示:

Zero_Point=round(Qmax-Qmin)

(7)

最终的量化参数如公式(8)所示:

(8)

由以上可知Scale和Zero_Point对应着一个量化过程,且由模型自动配准精度损失小的Zero_Point和Scale进行量化.式(7)与式(8)中的两次取整操作会对模型的检测精度造成一定的损失,因此需要仔细比对选择一个精度大的量化参数Q.通过以上的量化操作,即得到本文所需要的轻量化网络模型.

2.4 损失函数

损失函数用来衡量网络模型的性能,当损失函数的值越接近0时,表明该网络模型的性能鲁棒性越好.其中DIOU[19]考虑直接最小化预测框与实际框的归一化距离,由此出现了DIOU Loss,计算如公式(9)所示:

(9)

其中b,bgt分别表示预测框和真实框的中心点位置,ρ表示两点的欧氏距离.两框重叠面积、中心点距离、长宽是目标回归损失中应当考虑的3个重要因素,而DIOU Loss只考虑了前两项,并未考虑长宽比,精度受限.针对此问题改进得到CIOU Loss,计算如公式(10)所示:

(10)

其中α是权重,ν是用来衡量长宽比.CIOU Loss的运算公式中增加了一个影响因子αν运算,考虑了长宽比,使得CIOU Loss收敛速度与精度更高,本文采用CIOU Loss作为损失函数.

3 实验结果与分析

本文实验操作系统为Ubuntu 18.04.5,使用Pytorch(1.7.1)框架进行网络结构的改进以及量化,CPU为Intel(R)Core(TM)i5-11400H,GPU为NVIDIA RTX3050,CUDA 版本为11.0,进行推断和测试操作的嵌入式设备型号为NVIDIA Jetson Xavier NX.

3.1 实验数据集

本文设计的目的是在资源有限的嵌入式设备上实现无人机数据集的多目标检测.这里选用VisDrone[20]无人机数据集,它区别于传统目标检测数据集的特点是单张图片中被测目标尺寸较小且数量较多,可达几十个,因此检测难度增大.VisDrone无人机数据集共分为10个类,其中训练和验证的图片共6317张,测试的图片共702张.

3.2 实验参数

本文在实验中将训练与测试的输入图片尺寸统一设置为1024×1024的JPG格式,Batch size设置为32,Epoch设置为300,学习率设置为0.001,并采用余弦退火策略自动调整学习率.在输入端使用Moscia数据增强方式,增加训练的数据量.同时采用标签平滑方法优化损失函数,提高图像分类的准确性,将平滑标签smooth_label设置为0.01.

3.3 评价指标

在目标检测领域中,评价一个模型检测精度的性能指标有平均精度(Average Precision,AP)和均值平均精度(ean Average Precision,mAP)两种,二者分别用来衡量单目标和多目标的检测性能.本文用于实现无人机数据集的多目标检测,故选择mAP作为模型检测精度的评价指标,并且在IOU为0.5的条件下统计各目标的均值平均精度(mAP50).

由于本文是在资源有限的嵌入式设备上来部署模型,进行推断任务,因此需要在检测精度不降低或有限降低的前提下,最大限度的缩小模型尺寸(SIZE),以减少计算量,提高检测速率.故本文选择模型尺寸和帧率(FPS)作为评价指标.

3.4 消融实验

消融实验中将MobileNetv3和GhostNet分别作为YOLOv4的主干特征提取网络的模型进行性能对比,验证算法改进的合理性.在PC端和硬件平台Jetson Xavier NX上进行测试.测试尺寸统一设置为1024×1024,结果如表2所示.从表中可以看出将主干特征提取网络替换为GhostNet的模型尺寸相较于MobileNetv3降低了7M,检测精度提升了1%,检测速度也有所提升,从而可以看出GhostNet作为主干特征提取网络各方面性能均优于主干特征提取网络为MobileNetv3的模型.

表2 两种模型在两种平台的性能对比Table 2 Performance comparison of two models on two platforms

针对在YOLOv4主干特征提取网络改为GhostNet的基础上添加注意力机制进行消融实验验证.分别将SE、CBAM以及SE+CBAM注意力机制加入到改进的网络模型中,然后在PC端和硬件平台Jetson Xavier NX进行测试,测试尺寸统一设置为1024×1024,性能评价结果如表3所示.其中YOLOv4+G+S、YOLOv4+G+C和YOLOv4+G+SE+SC分别代表在GhostNet作为YOLOv4主干特征提取网络上加入SE、CBAM和SE+CBAM注意力机制.

表3 SE、CBAM、SE+CBAM注意力模块嵌入改进模型在两种平台的性能对比Table 3 Performance comparison of SE,CBAM,SE+CBAM attention module embedding improved model on two platforms

从表3可以看出将SE、CBAM、SE+CBAM3种注意力机制模块分别嵌入YOLOv4-GhostNet后,在两种测试平台下CBAM注意力机制模块相比其他两模块在近乎相同速度的情况下,性能表现是最优的,mAP值达到了49.9%.通过添加轻量级的注意力机制模块,令算法在参数量减小的同时保证检测精度,进一步提升了模型的性能.

3.5 测试结果分析

为了进一步验证模型性能,分别将YOLOv4、YOLOv4-GhostNet-CBAM算法在PC端上进行测试,同时将YOLOv4-GhostNet-CBAM和YOLOv4-Light算法在硬件平台Jetson Xavier NX上进行测试.本文在训练阶段将图片尺寸设置为1024×1024,然后分别在608×608、800×800、1024×1024共3个尺寸上进行测试,结果如表4所示.从表4看出,在模型尺寸上,YOLOv4-GhostNet-CBAM模型尺寸是160M,比YOLOv4降低了34.43%;YOLO-Light仅为40.2M,相比YOLOv4模型尺寸降低了83.5%.YOLOv4、YOLOv4-GhostNet-CBAM和YOLOv4-Light的最高检测精度分别为50.3%、49.9%和47.3%,YOLOv4-Light相比于YOLOv4检测精度仅降低了3%,但YOLOv4-Light的检测速率最高可达到78.6FPS,为YOLOv4的最高检测速率3.6倍.因此,本文设计的轻量化网络虽检测精度略有下降,但整体性能可以满足实际需求.

表4 本文算法优化过程中各个阶段模型在两种平台的性能对比Table 4 Performance comparison of the models in each stage of the algorithm optimization process in this paper on the two platforms

YOLOv4、YOLOv4-GhostNet-CBAM以及量化后的YOLOv4-GhostNet-CBAM在NVIDIA Jetson Xavier NX设备上使用VisDrone数据集中图像的测试效果分别如图6~图8所示.本文选择在光线充足与光线暗淡两种场景下进行测试,通过检测结果对比来看,无论是在光线充足还是暗淡的场景下,YOLOv4和YOLOv4-GhostNet-CBAM检测精度相差不大,而量化后YOLOv4-Light的检测效果略差,但在精度损失有限的情况下,检测速率有了极大的提高.

图6 YOLOv4在 NX端两种场景下的测试效果图Fig.6 Test effect diagram of YOLOv4 under two scenarios on NX side

图7 YOLOv4-GhostNet-CBAM在NX端两种场景下的测试效果图Fig.7 Test effect diagram of YOLOv4-GhostNet-CBAM under two scenarios on NX side

图8 YOLOv4-Light在NX端两种场景下的测试效果图Fig.8 Test effect diagram of YOLOv4-Light under two scenarios on NX side

4 结束语

本文针对当前目标检测算法参数量过大,难以部署在资源及算力有限的嵌入式设备的问题,设计了一款轻量化网络模型.基于YOLOv4目标检测算法,采用GhostNet替换YOLOv4的主干提取网络CSPDarket53,解决了大量卷积带来的计算开销大的问题;然后通过引入CBAM注意力机制,使其更加关注目标区域,强调重要特征,增强网络模型的鲁棒性;最后对网络进行量化处理.实验结果表明该轻量化网络在保证较高精度的同时模型尺寸有了大幅度减小,检测速率有了较大提升,可以在低功耗场景下完成无人机目标实时检测的任务,在嵌入式设备上所表现的整体性能达到预期.下一步将对目标出现严重遮挡的问题进行研究,并引入剪枝算法与量化算法相结合,更大尺度地进行模型压缩,进一步提升目标检测算法在嵌入式设备上的推断速度,增加网络模型的实用性.

猜你喜欢
注意力卷积精度
让注意力“飞”回来
基于3D-Winograd的快速卷积算法设计及FPGA实现
从滤波器理解卷积
基于DSPIC33F微处理器的采集精度的提高
基于傅里叶域卷积表示的目标跟踪算法
“扬眼”APP:让注意力“变现”
A Beautiful Way Of Looking At Things
GPS/GLONASS/BDS组合PPP精度分析
改进的Goldschmidt双精度浮点除法器
一种基于卷积神经网络的性别识别方法