基于模型剪枝改进FCOS的实时柑橘检测研究

2021-07-07 09:14黄河清胡嘉沛李震魏志威吕石磊
河南农业大学学报 2021年3期
关键词:剪枝柑橘权重

黄河清,胡嘉沛,李震,3,魏志威,吕石磊,3

(1.华南农业大学电子工程学院与人工智能学院,广东 广州 510642;2.国家柑橘产业技术体系机械化研究室,广东 广州 510642; 3.广东省农情信息监测工程技术研究中心,广东 广州 510642)

近年来,深度学习目标检测[1]作为机器学习的重要组成部分,为人工智能领域提供了强大的算法支持,在农业视觉领域不断改进优化[2]。果实识别对智慧农业[3]、农业自动化与智能化具有极其重要的作用。已有采用目标检测算法对果实识别的研究工作,具体是由卷积神经网络(CNN)[4-5]来提取图像特征,使用图像金字塔(FPN)对神经网络各层获得的特征进行融合,获得更好的检测效果。刘芳等[6]通过改进YOLO目标检测算法来对复杂环境下的番茄果实检测,检测精度达到97.13%,检测时间为7.79 ms,满足检测的精确性和实时性。荆伟斌等[8]使用以VGG为主干网路的Faster-RCNN多目标检测模型对苹果测图果实识别,检测精度达到91%,单幅图像识别可以达到1.6 s,识别效果较好。李善军等[9]使用单阶段目标检测器SSD-Resnet18对柑橘果实进行实时分类检测,模型的检测精度达到87.89%,平均检测时间达到20.27 ms,在达到精度标准的情况下满足检测的实时性。薛月菊等[10]使用改进的YOLOv2目标检测算法识别未成熟的芒果,在前景和背景颜色差别极小的情况下,仍获得了良好的检测效果。赵德安等[11]使用YOLO深度卷积网络,兼顾效率与准确率的同时,检测召回率可以达到90%,准确率为97%。

当前深度学习目标检测模型较多且对不同的数据集满足一定的鲁棒性,但模型层数的增加会导致参数和计算量成倍地增加,很难应用到手机端、嵌入式端等计算能力有限的移动端。研究者通过使用轻量级神经网络架构[12]加速模型,或是使用剪枝方法[16]来对模型压缩,增加模型实用性。邵伟平等[17]通过融合MobileNet与YOLOv3算法改进得到轻量级神经网络设计,模型大小方面减小了90%,识别时间为16 ms;李兰等[18]通过将SSD模型中的VGG16网络更换为轻量级的Mobilenet,更加快速准确地检测工地表面缺陷;这类方法会占用牺牲大量显存来换取检测速度,但在边缘端访存量有限,无法有效移植应用。孙彦丽等[19]通过剪枝量化卷积神经网路,将轻量级网络再次压缩,解决了模型难以移植到移动端的问题。孔英会等[20]使用L2范数的方法将目标检测模型进一步剪枝,优化存储空间,准确识别复杂背景下的花卉目标,这类方法都是使用基于Anchor-based的方法,引入了大量的超参数,占用内存较多,且对较小目标的覆盖性较差。为了保证目标检测模型在检测性能不变的情况下,减少模型的计算量和所占用空间,移植到边缘端并适用于果园场景,已经成为需要解决的关键问题。

本研究基于FCOS[21]的思想,设计了一种以Darknet19为主干网络,连接特征金字塔进行特征的多尺度融合,增加模型鲁棒性,训练完成后将每一层的权重以通道(channel)为基准计算特征的L2 normalization,将小于30%的通道删除,微调优化得到最后权重,减少模型参数和计算量,为模型移植到算力有限的移动端提供技术支持。

1 模型的建立

1.1 试验平台

本模型使用的训练环境为Window10,处理器为E5-2620 V4@2.10 GHz,八核,16 GB RAM,显卡为Nvidia GeForce RTX 2080TI,结合OpenCV图像处理数据库,使用CUDA 10.2版本并行计算框架配合CUDNN 7.3版本的深度神经网络加速库。

1.2 模型训练流程

本模型使用自制的柑橘数据集进行训练,柑橘图像采集地为广东省梅州市某柑橘果园,通过手机相机在距离柑橘果实约1 m的地方拍摄柑橘图像500张,使用LabelImg工具对其进行标注后将图像进行数据增强,通过添加高斯噪声、亮度调节、数据翻转操作,经筛选后共得到柑橘图像1 500张作为自制数据集,并将其按照75%、10%、15%比例分为训练集、验证集、测试集。

使用预先在COCO数据集上使用的Darknet19模型预训练权重进行迁移学习,得到初始的预训练参数,加快模型训练速度与拟合速度,使用warm up方法调整学习率,增加模型性能。将第一次训练好的模型按照设定好的映射字典,将模型层分开计算每层权重值,将权重中最小的输出通道按一定比例剪掉,再送入模型进行微调,模型的训练流程图如图1所示。

图1 模型的训练流程图Fig.1 Training flow chart of the model

2 模型设计与剪枝

2.1 基于Darknet19的FCOS网络模型

本模型先从主干网络backbone出发,因柑橘检测所需训练的类别仅为一类,并不像COCO、VOC数据集那样种类丰富多样,不需要太过复杂且深层的网络结构就可以达到较好的效果,因此选用Darknet 19作为主要网络结构。本研究使用的Darknet 19有11个卷积层,自带归一化层(Batch normalization),使用LeakyReLU激活函数,相比于ReLU,给所有的负值赋予了一个非零斜率,没有多余的复杂运算;结构简单轻巧,需要较少的依赖库,移植效果较好,可较为方便对其改进与扩展。本研究中LeakyReLU激活函数的公式如式(1)所示。为提高模型性能,防止检测中出现的重复框会导致训练难以收敛的问题,使用特征金字塔将模型不同层的特征图融合,得到更丰富完整的图像特征,增加模型训练时的丰富程度。

f(x)=max(0.01x,x)

(1)

为了使参数、计算量更少,本模型使用FCOS目标检测网络中无锚框(anchor-free)思想。Anchor的使用会引入各种需要优化的超参数,大量的锚框增加会增加在计算交并比时的计算机内存和显存占用。使用Anchor-free可以对区域进行回归,对内存的占用、使用的算力消耗都有所降低,显著地减少了模型所需要设置的超参数,增加模型扩展性。通过消除锚框,本研究提出的模型避免了对复杂交并比(IOU)的运算以及训练时匹配真实框与锚框的计算,减少模型内存占用。在模型效果较好的YOLO中,不仅需要设置锚框的数量、尺寸和比例,还要解决锚框带来的正负样本不均衡问题。在本模型中,通过将分类层初始化,使用Fcoal Loss作为损失函数,使用参数来调节训练时数据的正负样本数,降低易识别的负样本在训练中所占用的权重比,对数据集中的难训练样本进行挖掘,来解决柑橘图像中正负样本比例不一致的问题,保证模型训练朝优良方向进行,加快模型收敛速度。Fcoal Loss损失函数如式(2-4)所示。

(2)

(3)

(4)

式(2)为二分类的交叉熵损失,交叉熵可以判别模型性能。其中,y′是模型经过激活函数的输出,当激活函数为Sigmoid函数时,范围为0到1 之间,对于本文所用的正常柑橘训练样本来说,输出的概率越大则损失越小,而对于可区分的柑橘负样本来说,输出概率越小则损失越小。式(3)在式(2)的基础上增加了参数γ,当γ大于0时可以减少易分类样本给模型的损失,使网络更加专注训练难以区分的样本,降低模型的优化难度,解决了模型处理数据集中不均衡样本的问题。式(4)添加了超参数α来平衡正负样本的重要性,使样本数据更加均衡,一般γ取2,α取0.25。

本研究设计的模型结构如图2所示。

图2 模型设计结构Fig.2 The model design structure

其中,CBLM表示Conv2d+Batchnorm2d+LeakyReLU+MaxPooling;CBL表示Conv2d+Batchnorm2d+LeakyReLU;P3、P4、P5表示FPN多尺度提取特征,将特征融合,增加模型输入丰富度。

2.2 模型剪枝与微调

在现有的大多数深度学习技术中,往往依赖很多难以移植到移动端或嵌入式端的过参数化模型。因此,在不影响精度的情况下,为了优化模型,减少模型参数与计算量、降低模型占用和使用访存就至关重要。本模型将主干网络Darknet 19每一层的权重以通道为基准,使用L2 正则化分析每个权重的值,将其中最小的30%的通道删除优化,生成低存储低占用的精简模型,再进行模型微调。L2 正则化的公式如式(5)所示,L表示在原来的损失基础上加上权重的平方和,其中E表示未包含正则化的训练样本误差,w为模型中的权重值,可以将其限制为0,γ可以控制正则化的趋之大小,当参数增大时,将会较大程度的约束模型复杂度。

(5)

模型剪枝流程图如图3所示。

图3 模型剪枝流程图Fig.3 The model pruning flowchart

剪枝后的将模型有所改变的通道数整理,如表1所示(只显示权重部分,偏执项所剪枝的通道与权重一致)。

表1 剪枝前后的通道数对比Table 1 Comparison of channel numbers before and after pruning

2.3 训练与数据增强

因自制的柑橘集中数据较为单一,本研究在模型训练和数据增强部分做出优化。模型在刚开始训练时,每个数据点对于神经网络模型来说较为新颖,模型会较快的进行数据矫正,学习到一些本不属于柑橘的固有特征,使得模型过拟合。为了使模型更加稳定的训练,保证模型深层训练时不会过于震荡,增加模型稳定性,本模型训练时使用SGD优化,添加warm up策略,在模型训练初始时使用较小的学习率,先细微的学习模型特征,当损失趋于稳定时,使用较大的学习率正常训练模型,可以较为良好地减缓模型训练初期时潜在发生的过拟合现象。

本研究对柑橘数据集进行数据翻转、亮度调节、添加高斯噪声3种数据增强操作,加入模型训练的先验知识,提高模型训练效果,增加模型鲁棒性。柑橘图像增强如图4所示。

图4 柑橘数据集的图像增强 Fig.4 Image enhancement of citrus dataset

3 模型评估与验证

3.1 柑橘检测效果

本研究以FCOS为基础模型,使用Darknet19为主干网络,通过剪枝优化并微调模型,减少模型占用内存和使用计算量。使用改进后的模型与当前检测效果较好的YOLOv4、YOLOv4-tiny、Faster-RCNN进行对比试验,以在CPU上的检测时间(s)、AP值(Average Precision)和模型权重大小为对比标准。其中,P、R、AP值的计算公式如式(6-8)所示。

(6)

(7)

(8)

式中:P为准确率,R为召回率,TP为正确的正样本数量,FP为错误的正样本数量,FN为错误的负样本数量。柑橘检测结果如表2所示。

表2 不同模型的柑橘检测结果比较Table 2 Comparison of citrus detection results of different models

从表2可以看出,本研究提出的算法检测单张柑橘图像的速度为0.02 s,相比于YOLOv4目标检测模型检测速度快了10倍之多,模型大小减少了96 MB,精度也略有提高;相比于YOLOv4-tiny算法检测时间减少了0.01 s,模型权重减少了39 MB;与两阶段目标检测算法Faster-RCNN模型对比,在检测速度和精确度都提升的情况下,模型权重大小少了143 MB。由实验结果对比可得,若在内存不足、算力有限的移动端或嵌入式设备中移植,本文提供的算法有较为明显的优势。模型对柑橘的检测效果如图5所示。

图5 柑橘检测效果Fig.5 Citrus detection effect

3.2 模型的剪枝效果

将第一次训练完成后进行模型剪枝,每一层的权重以通道(channel)为基准对特征的L2正则化进行分析,将小于30%的通道删除后进行模型微调,减少模型的计算量和参数。为了不过于影响精度,本研究进行了2次模型剪枝和微调工作。剪枝前后模型参数量(MB)、计算量(Flops)和精确度对比如表3所示。

表3 剪枝前后模型参数量、计算量、精确度对比Table 3 Comparison of model parameters,calculation and accuracy before and after pruning

由表3数据可知,相对于原始的Darknet19网络结构,第一次模型剪枝后,模型参数减少了30.33%,模型计算量减少了50.72%;经第二次模型剪枝后参数量减少了45.48%,模型计算量减少了68.11%,在不影响检测精确度的情况下,模型的参数量和所需计算量都有大幅度减少。

为了证明本文提出模型的可行性,将剪枝后网络结构与当前目标检测主流的神经网络进行对比试验。试验结果如表4所示。由表4可以看出,研究使用的Slim-Darknet19相比于Resnet18、Resnet34、Resnet50参数量和模型所需计算量都有所减少。相比于Inception_v3和densenet121网络模型,模型计算量分别少了78.35%和69.33%。相比于Alexnet,在模型计算量相当的情况下,模型参数量少了51.24%。证明本文提出的模型具有可行性。

表4 剪枝后模型与主流模型对比Table 4 Comparison between the pruned model and the mainstream model

4 结论

(1)设计了一种基于FOCS思想的柑橘目标检测网络。使用Darknet 19作为主干网络,经过模型剪枝删掉每一层的权重中最小的30%通道,去除冗余连接,网络得到较好的压缩效果,再经过微调后得到最终模型。此方法降低了模型的参数量和所需计算量,经过测试表明,模型对柑橘图像的检测同时满足精确性和实时性。

(2)通过对模型进行测试,对单张416×416的柑橘图像在CPU上的检测时间为22 ms,模型的总参数量为29.79 MB,总计算量为0.88 GFlops,对剪枝前的模型分别减少了24.86 MB、1.88 GFlops,对自制的柑橘测试集测试精确度为96.01%。并经过试验对比证明,本模型对柑橘图像的实时检测具有较好的效果。

(3)为了验证本研究所提出模型的有效性和实用性,将改进后的模型与当前主流的深度学习网络对比。经试验证明,模型在保证精度的情况下,对于有需要将模型部署到内存算力有限的移动端或嵌入式端,该模型可提供技术支持。

猜你喜欢
剪枝柑橘权重
人到晚年宜“剪枝”
权重望寡:如何化解低地位领导的补偿性辱虐管理行为?*
利用KL散度度量通道冗余度的深度神经网络剪枝方法
基于YOLOv4-Tiny模型剪枝算法
权重常思“浮名轻”
柑橘家族
为党督政勤履职 代民行权重担当
自制咸柑橘润喉去火
权重涨个股跌 持有白马蓝筹
剪枝