基于深度学习的轻量化目标检测算法

2022-09-03 03:21:58张琳娜岑翼刚李浥东
系统工程与电子技术 2022年9期
关键词:轻量化卷积精度

宋 爽, 张 悦, 张琳娜, 岑翼刚,*, 李浥东

(1. 北京交通大学计算机与信息技术学院, 北京 100044; 2. 现代信息科学与网络技术北京市

重点实验室, 北京 100044; 3. 贵州大学机械工程学院, 贵州 贵阳 550025)

0 引 言

深度卷积神经网络(convolutional neural network, CNN)体系结构经过多年的发展,已经在计算机视觉、自然语言处理、音视频识别等多个领域展现出其优越的性能。在硬件资源充足的情况下,构建更深、更宽的网络结构是在各项任务中取得更高得分的重要手段之一[1-2],以计算机视觉领域为例,因为CNN在图像方面有着强大的特征提取和表征能力,自从AlexNet[3]在ImageNet图像挑战赛ILSVRC2012(ImageNet Large Scale Visual Recognition Challenge 2012)[4]中获得冠军后,CNN在计算机视觉领域掀起了新一轮的研究热潮。通过构建更复杂的网络结构,提升网络层数或宽度,增加网络的参数量或计算量,VGGNet[5]、GoogLeNet[6]、ResNet[2,7]和SENet[8]分别在之后的ImageNet大赛中取得了优异的成绩。同时,各种基于CNN的目标检测算法也不断涌现,目前主流应用的算法有以单阶段多框检测器(single shot multibox detector, SSD)[9-10]、你只需要看一次(you only look once, YOLO)[11-13]系列为代表的单阶段检测算法和以包含卷积神经网络特征的区域(regions with CNN features, R-CNN)[14-15]系列为代表的两阶段检测算法。但是在现实生产场景中,过于庞大复杂的目标检测网络不利于生产部署和移动端移植,在自动驾驶[16-17]、智能安防[18]、工业机器人[19]等现实应用中,精度高、速度快和对硬件要求低的网络更加受到产业和市场的青睐。因此,通过压缩和加速深度神经网络模型,使其能直接应用于存储和计算资源有限的场景中,成为一种有效的解决方案。

研究指出,通过将紧凑型网络[20-24]应用于检测模块中,可以很好地降低网络的参数和所需要的计算量[25],不过因为网络复杂度降低,可能导致检测精度大幅度下降,因此不能为了追求模型轻量化而盲目地对基础检测网络进行修改。本文在综合考虑检测精度以及模型参数量和计算量的基础上,针对基础的YOLO目标检测算法,参考ShuffleNet V2的网络设计,对检测骨干网络部分进行重构,同时为了弥补由网络修改导致的精度损失,构建快速特征提取Stem模块,并引入可变形卷积网络[26-27](deformable convolutional network, DCN)对特征提取网络中的部分卷积层进行替换,在大幅降低网络参数量和计算量的同时,保持了网络的较高检测精度,最终获得一个高性能的轻量化目标检测模型。在自采集的道路监控数据集和公开数据集PASCAL VOC[28]上进行的大量实验,验证了本文所提出的轻量化检测模型的有效性。

1 相关工作

1.1 网络压缩和加速

经典的CNN一般由多个卷积层和全连接层组成,如图1所示,为了实现对模型的压缩和加速,得到轻量化的深度神经网络,相关研究针对不同层的参数权值和运算操作提出了各种不同的优化方法。

对网络冗余参数进行剪枝可以降低网络复杂度,压缩模型和加速模型的计算,韩松等人[29-30]提出经典的训练连接、删除连接、重训练权值的低值连接删除策略,使网络变得稀疏。文献[31]对批归一化层(batch normalization, BN)的尺度缩放因子引入L1正则化项,再逐层裁剪低于阈值的通道,实现网络瘦身。剪枝操作可以很好地实现网络压缩和加速,但是对网路参数的剪枝可能会破坏网络原有结构,需要特殊的硬件以支持部署。逐层逐通道剪枝虽然实现了结构化剪枝,但是重复的裁剪和微调操作需要消耗大量的人力和时间成本,同时神经网络中通道和层的重要性评估依据也没有统一标准。知识蒸馏将训练好的复杂模型作为教师网络,指导简单的学生网络去学习知识,以得到较为精炼的小模型。Hinton等人[32]最先提出知识蒸馏的概念,将教师模型softmax层的输出作为标签,监督指导学生进行网络的训练。文献[33]提出可以利用教师网络中高层隐藏层神经元的输出作为知识,相比于使用标签概率,包含的学习信息更加丰富。知识蒸馏可以获得细小化的学生网络,但是教师和学生网络差距过大可能导致学习效果较差,同时对教师网络的假设较为严格,缺乏重要指导,导致知识迁移不易成功。

以上提到的压缩和加速策略都是基于已有的模型,而训练一个完整庞大的模型需要耗费大量的资源。轻量化网络从网络设计部分着手,力求通过卷积核替换和网络结构优化,降低模型的参数量和计算量,并追求达到与复杂模型可比的精度水平。综合以上分析,使用轻量化网络对基于CNN的目标检测算法进行重构,以较低的硬件资源消耗实现目标检测算法,既保证了基础的网络结构不被破坏,而且不依赖于提前训练好的网路,构建模型所需要的时间更少,计算成本更为低廉。

1.2 YOLO目标检测算法

作为一种单阶段的目标检测算法,YOLO算法将整幅图像作为输入,运行一个端到端的检测网络以输出结果。网络将图像划分为S×S个单元格,如果目标的中心点落入某个单元格内部,由该单元格负责预测该目标,负责预测的单元格会预测B个边界框位置的相对坐标及其对应的目标置信度分数。相对坐标用(x,y,w,h)表示,其中(x,y)表示边界框的中心坐标,以图像左上角为坐标原点;(w,h)表示边界框的宽和高,表示相对于整幅图像的宽和高的比例,YOLO算法的检测流程如图2所示。

自YOLO检测算法在2016年被首次提出之后,相关研究人员在其基础上不断改进和增强,发展衍生出v1~v5多个版本,并在工业界和产业界获得了良好的应用。YOLOv5网络结构如图3所示,模型依旧以DarkNet[13]为基础,为了减少网络计算量并且增强梯度的表现,文献[34]使用跨阶段局部网络(cross stage partial network, CSPNet)组成CSP模块。为了增加主干网络的特征接收范围,更显著地分离上下文特征,在最后一层使用了空间金字塔池化(spatial pyramid pooling, SPP)模块[35]。YOLOv5通过引入深度和宽度因子,控制模型的大小,得到v5s,v5m,v5l,v5x 4种由小到大的模型。但在实际应用中,即便是网络复杂度最低的YOLOv5s,在模型大小和计算资源消耗方面,仍然有优化空间。

2 轻量化目标检测模型

本文提出的轻量化目标检测模型的网络结构图如图4所示,不对输入特征图进行切片操作,同时对图3中由卷积模块和CSP模块堆叠组成的骨干网络使用融合Stem和ShuffleNet V2单元组成的模块进行重构,降低网络的计算和内存消耗,使用DCN模块替换原始网络中的基本卷积模块,以提高网络的检测性能,输出部分沿用YOLOv5的设计,通过特征融合的方式对3个不同尺度的特征图进行预测。

2.1 网络复杂度

目前研究一般使用神经网络的空间和时间复杂度对网络模型进行综合评价,空间复杂度即为网络中参数量的多少。CNN中的参数量由众多卷积核的权重和对应的偏置组成,在统计时有相对明确值。时间复杂度则可以用浮点运算次数(floating point of operations,FLOPs)[23]来进行衡量,其值可以由下式得到:

{FLOPs=FLOPsfully+FLOPsconv

FLOPsconv=Cin·Cout·K2·Hout·Wout

FLOPsfully=I·O

(1)

式中:FLOPs由卷积层和全连接层两部分的计算量组成;I代表全连接层的输入节点数;O代表全连接层的输出节点数;Cin代表卷积层的输入通道数量;Cout代表卷积层的输出通道数量,假设卷积核为方形;K代表其大小;Hout代表输出特征图的高;Wout代表输出特征图的宽。由于偏置项对于总的FLOPs而言影响不大,在计算时一般将其忽略。在设计轻量化网络时,通常使用FLOPs的大小衡量模型复杂度,但是浮点运算量只是一个理论性的指标,模型的运算速度还受到内存访问成本(memory access cost, MAC)的重大影响,同时在文献[36]中指出,端侧平台会为一些特殊的操作,如3×3的卷积,专门设计推理加速库,进而也会影响模型实际的运算速度。因此,本文在设计轻量化目标检测网络时,将综合考虑理论指标FLOPs和模型在设备上的推理运行速度,使得网络更加适用于真实场景部署。

2.2 基于ShuffleNet V2模块的网络重构

在过去的工作中[37-38],研究人员已经发现,可以使用深度可分离卷积(depthwise separable convolution, DWSConv)来降低卷积操作的运算成本。其中,深度卷积操作如图5所示,该卷积操作只改变特征图的大小,不改变其通道数,与卷积核大小为1×1的点卷积组合实现深度可分离卷积。

对于式(1)中的FLOPsconv,使用DWSConv进行替换所需要的计算量为

FLOPsDWS=Cin·K2·Hout·Wout+Cin·Cout·K2

(2)

替换后的卷积操作与原始卷积操作的计算量比为

(3)

实际中,输入通道数量Cin往往较大,最终可以节约的计算量大约与卷积核大小的平方成反比,但是在第2.1节提到,仅仅通过计算量是不能准确地衡量模型的运行速度快慢的,因为MAC的差异,相同FLOPs的模型在运行速度上并不一定相同。为了更好地得到结论,定义1×1卷积所需要的内存访问成本MAC1×1,其值可由下式计算得到:

MAC1×1=Hout·Wout·(Cin+Cout)+Cin·Cout

(4)

在均值不等式中,几何平均数不超过算数平均数,即对于非负实数a,b:

(5)

始终成立,并且仅当a=b时,可以取到等号。

由式(4)和式(5)可以得到,MAC1×1存在下限:

(6)

式中:B1×1=Cin·Cout·Hout·Wout,代表1×1卷积操作所需要的浮点计算量,固定其数值得到Cout=B1×1/(HoutWout·Cin),则当且仅当Cin=Cout,即输入通道等于输出通道数时,式(6)MAC1×1可以取到等号,即最小值。

YOLOv5中使用了大量的CSP模块,使得输入和输出通道数量不一致,这与上述结论相违背。对ShuffleNet V2网络进行构建时,在基础单元中对输入特征图执行一个通道切分操作,将特征图分为两个分支,通道数量分别为C′和Cin-C′。基于式(6)的分析,为使得总体MAC最小化,实验中设置C′=Cin-C′,最后通过通道合并操作将两个分支的通道进行整合,保证了输入通道等于输出通道。在构建网络时也应减少使用YOLOv5中的信息相加操作,因为这种元素级的操作对MAC的影响也是巨大的[24]。同时,为了避免某个通道的输出仅仅来自于原始特征图的某一小部分通道,网络在通道合并之后又使用了图6(a)所示的通道随机混合模块,以实现不同分支间的信息交流。最终,在图4的网络搭建中所使用的ShuffleNet V2模块是由图6(b)所示的两种ShuffleNet V2单元组合而成,通过传入的步长参数控制是否进行下采样操作。

原始的ShuffleNet V2网络在搭建时,第一层由普通的卷积运算、BN层、ReLU非线性激活函数和最大值池化构成,提取图像特征的能力有限。图7所示的Stem模块可以通过两个分支提取不同的图像特征,在不引入过多额外开销的基础上提升了网络的表征能力。因此,使用Stem模块对网络第一层进行替换,并通过实验验证了其有效性。

如图3所示,基础的YOLOv5骨干网络由大量的卷积模块Conv、CSPNet构成的瓶颈模块和SPP模块堆叠组合而成。除了SPP模块不涉及复杂的卷积乘加操作,其他两个模块中存在大量浮点运算,造成庞大的参数量和计算量,而CSP模块中残差结构的引入需要更多的内存以保存新的特征图,网络在实际使用时对内存的消耗极大。基于以上讨论,ShuffleNet V2模块在降低网络参数量和计算量的同时,进一步减少了网络的内存访问成本,因此可以将图6所示的两个ShuffleNet V2单元堆叠组合以重构原始YOLOv5s的骨干网络,而为了弥补由骨干网变小带来的特征提取能力的损失,使用上文提到的Stem模块替换ShuffleNet V2网络的第一层,得到一个轻量化目标检测模型YOLOv5-ShuffleS。

2.3 可变形卷积

基本的卷积操作,每次都是针对卷积核四周矩形范围内的像素点进行计算,无论网络的深度和宽度如何变化,网络中的感受野始终是矩形,但是在现实场景下,各种物体的位置和形状往往会发生改变,通过一些仿射变换的数据增强操作不足以模拟各种场景。

因此,直接从卷积操作入手,使得卷积核能够对图像中物体的几何变换具备良好的适应性,对于目标检测这种视觉任务有很好的提升效果。

可变形卷积的操作都是在二维空间域中进行,输入的通道维度保持不变,所以这里假设卷积核的采样网格点为R,R={(-1,1),(-1,0),…,(0,1),(1,1)}。对于输出特征图中的每个元素p0,有

(7)

式中:x为输入特征图;pn表示枚举R中的第n个位置;w(pn)表示该位置的权重。在可变形卷积中,对每一个采样网格额外加上一个偏移量{Δpn|n=1,2,…,N},其中N=|R|。因此,式(7)可扩展为

(8)

因为偏移量Δpn是一个微小的浮点型偏移量,对于x(p0+pn+Δpn),在计算时可以通过双线性插值得到:

(9)

式中:p=p0+pn+Δpn表示任意位置;q为枚举输入特征图中的空间位置;G是二维的双线性插值卷积核,可被分解为两个一维核:

G(q,p)=g(qx,px)·g(qy,py)

(10)

其中,g(a,b)=max(0,1-|a-b|)。

实现可变形卷积的基础结构与普通卷积网络类似,只是需要一个额外的卷积层学习输入特征图的偏移量,再通过双线性插值得到最终的输出特征图,网络需要同时学习用于生成输出特征和偏移量的卷积核,可变形卷积计算流程如图8所示。

本文采用的可变形卷积模块为DCN V2[27],其在原始的可变形卷积基础上进一步对权重和偏移都进行了学习,可变形效果更好且性能更佳。图9展示了可变形卷积特征点感受野对比,可以看到可变形卷积自适应的学习感受野,其采样点更符合真实物体的位置和形状,对特征提取更有利。

可变形卷积的引入会造成额外的参数量和计算量,为了在保持网络模型轻量化的同时提升目标检测的性能,本文仅对第2.2节中YOLOv5-ShuffleS模型的特征提取头部进行操作,将其中的基本卷积操作模块替换为可变形卷积模块(图4中的DCN模块),为了保持特征维度的相同,在最后两个可变形卷积模块之后均加入一个最近邻插值的下采样模块,最终得到图4所示的YOLOv5-ShuffleS-DCN轻量化目标检测模型。

3 实验与分析

本文实验平台的操作系统为ubuntu18.04,硬件配置为Inter XeonE5-2630处理器,显卡为Nvidia2080Ti,使用Pytorch1.7.1深度学习框架,CUDA 10.1,Cudnn 7.6.3。

实验中用到了开源数据集PASCAL VOC、COCO和真实场景中的监控道路数据集,对于开源数据集PASCAL VOC,该数据集共有20个类别,使用文献[39-40]等文中最常使用的07+12训练测试数据切分模式,最终训练集共包含16 551张图像,测试集共包含4 952张图像。COCO[44]是微软开源的一个从日常复杂场景中截取的图像库,本文使用COCO2017目标检测数据集,其中训练集包含人、汽车、飞机、网球拍等80个类别共118 287张图像,验证集和测试集分别包含5 000和40 670张图像,监控道路数据集共有包含人、小汽车、巴士在内的7个类别,共包含16 683张图像,具体样本类别数量见表1。

表1 道路监控数据集Table 1 Road monitoring data set

检测模型使用平均精度均值(mean average precision, mAP)作为模型性能的评价指标,并综合分析了模型的参数量、计算量和同一设备的推理速度,以验证模型的有效性。

3.1 实验参数设置

遵循YOLOv5中对于实验超参数的设计,在训练监控道路数据集/COCO时,初始学习率设置为0.01,动量和权重衰减设置为0.937和0.000 5,批次大小设置为16/256。对于PASCAL VOC数据集,初始学习率设置为0.010 7,动量和权重衰减设置为0.98和0.000 22,批次大小设置为48,使用统一的图像翻转、裁剪、颜色域曝光及饱和度变换和马赛克数据混淆[41]等操作进行数据增强,在相同的实验设备上进行多次训练以得到最终结果。

3.2 横向对比实验

将提出的YOLOv5-ShuffleS-DCN模型与目前各种高性能目标检测模型在开源数据集VOC上进行对比,结果见表2。由于网络维度限制,输入尺寸必须满足32倍采样,实验中分别对3种不同的输入尺寸进行测试验证,表2中“-”表示未在公开资料中找到相应数据。

表2 VOC数据集实验结果Table 2 VOC dataset experiment results

从表2可以看出,本文提出的模型在计算量、模型大小和检测精度之间取得了更好的平衡。Tiny-YOLO是在YOLOv3基础上改进的轻量化模型,在输入特征图大小条件下,本文提出的模型与其相比在FLOPs、模型大小和mAP 3个方面都有着更好的表现。为了提高检测的精度,可以提高输入特征图大小,但这会造成更多的计算开销,但即便将模型的输入特征图大小提高到416×416甚至512×512,与FLOPs类似的MobileNet-SSD和Pelee-SSD相比,模型大小进一步压缩且精度差异不大,同时与专门针对嵌入式平台Nvidia Nano设计的YOLO-Nano相比,本文模型在计算量和模型大小更优的前提下,取得了相当的检测精度,并且本文提出的模型不依赖于特殊硬件。经分析可知,因为网络使用了轻量化骨干网络和庞大的原始检测头,两者的能力不匹配,导致模型与基础的YOLOv5s、PP-YOLO和基于mmdetection实现的ThunderNet相比,在检测精度上存在一定差距,但是模型尺寸得到了极致化压缩,大小仅有1.32 MB。

为了进一步验证方案的有效性,在更为复杂和庞大的COCO数据集上进行了训练和测试,同时考虑到YOLO算法在学术和工业界的广泛应用,将所提出的算法模型与目前公开的各种参考YOLO而改进的轻量化模型进行对比,实验结果见表3。表中模型输入尺寸为416×416,APval表示在COCO2017验证集上mAP交并比(intersection over union, IOU)的结果,其中IOU为0.5∶0.95。从表3可以看出,本文所提出的轻量化模型除了与基础的YOLOv5s(640×640)模型和今年提出的YOLOX方案在精度上有一定差距以外,与目前公开的学术和工业界最先进的方案相比在精度方面均有一定竞争力,但本文所提出的方案在模型尺寸和浮点计算量方面有着更优的表现。经总结,本文所提出的YOLOv5-ShuffleS-DCN模型对计算资源和硬件存储的消耗进一步降低,同时在各种数据集上依旧有着较高的精度表现,更有利于模型的迁移和应用。

表3 COCO数据集实验结果Table 3 COCO dataset experiment results

3.3 纵向对比实验

在本地道路监控数据集上进行消融实验。将YOLOv5系列中深度和宽度最小的YOLOv5s作为基准网络,对由YOLOv5s替换骨干网络而得到的YOLOv5-Shuffle,添加Stem模块的YOLOv5-ShuffleS和最终模型分别进行训练和测试验证,所有训练均不加载预先在大规模数据集[4]中训练好的模型,以证明调整网络结构后也能很快在新数据集上达到收敛。同时,针对第1.1节中提到的模型剪枝策略,对YOLOv5s使用文献[31]中的方法进行压缩加速,得到YOLOv5s-prune,并在相同数据集上进行测试。测试时使用本地一块显存为6G的GTX1060显卡,对于416×416的输入图像,计算不同模型的FLOPs、16精度模型推理和非极大值抑制(non maximum suppression, nms)总时间,以及mAP值,所有置信度阈值和nms阈值均相同。表中mAP@:.5表示在IOU=0.5时,计算每一类图像的平均精度,再求所有种类的平均精度均值,最终实验结果如表4所示。本方案是专门针对硬件资源有限的边缘端设备设计的,进一步在Jetson Nano上进行了图像速度推理测试,Jetson Nano是NVIDIA在2019年发布的一款开发套件,可以在紧凑、易用的平台上提供现代AI的强大功能及完整的软件可编程性,采用四核64位ARM CPU和128核集成NVIDIA GPU,具有5 W/10 W功率模式,并且价格低廉,适合在各种边缘端环境进行部署。

表4 本地数据集实验结果Table 4 Local dataset experiment results

从表4可以看出,替换骨干网络可以大幅地减少模型的尺寸和FLOPs,但是会导致检测精度的较大损失,而Stem模块在几乎不引入额外参数量和计算量的情况下,使网络相比于YOLOv5-Shuffle模型检测精度提高了约1.2个百分点。虽然引入DCN模块需要额外的卷积来计算偏移量,导致参数量和计算量有所增加,但是最终模型参数量减少90%,模型尺寸降低约80%,计算量和检测速度均优于原始YOLOv5s,达到了与原始模型可比的检测精度。与采用剪枝得到的模型相比,本文提出的轻量化模型在检测精度、检测速度、模型尺寸各个方面均优于YOLOv5s-prune。在低功耗的Jetson Nano设备上测试结果如图10所示,测试了1 000张输入大小为416×416的图像的推理延迟并取均值作为最终数值。可以看出,本文所提出的最终模型在YOLOv5s的基础上进一步实现了加速,可以实现单张图像90~100 ms的推理延迟,足以适用于大多数非实时性要求场景,而如果对实时性要求较高,可以在牺牲一定精度的条件下,使用YOLOv5-ShuffleS模型,该模型在Jetson Nano设备上实现了50 ms(每秒20帧)的推理速度,基本达到了监控摄像机的采集帧率。

实验验证了本文提出的YOLOv5-ShuffleS-DCN模型的有效性,可以在大幅度减少模型尺寸、降低参数量和计算量的同时,实现更快的检测速度,并达到可信赖的检测精度。图11展示了最终模型在本地数据集上的检测效果。

4 结 论

本文对YOLOv5目标检测CNN进行压缩和加速,参考ShuffleNet V2模块构建思想,融合可变形卷积和快速特征提取操作对原始网络进行重构,实现了网络模型的轻量化。通过在开源数据集VOC、COCO和本地道路监控数据集上进行实验验证,所提出的模型在尺寸大小、参数量和计算量大幅度降低的情况下依旧保持了较高的检测精度。

本文的下一步安排,分析使用轻量化网络带来的精度损失,在保证模型轻量化的前提下,进一步提高模型的检测精度。针对特定环境,对提出的网络模型进行优化改进,并且结合分解、量化等技术将算法移植部署到移动端,实现实际场景应用。

猜你喜欢
轻量化卷积精度
汽车轻量化集成制造专题主编
基于3D-Winograd的快速卷积算法设计及FPGA实现
从滤波器理解卷积
电子制作(2019年11期)2019-07-04 00:34:38
一种轻量化自卸半挂车结构设计
智富时代(2019年2期)2019-04-18 07:44:42
基于DSPIC33F微处理器的采集精度的提高
电子制作(2018年11期)2018-08-04 03:25:38
基于傅里叶域卷积表示的目标跟踪算法
GPS/GLONASS/BDS组合PPP精度分析
瞄准挂车轻量化 锣响挂车正式挂牌成立
专用汽车(2016年1期)2016-03-01 04:13:19
用户:轻量化挂车的使用体验
专用汽车(2015年4期)2015-03-01 04:09:07
改进的Goldschmidt双精度浮点除法器