APP下载

面向移动目标识别的轻量化网络模型

2021-07-13符惠桐王鹏李晓艳吕志刚邸若海

西安交通大学学报 2021年7期
关键词:剪枝轻量化卷积

符惠桐,王鹏,李晓艳,吕志刚,邸若海

(西安工业大学电子信息工程学院,710021,西安)

目标识别的主要研究内容是从海量图像中高效、准确地定位和识别预定义的特殊目标[1]。深度学习强大的表征能力和建模能力在很大程度上克服了复杂环境、光照变换、物体形变等对识别结果的影响[2-3]。在多种领域,传统的人力活动将被智能化、无人化的智能设备所取代[4]。此外,在实际生活中,可见光图像大多受到光线、遮挡或者背景复杂等因素的影响,目标识别精度降低[5-6],而且人们也无法携带大型设备来支撑基于深度学习的目标检测算法,将轻量化的目标检测模型植入嵌入式设备才更接近于实际生活的使用要求[7]。目前,大多数的目标检测算法需要GPU的加速支持才能在短时间内训练完成深度学习算法,达到实时检测的效果[8]。

随着计算机硬件水平的发展,计算机的算力资源得到极大提升,基于深度学习的目标识别算法发展也日新月异。2017年,Howard等提出了轻量级骨干网络MobileNets,引入深度可分离卷积模块,减少了大量的卷积运算与浮点运算[9],但网络本身参数少,提取特征能力不足,识别精度较低。2019年,Lee等基于VoVNetV2骨干网络提出了一种轻量化的无锚点目标检测实时算法CenterMask-Lite[10],对骨干网络进行优化,缓解通道信息丢失问题,在COCO数据集[11]上均值平均精度(mAP)达到40.7%,但需要类似于RTX 2080Ti显卡的算力支持。同年,Google公司的Tan等提出了可扩展的目标识别模型EfficientDet,基于神经网络架构搜索技术提出了多种规模模型以适应不同平台[12],但存在小规模模型精确度不足、大规模模型训练困难的问题。2020年,Han等提出了新的轻量化网络GhostNet,利用线性变化生成更多的特征图,以很小的代价从原始特征中挖掘更多特征信息,在效率以及准确率方面都优于最新的轻量化网络[13]。同年,Bochkovskiy等汇集主流的优化技巧和更复杂的网络架构设计出YOLOv4,可以在单显卡上进行快速、精准的训练与检测,是一个实用性极强的目标检测算法[14],但模型参数量依然很多,模型体积很大。图1展示了目前主流算法在COCO数据集上检测的准确率与检测速度,算法运行环境均为Nvidia RTX 2080Ti显卡,蓝色区域表示检测速度高于25帧/s,可以看出,很难有算法可同时满足高检测速度和高检测精度的需求。

图1 部分主流目标检测算法性能

针对现有的轻量化模型无法兼顾检测速度和检测精度的问题,本文选取目前主流的目标识别算法YOLOv4进行模型轻量化,通过融入多个空间金字塔池化(SPP)模块优化模型性能,并且利用轻量化Ghost卷积模块结合通道剪枝极限压缩的方法,对模型进行高效的压缩与加速,获得精度高、体积小、效率高的目标识别模型,从而适合部署于资源有限的嵌入式平台上。

1 YOLOv4目标识别算法

YOLOv4[14]目标识别算法兼顾了检测效率和准确率,是一种实时高效的一阶段目标识别算法。YOLOv4算法在原有的YOLO框架之上,对特征提取骨干网络、用于特征融合的颈部网络以及进行分类回归的预测头输出进行了优化,集成了近年来深度卷积神经网络中优秀的算法和模型。骨干网络在YOLOv3原有的Darknet53基础之上,结合交叉阶段部分连接(CSP)[15]设计出CSPDarknet53特征提取网络,新的骨干网络在减少计算复杂度的同时,保证了网络的识别效果;颈部网络在原有的特征金字塔[16]基础上,结合路径聚合网络[17]的思想,引入SPP[18],SPP模块有效增大了网络的感受野,将局部特征与全局特征进行融合,提升了检测器性能,路径聚合的连接方式有利于特征信息更好地从下向上传递,有效改善了深层网络丢失浅层特征信息的问题;预测头结构没有变化,对损失函数及非极大值抑制算法(NMS)进行了优化。采用CIOU-Loss损失函数,综合考虑目标框重叠面积(即交并比IoU)、中心点距离、长宽比的各项损失,使预测框的回归速度与精度均达到最优。非极大值抑制算法采用DIOU-NMS,综合考虑重合边界框的IOU和距离信息,有效提升了重叠目标的检测性能。YOLOv4的算法框架如图2所示。图中:CBL和CBM模块是在卷积层(Conv)后融入批处理归一化(BN)[19]操作以及采用Leaky relu、Mish激活函数的卷积模块;拼接操作表示对相同尺寸的特征图进行特征通道的拼接;特征相加表示对具有相同尺寸的特征图进行相加。

图2 YOLOv4算法框架

2 采用Ghost模块的YOLO目标识别算法

为压缩YOLOv4模型体积,本文提出了一种采用Ghost模块的YOLO目标识别算法GS-YOLO。首先基于Ghost模块重构目标识别模型;其次融入多个空间金字塔池化模块,在不同尺度上进行特征信息的融合;然后采用通道剪枝极限压缩的方法压缩识别模型;最后利用微调的方法恢复识别精度,从而获得高精度、体积小、运行效率高的轻量化目标识别模型。

GS-YOLO算法整体流程如图3所示。首先,建立初始目标检测网络模型G-YOLO。采用Ghost卷积模块完成卷积操作,以简单的线性映射生成Ghost特征图,在保证通道数不变的情况下,减少网络参数和浮点型运算,缩减模型体积,提升计算速度。在模型中融入多个SPP模块,在不同的尺度将不同感受野尺寸的特征信息进行融合,丰富特征图信息,从而有效提升检测器的检测精度,完成G-YOLO模型的建立。然后,利用通道剪枝极限压缩方法剔除冗余参数,得到紧凑的GS-YOLO模型。基于通道稀疏化的方式训练初始模型G-YOLO有助于通道剪枝时区分重要信道与非重要信道。利用通道裁剪操作,去除小尺度因子的非重要通道,减小网络模型体积与运算量、防止网络模型过拟合。最后,对剪枝模型进行微调,在保证检测速度的同时,提升模型压缩后目标识别的检测精度。

图3 GS-YOLO算法流程

2.1 基于Ghost卷积模块重构识别网络

Han等发现,特征中的冗余是卷积神经网络成功应用到图像领域的重要原因,因此提出Ghost轻量化卷积模块[13]。在进行卷积运算时:输入数据为X∈Rc×h×w,其中c为输入的通道数,h和w为输入数据的长和宽;卷积核f∈Rc×k×k×n,其中k为卷积核尺寸,n为卷积核数量。通过标准卷积公式得到特征图,公式为

Y=X*f+b

(1)

式中:*为卷积操作;b为偏置项;Y∈Rh′×w′×n为输出特征图,h′与w′为输出特征的长和宽。标准的卷积操作中浮点型运算量为n×h′×w′×c×k×k,卷积操作如图4a所示,其中包含着大量相似的冗余特征。在Ghost模块中,采用更廉价的线性操作完成冗余特征的生成,减少大量的卷积运算。Ghost模块首先利用标准卷积生成m层通道的本源特征Y′,Y′∈Rh′×w′×m,m为本源特征通道数且m≤n。然后,基于Y′利用简单的线性变化得到幻影特征

(2)

(a)标准卷积

(3)

若d×d与k×k相同,且s≪c,则理论上速度提升为原来的s倍。在整个YOLOv4的网络中,本文替换所有的传统卷积模块为Ghost卷积模块。

2.2 YOLOv4模型优化

图5 SPP模块

输入的特征图通过3个不同尺度的内核做最大池化操作,再通过拼接操作将得到的特征图进行拼接。最终,输出特征图的特征通道数为输入特征图通道数的4倍。输出特征图尺寸为

(4)

最大池化操作可以有效地保留特征,SPP模块相对于固定内核尺寸的最大池化操作扩大了感受野,通过不同尺寸的内核得到了全局特征和局部特征,并进行了特征融合,丰富了特征信息,从而提升了检测性能。

本文综合考虑引入参数以及SPP模块的实际应用,在颈部网络末端融入多个SPP模块。考虑到参数影响,采用YOLOv4中各个内核尺寸,即13×13、9×9、5×5。此外,将SPP模块后一个卷积层的卷积核尺寸由3×3修改为1×1,减少模型参数量。SPP模块引入位置如图6所示。引入多个SPP模块后的YOLOv4模型称为YOLOv4-3SPP。

图6 SPP模块引入位置

2.3 模型通道稀疏化训练

通道剪枝需要删除对应通道的所有输入与输出连接,Liu等从通道剪枝的角度出发,提出了基于通道剪枝的网络瘦身方法[20],通道稀疏化训练可以帮助通道剪枝操作区分重要通道与非重要通道[21]。图7是通道稀疏化训练及剪枝,第i个卷积层每一个通道分配一个尺度因子γ,以γ的绝对值作为评价该通道重要性的依据。经过稀疏化训练后,尺度因子γ的分布向0靠近,通过设定阈值剪切掉这些通道及连接,进而减少计算量和模型大小。

图7 通道稀疏化训练及剪枝

在YOLOv4中,除预测头结构外,每一个卷积层后均有BN层。若yin和yout表示BN层的输入和输出,则BN层的转换为

(5)

式中:μ和σ2为小批次输入特征图的均值和方差;β为偏置;ε为极小因子,防止分母为0。在训练时,通过L1正则项对γ进行稀疏化训练,稀疏化训练的损失函数为

(6)

2.4 目标检测模型剪枝与微调

3 实验与分析

3.1 实验环境

实验的测试环境为Ubuntu 16.04操作系统。利用Pytorch和Darknet深度学习框架实现GS-YOLO目标识别算法。服务器硬件配置为Nvidia GTX1060显卡、Intel Core i7处理器;性能验证嵌入式平台采用Nvidia Jetson TX2移动开发板。

3.2 实验数据集

根据实际应用的需求,本文着重对人、车辆、飞机等目标进行识别。因为研究背景特殊,目前没有公开数据集,故首先进行数据集收集制作。数据集图像主要来源于:内部资料、Imagenet数据集、标准COCO数据集、网络资源下载、影视资源截图等。

通过裁剪、旋转、增加噪声等方法对搜集的数据集进行增强,最终获得30 704张数据样本,包含人、车辆、飞机的样本各20 429、9 877、3 972张。按照YOLO算法所需的格式进行人工数据标注,图像样本如图8所示。

图8 部分数据样本

3.3 模型重构及优化实验

基于YOLOv4融入多个SPP模块得到YOLOv4-3SPP模型。在此基础上,基于Ghost模块重构得到YOLOv4-3SPP-Ghost(即G-YOLO)模型。基于Ghost模块重构YOLOv4-Tiny得到YOLOv4-Tiny-Ghost模型。表1针对这些模型的浮点型运算量、模型体积、预测精度以及在GTX 1060和TX2平台上的预测时间进行了对比。本文中所有实验模型的图像输入尺寸为608×608像素。

从表1可以清晰地看出,YOLOv4-3SPP模型虽然SPP模块数量增加,但相较于YOLOv4模型浮点型运算量、模型体积以及在相同平台上的预测时间均有所降低,精确度提高1.16%。将传统卷积模块替换为轻量化的Ghost模块后,YOLOv4-3SPP-Ghost模型的运算量减少至YOLOv4模型的48.88%,模型体积压缩至47.35%,速度在GTX 1060和TX2上分别提升1.4倍和1.6倍,精度提升0.47%。相较于传统的YOLOv4-Tiny模型,YOLOv4-Tiny-Ghost的效率在GTX 1060和TX2上分别提升1.4倍、1.6倍,且在TX2开发板上达到了19帧/s的检测速度,精度仅下降1.43%。

表1 改进YOLOv4模型对比

表1表明,本小节基于YOLOv4所改进的YOLOv4-3SPP-Ghost模型相较于传统的YOLOv4模型参数更少,识别精度更高。由此证明:在颈部不同尺度融入多个优化后的SPP模块可以有效提升目标检测模型精度,对模型的预测效率也有略微提升;采用Ghost模块进行模型轻量化操作后,模型的体积、运算量得到有效压缩,并且预测时间也有效降低。

3.4 模型稀疏化实验

设置不同的惩罚项α对YOLOv4-3SPP-Ghost进行稀疏化训练,训练过程中的损失以及经过稀疏化训练后的均值平均精度如图9所示。

(a)训练损失

由图9可以看出,针对YOLOv4-3SPP-Ghost模型以及数据集,当α=0.000 1时,训练100次,平均检测精度以及训练损失分别达到最佳和最低。因此,本文稀疏化训练选取α=0.000 1。

当α=0.000 1时,100次稀疏化训练的过程如图10所示,可以看出,不同通道的尺度因子均向0靠近,可有效地进行通道裁剪。

图10 稀疏化过程中尺度因子分布情况

3.5 模型裁剪对比

为了验证模型裁剪的有效性,本文对模型YOLOv4-3SPP-Ghost进行裁剪,裁剪率分别为0.5、0.8以及0.9,用YOLOv4-3SPP-Ghost-0.5、YOLOv4-3SPP-Ghost-0.8、YOLOv4-3SPP-Ghost-0.9表示。不同裁剪率模型的性能对比如表2所示。

表2 不同裁剪率模型性能对比

由表2可以看出,随着裁剪比例的提升,模型体积、浮点型运算量及预测时间均在降低,在平台GTX 1060均达到实时检测。YOLOv4-3SPP-Ghost-0.8模型的浮点型运算量压缩至YOLOv4模型的8.2%,体积压缩至4%,检测速度在GTX 1060和TX2平台上分别提高2.9倍和2.7倍。实验结果证明,模型通道裁剪在保证精确度的基础上,可有效地压缩体积和浮点型运算量,提升算法的检测速度,压缩后的模型体积与预测速度均优于传统YOLOv4模型。YOLOv4-3SPP-Ghost-0.8模型部分识别结果如图11所示。

图11 YOLOv4-3SPP-Ghost-0.8模型部分识别结果

4 结 论

针对现有的轻量化模型无法兼顾检测速度和检测精度的问题,本文提出了一种基于Ghost模块的YOLO目标识别算法GS-YOLO。该算法通过增加SPP模块优化网络模型,重新设计了SPP模块的引入位置,在减少模型浮点型计算量的同时,提升基础网络的检测精度与检测速度。利用高效轻量化模块替换结合通道剪枝极限压缩的方法,在保证精度的同时,有效压缩了模型体积和运算量,减少了模型占有的内存资源,提升了模型的运行效率。其中:采用轻量化Ghost卷积模块重构目标识别模型,减少卷积操作,提升算法的检测速率;采用通道剪枝极限压缩方法裁剪模型并对模型进行微调,在保证精确度的基础上,进一步减少参数量、运算量并压缩模型体积,提升检测速度。但是,本文只考虑了降低参数量,并未考虑不同硬件平台的特点,后期可以针对不同的平台设计不同的模型,对扩展模型的泛化能力进行进一步研究。

实验结果证明,本文提出的方法有效地对YOLOv4模型进行了压缩,相较于传统的YOLOv4模型有更小的体积和更快的检测速度,对算力低、内存少的嵌入式平台友好。此外,本文所提方案不仅可以对YOLOv4模型进行高效的压缩与加速,基于卷积层和BN层所设计的卷积神经网络模型都可参照本文方案进行卷积操作的替换以及通道裁剪,为深度学习算法部署在资源有限的嵌入式平台上提供理论支撑。

猜你喜欢

剪枝轻量化卷积
人到晚年宜“剪枝”
汽车轻量化集成制造专题主编
基于3D-Winograd的快速卷积算法设计及FPGA实现
基于YOLOv4-Tiny模型剪枝算法
基于激活-熵的分层迭代剪枝策略的CNN模型压缩
从滤波器理解卷积
一种轻量化自卸半挂车结构设计
一种轻量化自卸半挂车结构设计
基于傅里叶域卷积表示的目标跟踪算法
剪枝