曾 俊 ,陈仁凡 ,邹腾跃
(福建农林大学机电工程学院,福建 福州 350002)
桃子是一种生活中常见的水果,具有较高的营养价值和经济价值。据统计,2019 年我国桃种植面积和产量分别为89.0 万hm2和1 599.3 万t,均居世界第一位[1]。但当前桃子采摘主要依赖人工来完成,效率低,成本高,引入智能化的农业机械装备用于果实采摘十分必要,果实采摘机器人成为农业发展的重要方向[2]。因此,作为果实采摘机器人的关键技术,设计一种高准确率的自然环境下桃子果实成熟度快速检测系统对实现桃子自动采摘具有重大意义。
传统的果实目标识别方法主要基于颜色、几何形状等特征进行检测和分类[3]。Liu 等[4]使用椭圆边界模型的机器视觉算法对柚子果实成熟度进行检测研究,将图像从RGB 空间转换至Y’CbCr 空间,达到了93.5%的准确率,但该研究对于未成熟的柚子果实的检测效果较差。Lin 等[5]提出了一种Hough 变换方法,对轻度遮挡的目标能够识别,但对于遮挡严重的目标仍然无法准确识别。
上述的传统机器视觉方法依赖人工提取特征,鲁棒性和泛化能力差。近年来,深度学习发展迅速,在果实识别定位中发挥着越来越重要的作用[6]。崔潇等[7]提出一种以MTCNN 为主干的桃子检测模型,该模型对成熟桃子具有89.3%的检测准确率。Liu 等[8]在YOLOv3 中引入一种密集架构并将矩形边界框替换为圆形边界框,识别遮挡等条件下的番茄,精度达到96.4%。王立舒等[9]基于YOLOv4-Tiny 结合卷积注意力模块构建蓝莓成熟度目标检测模型。
总之,深度学习在果实目标检测中具有较大优势。但基于深度学习的网络模型通常比较大,检测速度不够快,不能满足果实采摘机器人的实际作业需求。基于以上问题,课题组提出一种基于YOLOv5s的自然环境下快速检测桃子成熟度的轻量级网络,以期为桃子采摘机器人的视觉识别系统提供技术支持。
本研究所用的图像采集于湖北省黄冈市一处桃子种植园,桃子品种为“胭脂桃”。共采集自然条件下桃子果实原始图像1 860幅。使用LabelImg软件对原始图像进行标注,将桃子果实标注为未成熟、半成熟以及成熟,并按照比例8∶1∶1 划分训练集、验证集和测试集。
训练神经网络需要的数据量较大,较大的数据集训练得到的模型泛化能力和鲁棒性也相对较好,因此对采集到的原始图像进行了数据增强。本研究采用图像翻转、修改对比度、图像缩放、添加噪声的方法对数据集进行了增强,最终得到3 638 幅图像用于训练模型。
YOLOv5s 目标检测算法是YOLO 系列的最新版本之一,整体结构主要由Backbone、Neck、Head 三个部分组成,其主干网络使用了CSPNet 结构,通过CSPNet 的交叉连接和信息整合使得网络能够更好地传递和融合不同阶段的特征,提高了模型的特征表示能力。颈部使用了路径聚合网络结构PANet,生成具有多尺度信息的特征图。头部使用了CIOU_Loss 和非极大值抑制(NMS),完成目标检测结果的输出。
1.3.1 FasterNet
本研究使用FasterNet[10]重新搭建了YOLOv5s的主干特征提取网络。FasterNet 提出一种新颖的PConv(Partial Conv),可以同时减少计算冗余和内存访问,提升模型的检测速度。它利用了特征图中的冗余,并系统性地仅在一部分输入通道上应用常规卷积(Conv),而不影响其余通道。对于连续或者常规的内存访问,PConv 将第一个或者最后一个连续的通道视为整个特征图的代表进行计算,在不失一般性的情况下认为输入和输出特征图具有相同的数量。
FasterNet 基本结构BasicStage 的结构如图1 所示,它由PConv 和两个逐点卷积(PWConv)构成,并使用残差连接缓解梯度消失问题。由于使用了PConv 和PWConv,BasicStage 模块的参数量和浮点运算量大幅降低。
图1 BasicStage结构
1.3.2 CBAM 卷积注意力机制模块
在深度学习模型中增加注意力机制可以增强模型对于输入数据中有意义部分的关注,优化模型的表现。Woo 等[11]于2018 年提出 CBAM 卷积注意力模块(Convolutional Block Attention Module),其结构如图2 所示,该模块包含两个主要组成部分:通道注意力模块(CAM)和空间注意力模块(SAM)。在CAM 中,输入特征图F 经过池化并通过全连接层进行通道数压缩以及激活函数(ReLU)处理,生成两个激活后的特征图并经过加和以及sigmoid 操作得到输入特征的每个通道的权重MC。将这些权重与输入特征的对应元素相乘得到SAM 输入特征图F’。在SAM中,F’经过池化操作得到2 个二维向量,然后将其进行拼接和卷积操作并经过sigmoid 得到输入特征的每一通道的权重MS,最后将权重MS 与输入特征对应元素相乘得到最终的特征图。
本研究在主干和颈部之间增加了串联的CBAM注意力模块和常规卷积块,增强了模型对图像中重要特征的捕捉和表达,同时增强了主干和颈部之间的有效信息交流和特征融合。其结构如图3 所示。
图3 颈部增强模块结构
1.3.3 SIoU
目标检测的有效性在很大程度上取决于损失函数的定义,传统的目标检测损失函数是交并比损失(Intersection over Union, IoU),通过比较预测框(A)和真实框(B)的交集面积和并集面积来度量它们之间的重叠程度。
YOLO 使用的IoU 损失函数为CIoU,忽略了预测框和真实框之间不匹配的方向,从而导致模型训练效率不高。SIoU[12](SCYLLA-IoU)进一步考虑两框之间的向量角度,重新定义了相关损失,分别为角度损失、距离损失、形状损失和IoU 损失,并重新设计了损失函数的惩罚项,考虑了预测框与真实框之间不匹配的方向,提高了模型的训练效率。
综上所述,本研究提出的自然环境下桃子成熟度检测模型YOLO-Faster 结构如图4 所示。在YOLOv5s 的基础上,将主干特征提取网络替换为FasterNet 使网络轻量化,同时在主干和颈部之间增加串联的CBAM 卷积注意力模块和常规卷积块,增强模型对重要特征的提取以及主干和颈部之间的有效信息交流和特征融合,最后引入SIoU作为模型的损失函数缓解预测框与真实框之间方向不匹配的问题。
图4 YOLO-Faster 网络结构
模型所用的评价指标为精确率(Precision,P)、召回率(Recall,R)、平均精度均值(mean Average Precision,mAP)、模型权重大小、参数量、浮点运算量(FLOPs)以及推理速度。有关计算公式如下:
其中,TP为正确将目标预测为正样本的数量,FP为错误将非目标预测为正样本的数量,FN为漏检实际目标的数量,n为检测对象类别,AP为每一种类别的平均精度值,mAP为所有类别的平均精度值。
本研究所进行的实验的软硬件环境如下:CPU 为Intel®core™ i5-12490KF,GPU 为NVIDIA GeForce RTX 3060,操作系统为Windows 10,使用的软件平台为PyCharm,学习框架为Pytorch。采用AdamW 优化器进行优化,Batchsize 设置为16,初始学习率为0.01,使用以上参数训练100轮次。
本研究的模型部署于Jetson Nano平台,Jetson Nano是一款由NVIDIA推出的嵌入式人工智能计算平台,采用高性能的GPU架构,具备出色的并行计算能力。
用改进后的YOLO-Faster 和原始网络在桃子数据集上分别进行4 组试验,以便更好地分析改进后模型的效果,消融试验结果如表1 所示。
试验1 是原始的YOLOv5s 算法。试验2 采用FasterNet 为主干特征提取网络,浮点运算量相比基线网络下降了7.1 G,权重文件减少了5.42 Mb,模型实现轻量化,但同时mAP也稍有下降;试验3 在试验2 的基础上,在主干和颈部之间串联了卷积注意力模块CBAM,模型的准确率上升了2.8 个百分点,mAP上升了0.4 个百分点;试验4 在试验3 的基础上使用SIoU 损失函数,进一步提升了模型的准确率和mAP,分别达到了84.3%和88.6%。结果表明,改进后的模型不仅分别将准确率和mAP提升3.7 和1 个百分点,还大幅度地减少了浮点运算量和权重文件大小。
为了探究不同注意力机制对该模型的影响,本研究在消融实验4 的基础上使用四种注意力机制替换颈部增强模块中的CBAM 注意力机制,结果如表2 所示。可以看出,颈部增强模块使用CBAM 注意力机制时,模型拥有最好的综合性能。
表2 不同注意力机制对比结果
将改进的模型与Y O L O v 4、Y O L O v 5 s、YOLOv7-tiny、YOLOv8s 进行对比,结果如表3 所示。改进后的模型的mAP为88.6%,高于其他模型,同时浮点运算量、参数量和权重大小明显低于其他模型。YOLO-Faster 在GPU 和CPU 上的检测时间分别为7.6 ms 和96.5 ms,在所有模型中检测时间均最短,相比YOLOv5s 分别快了1.1 ms 和30.5 ms。此外,本研究还将表中所列5 种模型部署到嵌入式设备Jetson Nano 上,对比它们的检测速度,YOLOFaster 的检测时间为145.8 ms,表现明显优于其他模型。
表3 不同模型的检测性能对比
为了验证YOLO-Faster 在自然环境下对桃子成熟度的检测效果,分别选取了遮挡、重叠等自然环境下的图像进行检测。图5 为模型在6 种不同的自然条件下的检测效果图。从图5 中可以看出,面对桃子生长所处的复杂的自然环境,模型仍能够对不同成熟度的桃子做出准确的识别。
针对自然环境下桃子成熟度的快速检测问题,本研究在YOLOv5s 算法的基础上进行改进,提出了YOLO-Faster 桃子成熟度检测模型,并将其部署到嵌入式设备Jetson Nano 上。YOLO-Faster 在自建的数据集上训练后mAP为88.6%,浮点运算量为8.8 G,参数量为4.1×106,权重大小为8.3 Mb,在GPU、CPU 上的单幅图片检测时间分别为7.6 ms、96.5 ms,相较于YOLOv5s,mAP提升了1 个百分点,浮点运算量、参数量、权重大小和在GPU、CPU上的单幅图片检测时间分别降低了44.3%、41.4%、39.4%、12.6%和24%,在嵌入式设备上的检测时间降低了30.4%。结果表明,改进后的YOLO-Faster 不仅mAP超越了YOLOv5s,还大幅度地减小了模型的参数量、浮点运算量等,提升了检测速度,并且在嵌入式设备上也有着更好的综合性能,可以为桃子采摘机器人的视觉识别系统提供技术支持。