-
开放科学(资源服务)标识码(OSID):
-
丘陵山区的柠檬因其皮厚气香、出汁率高而受到市场的广泛欢迎,在农业和食品行业中具有重要的经济价值和市场需求[1-2]。而农业机械化帮助实现规模化种植与采摘是农业现代化的重要组成部分,且是乡村振兴这一国家战略的重要手段[3]。传统的柠檬果实检测方法通常依靠人工视觉判断,效率低下且容易受主观因素影响。因此,开发高效精确的自动化柠檬目标检测模型对于提高采摘效率、降低人工成本具有重要意义[4]。
当前,基于卷积神经网络的目标检测算法在果实检测领域取得显著进展[5]。深度学习目标检测算法分为两类:一类是基于候选区域的双阶段目标检测算法[6],主要代表算法有RCNN(Regions with Convolutional Neural Network)和Faster RCNN[7-9]等;另一类是基于回归的单阶段目标检测算法,主要代表算法有SSD(Single Shot Detector)[10]和YOLO(You Only Look Once)[11-14]等。相比其他目标检测算法,YOLO具有检测速度快、流程简单等优势。这种算法可以同时完成物体识别和位置定位的任务,而且不需要额外的候选区域提取过程,从而大大减少了计算量和内存占用。由于其高效、准确和易于实现的特点,YOLO系列算法被广泛应用于许多领域,例如果实采摘、自动驾驶、医疗影像分析等。
对于柠檬果实识别,文献[15]提出了改进YOLOv3的柠檬果实检测方法,精确率达到96.28%,但未以平均精度均值做参考,将相同网络用于葡萄数据集后出现大幅度精确率下降,模型依赖高质量锚框且泛化能力较弱;而对于其他果实识别,文献[16]在不均匀的环境条件下,用深度卷积神经网络对西红柿进行检测后精度达到98.3%,但YOLOv3训练后的权重过大,不利于在移动设备上部署;文献[17]在YOLOv4的基础上增强了特征提取并加深了网络结构,虽然检测樱桃果实的平均精度均值比改进前提高了0.15%,但检测精度仍然不佳;文献[18]在YOLOv5中加入CBAM注意力机制和Hardswish激活函数后提高了对咖啡瑕疵豆的精度均值,但光照对检测精度影响很大;文献[19]将Light-YOLO用于芒果果实的检测,在颈部网络中引入残差结构并加入注意力机制,从而提高模型的检测能力,但该模型在检测被严重遮挡的芒果时表现不佳。2023年初,Ultralytics公司发布了具有更快推理速度和更高精度的YOLOv8系列,且训练和调整也更加容易,现已成为最受欢迎的目标检测算法之一,在果实识别等领域得到了广泛应用[20]。文献[21]提出了一种改进MHSA-YOLOv8的模型来检测番茄果实的成熟度,在测试场景中的平均精度均值达到86.4%,但由于只引入了MHSA注意力机制,在精度和召回率方面都有一定的提升空间;文献[22]提出了改进YOLOv8的板栗果实识别方法,引入了加权双向特征金字塔网络,更改了边界框损失函数,加快了模型的收敛速度,且使模型的召回率和平均精度均值分别提升了1.5%和1.8%;文献[23]基于YOLOv8引入针对小目标的空间到深度的卷积,提升了检测草莓果实的精度,但由于自然场景中的柠檬果实与树叶色彩相近,且容易被遮挡,因此精确检测复杂自然背景中的柠檬是一个技术难点。
为改进柠檬果实的识别精度,提出一种基于改进YOLOv8的目标检测算法,在主干网络中加入针对小目标的SPDConv(Space-to-Depth Convolution)模块[24]和EMA(Efficient Multi-Scale Attention)高效的多尺度注意力模块[25],精确识别复杂自然环境中的柠檬,并将损失函数更改为Wise-IoU(Wise Intersection over Union) Loss[26],以期降低训练的损失值并提高模型的收敛速度。
全文HTML
-
以潼南柠檬为研究对象,于重庆市潼南区柏梓镇柠檬种植基地进行数据采集。在柠檬果实即将成熟的季节,在专业摄影软件里设置好快门速度、ISO感光度和白平衡等参数后使用手机摄像头进行拍摄,分别采集不同成熟度、多拍摄角度(平拍、仰拍和俯拍)和多光照角度(顺光和逆光)的柠檬图像,以保证识别的准确度和鲁棒性。采集图像分辨率为4032×3024,颜色为sRGB,格式为jpg。去除图像重复、抖动造成的图像模糊和完全不存在的柠檬图像后,得到890幅柠檬图像进行后续的训练,如图 1所示。
-
在复杂情况下,柠檬图像的颜色会因为不同天气和不同角度的光照而产生变化。这种变化导致采集到的柠檬果实图像之间的颜色差异较大。此外,有的柠檬会被遮挡,有的柠檬距摄像头较远,这些情况都会使得果实的形状特征难以被准确提取。为了确保数据的准确性,使用标注软件LabelImg对经过筛选的柠檬图像进行人工标注,得到包含柠檬果实宽、高和中心坐标的xml文件。为了适应YOLO模型所需的标注文件类型(txt格式),使用Python编程将之前的xml格式标注文件转换成txt格式标注文件。这样就得到了可以在YOLO模型中使用的数据集。YOLO数据的格式如图 2所示。
由于光照和天气等因素的不确定性,视觉信息对模型的训练和应用有着显著的影响。为了增加训练集的多样性,更好地捕捉柠檬的特征,对训练集图像进行了数据增强。其目的是使生成的数据更接近真实数据的分布,从而提高检测模型的准确性。此外,数据增强还可以大大减少机器学习中的泛化误差,使模型学习到更加具有鲁棒性的特征。为了避免训练过拟合和样本不均衡,利用Python编程对训练集中的图像进行了随机加噪声、改变亮度、裁剪、镜像和旋转的数据增强处理,以适应不同光照和天气条件下的柠檬图像,并提高其在实际场景中的测试表现,数据增强的具体方法如图 3所示。通过以上方法,最终的样本图像扩增至4 450幅,其中将训练集、验证集、测试集按8∶1∶1的比例划分,得到训练集3 560幅,验证集445幅,测试集445幅。
1.1. 数据样本采集
1.2. 数据样本预处理和图像增强
-
目前,以YOLO系列为代表的基于回归的单阶段算法相比于双阶段算法能够在保持较高的检测精确率的同时实现较快的目标识别速度,非常适合应用于需要实时处理复杂自然环境下目标检测的场景[27]。YOLOv8由主干网络(Backbone)、颈部网络(Neck)和检测头网络(Head)3部分组成,其网络结构如图 4所示,组成主干网络和颈部网络的子模块如图 5所示,其中:CBS模块由Conv2d(卷积层)+BatchNorm2d(归一化)+SiLU(激活函数)组成;C2f卷积模块通过更多的分支跨层连接,丰富了模型的梯度流,使网络能够学习到更丰富的特征;SPPF模块采用了串行+并行的MaxPool2d(最大池化)处理;节点C表示拼接,节点S表示分割;s表示步长,k表示卷积核大小,n表示有n个模块。经过数据增强后的图片输入到网络后进行预处理,将RGB图片的尺寸缩放至网络设定的640×640×3,随后传入到主干网络中。
YOLOv8-SEW模型结构如图 6所示,以YOLOv8系列中参数最小且检测速度最快的YOLOv8n为基线网络进行3项改进。
1) 主干网络中加入了SPDConv卷积模块,达到细粒化的学习特征,避免被遮挡的柠檬果实特征丢失。
2) 引入EMA多尺度注意力模块来保留特征信息同时降低计算成本,确保空间语义特征在每个特征组中均匀分布,从而提高识别的准确性和鲁棒性。
3) 将损失函数替换为Wise-IoU,摆脱模型对高质量锚框的依赖。
-
目前卷积神经网络(CNN)架构中存在一些常见的设计缺陷,即使用跨行卷积或者池化层,这种设计会导致细粒度信息的丢失并降低特征学习有效性。为了解决此问题,引入一种新的CNN模块—SPDConv。SPDConv由一个空间到深度层后接一个非跨行卷积层组成,适用于大多数CNN架构,可以替代原来的CNN架构所使用的跨行卷积或者池化层,在图像分辨率低和目标很小的复杂任务中也具有良好的性能。
原始目标检测模型的设计在处理小目标和低分辨率图像时会出现细粒度信息丢失的问题,导致无法充分学习小目标的特征。为更好地捕捉小目标的细节信息,并提高模型对小目标的检测能力,在YOLOv8中引入SPDConv卷积模块,以实现有效的特征学习。根据SPDConv模块内部原理,对于CNN内部的空间到深度层的特征图进行下采样操作。将任意大小的中间特征图X(S,S,C1),通过指定lscale(下采样参数)来切分出一系列子特征图:
通常子特征图fx,y由原始的特征图X(i,j)经过下采样操作得到,以图 7的lscale=2为例,对特征图X进行2倍的下采样,得到4个大小为
$ \frac{S}{2} \times \frac{S}{2} \times C_1$ 的子特征图f0,0、f1,0、f0,1、f1,1,然后沿着通道维度将这4个子特征图拼接起来,最终得到的特征图$ X^{\prime}\left(\frac{S}{l_{\text {scale }}}, \frac{S}{l_{\text {scale }}}, l_{\text {scale }}^2 C_1\right)$ 较原始特征图X在空间维度减少了一个lscale,而通道维度增加了一个lsacle2。在C2<lscale2C1的条件下添加一个步长为1的非跨行卷积来尽可能多地保留特征信息,其中节点C表示拼接。 -
在各种目标检测任务中,注意力机制[28-31]发挥了重要作用,注意力机制的两种类型(通道注意力机制[32]和空间注意力机制[33])可显著增加可识别的特征表示。作为通道注意力机制的代表,SE(Squeeze-and-Excitation)[34]专注于跨维度交互作用,用于提取通道注意力;CBAM(Convolution Block Attention Module)[35]将跨维度注意力权重整合到输入特征中去,用特征图中空间维度和通道维度之间的关系建立了跨空间和通道的信息;SGE(Spatial Group-Wise Enhance)[36]为改进不同语义子特征表示的空间分布,将通道维度分组为多个子特征。
由上述注意力机制看出,通道降维和分组对特征提取有显著效果,但会降低检测效率和增加延迟。基于以上启发,文献[25]在分组结构的基础上,提出了一种不降维的高效多尺度注意力机制EMA,用多尺度并行子网络来建立短期和长期的依赖关系。该机制将部分通道维度转为多个分组的子特征,以避免使用通用卷积进行降维操作,同时通过跨空间学习方法融合两个并行子特征图。EMA的通道分组和多尺度并行网络更有利于提升检测性能和降低计算开销。EMA注意力机制结构如图 8所示,其中:C//G表示将通道C划分为G个子特征图。
在图 8的结构图中可看出EMA使用了特征分组和多尺度结构,有利于在特征学习中建立有效的短期和长期依赖关系来获得更好的表现。在特征分组中:EMA对于任意的输入特征图
$ \boldsymbol{X} \in \mathbb{R}^{C \times H \times W}$ ,令X =[X0,Xi,…,XG-1],取G≤C,沿着通道维度方向将通道C划分为G个子特征图来学习注意力的权重,并用权重加强每个子特征的表示。在并行子网上:EMA通过3条线路来提取注意力权重并赋值给分组特征图,并在通道方向上对跨通道信息交互进行建模,获取通道之间的依赖关系。在跨空间学习中:提出了一种不同空间维度方向的跨空间信息聚合方法,实现更丰富的特征融合,引入两条1×1支路和一条3×3支路的张量输出,再利用(X,Y)Avg Pool(二维全局平均池化)对1×1支路的输出进行全局空间信息编码,将最小支路的输出直接转化为对应的维度形状,即R11×C//G×R3C//G×H×W,其中R代表输出的特征图。同样在3×3支路对全局空间信息进行编码,最后将3条支路的输出特征图计算为两个空间注意力权重值的集合,然后用Sigmoid函数来获得像素级的特征信息。二维全局平均池化的操作公式如下:式中:c是输入通道的个数;H、W是输入特征的空间维度;zc是二维全局平均池化的符号;xc是第c通道的输入特征。
在YOLOv8的颈部网络之前插入一个EMA注意力机制,用EMA注意力机制将主干网络所输出的特征结合通道信息和上下文信息来区分不同尺度下被遮挡的柠檬果实,并将特征信息传递到特征融合网络中,以提升模型的识别性能。
-
良好定义的边界框回归损失函数能显著提高目标检测的性能,但现有大部分工作都假设训练样本是高质量的,并在此基础上加强损失函数的拟合能力,但这种方法对于一些低质量的样本,则会起反向作用。YOLOv8模型采用的网络预测边框坐标损失函数是CIoU(Complete Intersection over Union) Loss,虽然CIoU Loss损失函数综合考虑了重叠面积、中心距离和纵横比等影响因素,但当预测框与真实框的高宽比呈线性关系时,CIoU Loss的惩罚项可能会降至0。因此无论高质量还是低质量的锚框,都可能对回归损失产生负面影响。
在目标检测中,IoU表示交并比,通常被用来评估模型的预测结果与真实标注间的匹配程度(图 9)。本文将CIoU替换成具有动态聚焦机制的边界框回归损失函数Wise-IoU(WIoU),其损失函数见式(2):
式(2)中:LIoU、LWIoU是以IoU和WioU为损失的Loss函数,RWIoU是真实框和预测框中心点之间的归一化距离,
其中:(x,y)、(xgt,ygt)是真实框和预测框的中心坐标;Wg、Hg是边界框的大小;r是梯度收益因子;α和δ表示超参数;β是锚框的离群度;LIoU*是LIoU的单调聚焦系数。r通过减少高质量样本对损失值的影响,根据边界框的梯度动态调整增益,并在训练后期降低低质量锚框所产生的有害梯度,使模型更专注于普通质量的锚框,从而提升模型在目标定位上的表现能力。WIoU使用动态非单调评估锚框质量的机制,降低对高质量锚框的依赖,提高模型的泛化性能和定位对象的能力。
2.1. YOLOv8-SEW网络结构
2.2. SPDConv(空间到深度的非跨行卷积)
2.3. EMA注意力机制
2.4. Wise-IoU(WIoU)损失函数
-
实验平台的硬件配置CPU为Inter i9 13900F,内存为32 GB,显卡为NVIDIA GeForce RTX4090,显存为24 GB。软件配置为Windows 11操作系统,采用Python 3.10作为编程语言,使用Pytorch的深度学习框架和CUDA 11.8和Cudnn 8.9.7的深度学习加速库。训练过程的参数设置如表 1所示。
-
以精确率(Precision,P)、召回率(Recall,R)、F1值、平均精度均值(mean Average Precision,mAP)和权重(Weights)5个常用指标作为评价模型性能的指标。精确率用于评估模型预测的准确性,召回率用于评估模型预测的完整性,F1得分是综合考虑精确率和召回率的指标,平均精度均值用于计算不同阈值的平均精确度,权重大小通常是衡量模型复杂度和存储需求的重要指标之一,具体计算公式如下:
其中:TP是判断为正类的正类数;FN是判断为负类的正类数;FP是判断为正类的负类数;N表示参与计算的类别数量。
-
为验证改进方法的有效性,以上述评价指标为参考,使用相同的数据集、实验平台和训练参数,通过消融实验对每个改进点进行排列组合实验来评估对最初算法的优化效果。改进方法分别为EMA、SPDConv和WioU,实验方法如下:①在原始YOLOv8的基础上,评估单独加入各改进方法对原始算法的提升效果;②评估对3个改进点进行两两组合后的实验效果;③加入3个改进方法后寻找最优组合。由表 2可知,与原始算法相比,3种改进方法均有提升目标检测的效果,其中加入SPDConv后对模型的提升效果最为明显,精确率、召回率、F1值和平均精度均值分别提升了1.3%、0.1%、0.6%和1.5%。在权重稍有增加的情况下,经过3项改进方法后的YOLOv8-SEW模型,精确率、召回率、F1值和平均精度均值分别提升了1.0%、4.2%、2.8%和2.9%。
-
为保证本研究的算法适合使用在各种移动设备上,选择单阶段目标检测算法各个版本参数量最少的模型进行柠檬识别对比实验。在相同的数据集上将本研究的YOLOv8-SEW网络与YOLOv3tiny、YOLOv5n、YOLOv6n和YOLOv8n进行训练与测试。由表 3可知,与其他主流算法相比,YOLOv8-SEW具有更好的精确率、召回率、F1值和平均精度均值。与改进前的YOLOv8n相比,在精确率、召回率和平均精度均值上也有1.0%、4.2%和2.9%的提升。
由图 10可以看出,将损失函数由CIoU替换成WIoU后加快了模型的收敛速度并且损失值更小;mAP 50∶95曲线图可以看出YOLOv8-SEW网络在不同IoU阈值下的平均精度均值优于所有基线网络。为更为直观地表现改进前后模型的检测性能,对部分图片进行测试,统计结果见表 4,实验效果图见图 11。由表 4可知改进后漏检率降低5.4%,误检率降低4.9%。由图 11可以看出改进后模型的效果优于改进前。尽管在加入针对小目标的卷积模块和注意力机制后,平均检测时间从28.4帧/s降低至22.3帧/s,但在实际应用中,目前的帧率仍能满足移动设备的要求。因此,在保证这些要求的前提下,各项精确率和召回率得到了提升,综合性能表现最佳。
3.1. 实验平台及参数设置
3.2. 评价指标
3.3. 消融实验
3.4. 对比实验
-
为实现在复杂背景中对柠檬果实的快速精确识别,提出了基于YOLOv8的单阶段目标检测算法YOLOv8-SEW。首先在主干网络中加入EMA注意力机制,将所输出通道信息和上下文信息相结合以加强不同尺度下被遮挡的柠檬果实的特征学习;其次引入SPDConv卷积模块用于处理小目标和低分辨率图像细粒度信息丢失的问题;最后将损失函数替换为WIoU,降低模型对高质量锚框依赖的同时提高泛化性能和定位对象的能力,并且梯度下降速度和收敛后损失值均优于改进前。
对3个改进点进行排列组合的消融实验和对比实验,结果表明3个改进方法对模型的性能均有提升效果,并且优于所有的基线网络模型。在自建柠檬数据集上的实验表明,改进后的YOLOv8-SEW模型的精确率、召回率和平均精度均值分别达到94.5%、85.7%、92.4%,与YOLOv8相比分别增长1.0%、4.2%、2.9%。
在实际检测场景中随着果树与相机的距离拉远,柠檬果实在图片中占据的像素更小,后续可以加入小目标检测层来提高对小目标果实的检测性能。YOLO模型只能获取图像的二维坐标信息,后续可通过双目相机获取深度信息进行坐标融合得到果实的三维坐标,为自动化采摘机器提供定位方法。