基于YOLOv5s算法的番茄成熟度识别研究
2023-05-05张春雨朱超冉
陈 伟,张春雨*,朱超冉
(1.安徽科技学院 机械工程学院,安徽 凤阳 233100;2.安徽工程大学 机械工程学院,安徽 芜湖 241000)
番茄是我国设施栽培面积最大的蔬菜作物,如此大体量的蔬菜,采摘尤为关键。番茄采摘机器人对减少生产成本、降低劳动强度、提高作业效率具有重要意义。设计采摘机器人的难点在于定位和识别,这两点关系到采摘机器人的工作效率。自然环境下番茄果实的生长状态各不相同,果实之间重叠,枝叶、枝干等对果实遮挡严重,光照环境复杂,这些因素都会影响到采摘机器人的识别结果。因此,实现对复杂自然环境下的番茄果实快速、精确识别是研发番茄采摘机器人的关键[1]。
近年来,番茄成熟度识别算法受到了广泛关注,张亚丽等[2]将极端学习机引入番茄成熟度识别,番茄成熟度判断正确率达到92.7%。王红珠等[3]将HSI模型引入番茄成熟度识别,总的判断正确率为65%。伍蓥芮等[4]将RGB三分量阈值分割引入番茄成熟度识别中,整体判断正确率为85%。综上,已应用的识别算法在番茄成熟度识别中无法得到较高的精度和正确率,并且现有的研究大多没有考虑复杂环境下的影响因素,适应性较差,无法满足番茄采摘时的复杂环境条件。YOLO系列算法是一类典型的one-stage目标检测算法,利用anchor box将分类与目标定位的回归问题结合起来,从而做到了高效、灵活和泛化性能好。YOLOv5算法是2020年提出的最新一代目标检测算法,其精度和检测速度与上一代相比得到大大提升。
为了进一步提高复杂环境下番茄成熟度识别的正确率,本研究提出将YOLOv5s算法应用到番茄采摘机器人系统对番茄成熟度的识别中。针对番茄成熟度等级划分进行研究。将番茄果实分3个阶段:“成熟”“半成熟”和“未成熟”。这样可以按照市场实际需求进行分期采摘,减少番茄腐烂的损失,从而降低成本,提高生产效率[5-6]。
1 材料与方法
1.1 数据采集
运用深度学习框架进行番茄成熟度的检测,自然环境下番茄果实的成熟度分为3类,即成熟、半成熟、未成熟果实。
番茄图像采集于铜陵星火家庭农场,拍摄当天为晴天,共采集原始图片169张,图片以.jpg格式保存。
1.2 数据处理
运用labelImg将采集到的番茄图片进行Voc格式的相应标注,得到.xml文件。过少的图片数据会使最后的试验结果准确率大大降低,所以需要将采集到的图片运用旋转、平移、缩放、镜像等方式进行数据增强,并对增强后的图片进行标注。数据增强后的照片总量为1 200张(图1),按照8∶2的比例随机分为训练集(960张)、测试集(240张)[7]。
图1 3种成熟度的番茄果实Fig.1 3 tomato fruits with different ripeness
1.3 YOLOv5算法
YOLOv5算法是现阶段工业上常用的一种目标检测算法,包括4个版本,分别是YOLOv5x、YOLOv5l、YOLOv5m、YOLOv5s。为满足轻量化要求,本研究使用复杂度较低的 YOLOv5s 检测模型,以减小模型存储占用,提高识别速度。YOLOv5s网络结构一般分为4个部分:输入端、主干网络、颈部、输出端[8]。
输入端:一是采用Mosaic数据增强采用4张图片,随机缩放、随机裁剪、随机排布的方式进行拼接,合成一副图像进行后续训练,目的是丰富数据集并缩短训练时长。二是自适应锚框计算,在训练中,网络在初始锚框的基础上输出预测框,进而和真实框进行比对,计算二者差距,再反向更新,迭代网络参数。三是自适图像缩放,输入图像的尺寸是不一样的,在YOLOv5中常用的尺寸有416×416、608×608、640×640等,通过等比缩放并用黑边填充,得到尺寸统一的输入图像。
主干网络:在骨干段网络采取Focus结构,将数据切分为4份,每份数据都相当于在2倍下采样得到,在纵向通道进行拼接,再进行卷积运算。以YOLOv5s为例,原始的640×640×3的图像经过切片操作后,变成320×320×12的特征图,再经过32个卷积核的卷积运算,得到320×320×32的特征图。
颈部:采用FPN+PAN的结构,在FPN的基础上增加一条自底向上的信息流通路,缩短了信息传输路径,旨在使准确的底层定位信息能够增强到整个特征提取网络。
输出端:损失函数的选取对评判结果准确性非常重要,早期交并比损失函数(IoU Loss)比较简单,不能反映真实情况,加入中心点距离和长宽比之后得到完全CIOU_Loss[9]。
2 结果与分析
2.1 试验平台
本试验在Pycharm 2021,Python3.8软件环境下完成。硬件环境CPU采用Intel(R) Xeon(R) W-2255,主频3.70 GHz;GPU采用Nvidia GeForce GTX A4000,64 GB显存。
2.2 网络训练参数设置
每批样本数为16,将全部采集的图片进行1次训练称为1次迭代,1次训练的样本数为100,采用YOLOv5s算法模型,初始学习率设置为0.01,动量因子为0.937。
2.3 评价依据
对于番茄果实成熟度的识别,采用平均精度、精确率、召回率等性能指标进行评测。
2.4 YOLOv5s检测结果
图2所示是试验得出的整体精确率、召回率、平均精度、IoU阈值(0.5~0.95)平均精度的数据图。随着迭代次数的增加,每项的数值都逐步提高并趋近于平稳,精确率、召回率、平均精度最后都达到95%,IoU阈值(0.5~0.95)平均精度也是达到70%以上,从第2张图片可以看出IoU阈值(0.5~0.95)平均精度仍然有上升的趋势,数据整理后得到表1。
图2 YOLOv5s检测结果图Fig.2 YOLOv5s test results
表1 YOLOv5s检测算法结果Table 1 YOLOv5s detection algorithm results
图3为测试结果图,可以看出,大多数成熟果实的识别精确率为70%,有的达到了100%识别,少部分成熟果实识别精确率低于70%,不成熟果实的识别准确率高于80%,半成熟果实的识别精确率为70%。由此得出,本试验YOLOv5s算法的识别精确率达到较高水平。
图3 测试结果Fig.3 Test results
2.5 不同检测算法对比
本研究用YOLOv5s算法得出的试验结果与现有的检测算法结果[2-4]进行对比,如表2所示,YOLOv5s算法识别精确率高于其他检测算法,识别精确率最高,识别效果最好。
表2 4种检测算法识别精确率Table 2 Recognition accuracy of four detection algorithms
3 结论
对番茄图像进行预处理,运用YOLOv5s检测算法对番茄图像进行识别,得出整体识别精确率为95%,与极端学习机、RGB模型、HIS模型得出的结果相比,YOLOv5s算法识别效果最好,此算法用于番茄果实机械化采摘,以提升采摘机器人识别番茄成熟果实的准确率,从而降低劳动强度,提高作业效率。