基于深度学习的葡萄果梗识别与最优采摘定位

2021-08-04 05:53宁政通罗陆锋廖嘉欣文汉锦韦慧玲卢清华
农业工程学报 2021年9期
关键词:锚点光照卷积

宁政通,罗陆锋,廖嘉欣,文汉锦,韦慧玲,卢清华

(佛山科学技术学院机电工程与自动化学院,佛山 528000)

0 引言

葡萄果梗的精准识别及最优采摘点定位是实现机器人无损采摘的重要环节。在葡萄采摘作业过程中,因果园环境复杂(光照不均、遮挡等),葡萄品种繁多且不同品种果梗外观(颜色、纹理、形状等)存在较大差异,这些非结构、不确定因素使得葡萄果梗识别及最优采摘定位成为难题。

多年来,国内外学者围绕采摘机器人视觉定位开展了一系列研究。在国外,Kondo等[1-2]利用光谱特性对葡萄进行识别;Reis等[3-4]利用颜色特性对自然环境下的葡萄进行识别与定位;Pérez-Zavala等[5]利用可见光谱相机技术对葡萄进行识别;Unay等[6]提出一种针对苹果果梗和花萼缺陷识别、定位的多分类器系统;Bac等[7]利用引导线作为视觉提示对甜椒果梗进行识别与定位;van Henten等[8]采用基于近红外的计算机视觉系统对黄瓜果梗进行识别;Park等[9]利用最大相关最小冗余和深度神经网络对苹果进行识别;Muresan等[10]利用卷积神经网络对苹果、梨等水果进行识别。在中国,罗陆锋等[11-13]利用几何约束对自然悬挂和重叠簇葡萄的采摘点进行定位;梁喜凤等[14]利用骨架角点对自然悬挂番茄的采摘点进行定位;郭艾侠等[15]采用基于探索性分析对荔枝的不同部位进行识别;彭红星等[16]利用单次多框检测器模型对皇帝柑、苹果、荔枝、脐橙进行识别;毕松等[17]利用深度卷积神经网络对自然环境下的柑橘进行识别;闫建伟等[18]利用更快速区域卷积神经网络模型对自然环境中的刺梨果实进行识别;赵德安等[19]利用YOLO模型对全天候自然环境下的苹果进行识别与定位。上述研究方法为采摘机器人视觉系统研发奠定了基础[20-24]。然而,现有针对果实串(葡萄,番茄等)采摘方法主要从色彩、纹理、形状等方面入手,使用几何约束、骨架角点等方法定位果梗采摘点,这些方法在特定环境下实现了对果梗的识别与采摘点定位,但其在自然环境下的鲁棒性较差,还难以实际应用。

为提高葡萄采摘机器人对葡萄果梗识别的精度和鲁棒性,降低因采摘点定位不准导致的采摘失效,本研究提出一种基于深度学习的葡萄果梗识别与最优采摘定位方法,通过改进掩膜区域卷积神经网络(Mask Region with Convolutional Neural Network,Mask R-CNN)模型,对葡萄果梗进行识别与粗分割,然后结合颜色阈值分割思想,通过分段式区域生长算法对葡萄果梗进行精细化分割,最后以临质心点最近的葡萄果梗水平两侧中心为采摘点,为果园环境下葡萄采摘机器人采摘点的定位提供了技术支持。

1 材料与方法

1.1 图像获取和数据集预处理

为与葡萄采摘机器人实际作业情况保持一致,本研究以果园自然生长的红提、夏黑紫葡萄作为试验对象,采用尼康 D5200相机(日本)进行多角度拍摄,成像距离范围为0.8~1.5 m,图像分辨率为2 592×1 944像素,分别采集晴天顺光、晴天遮阴、阴天光照3种天气光照条件下的葡萄图像。本研究在广州、天津、佛山等地葡萄果园共采集有效葡萄图像样本700幅,样本集图像均包含葡萄、葡萄果梗、枝干和复杂果园环境。

从700幅葡萄图像中选取红(红提)、紫(夏黑紫)葡萄图像共600幅(含693个红葡萄果梗,564个紫葡萄果梗)作为训练集,剩余100幅作为验证集(含117个红葡萄果梗,81个紫葡萄果梗)。为减少计算机运算负载,提升模型泛化能力,对样本集进行预处理,通过Photoshop软件将原图裁剪至分辨率为1 024×1 024像素大小,并采取旋转、镜像、模糊、曝光等操作对训练集进行数据增强,增强后的训练集包含图像3 000幅(含3 465个红葡萄果梗,2 820个紫葡萄果梗)。使用数据标注软件Labelme进行标签制作,在标注时,只标注葡萄图像中的主果梗,对于分叉结果的子果梗不标注,获得标签矩阵。

1.2 改进掩膜区域卷积神经网络(Mask R-CNN)的葡萄果梗识别与精细分割模型

基于区域的卷积神经网络(Region-based Convolution Neural Networks,R-CNN)系列算法[25-26]是当前目标检测领域中最具代表性的方法,Mask R-CNN作为该系列中较新成果,能对图像中的目标进行分类、识别与分割。本研究对该网络结构参数、交互计算方式和分割结果等方面进行改进与优化,使其能够高效识别与分割葡萄果梗。

1.2.1 葡萄果梗识别的深度学习网络架构

Mask R-CNN网络结构可分为3个部分:主干网络、区域建议网络(Region Proposal Network,RPN)、三分支网络。基于Mask R-CNN的葡萄果梗识别与分割网络结构如图1所示。

1)主干网络

本研究采用深度残差网络(Residual Neural Network 101,ResNet101)[27]和特征金字塔网络(Feature Pyramid Networks,FPN)[28]相结合构成主干网络。图像通过自下向上的ResNet101网络得到等级由低到高的4级特征图C2、C3、C4、C5,低、高层特征图分别具有更多的细节信息与语义信息。ResNet101网络卷积特征的映射如式(1)所示

式中l为特征层数;k为卷积层数;为第l层特征经过第k层卷积后的特征;为第k层卷积权重;el为第l层特征;为第k层卷积偏置。

为了提高葡萄果梗的识别精度,本研究采用卷积核大小为1×1的卷积层通过自顶向下和横向连接的方法将这4级特征图融合,融合后的每层特征图P2、P3、P4、P5、P6都具有不同层次的特征。

2)区域建议网络

区域建议网络(RPN)的工作机理是采用卷积层滑动窗口扫描特征图中的锚点框。RPN损失函数如式(2)~式(6)所示

式中i为锚点的序号;pi为每个锚点的预测概率;ti为预测目标边界框的坐标;Ncls为分类类别个数;Nbox为回归个数;Lcls为分类损失函数;Lbox为回归损失函数;*ip为每个锚点包含葡萄果梗的概率,取值为0或者1,分别表示负、正样本;λ为平滑参数;为与锚点相关的真实边界框坐标;xb、yb、wb、hb为原图坐标偏移中心的左值、右值、宽值、高值;xa、ya、wa、ha为锚点边界框中心坐标的左值、右值、宽值、高值;x*、y*、w*、h*为真实边界框中心坐标的左值、右值、宽值、高值; smoothL1为鲁棒范式损失函数。

Mask R-CNN设置的锚点框比例为0.5∶1∶2,但在实际检测时,葡萄果梗的长宽比常为2.5∶1和5∶1,过小比例的锚点框无法完全覆盖葡萄果梗,为此,本研究设置的锚点框比例为1∶2.5∶5,并使用1个3×3大小和2个并列1×1大小的卷积层进行扫描映射,以提高葡萄果梗的识别能力并缩短计算时间。

3)三分支网络

三分支网络用于获取葡萄果梗的边框、类别、掩码。Mask R-CNN对MS COCO(Microsoft Common Objects in Context)中的80种物体进行分类、识别与分割,其掩膜分支通道数为z(z为类别数,即z= 80)。为实现网络多任务功能,Mask R-CNN在分类损失函数和回归损失函数的基础上添加了掩码损失函数,使用分类器来预测类别标签并用于掩码输出,从而解耦了分类和掩码预测。三分支网络的损失函数如式(7)~式(10)所示

式中L为网络总损失函数;Lmask为掩码损失函数;Sm为像素数量;si为像素区域;为像素区域的类别标签;p(si)为si预测类别的概率。

最终,类别分支计算出目标的类别,回归分支计算出目标的位置边界框,掩码分支计算出目标的像素,从而准确地检测出葡萄果梗。鉴于本研究的实际情况,设置类别数为3类(红葡萄果梗类、紫葡萄果梗类、背景类),边框和类别分支由全连接层输出,掩码分支由5个卷积层和2个反卷积层输出,将葡萄果梗与背景分割。

1.2.2 并行交互计算策略

Mask R-CNN 在FPN、RPN、感兴趣区域(Region of Interest,ROI)对齐耦合计算过程中,采用分流方式将FPN生成的特征图分别输出至 RPN、ROI对齐进行计算,其过程涉及多次图形处理器(Graphics Processing Unit,GPU)与中央处理器(Central Processing Unit,CPU)之间的信息交互,造成时间和资源的消耗。为提高模型运算效率,本研究采用计算统一设备架构(Compute Unified Device Architecture,CUDA)策略对其耦合计算过程进行并行化处理,根据ROI将特征图均匀划分为特征块,每个特征块作为一个 CUDA 线程,并行地完成耦合计算。如式(11)所示

式中bw和bh分别为候选框的宽度和高度,g为ROI对齐特征图等级,g0为bw=224和bh=224时映射的等级。

1.2.3 基于区域生长的葡萄果梗图像精细分割

葡萄果梗的精细分割是实现采摘点定位的重要前提。为精准获取葡萄果梗区域,本研究在改进Mask R-CNN的葡萄果梗识别和粗分割基础上,再运用分段式区域生长算法对葡萄果梗进行精细分割,其步骤如下:

步骤1:提取葡萄果梗的粗分割结果和位置信息。

步骤2:将分割出的葡萄果梗按高度值平均分成3段(A1、A2、A3),提取每段区域的色调(Hue,H)、饱和度(Saturation,S)、亮度(Value,V)色彩分量,并筛选出该区域的H、S、V分量平均值为其基准颜色阈值,H、S、V分量平均值分别对应为h、s、v。

步骤3:设每段葡萄果梗的轮廓点为种子点,遍历种子点4邻域(即上、下、左、右邻域),生长准则如式(12)所示

式中h0、s0、v0为种子点 4 领域中任意一点的H、S、V分量值,d为向量[h,s,v]的1-范数。

步骤4:将步骤3中获得的A1、A2、A3果梗轮廓区域进行形态学合并运算,最终得到果梗的精细分割结果。

1.3 采摘点位置计算

葡萄果梗受重力作用常以悬挂、斜挂方式生长,且葡萄采摘机器人主要通过抓握葡萄并剪切果梗进行采摘。因此,本研究以临质心点最近的葡萄果梗水平两侧中心作为最终采摘点,其求解过程如下。

1.3.1 质心点获取

质心是二维形状的几何中心。通过提取精细分割后的葡萄果梗形态,根据图像质心矩的定义[29],葡萄果梗质心点计算如式(13)所示

式中cn、cm为葡萄果梗质心点坐标,n、m为像素坐标,c为质心序号,f(n,m)为像素坐标(n,m)处的像素值。

1.3.2 采摘点确定

式中M为线段E1E2,为线段E1E2的左端点坐标,为线段E1E2的右端点坐标。

取线段E1E2为采摘区域,并以其中心点作为采摘点。

1.4 模型训练及算法性能评价

本研究模型训练和采摘点定位算法试验分别在2台电脑上进行,模型训练所用电脑的硬件环境:计算机内存16 GB;中央处理器型号为Intel Core(TM)i5-8400,频率为2.80 GHZ;图形处理器型号为英伟达GeForce GTX 1070Ti,显存为8 GB。采摘点定位测试所用电脑的主要硬件环境:计算机内存 16 GB;中央处理器型号为 Intel Core(TM)i5-9400,频率为2.90 GHZ;图形处理器型号为英伟达GeForce GTX 1060,显存为6 GB。试验所用的软件环境:Windows 64位系统,Pycharm编程软件,Tensorflow和Keras深度学习框架,Python编程语言(Python 3.6)。

1.4.1 模型训练策略

为加快模型训练收敛速度和提高模型训练效果,本研究采用随机梯度下降策略对模型进行交替训练,训练参数设置锚点尺寸为32、64、128、256和512,每幅图像训练的ROI个数为200,初始学习率为0.001,学习步长的动量参数为0.9,图形处理器同时处理图像数为1,每次迭代样本量为200。其训练过程分为3个阶段:1)以初始学习率训练主干网络和三分支网络各100次;2)以初始学习率训练整体网络200次;3)将初始学习率衰减10倍后训练整体网络150次。

本研究训练使用3 000幅训练集图像,共进行了550次迭代,耗时108 h,其训练损失曲线如图2所示。结果表明,模型在前400次迭代中迅速收敛损失值,到500次迭代后损失值降至0.08附近震荡并趋于稳定,说明模型训练结果较理想。

1.4.2 模型评价指标

为试验本研究所提算法性能,对100幅葡萄测试集图像进行果梗识别与采摘点定位试验与评价。选用精确率(Precision,%)、召回率(Recall,%)、F1得分(F1-score,%)、交并比(Intersection Over Union,IOU,%)、平均交并比(mean Intersection Over Union,mIOU,%)作为评价模型有效性的指标,并统计正确检测率(C,%)和最优采摘点定位成功率(Y,%),其计算如式(15)~式(21)所示

式中TP为真阳性;FP为假阳性;FN为假阴性;Ap为预测值;Agt为真实值;IOUr为红葡萄果梗的IOU值;IOUp为紫葡萄果梗的IOU值; 2N= ;AS为所有葡萄果梗数;S为正确检测(IOU > 0.75)的葡萄果梗数;ST为最优采摘点定位成功数。

2 结果与分析

2.1 葡萄果梗识别与分割

葡萄果梗识别与精细分割模型的试验结果如表1所示。其中,紫葡萄果梗的F1得分与IOU值均高于红葡萄果梗,分析其原因主要有:一是极少数以悬挂方式生长的红葡萄果梗,其特殊的长宽比远高于模型锚点框比例;二是样本集中存在部分出现病变的红葡萄果梗,而紫葡萄果梗并未发生病变,特征相对单一;三是红葡萄果梗所处的果园环境复杂度较高,较难识别。

检测效果显示病变和环境相似及遮挡是影响葡萄果梗识别的主要原因(图3)。如图3所示,箭头1所指的葡萄果梗位置因发生病变导致其正常颜色、纹理、形态等外观信息都被严重破坏,导致无法识别;箭头2所指的葡萄叶柄因其外观与葡萄果梗具有高度相似性,导致其被误识别为葡萄果梗;箭头3所指的葡萄果梗因部分被扎带遮挡,影响了模型的判断,扎带上部果梗与葡萄叶片颜色相近,导致未被识别,但扎带下部果梗因背景较单一,易于分辨,所以模型仍能对其准确检测。如图 3d和图3e所示,在葡萄果梗重叠、悬挂、斜挂场景下,模型对其均有较好的检测结果,表现出良好的检测性能,但模型对重叠场景下的检测精度略低于独立悬挂、斜挂情形下的精度。

为提高模型的检测速度,本研究未采用 Mask R-CNN模型在FPN、RPN、ROI对齐耦合计算过程中使用的GPU+CPU 信息交互方式,而是使用了CUDA并行交互计算策略。试验结果发现,2种交互方式所得F1得分和mIOU值相同,说明在检测精度方面,使用CUDA不会对模型的检测精度产生任何影响,但在检测时间方面,CUDA比GPU + CPU耗时减少1.44 s,检测速度提升24%,说明使用CUDA在提升模型检测速度上有明显优势。

2.2 不同天气光照条件下检测效果对比

为进一步验证改进后模型在葡萄采摘机器人实际作业天气光照条件下的检测效果,本试验选取晴天顺光、晴天遮阴、阴天光照3种不同天气光照条件下进行改进前后模型检测效果的对比试验,其具体效果如图4所示。由图4c和图4d可知,在3种不同天气光照条件下,改进前后的模型对于葡萄果梗的位置和类别均能准确检测,没有出现误检测现象,且改进后的模型检测精度更高。在葡萄果梗分割方面,未改进的模型存在分割不完整、有毛刺等现象,分析其原因是由于葡萄果梗形态的不规则性,导致了该现象的出现,改进后的模型对该现象有明显改善,使其分割精准度进一步逼近真实区域。

不同天气光照条件下模型改进前后检测的统计结果如表2所示。由表2可知,在3种不同天气光照条件下检测精确率平均值达88%。其中,在晴天顺光条件下,模型的精确率和召回率达96.72%,mIOU值达85.73%,说明在该条件下葡萄果梗较易被模型精准检测出来;但在晴天遮阴和阴天光照条件下,模型的精确率、召回率和mIOU值均大幅降低。其原因为在晴天顺光条件下,葡萄果梗表面颜色、纹理、轮廓清晰,模型检测难度小,表现较好;在晴天遮阴条件下,因光照被遮挡,导致葡萄果梗与背景环境相似,其部分轮廓与葡萄叶片颜色产生混叠,在阴天光照条件下,葡萄果梗因表面光照的不足及分布不均,导致其一侧颜色呈黑色,且与葡萄枝干的连接处较难分辨,所以模型在晴天遮阴和阴天光照条件下的检测难度大,表现较差。同时,本研究提出的锚点框比例优化和分段式精细分割方法在3种不同天气光照条件下相较于未改进的模型,F1-得分提升了3.24%,mIOU值提升了1.1%,表示该方法能够在不同天气光照条件下做到自适应优化调整,并且通过CUDA交互后,检测时间减少了0.99 s,说明在其检测性能上有显著提升。

表2 不同天气光照条件下模型改进前后检测的统计结果 Table 2 Statistical results of detection before and after the model improvement under different weather and light conditions

2.3 采摘点定位试验

为验证采摘点位置确立的合理性,先通过人工设置每串葡萄果梗的最优采摘区域(分辨率为35×20像素),然后与本方法进行对比,其在3种不同天气光照条件下的具体定位效果如图4d和图4e所示。由图4e可知,本方法对以悬挂、斜挂方式生长的葡萄串采摘点定位效果优异,定位出的采摘点均在最优采摘区域内;标号1处的采摘点不在最优采摘区域内,其原因在于该葡萄串以躺卧姿势生长在支撑架上,且子果梗在其顶部分叉,造成定位的采摘点附近仍存在3粒葡萄,从而导致最优采摘定位失败。不同天气光照条件下采摘点定位统计结果如表3所示,其中采摘点定位正确检测率为81.58%;在果梗成功识别后最优采摘点定位准确率达99.43%;单次定位的平均计算时间为1.37×10-3s。这说明对果园中绝大多数以悬挂、斜挂方式生长的葡萄串,只要模型检测出葡萄果梗,就能实时同步定位出最优采摘点。

表3 不同天气光照条件下采摘点定位统计结果 Table 3 Statistical results of picking point location under different weather and light conditions

3 结 论

为实现果园环境下葡萄采摘机器人自主作业,提出了一种基于深度学习的葡萄果梗识别与最优采摘定位方法。通过改进掩膜区域卷积神经网络(Mask Region with Convolutional Neural Network,Mask R-CNN)模型的网络结构及参数,采用并行化计算策略提高模型运算,结合区域生长算法实现对葡萄果梗精细分割,最后计算出葡萄果梗区域最优采摘点,为葡萄的高效自主机器人采摘提供了技术支持。具体结论如下:

1)将Mask R-CNN模型中的分流交互过程改为计算统一设备架构并行化处理,检测耗时减少1.44 s。采用区域生长算法对模型粗分割结果进行优化,在 3 种不同天气光照条件下果梗检测精确率平均值为88%。

2)本研究提出的葡萄果梗最优采摘定位方法,采摘点定位正确检测率为81.58%;在果梗成功识别的情况下,定位的采摘点在最优采摘范围内达99.43%。

虽然本研究为葡萄采摘机器人提供了一种果梗识别与最优采摘定位方法,但在训练深度学习网络模型过程中,数据集的大小及标注精度均会影响定位结果。在今后的研究中,将探索先识别葡萄再向上搜索果梗的采摘点定位方法。

猜你喜欢
锚点光照卷积
肉种鸡的光照不应性对养殖生产的不良影响分析
艺术史研究的锚点与视角
——《艺术史导论》评介
基于3D-Winograd的快速卷积算法设计及FPGA实现
一种并行不对称空洞卷积模块①
5G手机无法在室分NSA站点驻留案例分析
5G NSA锚点的选择策略
5G NSA组网下锚点站的选择策略优化
隐蔽的力量
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法