2. 天津工业大学 电气工程与自动化学院, 天津 300387;
3. 中国电子科技集团公司信息科学研究院, 北京 100086
2. School of Electrical Engineering and Automation, Tiangong University, Tianjin 300387, China;
3. Information Science Academy of China Electronics Technology Group Corporation, Beijing 100086, China
开放科学(资源服务)标志码(OSID):
在计算机视觉领域,图像识别算法不断推陈出新,其在遥感监测、医疗卫生、军事科技等方面取得了较大成就。从算法的角度来看,卷积神经网络凭借其卓越的特征提取能力和可扩展性,在图像识别领域表现优异,使得目标检测不断地从传统的识别方法向基于深度学习的识别方法发展。目前的深度学习算法大致可分为二阶段算法和一阶段算法两类:二阶段算法先从图像中选取候选框,然后在该候选框中得到分类和回归结果,该类算法包括RCNN[1]、Fast-RCNN[2]、Faster-RCNN[3]等,算法能得到较高的准确率,但训练步骤繁琐,且占用了较多空间;一阶段目标检测算法(如SSD[4]、YOLO[5-7]等)不需要候选框,它们直接通过卷积操作来进行分类和回归预测,进而得到物体的类别和坐标信息,该类算法的速度快、占用空间小。嵌入式平台对低功耗和低能耗有较大需求,因此,需要一个更加轻便灵活的网络结构来完成推理工作。
本文在YOLOv4算法[8]的基础上进行网络结构改进和量化处理,使其满足微算力、低功耗的需求。在特征提取层,采用更加轻便的MobileNetv3[9]设计,利用深度可分离卷积(PW和DW)降低参数量和计算量,并对MobileNetv3进行改进,使其更加贴合YOLOv4的检测层。在此基础上,对网络进行8 bit的量化操作,从而在牺牲少量精确度的前提下大幅降低模型所占空间。
1 相关工作YOLOv4是YOLO(You Only Look Once)系列目标检测算法中的第四版,相较YOLOv3算法,YOLOv4网络结构并没有太大改变,但是在数据预处理层面、损失函数层面都对YOLOv3进行了改进,使得网络在速度未降低的前提下精确度大幅提升。YOLOv4算法流程如图 1所示。
![]() |
Download:
|
图 1 YOLOv4算法流程 Fig. 1 YOLOv4 algorithm procedure |
YOLOv4的主要创新在于Bag of freebies[10]和Bag of specials:
1)Bag of freebies是指目标检测器在不增加推理损耗的情况下达到更好的精度,通常只需转变训练策略或只增加训练成本,如用马赛克增强(Mosaic data augmentation)方法将4张图片拼成1张,增加单GPU的显存利用率从而提升其训练能力,或利用自对抗训练在原始图片上增加一些轻微扰动,使得在人分辨不清的情况下诱导模型进行分类,或在标签处理中采用组内标签平滑的手段,损失函数层面运用Focal Loss等不改变网络结构的方法,并利用模拟余弦退火的方法改进学习率。
2)Bag of specials是指插入模块用来增强某些属性,从而大幅提高目标检测的准确性。
2 网络结构设计 2.1 YOLOv4结构介绍特征提取网络CSPDarkNet53中采用CSPNet,可以大幅减少计算量并提高推理速度和准确性。YOLOv4将DarkNet53分成若干个CSPNet进行处理,进而形成CSPDarkNet53特征提取网络结构。此外,通过添加SENet[11]来学习通道之间的相互依赖关系,从而给通道间施加注意力机制,使网络有主次地学习通道间的特征。
采用空间金字塔池化(Spatial Pyramid Pooling,SPP)[12]的原理是对全连接层前的卷积层,执行3个不同尺度的最大池化操作,然后进行拼接形成一个一维的向量,上述过程对输入图片尺寸没有要求,因此,输入图片的高宽比和大小可以任意取值。
2.2 MobileNetv3介绍本文利用Pytorch框架,将YOLOv4的特征提取层改为MobileNetv3-large网络结构,该网络是NetAdapt算法与自动神经网络搜索(Neural Architecture Search,NAS)的结合。
MobileNetv3综合了MobileNetv1[13]的深度可分离卷积、MobileNetv2[14]的具有线性瓶颈的逆残差结构、MnasNet的基于SE(Squeeze and Excitation)结构的轻量级注意力模型这3种模型的思想,并将最后一步平均池化层前移同时移除最后一个卷积层。MobileNetv3网络结构如表 1所示,其中,k为扩展层通道数。
![]() |
下载CSV 表 1 MobileNetv3网络结构 Table 1 MobileNetv3 network structure |
表 1所述网络结构为原始MobileNetv3网络,该网络共20层,其中,后3层通过池化和卷积的方法完成图像分类任务,由于本文面向检测识别任务,因此只取前17层并对其进行一些优化处理。
2.3 MobileNetv3网络改进本文在MobileNetv3结构中保留了SE模块,使网络有主次地学习每层特征。在检测层,输出3个不同尺度的分支,分别在BottleNeck的第7层、第13层、第17层进行提取,撇弃第17层之后的模块,然后对这3层分别进行PW卷积操作以变换维度,使其能够与检测层衔接。
为了能在保留高维特征的前提下缩短延时,本文将平均池化前的层移除并用1×1卷积来计算特征图。特征生成层被移除后,先前用于瓶颈映射的层也不再需要,这将减少10 ms的开销,在提速15%的同时降低了操作量。由于后续的量化操作中不能对Leaky ReLU、h-swish等激活函数进行模型融合操作(感知量化操作的预处理),因此只能将MobileNetv3和YOLOv4检测层中的激活函数全部改为ReLU激活函数进行量化处理。
在经过MobileNetv3的特征提取后,会在YOLO头部层输出最终结果,图 2、图 3中的CBL是YOLOv4的基本组件,即Conv+BN+Leaky ReLU。对于YOLOv4而言,BN和Leaky ReLU是和卷积层不可分离的部分(最后一层卷积除外),它们共同构成了最小组件,YOLOv4采用3个不同尺度的特征图来进行目标检测。
![]() |
Download:
|
图 2 YOLOv4-CSPDarkNet53整体网络框架 Fig. 2 YOLOv4-CSPDarkNet53 overall network framework |
![]() |
Download:
|
图 3 YOLOv4-MobileNetv3整体网络框架 Fig. 3 YOLOv4-MobileNetv3 overall network framework |
目前,支持量化训练的框架主要有Pytorch 1.30以上、Tensorflow 2.0以上以及微软的推断框架,每种框架都有各自的优势。本文在尝试这3种框架后,最后选择Pytorch 1.40版本作为8 bit量化框架。Pytorch提供了3种量化模型的方法:
1)训练后动态量化,这是一种最简单的量化方式,其中,权重首先会被量化,激活值会在inference的过程中动态地被量化。
2)训练后静态量化,这是最常用的量化形式,其中权重提前量化,并且基于观察校准过程中模型的行为来预先计算激活张量的比例因子和偏差。训练后量化通常是在内存带宽和计算能耗都很重要的情况下进行的,CNN是典型的用例。
3)感知量化训练,在Post Training量化不能提供足够精度的情况下,可以使用感知量化训练,通过torch.quantization.FakeQuantize来模拟量化过程。计算过程使用FP32,但是数据会通过被固定在一定动态范围以及依据四舍五入来模拟INT8量化的影响[15]。
3.2 具体量化实现本文采用感知量化训练方法,将模型权重变为INT8类型,原因是采用INT8类型的量化最大能保留256个值,在最大限度地保证精度的情况下对模型进行压缩,从而减少参数量计算。
在实现量化的过程中,必须能够保持0.1×f的精度,因为0在深层神经网络(DNN)中发挥很大作用,如果原始的0映射到量化后的值发生改变并出现了精度损失,则计算过程中将会出现误差。
实际值和量化值的映射关系如式(1)所示:
$ a=({a}_{\mathrm{m}\mathrm{a}\mathrm{x}}-{a}_{\mathrm{m}\mathrm{i}\mathrm{n}})/({2}^{B}-1)-\theta \times (q-f) $ | (1) |
其中:
量化过程中最重要的是确定合适的
在进行量化训练之前,还有一个重要步骤,即进行模型融合,将卷积层(Conv Layer)、批归一化层(Batch Norm Layer)和激活函数层(Activate Layer)相融合,方可进行后续的量化操作。由于MobileNetv3中的激活函数使用h-swish和ReLU6,导致在进行感知量化时无法融合这类激活函数,因此本文将其都改为ReLU激活函数,以进行模型融合操作。
在进行感知量化时,参数优化公式为:
$ {a}_{\mathrm{o}\mathrm{u}\mathrm{t}}=\mathrm{c}\mathrm{l}\mathrm{a}\mathrm{m}\mathrm{p}\left(0, N-1, \mathrm{r}\mathrm{o}\mathrm{u}\mathrm{n}\mathrm{d}\left(\frac{{a}_{\mathrm{i}\mathrm{n}}}{\theta }\right)+\beta \right) $ | (2) |
其中:clamp表示截止位数;
$ {a}_{3}^{(i, k)}={Z}_{3}+\mathrm{r}\mathrm{o}\mathrm{u}\mathrm{n}\mathrm{d}\left(N\sum\limits_{i=1}^{N}({a}_{1}^{(i, j)}-{Z}_{1})({a}_{2}^{(j, k)}-{Z}_{2})\right) $ | (3) |
其中:量化系数
本文损失函数选取YOLOv4中最新设计的CIOU Loss和DIOU Loss,使网络预测框更加准确。用IOU代替L1 Loss和L2 Loss,能够实现尺度统一[17-18]。IOU计算公式如下:
$ {L}_{\mathrm{I}\mathrm{O}\mathrm{U}}=\frac{|B\bigcap {B}^{\mathrm{g}\mathrm{t}}|}{|B\bigcup {B}^{\mathrm{g}\mathrm{t}}|} $ | (4) |
其中:
DIOU是IOU的改进版,用来反映检测框之间的距离。DIOU计算公式如下:
$ {L}_{\mathrm{D}\mathrm{I}\mathrm{O}\mathrm{U}}=1-{L}_{\mathrm{I}\mathrm{O}\mathrm{U}}+\frac{{\rho }^{2}(b, {b}^{\mathrm{g}\mathrm{t}})}{{c}^{2}} $ | (5) |
其中:
CIOU在DIOU的基础上加入影响因子,其为目前性能表现最好的IOU Loss。CIOU计算公式如下:
$ {L}_{\mathrm{C}\mathrm{I}\mathrm{O}\mathrm{U}}=1-{L}_{\mathrm{I}\mathrm{O}\mathrm{U}}+\frac{{\rho }^{2}(b, {b}^{\mathrm{g}\mathrm{t}})}{{c}^{2}}+\alpha v $ | (6) |
其中:
可以看出,CIOU Loss和DIOU Loss都是对IOU Loss的改进,使得最后得出的预测框更加贴合实际目标。
3.4 激活函数改进本文激活函数采用Mish[19]非线性激活函数,其在负值层面添加一段平滑点,而非ReLU激活函数[20]中的零边界。平滑的激活函数允许更好的信息深入神经网络,从而得到更优的准确性和泛化能力。Mish激活函数如式(7)所示:
$ {M}_{\mathrm{M}\mathrm{i}\mathrm{s}\mathrm{h}}=x\cdot \mathrm{t}\mathrm{a}\mathrm{n}\mathrm{h}(1+{\mathrm{e}}^{x}) $ | (7) |
其中:
本文实验采用Pytorch框架进行网络结构改进并执行量化操作,操作系统为Ubuntu 18.04.5,CPU为Inter Core i7-10875H,GPU为NVIDIA RTX2060,在嵌入式设备上进行推理和测试操作,设备型号为NVIDIA Jetson NX。
4.1 实验数据集本文目的是在嵌入式设备上完成无人机数据集的多目标检测任务,使用的数据集为12分类的VisDrone2020无人机数据集,其训练和验证图片共有10 890张,测试图片有1 030张。
4.2 实验设备嵌入式设备使用NVIDIA公司于2020年最新推出的GPU边缘计算设备Jetson Xavier NX,如图 4所示,它以10 W的功耗每秒提供多达14 terra运算(TOPS)或以15 W的功耗每秒提供21 terra运算,并行运行多个神经网络,设备运行基于Ubuntu的Linux操作系统。本文在该嵌入式设备上安装Ubuntu18.04的操作系统镜像,并配置Python3.6和Pytorch环境。
![]() |
Download:
|
图 4 NVIDIA Jetson Xavier NX设备 Fig. 4 NVIDIA Jetson Xavier NX equipment |
本文实验输入尺寸统一为1 024×1 024像素的JPG图像,将CIOU Loss作为损失函数,总Batch size设置为16,每个GPU的Batch size为4,Epoch设置为500,学习率设置为0.000 1,模拟余弦退火策略来调整网络学习率。数据增强手段采用马赛克数据增强方法,同时采用组内标签平滑的方法优化标签类。由于原始anchor大小相比于无人机图像的目标而言过于庞大,因此本文使用KNN[21]聚类算法对输入数据集选取最合适的9个anchor大小,并将其应用到2个网络中,分别训练原始YOLOv4-CSPDarkNet53网络、改进YOLOv4-MobileNetv3网络以及经过感知量化训练的YOLOv4-MobileNetv3网络,最后将上述3种网络的结果进行对比。
4.4 结果分析在衡量一个模型性能优劣时,通常会用准确度(Prescision)和召回率(Recall)来对其网络预测结果进行分析。在目标检测领域,对于单目标检测算法,通常用AP(Average Precision)指标来衡量某一类目标检测的精度;对于多目标检测算法,通常用mAP(mean Average Precision)来衡量多类目标检测的平均精度。由于本文是对12分类无人机数据集进行目标检测,因此使用mAP衡量指标。在嵌入式设备上进行推理检测,本文目标是在不降低mAP或降低有限mAP的前提下,最大化地压缩模型尺寸(size),减少模型计算量(FLOPs),提高嵌入式设备上的帧率(FPS)。
图 5所示为YOLOv4-MobileNetv3模型在训练时Loss的变化趋势。从图 5可以看出,当Epoch逐渐迭代时,Loss在第150个~第400个Epoch之间下降最快,当Epoch为450时,Loss曲线逐渐平缓。
![]() |
Download:
|
图 5 模型训练时Loss的变化趋势 Fig. 5 Trend of Loss during model training |
传统的目标检测数据集(如COCO数据集、VOC数据集),它们的检测目标较大且单张图片数量较少。基于无人机数据集的多目标多分类目标检测任务的难点在于:在一张图片中存在几个或几十个需要检测的目标,数量不定且庞大;目标类别有12种,且图片尺寸较小,不易检测。
如表 2所示,实验经过1 024×1 024像素大小的图片训练后,分别在608×608像素、800×800像素、1 024×1 024像素的图片上进行测试,以CSPDarkNet53为骨干网络的YOLOv4模型的检测mAP最高可达35.2%,改进YOLOv4-MobileNetv3模型在mAP最高达33.3%的前提下,模型体积减小且检测速度提升;经过感知量化处理,模型更加灵巧,在嵌入式设备上能实现最快为73的检测帧率。
![]() |
下载CSV 表 2 3种模型在2个设备上的性能对比 Table 2 Performance comparison of three models on two devices |
图 6、图 7分别为YOLOv4-CSPDarkNet53和YOLOv4-MobileNetv3在PC端对VisDrone2020无人机数据集图像的测试效果。从中可以看出,YOLOv4-MobileNetv3与YOLOv4-CSPDarkNet53具有近似的测试结果,但YOLOv4-MobileNetv3的模型大小和测试速度比YOLOv4-CSPDarkNet53更优。
![]() |
Download:
|
图 6 YOLOv4-CSPDarkNet53在PC端的测试效果 Fig. 6 Test effect of YOLOv4-CSPDarkNet53 on PC |
![]() |
Download:
|
图 7 YOLOv4-MobileNetv3在PC端的测试效果 Fig. 7 Test effect of YOLOv4-MobileNetv3 on PC |
图 8、图 9分别为YOLOv4-MobileNetv3和经过INT8感知量化训练的YOLOv4-MobileNetv3在NX设备上对VisDrone2020无人机数据集图像的测试结果。从中可以看出,量化后的模型效果略差于量化前模型。
![]() |
Download:
|
图 8 YOLOv4-MobileNetv3在NX端的测试效果 Fig. 8 Test effect of YOLOv4-MobileNetv3 on NX |
![]() |
Download:
|
图 9 感知量化训练后的YOLOv4-MobileNetv3在NX端的测试效果 Fig. 9 Test effect of YOLOv4-MobileNetv3 on NX after perceptual quantization training |
本文提出面向低功耗应用场景的神经网络加速算法实现方案,以解决RCNN系列算法、SSD算法、YOLO系列算法在嵌入式领域高计算和低功耗需求之间的矛盾。设计一种轻量化神经网络,对网络进行量化处理,以在模型计算量与参数量均较小的情况下保证较高的准确率。实验结果表明,该神经网络加速算法能够在性能、功耗、运行效率上达到预期,可以在低功耗场景中对无人机图像进行准确识别。下一步将采用更大尺度的模型压缩方法,如通道剪枝算法或空间剪枝算法,将其与量化算法相结合,以提升模型压缩的效率。
[1] |
GIRSHICK R, DONAHUE J, DARRELL T, et al. Rich feature hierarchies for accurate object detection and semantic segmentation[C]//Proceedings of IEEE Conference on Computer Vision & Pattern Recognition. Washington D. C., USA: IEEE Computer Society, 2014: 580-587.
|
[2] |
GIRSHICK R. Fast R-CNN[C]//Proceedings of IEEE International Conference on Computer Vision. Washington D. C., USA: IEEE Press, 2015: 1440-1448.
|
[3] |
REN S, HE K, GIRSHICK R, et al. Faster R-CNN: towards real-time object detection with region proposal networks[J]. IEEE Transactions on Pattern Analysis & Machine Intelligence, 2017, 39(6): 1137-1149. |
[4] |
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.
|
[5] |
REDMON J, DIVVALA S, GIRSHICK R, et al. You Only Look Once: unified, real time objecct detection[C]//Proceedings of European Conference on Computer Vision and Pattern Recognition. Berlin, Germany: Springer, 2017: 6517-6525.
|
[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] |
REDMON J, FARHADI A. YOLOv3: an incremental improvement[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition. Washington D. C., USA: IEEE Press, 2018: 1804-1823.
|
[8] |
BOCHKOVSKIY A, WANG C Y, LIAO H Y M. YOLOv4: optimal speed and accuracy of object detection[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition. Washington D. C., USA: IEEE Press, 2020: 102-123.
|
[9] |
HOWARD A, SANDLER M, CHU G, et al. Searching for MobileNetv3[EB/OL]. [2021-01-05]. https://arxiv.org/pdf/1905.02244v3.pdf.
|
[10] |
ZHANG Z, HE T, ZHANG H, et al. Bag of freebies for training object detection neural networks[EB/OL]. (2019-04-12)[2021-01-05]. https://arxiv.org/abs/1902.04103.
|
[11] |
JIE H, LI S, GANG S. Squeeze-and-excitation networks[EB/OL]. [2021-01-05]. https://arxiv.org/pdf/1709.01507.pdf.
|
[12] |
HE K, ZHANG X, REN S, 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 |
[13] |
HOWARD A G, ZHU M, CHEN B, et al. MobileNets: efficient convolutional neural networks for mobile vision applications[EB/OL]. [2021-01-05]. https://arxiv.org/pdf/1704.04861.pdf.
|
[14] |
SANDLER M, HOWARD A, ZHU M, et al. MobileNetv2: inverted residuals and linear bottlenecks[C]//Proceedings of IEEE Conference on Computer Vision and Pattern Recognition. Washington D. C., USA: IEEE Press, 2018: 4510-4520.
|
[15] |
JACOB B, KLIGYS S, CHEN B, et al. Quantization and training of neural networks for efficient integer-arithmetic-only inference[EB/OL]. [2021-01-05]. https://arxiv.org/pdf/1712.05877.pdf.
|
[16] |
CHEN Y H, EMER J, SZE V. Eyeriss: a spatial architecture for energy-efficient dataflow for convolutional neural networks[EB/OL]. [2021-01-05]. https://www.rle.mit.edu/eems/wp-content/uploads/2016/04/eyeriss_isca_2016.pdf.
|
[17] |
JOUPPI N P, YOUNG C, PATIL N, et al. In-datacenter performance analysis of a tensor processing unit[C]//Proceedings of 2017 ACM/IEEE Annual International Symposium on Computer Architecture. Washington D. C., USA: IEEE Press, 2017: 1-12.
|
[18] |
JOUPPI N, YOUNG C, PATIL N, et al. Motivation for and evaluation of the first tensor processing unit[J]. IEEE Micro, 2018, 38(3): 10-19. DOI:10.1109/MM.2018.032271057 |
[19] |
MISRA D. Mish: a self regularized non-monotonic neural activation function[EB/OL]. [2021-01-05]. https://arxiv.org/pdf/1908.08681.pdf.
|
[20] |
SERRA T, KUMAR A, RAMALINGAM S. Scaling up exact neural network compression by ReLU stability[EB/OL]. [2021-01-05]. https://arxiv.org/pdf/2102.07804.pdf.
|
[21] |
ZHANG S H, LI X L, ZONG M, et al. Learning k for kNN classification[J]. ACM Transactions on Intelligent Systems and Technology, 2017, 8(8): 1-19. |