基于深度学习的多品种鲜食葡萄采摘点定位*

2022-12-02 04:58李惠鹏李长勇李贵宾陈立新
中国农机化学报 2022年12期
关键词:边缘像素葡萄

李惠鹏,李长勇,李贵宾,陈立新

(1. 新疆大学机械工程学院,乌鲁木齐市,830047; 2. 机械制造系统工程国家重点实验室,西安市,710054)

0 引言

中国是一个农业大国,在2020年我国葡萄产量高达14 314 kt[1]。现在种植的葡萄主要分为酿酒葡萄和鲜食葡萄。对于酿酒葡萄,市面上已经有了许多类型的葡萄收获机。但鲜食葡萄由于其品种繁多、生长环境复杂以及无损采摘的要求,目前仍依靠人工进行采摘。在农业劳动力紧缺、采摘成本不断增加的情况下,使用葡萄采摘机器人代替人工采摘具有重大的意义和广阔的市场前景[2]。

葡萄采摘点的定位主要分为果实的分割和采摘点的确定。许多分割方法已经被应用到水果的采摘中。梁喜凤等[3]采用了形态学的多尺度提取和番茄边界提取相结合的方法实现了对番茄的分割。Xiong等[4]首先将RGB图像转化到YIQ颜色模型中,并采用模糊聚类的方法实现了夜间荔枝的准确分割。苗玉彬等[5]提出了一种基于Zernike矩边缘检测的分水岭算法,用于葡萄轮廓的特征提取。同时,很多算法也被应用在水果采摘过程中以完成果实的图像分割,主要包括Otsu[6]算法、蚁群算法[7]和k-means[8]聚类算法等。

在采摘点定位中,罗陆峰等[9]提出了点线最短距离法来确定葡萄采摘点。熊俊涛等[10]通过扰动葡萄来计算葡萄单摆运动的周期和摆角进而确定采摘点。张同勋等利用模板匹配的方法来识别葡萄并确定采摘点。Xiong等[4]对荔枝的果梗处使用Harris角点检测,通过分析角点之间的水平和垂直位置的变化率来确定采摘点。雷旺雄等[11]对葡萄果梗区域使用角点检测,然后对角点数据进行分析,进而确定采摘点。

传统算法只对单一品种的葡萄有较好的分割效果,当葡萄颜色与背景颜色相似时,葡萄图像分割精度下降,导致采摘点的定位误差增大。为解决鲜食葡萄采摘过程中采摘点定位精度低、定位速度慢的问题,本文利用PSPNet语义分割模型对葡萄图像进行分割,同时利用果梗边缘搜寻的采摘点定位方法,实现多品种鲜食葡萄采摘点的快速准确定位。

1 材料与方法

1.1 图像获取与采摘系统

1.1.1 图像获取

在本试验中,于2020年7—9月多次在新疆石河子葡萄田中使用松下G95相机(5 184 pixels×3 888 pixels)采集不同光照、不同角度的葡萄图像。采集时距离目标约60~150 cm之间,葡萄图像的光照条件包括晴天顺光、晴天逆光、晴天遮阴。采集完成后将图像尺寸统一调整至720像素×960像素。采集样本信息如表1所示。本文共采集克瑞森、阳光玫瑰、红提、黑金手指4种葡萄,样本中的葡萄包含不同的表皮颜色和不同的果实形状。共采集葡萄图像2 859幅,挑选出360幅葡萄图像用于分割定位试验,1 749幅制作训练集,375幅制作测试集,375幅制作验证集,训练集、测试集、验证集的比例约为7∶1.5∶1.5。利用Labelme对数据集进行标注,标注文件与原始图片以VOC2007数据集的格式进行存放。

表1 葡萄图像信息Tab. 1 Grape image information

1.1.2 采摘系统

采摘平台主要由视觉系统和采摘系统组成。视觉系统由CCD相机和固定支架组成,CCD相机的型号为Basler aca1300-60gc,图像分辨率为1 280 pixels×1 024 pixels。采摘系统由6轴机械手臂和气动夹持器组成,六轴机械臂采用ER3A-C60型6轴多关节型机器人。葡萄采摘模拟试验平台如图1所示。

图1 葡萄采摘模拟平台

1.2 图像分割算法

葡萄采摘点的求解分为两步:第一步对图像中的葡萄进行识别分割,第二步利用分割图像的参数设置兴趣区域,在兴趣区域内部确定采摘点的位置。常用的传统分割算法有k-means、Otsu、分水岭算法等。传统的分割算法在光照不均的复杂环境下分割精度会明显下降。常用语义分割的算法主要有SegNet[12]、PSPNet[13]、RefineNet[14]、DeepLabv1[15]、DeepLabv2、DeepLabv3、U-Net[16]等。基于卷积神经网络的分割算法鲁棒性好,能够适应不同的光照场景。本文选用PSPNet(MobileNetv2)[17]语义分割网络分割葡萄。

1.2.1 PSPNet语义分割

PSPNet语义分割模型主要分为主干特征提取网络、金字塔池化网络、预测网络3个部分。模型结构如图2所示。本文使用MobileNetV2[18]作为PSPNet模型的主干特征提取网络,其网络各层结构如表2所示。

本文使用的PSPNet模型主干网络共有8层,其中:conv2d为普通卷积,bottleneck为反向残差结构的深度可分离卷积,t表示中间卷积通道的扩张系数,c表示输出通道个数,m表示该层的重复次数;s表示卷积的步长。网络在提取特征时大量地使用了深度可分离卷积,减少了模型的参数量,提高了检测速度。在主干特征提取网络的最后两层使用了空洞卷积,增大了网络的感受野,提高了模型的分割精度。

图2 网络结构

表2 MobileNetV2网络各层结构Tab. 2 MobileNetV2 network layer structure

主干网络提取到葡萄的特征层后,金字塔池化网络将特征层划分成1×1、2×2、3×3、6×6的网格,在每个网格内进行平均池化。该网络能够聚合不同区域的上下文信息,从而提高获取全局信息的能力。将得到的特征进行上采样,使得输出层与输入层有相同的尺寸,最后利用Softmax函数对图片中的每一个像素分类,获得每一个像素属于葡萄的概率。Softmax损失函数计算如式(1)所示。

(1)

式中:n——预测类别总数;

fi——样本i的预测输出;

fj——样本j的预测输出。

1.2.2 模型评估

为了验证本文提出方法对葡萄图像分割的有效性,本文采用Recall、MPA和MIoU对训练好的模型进行评估。假设图像分类类别为k+1,pij为本属于i类但被预测为j的像素数量,pji为本属于j类但被预测为i的像素数量,pii为真实像素数量,评价语义分割指标的计算公式如下。

1)Recall表示对每一类真实像素预测正确的概率,计算如式(2)所示。

(2)

2)MPA(Mean Pixel Aaccuracy)表示对每一类预测正确总像素的比例的平均值,计算如式(3)所示。

(3)

3)MIoU(Mean Intersection over Union)表示数据集中每一个类的交并比的平均值,计算如式(4)所示。

(4)

1.3 使用自适应阈值果梗方向Canny边缘检测定位采摘点

葡萄采摘机器人采摘过程中,获取采摘点的精确位置是一个关键的步骤。利用语义分割寻找果梗的成功率较低,因此本文采用寻找果梗特征的方法来获取采摘点。首先去除语义分割后的图像上的小面积区域,然后利用分割区域的信息获取葡萄的质心坐标、最高点坐标、外接矩形,利用这些参数在葡萄上方设定一个矩形的兴趣区域,在兴趣区域内部进行自适应阈值果梗方向Canny边缘检测;对检测到的果梗边缘信息进行累计概率霍夫变换检测直线并进行直线拟合;拟合直线与兴趣区域水平对称轴的交点作为采摘点。

1.3.1 设定兴趣区域

葡萄在重力的作用下普遍呈现向下悬挂的姿态,为了提高采摘点的定位速度,减少计算机的数据处理量,本文在葡萄上方设定兴趣区域求解采摘点。选取葡萄图像的最高点作为兴趣区域的最低点,设置兴趣区域的高ROI_H=0.1Hmax,兴趣区域以X=X0作为垂直对称轴,Hmax为葡萄果实的最大高度,兴趣区域的宽ROI_W=0.4Wmax,Wmax为葡萄外接矩形的最大宽度,兴趣区域模型图如图3所示。

图3 兴趣区域模型

1.3.2 对兴趣区域进行自适应阈值果梗方向Canny边缘检测

由于葡萄的生长环境复杂,在兴趣区域内部中同时存在枝叶、枝干、葡萄果梗及其他背景,其中葡萄果梗具有规律的朝向,因此本文将35°~145°的区域定义为果梗方向(图4),其余方向定义为非果梗方向。

图4 果梗方向示意图

本文利用自适应阈值果梗方向Canny边缘检测提取果梗的边缘,忽略非果梗方向的边缘。该方法首先利用高斯滤波对兴趣区域的图像降噪。其次使用Sobel垂直算子对降噪后的兴趣区域进行卷积计算,进一步得到图像的梯度幅值。像素点的梯度方向与边缘方向正交,对于边缘方向为[0°,35°]和[145°,180°]两个区间内的边缘进行抑制。然后将图像分为A1,A2,A3三类,其中A1代表图像中的非果梗边缘点,其包含的梯度幅值分别为{t1,t2,…,tk},A2代表图像中需要判断是否为果梗边缘点的点,其包含的梯度幅值分别为{tk+1,tk+2,…,tm},A3代表图像中的果梗边缘点,其包含的梯度幅值分别为{tm+1,tm+2,tL}[19-20]。利用各个像素的梯度幅值求出图像梯度分布概率

(5)

式中:N——葡萄图像总的像素数;

nj——梯度幅值等于tj的像素数。

根据图像梯度分布概率计算整个区间的梯度期望

(6)

根据区间梯度期望可以求出A1、A2、A3类中的梯度幅值期望

(7)

最后计算类间方差的最大值,最大值对应的tk、tm的值作为Canny边缘检测的高低阈值,即为A1、A2、A3的分界点,σ2(k,m)的计算公式如式(8)所示。

(8)

利用自适应阈值果梗方向Canny边缘检测之后,葡萄的枝干、枝叶等背景信息明显被抑制,葡萄果梗边缘信息得到了保留。自适应阈值果梗方向Canny边缘检测处理过程如图5所示。

(a) 原图 (b) Canny边缘检测

(c) 自适应阈值 (d) 最终结果

1.3.3 求解采摘点

在经过自适应阈值果梗方向Canny边缘检测后,利用累计概率霍夫变换对检测到的线段进行直线检测。将累加平面阈值设置为4、最低线段长度设置为k,可有效地将噪声点线段去除,保留的线段大概率为果梗轮廓。k的计算公式为

(9)

最后对累计概率霍夫变换求到的直线进行直线拟合,本文采用的距离函数

(10)

其中C=2.984 6。

将拟合直线与兴趣区域水平对称轴的交点确定为葡萄的采摘点。采摘点求解过程如图6所示。

(a) 直线检测 (b) 直线拟合

(c) 确定采摘点

2 试验结果与分析

2.1 葡萄分割试验

本文试验平台硬件为CPU intel i5-8500,运行频率为3.00 GHz,核心数为6个,内存为12 G,硬盘为256 G固态硬盘,操作系统为Win 10操作系统,GPU为GTX 1050Ti。软件配置的环境是python3.7、tensorflow2.2.0、CUDA10.1。本文所有对比试验均在该平台下运行。

在训练过程中本文采用了迁移学习。首先利用PSPNet(MobileNetv2)对PASCAL-VOC2012训练200个epoch。用MAP最好的权重文件作为训练葡萄数据集的预训练权重。利用制作的葡萄数据集进行训练,Batch Size大小设置为2,训练200个epoch。在葡萄图像分割中,只需要设置两个类,一个类是葡萄,一个类是背景。训练采用Adam优化器,初始学习率设置为0.001,当训练集损失函数在连续3个训练周期没有衰减时,学习率变为原来的1/2。在训练过程中利用Tensorboard将数据保存在日志文件中,每训练1个周期保存1次。根据生成的权重文件计算MAP、MIoU。本文葡萄分割系统中的优先级为MAP>MIoU。在第168个epoch时生成权重文件的MAP最高。

利用U-Net、PSPNet(RseNet50)和PSPNet(MobileNetv2)模型在相同的训练参数下进行200个epoch的训练,挑选出MAP最高的模型作为试验模型对375张测试集葡萄图进行分割试验,试验对比结果如表3所示。

表3 3种网络性能指标Tab. 3 Three network performance indicators

由表3可知,PSPNet(MobileNetv2)模型的MAP和MIoU分别为97.73%和95.49%。其中MAP比U-Net模型高0.94%,比PSPNet(RseNet50)模型高2.05%。PSPNet(MobileNetv2)模型的检测速度为23.12帧/s,是U-Net模型的5.05倍,是PSPNet(RseNet50)模型的2.66倍。本文采用的PSPNet(MobileNetv2)模型在分割葡萄方面具有更高的分割精度和分割速度。

2.2 采摘点定位试验

为验证本文定位采摘点方法的准确性,本文分别在晴天顺光、晴天逆光、晴天遮阴3种光照条件下采集克瑞森、阳光玫瑰、红提、黑金手指4个品种的葡萄图像各30张,共计360张葡萄图像进行采摘点定位试验。

为分析采摘点定位精度,设置兴趣区域内的果梗区域为A,本文引入像素定位误差σ。

(11)

式中:x、y——计算的采摘点像素坐标;

xi、yi——果梗区域坐标;

σ——采摘点到果梗区域内最短的欧氏距离。

当采摘点位于果梗区域内时,σ=0,果梗直径设为d,当σ小于0.5 d时,均算准确定位。

本文利用Photoshop软件测量计算出采摘点到果梗的像素定位误差。图7为克瑞森、红提、黑金手指、阳光玫瑰4种葡萄的定位过程。表4为克瑞森、阳光玫瑰、红提、黑金手指在3种光照条件下的采摘点定位误差。

从表4可以看出,本文算法的平均定位误差为0.129d,平均定位速度为237.3 ms。在晴天遮阴情况下采摘点的定位误差为0.121d,比晴天逆光条件下低0.008d,比晴天顺光条件下低0.16d。当光照强度较大时,容易产生曝光过度的现象,导致果梗与枝干、枝叶等干扰物体的对比度降低,导致定位误差增大。当葡萄果梗较直时,有利于Hough变换检测直线段,采摘点定位精度较高,采摘点会定位在果梗上(如图7(d)、图7(h)、图7(p)所示)。当果梗存在弯曲时定位精度会略微下降,这是由于非果梗方向的梯度幅值抑制使边缘线段被打断,从而导致累计概率霍夫变换检测到的果梗上的直线变少、噪声占比增加使得定位误差增大。当兴趣区域内存在多个竖直方向的果梗或枝干时,算法无法抑制非果梗的边缘,检测出的所有边缘都成为直线拟合的点集,会增大定位误差(如图7(l)所示)。

在360张试验样本中278个样本定位在了葡萄果梗上,53个样本的σ小于0.5d,331个样本定位成功,29个样本的σ大于0.5d,定位成功率为91.94%。在29个定位失败的样本中9个样本是由于果梗处有枝叶遮挡导致,20个样本是由于竖直方向上有枝条、枝干干扰导致。本文方法在晴天顺光、晴天逆光、晴天遮阴3种光照条件下定位成功率为91.94%,运行时间为187.47 ms。

(a) 原图

(b) 求解质心

(c) 定位结果

(e) 原图

(f) 求解质心

(g) 定位结果

(h) 局部放大图

(i) 原图

(j) 求解质心

(k) 定位结果

(l) 局部放大图

(m) 原图

(n) 求解质心

(o) 定位结果

(p) 局部放大图

表4 不同光照下的采摘点定位误差和定位时间Tab. 4 Positioning error and positioning time of picking points under different illumination

2.3 采摘试验

为了进一步验证本文算法对葡萄采摘点定位的可行性,本文模拟搭建试验平台进行葡萄采摘试验。相机曝光时间参数设置为5 000,末端执行器夹持器的开口设置为10 mm。采摘结果如表5所示。

表5 试验结果Tab. 5 Experiment results

在200次采摘试验中,171串葡萄采摘成功,29串葡萄采摘失败,采摘成功率为85.5%。黑金手指葡萄采摘成功率最高是因为葡萄与背景差异大,有利于分割,葡萄果实重且果梗笔直,有利于采摘点的定位。阳光玫瑰葡萄与枝叶颜色相近,分割准确率降低导致采摘点定位误差大,采摘失败率增加。在采摘失败的样本中,因为采摘点定位失败而导致采摘失败的有18串,而因为左相机和右相机特征点匹配失败导致采摘点三维位置信息计算错误的有11串。

3 结论

1) 为了准确地分割葡萄图像,本文对PSPNet网络进行了改进。通过对比U-Net、PSPNet(RseNet50)和PSPNet(MobileNetv2)三种模型,本文采用的PSPNet(MobileNetv2)模型对于不同品种的葡萄具有更好地分割效果,平均分割精度为97.73%,分割速度为23.12帧/s。

2) 为了快速准确地定位葡萄采摘点,本文提出了一种果梗搜寻的采摘点定位方法。通过对克瑞森、阳光玫瑰、红提、黑金手指4种葡萄在晴天顺光、晴天逆光、晴天遮阴3种光照条件下进行采摘点定位试验,证明了该方法的可行性,该方法的采摘点定位准确率为91.94%,运行时间为187.47 ms。在模拟试验中葡萄采摘成功率为85.5%。

3) 本文算法能够满足葡萄采摘机器人对多品种鲜食葡萄采摘点的定位需求,为葡萄采摘机器人高效地采摘多品种鲜食葡萄提供了新思路。

猜你喜欢
边缘像素葡萄
像素前线之“幻影”2000
当葡萄成熟时
“像素”仙人掌
ÉVOLUTIONDIGAE Style de vie tactile
一张图看懂边缘计算
高像素不是全部
在边缘寻找自我
走在边缘
边缘艺术