胡建易
(江西理工大学,江西 赣州 341000)
近年来,随着全球人口的增加和农业现代化进程的加速,农业自动化技术已成为农业领域研究的重要方向之一,受到了广泛的关注,其中自动化采摘技术是一个重要方向。该技术能够实现农作物的高效、迅速、易于操作的采摘,提高农业生产效率,降低劳动力成本。随着现代农业的进步,人们越来越追求高效、安全、精度高的苹果采摘系统。本研究采用三目视觉技术,以实现苹果采摘系统的高效、安全、高精度自动化。
双目视觉系统最主要的优点在于其可以获得三维信息,由此可以确定苹果的位置和大小,使得采摘机器人能够准确地识别苹果,达到最佳采摘效果。在该系统中,使用了基于深度学习的图像处理算法,使得机器人能够准确识别苹果的位置和大小,同时保持高精度。此外,在处理过程中根据实际情况进行了补充和优化,提高了系统的鲁棒性。但双目视觉会因实际硬件原因造成一定的空间位置误差,为了使采摘更加准确,在机械抓取装置上增加了一个摄像头来辅助精准抓取,实现三目视觉采摘。
YOLOv8 是2023 年1 月由Ultralytics 发布的一款新的检测模型,集合了之前提出的诸如YOLOX、YOLOv6、YOLOv7 和PPYOLOE 等算法的相关设计,尤其是Head 标签分配和Loss 部分以及PP-YOLOE非常相似。YOLOv8 集百家所长达到了实时检测界的一个新高度。由于YOLOv8 具有高精度、速度快等优势,将为目标检测领域带来新的冲击。本文将YOLOv8 应用于苹果采摘中,利用其视觉识别能力自动检测和定位苹果。同时,为了使自动采摘机器人可以快速完成苹果采摘,本文采用了蚁群算法进行路径规划。
本系统主要由计算机、三目视觉(双目视觉+OV7725 摄像头)、执行机构等构成,计算机配置采用的是13th Gen Intel (R) Core (TM) i9-13980HX 2.20 GHz 处理器,内存64.0 GB,显卡为NVIDIA Geforce RTX 4080 Laptop GPU,编程语言采用python。核心板采用STM32F103ZET6 单片机,编程语言采用C。执行机构上挂载的摄像头采用OV7725,超声波模块采用HC-SR04。双目视觉采用Intel RealsenseT265,执行采摘机构采用的是三维的机械夹取装置,夹爪上安装有压力传感器。计算机与ARM 之间采用串口通信。系统框图见图1。
图1 系统连接图
整个采摘流程如下:首先由计算机和双目视觉识别计算出各个苹果的坐标值,根据坐标值应用蚁群算法计算出最优采摘路径,然后将坐标值和采摘路径通过串口传给ARM 核心板,ARM 板收到信息后执行采摘任务,采摘装置先通过横轴和纵轴移动到第一个待采摘苹果的(x,y)位置,然后根据苹果的z 坐标值让采摘装置向前延伸靠近苹果,当接近苹果时开启OV7725 摄像头和超声波进行位置微调矫正,当到达位置后夹爪开始抓取,待夹爪上压力传感器超过一定数值就可以将苹果进行采摘,然后返回到释放苹果的位置进行释放,完成一个采摘过程。流程图见图2。
图2 采摘流程图
本研究采用了双目视觉技术来实现对苹果的自动识别和定位。双目视觉技术借助2 个相机同时获取图像信息,形成2 个视角的立体影像,进而获取目标物体的深度信息。本研究中采用的双目视觉设备具有高精度、高分辨率和复杂场景下的抗干扰性等特点,能够有效提高苹果采摘系统的性能和准确度。
双目立体视觉相机深度值计算原理如下(理想情况):
由图3、4 几何关系可得如下等式:
图3 侧视图
图4 俯视图
进而得到物体的坐标值:
可以发现如果要计算深度z,必须要知道:
(1)相机焦距f,左右相机距离基线b。这些参数可以通过先验信息或者相机标定得到。
(2)视差k。知道左相机的每个像素点(xL,yL)和右相机中像素点(xR,yR)的对应关系,就解决了双目视觉的核心问题。
其中,f 为焦距,b 为2 个相机间的距离,ps 为单个像素点的宽度,d 为视差距,k 为像素视差。
图5 为像素视差等于3 的情况,即k=3。
图5 物体在两个相机中的成像
像素大小指的是图像传感器中单个像素的尺寸大小,通常用μm 表示。在立体视觉系统中,由于使用了2 个摄像机,因此图像传感器中的像素大小必须相同。随着像素大小的缩小,立体视觉系统的深度范围将变得更大。视差是指在两个摄像机图像之间的像素位置的差异,它可以通过计算两个摄像机中相同像素之间的距离差来得到。例如,如果左视图图像中一个像素在位置(1,30)处,而相同位置的像素在右视图图像中的位置为(4,30),那么视差值(差值)将为4-1=3。视差值与深度呈反比例关系。
Ultralytics 公司从YOLOv5 到YOLOv8 的升级,精度上YOLOv8 相比YOLOv5 高出一大截,但速度略有下降。简单总结下YOLOv8 在结构算法上相比YOLOv5 的升级。
1.2.1 骨干网络部分
选用梯度流更丰富的C2f 结构替换了YOLOv5中的C3结构,为了轻量化也缩减了骨干网络中最大stage 的blocks 数,同时不同缩放因子N/S/M/L/X 的模型不再是共用一套模型参数,M/L/X 大模型还缩减了最后一个stage 的输出通道数,这样可减少参数量和计算量。
1.2.2 Neck 部分
同样是C2f 模块替换C3模块,为了轻量化删除了Neck 结构中top-down 阶段的两个上采样卷积。
1.2.3 Head 部分
换成了目前主流的Decoupled-Head 解耦头结构,将分类分支和定位分支分离,缓解了分类和回归任务的内在冲突。
1.2.4 标签分配和Loss 部分
从Anchor-Based 换成了Anchor-Free,采用了TAL (Task Alignment Learning) 动态匹配,并引入了DFL(Distribution Focal Loss)结合CIoU Loss 做回归分支的损失函数,使得分类和回归任务之间具有较高的一致性。
1.2.5 训练策略
训练的数据增强部分最后10 epoch 关闭Mosaic增强更有利于模型收敛的稳定,同时训练epoch 数从300 增大到500,使得模型训练更充分。
YOLO 算法的第一步是分割图片,它将图片分割为(a×a)个grid,每个grid 的大小都相等。然后基于grid 生成bounding box,其中confidence 的计算公式是:
要使用YOLOv8 算法首先要了解其整个步骤,图6 展示了YOLOv8 算法从电脑环境配置直至验证效果的整个应用过程。
图6 YOLOv8 算法的应用过程
20 世纪90 年代,一位来自意大利的学者首次提出了蚁群最优路径规划算法。该算法通过观察蚂蚁寻找食物的行为,发现虽然单只蚂蚁并没有很强的规律性,但是多只蚂蚁行动时会形成一定的规律。在不同的环境下,蚁群可以高效地寻找到到达食物源的最短路径。当蚂蚁行走时,会释放一种叫做“信息素”的化学物质。蚂蚁会感知到这种“信息素”,并向浓度更高的路径方向前进。由于蚂蚁在路上留下的“信息素”,整个蚁群逐渐形成了一个正反馈机制。经过一段时间后,整个蚁群会沿着最短路径到达食物源。其具体算法步骤如下:
1.3.1 初始化各参数
计算之初需要初始化各种参数,例如蚂蚁数量m、Alpha 信息素因子、Beta 启发函数因子、ROU 信息素挥发因子、Q 信息素常数、T 最大迭代次数等。在运用蚁群算法时,为了选择最佳的参数,需要一定的经验或者试错。参数设置建议如下:当蚂蚁数量设置得过多时,路径上的信息素会变得趋同,正反馈作用会被削弱,从而导致收敛速度减慢;如果将蚂蚁数量m设置得过小,可能会导致一些路径从未被探索,导致信息素浓度为0,过早收敛,降低全局最优解的可行性。根据经验蚂蚁数量=目标数×1.5。本系统是根据检测到的苹果数量来确定蚂蚁数量。
设定信息素常量Q 时需要谨慎考虑,如果设置过大,会限制蚁群的搜索范围,导致算法过早地陷入局部最优解;如果设置过小,路径上的信息含量差别会减小,容易导致算法进入混沌状态。因此,需要合理选择Q 值,以保证算法具有全局搜索能力。在本系统中,常量信息素一般按照经验取值在[10,100],本系统的取值为36;而最大迭代次数t 的设置则需要注意避免设置过大导致算法运行时间过长,同时也要避免设置过小导致可选路径减少,使得种群容易受限于局部最优解。一般而言,最大迭代次数的取值范围在[100,500],本系统的取值为213。信息素因子是指在蚂蚁搜索过程中,路径上的信息素对蚂蚁群搜索起到指导作用的相对重要程度。若将该参数设置过大,则会让蚂蚁更倾向于选择之前走过的路径,减弱算法的随机性;而过小则会减小蚁群的搜索范围,使算法早期就陷入局部最优解。通常,信息素因子的取值范围为1~4,本系统的取值为2.5。
启发函数因子是指在引导蚁群搜索过程中,启发式信息对搜索的相对重要程度。如果该参数设置过大,可以提高搜索的收敛速度,但也有可能导致算法陷入局部最优解;反之,如果该参数设置得过小,搜索过程中的随机性就会增强,难以找到最优解。一般经验值将该参数的取值范围定为[0,5],本系统取值为3.2。
信息素挥发因子则是表示信息素的挥发消失水平的参数。当该参数值设置过大时,信息素将很快就消失,这样会导致一些较优路径被排除在搜索范围外;若该参数值设定过小,则各路径上的信息素含量差别很小,因此算法的收敛速度也会降低。通常经验值将该参数的取值范围定为[0.2,0.5],本系统的取值为0.24。
1.3.2 构建解空间
为了实现每只蚂蚁的随机分布,我们将它们分别放置在不同的起始位置上,并为每只蚂蚁k(k 范围为1~m)计算下一个要访问的苹果,直到每只蚂蚁都访问完所有的苹果,蚂蚁在构建路径的每一步中,根据轮盘赌法选择下一个要到达的苹果。我们使用概率来表示每个路径的选择概率:
其中,i、j 分别表示每段路径的起点和终点,τ 表示时间t 由i 到j 的信息素浓度,η 的值等于路径长度d的倒数,allowedk表示未访问过的节点的集合。
根据当前路径ij 上的信息素浓度和启发式函数,就可以确定从起点i 选择终点j 的概率。通过对公式进行分析,可以得知两个地点之间距离越短,且信息素浓度越大的路径被选择的概率应该相对较大。
1.3.3 更新信息素
每只蚂蚁将会经过一条路径,我们将计算出这条路径的长度L,并记录历史记录中的最优路径长度,也就是最短路径。同时,会更新每个苹果路径上的信息素浓度。信息素的更新方式如式(8)所示:
也就是说,在第t+1 次循环后,若路径连接苹果i 和苹果j,则路径上的信息素含量将会更新。我们使用一种信息素更新机制,具体是将路径上的信息素含量在t 次循环后乘以信息素残留系数,并加上新增信息素。这里的新增信息素是指所有蚂蚁在从苹果i 到苹果j 的路径上所留下的信息素之和。
1.3.4 判断是否达到终止条件
在蚁群算法中,判断是否达到最大迭代次数被作为算法的停止条件。图7 蚁群算法具体流程图。
图7 蚁群算法具体流程
本研究研制了一种基于三目视觉的采摘系统,其应用于采摘苹果。该系统采用了YOLOv8 算法,对苹果进行了准确的识别和定位,并采用蚁群算法优化采摘路径。在人工数据集测试中,该系统的苹果定位准确率达到了95%以上,并且每张图像的检测时间为10~100 ms。同时进行了70 次苹果采摘实验,每次采摘的时间为10 s 内,一次采摘一个苹果,综合采摘成功率达到了93%。图8 为模拟采摘实物图。
图8 模拟采摘实物图
本文研究了一种采用三目视觉、YOLOv8 和蚁群算法相结合的苹果采摘系统,实现了YOLOv8 和蚁群算法的协同工作,从而能够自动化地识别和定位苹果,并找到最佳的采摘路径,实现苹果的自动化采摘。实验结果表明,该系统的采摘效率和准确性都比较理想。因此,该系统为农业领域实现自动化采摘提供了一种新的思路和解决方案,具有一定的应用价值和推广前景。