APP下载

基于嵌入式Jetson TX2的高原鼠兔目标检测

2023-02-03陈海燕贾明明赵文力王婵飞

计算机应用 2023年1期
关键词:剪枝主干高原

陈海燕,贾明明,赵文力,王婵飞

(兰州理工大学 计算机与通信学院,兰州 730050)

0 引言

高原鼠兔作为青藏高原生态系统的关键物种,对维持高原草地的生态平衡起着重要作用[1-3]。用人工智能的方法监测、统计其种群密度可以节省大量财力、人力以及物力[4]。但这类方法中的智能检测设备规模比较大,一旦部署完成将不易调整,因此迫切得需要一种移动性强的便携式目标检测设备实现对高原鼠兔的随机监测。

近年来,随着嵌入式领域的技术进步,NVIDIA Jetson TX2因具有便携性与低功耗的特点被广泛应用于无人机检测、室内监测等场景[5-6]。Rabah 等[5]将一阶段的目标检测方法SSD(Single Shot Multi Box Detector)作为基础模型,并将其部署到嵌入式设备Jetson TX2 中,实现了对地面目标的检测与跟踪。Cai 等[6]将一阶段的目标检测模型作为基础模型,通过重新设计主干网络,增强了模型的特征表达能力,该改进模型部署到Jetson TX2中,能实现对鱼池中鱼类的目标检测。上述方法表明:采用嵌入式Jetson TX2 作为便携式的目标检测设备能够实现不同场景的目标检测;但上述方法在目标检测模型部署时未对模型做轻量化处理,导致检测设备能耗高、检测速度慢。针对高原鼠兔目标检测问题,陈海燕等[7]通过语义分割模型获得感兴趣区域的位置,实现了准确检测,召回率达到了95%;但该模型相较于一阶段的检测模型有更深的网络,引入了更多参数,并不适用在嵌入式设备上部署。

本文以一阶段的YOLOv3(You Only Look Once version 3)模型为基础目标检测模型,为降低模型的网络深度,使用轻量级的MobileNet[8]替 换YOLOv3 的主干网络DarkNet53,再利用裁剪、微调和Tensor RT 加速的方法进一步轻量化目标检测模型,并部署到Jetson TX2。

1 检测模型轻量化

本文目标检测模型结构如图1 所示:由输入模块、主干网络(MobileNet)、多尺度特征融合模块以及分类与回归模块构成。输入模块实现对高原鼠兔图像的预处理;主干网络提取输入图像中目标的特征信息;多尺度特征融合模块实现主干网络中不同尺度特征图的融合,增强用于检测的特征;分类与回归模块实现对目标定位和分类。

图1 MobileNet网络框架Fig.1 MobileNet network framework

1.1 主干网络构建

本文以YOLOv3[9]目标检测模型为基础模型,YOLOv3 的主干网络DarkNet53 由53 层标准卷积构成,具有较强的特征提取能力,但也带来大量浮点运算[10]。Howard 等[8]提出的MobileNet 由28 层深度可分离卷积(包括深度卷积与逐点卷积两部分)构成,基本卷积单元如图2(a)。深度卷积的作用是利用特征图与卷积核通道的对应关系降低卷积的计算量,逐点卷积的作用是对深度卷积输出的特征图作特征融合,从卷积层数与卷积计算方式两方面降低浮点运算[8]。为降低模型运算量,本文利用MobileNet 替换DarkNet53 作为本文目标检测模型的主干网络,参数量在理论上减少了8/9~9/10。

替换YOLOv3 的主干网络在降低主干网络参数量的同时,也导致主干网络的特征表达能力降低。文献[11]中的ResNet 证明,使用1×1、3×3、1×1 堆叠卷积作为基本卷积单元能够增强特征图的特征表达能力,文献[12]证明在堆叠卷积结构中,先提升特征图的通道维度、再降低特征图的通道维度,能够减少特征图信息的丢失。为提高本文目标检测模型主干网络特征图的表达能力,借鉴文献[11-12]的思想,在深度卷积之前添加一层1×1 的标准卷积,并提升特征图的通道维度,具体如图2(b)所示。其中:BN(Batch Normalization)为批归一化;激活函数为修正线性单元(Rectified Linear Unit,ReLU);DWconv 表示深度卷积,Gconv 表示逐点群卷积,conv表示标准卷积;CSO 表示通道混洗操作(Channel Shuffle Operation)[13]。

图2 基本卷积单元Fig.2 Basic convolution unit

特征图的通道数较多时,1×1 的标准卷积会带来较多的运算量,文献[14]中证明分组卷积可以降低卷积计算量,因此用1×1 的逐点群卷积(1×1Gconv)代替1×1 的标准卷积对特征图的通道进行分组,达到降低1×1 的标准卷积计算量的同时增强主干网络特征图的特征表达能力的目的。逐点群卷积也会带来输出特征图信息较为单一的问题,因此在逐点群卷积后做通道混洗操作,通过重新组合逐点群卷积的输出特征图的通道,增强特征图的信息交互能力,提高主干网络的特征表达能力。CSO 操作过程如图3 所示。

图3 通道混洗操作Fig.3 Channel shuffle operation

1.2 模型剪枝

对构建的目标检测模型按照2.3 节中的方法训练,得到高原鼠兔目标检测模型,并对模型做卷积通道剪枝。首先对需要做剪枝的目标检测模型作参数分析,获得该模型需要剪枝的卷积层名称;其次采用文献[15]提出的方法评定卷积核的重要程度,按重要程度对卷积核进行排序,并按比例(0.1、0.2、0.3、0.4、0.5、0.6、0.7、0.8、0.9)丢弃每层卷积所对应的卷积核,进而裁剪对应的通道,记录裁剪后的目标检测模型在测试集中的精度损失,记为敏感度信息;最后用需要做剪枝的目标检测模型作为微调训练的预训练权重,并使用记录的敏感度信息辅助模型的裁剪、微调训练,通过反复测试,确定一组裁剪率(确定每层卷积所对应的卷积核裁剪比例),对需要裁剪的卷积层按确定的裁剪比例进行剪枝并按2.3节中的方法作微调训练,得到用于Jetson TX2 上部署的目标检测模型。

模型剪枝过程如图4,其中参数A 表示输入特征图,C 表示卷积核。先计算C 中每个卷积核的所有权值的绝对值之和,并按大小排序,若C 中虚线部分的所有权值的绝对值之和最小,则丢弃该卷积核,而经过A 与C 的卷积运算,B 中的虚线通道也将被丢弃。

图4 剪枝原理示意图Fig.4 Schematic diagram of pruning principle

2 实验设计与结果分析

2.1 数据来源

用于训练高原鼠兔目标检测模型的实验数据采用课题组在青藏高原东北部甘南草原拍摄的高原鼠兔图像,图像像素为:5 742×3 648。因高原鼠兔的警惕性高,近距离采集目标难度较大,所以拍摄距离远,导致采集的图像中高原鼠兔目标较小。对部分高原鼠兔图像进行交叠切分,获得原图像的6 部分子图像,切分后子图像像素大小为:608×608,手动将含有高原鼠兔目标的子图像挑选出来,不做压缩处理,使其组成新的、背景不同的高原鼠兔图像,作为原始数据集的一部分。对组成的新数据集作清洗操作,采用文献[16]中定义的模糊度和文献[17]中定义的相似度的概念,去除模糊度、相似度高于0.8 的高原鼠兔图像,避免训练过程中出现过拟合现象。数据集格式为VOC(Visual Object Classes),经数据预处理之后共3 520 幅高原鼠兔图像,将其以9∶1 的比例随机划分成训练集与测试集。

2.2 实验平台

实验环境:挂载V100 处理器的Linux18.4 操作系统,深度学习框架是Paddle。网络参数配置:优化器为随机梯度下降(Stochastic Gradient Descent,SGD),动量设置为0.9,总共训练270 epoch。在1~10 epoch 学习率从0 线性增长到0.000 375,在210、250 epoch 处学习率分别开始衰减为原来的1/10 和1/100,Batch_size 为24。

测试实验环境:NVIDIA Jetson TX2、Quad ARM A57/2 MB L2 处理器、8 GB RAM、Jetpack4.4 包、Python 3、Numpy、Matplotlib、OpenCV4.1.1、CUDA10.2、CUDNN8.0、Paddle、Paddle Inference 预测库。

2.3 模型训练

利用K 均值聚类算法对高原鼠兔图像数据集进行105次聚类分析,计算适合高原鼠兔目标大小的锚框,取锚框的个数为9,分别为:(28,29),(29,43),(42,45),(67,48),(49,69),(91,63),(72,97),(121,83),(137,145)。

本文模型训练分两个阶段,模型训练前采用随机扩张、图像裁剪、随机图像调整、随机水平翻转、图像像素变换和图像叠加等方法对用于训练的高原鼠兔图像数据进行数据增强。第一阶段在数据增强后的高原鼠兔数据集上训练目标检测模型;第二阶段微调裁剪后的目标检测模型。在第二阶段训练中,裁剪率设置为0.844,其余参数设置与第一阶段保持一致。敏感度计算结果如图5 所示。

图5 敏感度分析结果Fig.5 Sensitivity analysis results

2.4 模型部署

将微调训练后的高原鼠兔目标检测模型部署到嵌入式设备Jetson TX2 的方案如图6 所示,包含两个步骤:第一步,微调之后的高原鼠兔目标检测模型转为部署模型文件(包括模型结构文件、参数权重文件和网络配置文件);第二步,对嵌入式Jetson TX2 做基础环境配置并引入深度学习框架和C++预测库。在预测库中设置配置文件,确定使用CPU 或GPU 作前向计算并为其分配确定显存、开启内存优化和Tensor RT 加速,根据配置文件完成模型预测器(Predictor)加载,通过设置输入将预测数据读入并作数据预处理进而执行Predictor,将结果输出。

图6 模型部署Fig.6 Model deployment

2.5 实验结果与分析

为了评价本文模型的性能,采用平均精度(Average Precision,AP)、帧率、模型大小作为评价指标,AP 是P-R(Precision-Recall)曲线与坐标轴围成的面积,计算如式(1)所示,其中交并比值取0.5。

其中:Pinterp()R为从P-R 曲线中取n个不同等距召回率R区间时,当召回率满足≥R时的精度最大值,为获得精度最大值时的召回率;TP(True Positive)、FP(False Positive)和FN(False Negative)分别是真正例、假正例和假负例。P-R 曲线如图7 所示。

图7 模型裁剪前后的P-R曲线Fig.7 P-R curves before and after model pruning

接着验证分组数对本文方法的影响。由文献[13]证明可知,模型的运算量会随着分组数的增多而减少,但分组数的增多也会使计算机存储访问效率降低,增加运算时间。因此本组实验将分组数设置为1、2、3 和4,在不大幅增加运算时间的基础上,验证分组数对本文模型AP 的影响,结果如表1 所示。从表1 可知,不同分组情况下,本文方法对高原鼠兔目标检测的平均精度相差不大,网络的分组数取3 时AP 值最大,因此,在后续研究中设置网络的分组数为3。

表1 分组数对本文方法AP的影响 单位:%Tab.1 Influence of number of groups on AP of proposed method unit:%

为验证逐点群卷积、通道混洗分别对本文方法的影响,表2 给出了在YOLOv3 主干网络替换之后增加不同模块时的AP 值。由表2 可知,当添加逐点群卷积操作之后,模型的平均精度有所降低,原因是分组阻碍了特征图通道之间的信息流通;而对特征图通道之间的信息进行混洗操作可以提升模型的性能。

表2 群卷积、通道混洗对本文方法AP的影响 单位:%Tab.2 Influence of group convolution and channel shuffle on AP of proposed method unit:%

表3 为不同裁剪比例下的模型性能指标值。其中浮点运算数(FLOating Point operations,FLOPs)指标用于衡量模型的复杂程度。在本文方法中,模型裁剪前的浮点运算数为:24 106 944,从表3 可知,在不同的裁剪比例下,模型的浮点运算数都从千万级别降到了百万级别,有明显的改变。随着裁剪率的增大,浮点运算数呈递减规律,模型占用的存储空间变小,但模型的平均精度变化不大。当裁剪比例取0.844 时,微调之后模型的AP 值最大。

表3 不同裁剪率下的模型性能指标值Tab.3 Model performance indicator values under different pruning rates

表4 对比了一阶段主流模型与本文模型在Jetson TX2 上部署后的检测结果。基础模型YOLOv3 在在剪枝后获得了98.34%的AP 值,占用了156 MB 的内存,每秒检测帧数(Frames per Second,FPS)为13。与剪枝前的基础模型YOLOv3 相比,在AP 值降低0.07 个百分点的基础上,模型大小由235 MB 降低为156 MB,释放了79 MB 的内存,且检测速度由5 FPS 变为13 FPS,有160%的提升。采用剪枝的方法,虽然可以裁剪掉一些对模型不重要的特征图通道,减少模型参数与运算量,提升模型的检测速度;但因YOLOv3 具有较多的残差网络,带来较大的运算量,致使YOLOv3 对Jetson TX2 不够友好,检测速度较低。

表4 不同高原鼠兔目标检测模型结果对比Tab.4 Result comparison of different Ochotona curzoniae target detection models

YOLOv3_MobileNet 模型的AP 值、模型大小、检测速度分别为97.30%、92.8 MB、14 FPS,与剪枝前YOLOv3相比,在AP值降低1.11 个百分点的基础上,模型大小压缩了60.5%,检测速度提升了180%,模型性能有一定的提升。因为通过替换基础模型YOLOv3 的主干网络,降低了网络深度,减少了模型参数量与运算量,因而提升了检测速度。在替换主干网络之后,YOLOv3_MobileNet 模型的AP 值并没有随着网络层的精简而大幅降低,这是因为本文方法对YOLOv3 的主干网络的基本卷积单元做了以下操作:首先对输入特征图通道维度进行升维;其次对通道数进行分组卷积,通道混洗;最后对深度卷积输出特征图通道维度进行降维。这样的处理方式减少了特征图信息的丢失,提升了主干网络特征表达能力。

本文模型是通过对YOLOv3_MobileNet 模型进行剪枝得到的,在占用Jetson TX2 14 MB 内存的基础上,最终AP 值达到了97.36%,检测速度为36 FPS。与剪枝前的原YOLOv3 相比,在平均检测精度仅降低1.05 个百分点的基础上,节省了220.12 MB 的内存空间,模型大小压缩了93.67%,检测速度提升了620%;相较于轻量级模型YOLOv3_tiny 和SSD_MobileNet_v1,本文模型在模型大小、检测精度、检测速度这3 个指标中,均有明显优势;相较文献[19]中的MSFAN(输入图像:416×416,检测速度:38 FPS,模型大小:62.43 MB)方法,虽然检测速度降低了2 FPS,但节省了47.55 MB的存储空间;检测速度降低的原因为本文所输入的图像尺寸更大,在处理过程中需要更多的时间。

图8(a)为对采集到的不同季节的高原鼠兔图像的目标检测的结果;图8(b)为便携式检测设备对高原鼠兔视频的目标检测的结果。对高原鼠兔图像和视频的目标检测结果表明该便携式检测设备能够满足对自然场景下高原鼠兔目标的准确检测。

图8 对获取的高原鼠兔图像与视频的目标检测结果Fig.8 Target detection results in Ochotona curzoniae images and videos

3 结语

本文提出一种对高原鼠兔目标进行检测的便携式目标检测方法。考虑到该方法中的便携式检测设备具有弱存储、功耗低的特点,本文采用一阶段目标检测模型作为基础,首先替换模型主干网络,减少主干网络层数,降低模型参数量;其次采用堆叠卷积、逆残差卷积的方法构建主干网络基本卷积单元,减少主干网络特征图的信息丢失,增强主干网络的特征表达能力,提高目标检测模型的检测能力;最后采用剪枝的方法对训练得到的目标检测模型进行剪枝,丢弃模型中不重要的通道,进一步轻量化模型,减少模型的运算量,提高模型的正向推理速度;最后将模型部署在Jetson TX2 中,在NVIDIA 提供的Tensor Rt 助推下,实现对目标的实时检测。实验表明,该方法具有较好的鲁棒性,检测速度为36 FPS,检测平均准确率为97.36%,模型大小变为原来的1/16,优于传统的算法。轻量化后的目标检测模型可以克服便携式检测设备弱存储、低功耗的缺陷,实现对自然场景下高原鼠兔目标的实时检测。

本文方法的不足之处是虽然通过构建轻量化的目标检测模型来降低模型的参数量、提升模型的检测速度,但最终的检测速度是在单精度浮点模式(FP32)下测试的,相较于半精度浮点模式(FP16)和整型模式(int8),检测速度较慢。在后续的研究中,将考虑便携式检测设备搭载在无人机平台中,验证在无人机运动的状态下,本文模型能否满足对高原鼠兔目标的实时检测问题。因此,将考虑对模型作量化操作,进一步提升检测速度。

猜你喜欢

剪枝主干高原
人到晚年宜“剪枝”
抓主干,简化简单句
基于YOLOv4-Tiny模型剪枝算法
基于激活-熵的分层迭代剪枝策略的CNN模型压缩
高原往事
迸射
高原往事
高原往事
左主干闭塞的心电图表现
剪枝