一种轻量型果园环境果实检测方法

2024-01-13 11:22商高高韩江义倪万磊
关键词:剪枝损失精度

商高高, 姜 锟, 韩江义, 倪万磊

(江苏大学 汽车与交通工程学院, 江苏 镇江 212013)

果实的准确检测是实现自主采摘机器人自动作业的关键[1].计算机视觉技术是实现低成本、快速响应果实检测的重要途径和发展方向[2].传统视觉果实检测通过提取颜色、形状、纹理等特征,利用SVM、 AdaBoost、HOG、贝叶斯分类器等方法进行果实检测[3-6].传统的视觉识别方法在检测速度、精度、鲁棒性上还有较大的提升空间.随着深度学习理论的不断创新,越来越多的学者使用卷积神经网络检测果园作物[7].文献[8]使用反向传播与随机梯度下降算法对 Faster RCNN进行改进,并进行端到端的训练,对奇异果检测平均精度为89.3%,检测速度为0.274 s.文献[9]采用Resnet50作为Faster RCNN的特征提取网络,实现对两种不同成熟度椰子的检测,平均准确率为89.4%,平均检测时间为3.124 s.Faster RCNN算法虽能实现一定精度的果实识别,但是属于两阶段模型,推理时间较长.文献[10]提出的SSD单阶段检测算法逐渐在果实检测中应用,将图像量纲一化到统一大小后直接放入一个卷积神经网络中回归预测出目标物体的类别和位置信息.彭红星等[11]将SSD深度学习模型中的VGG16输入模型替换为ResNet-101模型,并运用迁移学习方法和随机梯度下降算法优化SSD深度学习模型,得到了89.53%的平均准确率.由于SSD检测算法在检测精度上仍有一定的欠缺,文献[12]提出的单阶段检测YOLO系列算法得到广泛推广与改进, YOLO系列算法通过不断的优化,精度高于SSD算法.文献[13]采用DenseNet方法对YOLOv3网络中的低分辨率特征层进行改进,用于检测光照波动、苹果重叠和枝叶复杂背景下不同生长阶段的苹果,实现了0.896的F1得分,平均检测时间为0.304 s.蔡舒平等[14]提出了一种改进型的YOLOv4 目标检测模型对果园障碍物进行分类和识别,准确率和召回率分别为 96.92%和 91.43%,视频流检测速度为 58.5 帧/s.易诗等[15]采用CSPResNest50作为YOLOv4的特征提取网络,采用递归的金字塔进行特征的融合,所得到的模型精度为94.6%,视频检测速度为51 帧/s.文献[16]在YOLOv5s中的骨干结构加入注意力模块,对损失函数优化并将其部署人工智能 (AI)边缘系统,在AI边缘系统的检测速度为28帧/s.自主采摘机器人对果实识别的实时性要求较高,且要易于在低算力设备中部署.但是上述卷积神经网络方法仍存在精度与检测速度不平衡、模型庞大冗余等问题.

文中以YOLOv4为基础,引入焦点损失函数(Focal Loss)加强模型对负样本的挖掘能力,并提出一种混合剪枝方法剔除模型不重要参数,加快检测速度.通过多种试验验证其有效性,为自主采摘机器人提供可靠的视觉系统.

1 果实识别模型

1.1 YOLOv4算法

YOLOv4[17]是基于YOLOv3[18]的优化网络模型.YOLOv4网络结构如图1所示.CSPDarknet53作为YOLOv4的特征提取网络来提取图像特征,是在Darknet53中引入跨局部特征融合网络(cross stage partial network, CSPNet)[19]结构得到的.跨局部特征融合网络等组件结构如图2所示,将两个阶段的特征跨层融合,有效强化了网络的学习能力,解决了推送过程中检测算法需要大量计算的问题.特征提取网络将得到的3个不同尺寸的特征输入颈部网络,颈部网络除了有空间金字塔池网络 (spatial pyramid pooling network, SPPNet)[20]外还有路径增强网络(path aggregation network, PANet)[21],空间金字塔池网络主要是将不同大小的卷积特征转化为相同长度的池化特征,路径增强网络则是在特征金字塔网络 (feature pyramid networks, FPNet)[22]的基础上加入下采样连接底层特征与高层特征,加强多尺度语义信息的融合.此外,在数据预处理中引入了马赛克数据增强,并对激活函数和边界框损失函数等进行了优化.

图1 YOLOv4网络结构图

图2 YOLOv4组件结构图

1.2 损失函数的改进

为了提高复杂背景下果实检测能力,文中采用Focal Loss优化YOLOv4的置信度损失[23].Focal Loss通过调节正负样本的损失权重来提高模型对困难样本的挖掘能力,有利于提高模型精度.在原始YOLOv4中置信度损失L采用的是二值交叉熵(BCE)损失:

(1)

采用Focal Loss的置信度损失LFocal为

(2)

式中:γ为权重因子,作用是减少预测概率高的样本损失,降低模型对于易分样本的关注,提高对难分样本关注.当γ=0时,α为平衡因子,平衡正负样本损失.当γ>0时,α为超参数,与γ一起调节损失函数.在文中,α取值为0.25,γ取值为2.不同损失函数值的比较如表1所示,当真实值为1时,对于预测结果为0.95的简单样本,采用Focal Loss能以较大的比例降低简单样本的损失;当预测结果为0.50时,损失值会降低到原始值的0.062 5倍,对于预测结果为0.03的复杂样本,Focal Loss仅会把原来的损失降为0.24,相当于提高了困难样本损失权重.

表1 不同损失函数值的比较

所以,在YOLOv4算法中,模型总的损失函数为

L=LCIoU+Lobj+LFocal-conf,

(3)

(4)

(5)

(6)

(7)

(8)

1.3 剪枝算法

深度卷积神经网络中存在显著冗余,仅仅使用很少一部分权值就足以预测剩余的权值[24].而柑橘类数据集的数据特征相对单一,不需要太多的参数来拟合数据[25].为进一步降低模型的复杂性和参数,能在自主采摘机器人上部署,文中采用剪枝算法对模型进行优化.

剪枝算法可分为非结构化剪枝和结构化剪枝,非结构化剪枝得到的是稀疏分布的卷积核,参数矩阵非结构化,在计算过程中会造成内存获取的不规则性,影响硬件工作效率,降低计算速度[26],因此采用结构化剪枝.结构化剪枝先用系数正则化训练得到各个粒度的γ权重系数,然后根据选定的粒度进行结构剪枝.剪枝的粒度主要包括通道和层,其示意图如图3、4所示.通道剪枝算法使用Batch Normalization (BN)层的γ系数来评估输入通道的贡献评分,根据γ系数的分布和通道剪枝算法的剪枝率进行剪枝.层剪枝则针对每一个层连接的前一个Conv-BN-Mish(CBM)层进行评分,对各层的γ均值进行排序,根据选定阈值进行层剪枝.

图3 通道剪枝示意图

图4 层剪枝示意图

为使模型剪枝效果达到最佳,文中提出一种新的混合剪枝策略,其主要步骤如下: ① 稀疏训练:采用稀疏尺度因子的方法来确定需要剪枝的参数,将L1正则化约束规则应用于文中模型的BN层系数,并不断将其推向0,则尺度因子趋近于0时所对应的卷积核将对网络推理贡献越小,可以对其进行优化.稀疏训练时的损失函数为

(9)

式中:第1项为网络的训练损失,x、y分别为训练的输入、输出,W为网络中的训练参数;第2项为BN层γ系数的L1正则约束项,λ是惩罚因子.② 混合剪枝:在完成稀疏训练后,可以以一定的剪枝速率进行通道、层混合剪枝,生成占用更少存储空间的缩减模型.对于通道剪枝引入全局阈值来决定一个特征信道是否需要被修剪,引入安全阈值防止过度剪枝[27].对于每个层连接的卷积层,把对应的阈值合并进行剪枝,同时对激活函数的激活偏移值进行修正,降低剪枝时的精度损失.然后对通道剪枝模型的通道γ进行排序评分,进行通道层面的剪枝策略.③ 模型微调:完成剪枝后模型的精度可能会受到影响,因此需要再进行一次微调训练,微调修剪后的模型.主要目的是克服剪枝后模型精度损失过大的问题,有效恢复损失的精度.使用与YOLOv4正常训练相同的训练参数,对剪枝后进行再训练.

2 试 验

2.1 数据集

本研究收集了江苏省江心洲果园成熟的柑橘果实数据集.采集设备为微软公司生产的Kinect V2,彩色摄像机参数分辨率为1 920(水平)×1 080(垂直)像素,视场角为70°(水平)×60°(垂直).开发了用C++编写的专门软件,通过键盘按键来收集和保存数据.在数据采集过程中,模拟了多个自主采摘机器人的采收场景,包括正光、背光、晴天、多云等光照条件下的拍摄,以及重叠的果实被果实的枝叶遮挡、密集分布和相机抖动场景.柑橘树冠层外缘与相机的距离为0.5~1.5 m.数据采集示意图如图5所示.实际在果园拍摄的照片数量为1 200张.对训练图像进行对比度受限自适应直方图均衡化(CLAHE)预处理,通过动态调节亮度分布来提高图像的对比度,放大图像中的噪声.

图5 数据采集示意图

在试验阶段,会使用不同的算法对采集到的数据进行检测.为了方便其他算法使用该数据集的数据,使用GitHub的开源图像标注工具LabelImg对处理后的图像进行标注,生成PASCAL VOC数据集.按8 ∶1 ∶1的比例将数据集划分为训练集、测试集和验证集.

2.2 网络的训练

试验使用配备i7-10700F CPU,内存为16 GB, NVIDIA GTX 2070S型号GPU的计算机.程序运行中调用CUDA、CUDNN 和OpenCV 等第三方库.考虑到训练期间GPU内存的限制,训练批次大小设置为4.训练参数:输入尺寸416×416像素;初始学习率0.24×10-3;权重衰减0.01,采用余弦退火衰减;最终学习率0.24×10-6;种类1.训练集上每迭代一次就在验证集上测试一轮平均准确率和召回率,并保存一次模型.训练结束后,利用测试集对模型的性能进行评价.

3 试验结果与讨论

本研究通过多项试验验证所提出方法在检测目标时的可靠性.先对改进的部分进行试验,并与其他检测模型进行比较.然后,将改进后的模型与其他主流的检测模型进行对比,并对模型的检测结果进行分析与讨论.

3.1 模型的基础训练结果

利用Focal Loss来改进置信度损失函数,图6为召回率随训练迭代次数的变化曲线,图7为准确率随训练迭代次数的变化曲线,图8为平均精度均值(mean average precision,MAP)随训练迭代次数的变化曲线.通过试验结果可以看出,采用Focal Loss后各项指标均能更快地达到稳定且更高的水平,既提高了模型的检测能力,也缩短了模型达到最佳检测能力的训练时间.且召回率较原来的模型有明显的提高,说明模型对困难样本的挖掘能力有明显提高.

图6 召回率曲线

图7 准确率曲线

图8 MAP曲线

3.2 模型剪枝结果

为确定最佳的剪枝参数,对稀疏训练得到的模型进行多种方法的剪枝,并与原有的模型进行对比,其详细的结果如表2所示.层剪枝在参数上面的减少十分有限,但是精度也是影响最低的,参数量降低了10.18%,精度仅下降0.03%,几乎不变.通道剪枝由于是对每一个通道的权重都重新排序,所以参数量的下降十分可观,参数量降低了94.31%,精度下降2.46%.文中的混合剪枝策略与原有模型相比参数量降低了95.30%,精度仅下降1.36%,且经过模型微调后精度仅下降0.60%,模型压缩为原来的5.25%.单独对模型进行层剪枝或者通道剪枝与原有的模型相比虽能一定程度上减小模型参数,但效果无法达到最佳.文中提出的混合剪枝策略不仅能有效减小模型的参数,并且精度下降最小.模型经过微调后,模型的精度逐渐恢复到剪枝之前,很好地平衡了模型的大小与精度.

表2 不同剪枝方法试验结果对比

为直观地观察剪枝模型与原有模型的参数区别,进行了BN层γ参数的可视化.图9为普通训练模型每次迭代的γ参数分布,由图可以看出最终训练后每个通道上的γ参数较大且基本服从正态分布.图10为稀疏训练γ参数分布,随着稀疏训练的进行,剪枝层大部分通道γ参数分布在0附近,意味着各个通道和层的权重系数已重新计算.图11为在进行剪枝操作参数微调后γ参数分布,部分较重要通道的γ参数分布得到调整,说明模型精度得到一定恢复.

图9 普通训练后γ参数分布

图10 稀疏训练后γ参数分布

图11 模型微调后γ参数分布

图12、13为整体改进后算法与原有算法检测结果对比图.在图12简单场景中,改进后的算法虽然模型参数较小但都能检测出果园环境的大部分柑橘果实.在图13密集场景中,通过对比可以观察出,在一些遮挡严重的部分,文中所提出的方法检测能力更强,因此文中提出的方法是有效的.

图12 简单场景检测结果对比

图13 密集场景检测结果对比

3.3 不同目标检测算法的比较

为了进一步验证本方法对柑橘识别的有效性, 与Faster RCNN、SSD、YOLOv3和YOLOv4等检测算法进行对比.利用训练集分别对5种算法进行训练,通过测试集对其进行评估.其准确率和召回率曲线如图14所示, 该曲线是评价目标检测算法性能的重要指标,其与坐标轴包裹的面积为MAP,且一般认为算法的曲线越靠近图的右上角,整体性能越好.从图14可以看出改进的YOLOv4曲线位置在其他模型曲线的右上方,说明改进的YOLOv4不仅具有比其他算法更高的检测精度,而且整体性能也更好.

图14 准确率和召回率曲线比较

检测性能参数如表3所示,文中提出的改进的YOLOv4较Faster RCNN、SSD、YOLOv3、YOLOv4等在MAP上分别提高了2.34%、7.98%、3.75%和1.18%,参数量分别减小了92.60%、86.64%、95.11%和95.22%,模型尺寸分别缩小到3.76%、13.06%、3.66%和4.84%.在同等试验条件下,文中所提出的算法的检测速度是YOLOv4的4.03倍, YOLOv3的4.76倍,SSD的3.12倍, Faster RCNN的5.31倍. 因此文中提出的算法与现有的主流目标检测模型相比在检测速度上有较为明显的提升,精度也有一定的提升,进一步验证该算法的有效性.

表3 算法检测结果比较

4 结 论

提出了一种果园环境柑橘果实实时检测方法,该方法减少了原有YOLOv4的参数,并实现了速度与精度的平衡.Focal Loss在二分类检测任务中能提高模型负样本的挖掘能力.提出了一种混合剪枝方法解决了机器人计算平台计算资源有限,无法满足算法实时性要求的问题.试验结果表明,提出的方法检测精度和速度都优于原有的YOLOv4,MAP从93.04%提升到94.22%,增加1.18%,网络的参数量减少了95.22%,模型尺寸为原来的4.84%,检测速度为原来的4.03倍.相较于Faster RCNN、SSD、YOLOv3等主流算法其检测效果和检测速度都更佳.该方法更能满足柑橘实时检测系统的要求,为实现机器人的智能采摘提供了视觉基础.

猜你喜欢
剪枝损失精度
人到晚年宜“剪枝”
胖胖损失了多少元
基于YOLOv4-Tiny模型剪枝算法
玉米抽穗前倒伏怎么办?怎么减少损失?
基于DSPIC33F微处理器的采集精度的提高
剪枝
GPS/GLONASS/BDS组合PPP精度分析
一般自由碰撞的最大动能损失
损失
改进的Goldschmidt双精度浮点除法器