杨长辉 王 卓 熊龙烨 刘艳平 康曦龙 赵万华
(1.重庆理工大学机械工程学院, 重庆 400054; 2.西安交通大学机械工程学院, 西安 710049)
随着我国农业机械智能化的发展,果实采摘机器人研究取得了长足的进展[1-5]。自然条件下的果树生长姿态随机、形态各异,且果实多生长在果树枝干前后或紧贴枝干,机器人在进行采摘时机械臂可能与果树主要枝干发生碰撞,造成机械臂以及执行器等器件的损坏,从而导致采摘失败。因此,研究获取果树主要的枝干信息对于采摘机器人非常有价值。
在对枝干进行重建时,首先需要把目标枝干从图像中分割出来。目前,图像处理领域目标提取方法较多[6-11],张富贵等[12]通过对RGB图像分量的分析,再通过阈值处理的方式对果树进行分割,其分割准确率为79.67%。JI等[13]提出一种基于自适应均衡直方图的苹果树枝干阈值分割方法,该方法枝干正确分割率为94%,但识别的枝干不连续,未能获得枝干完整信息。蔡健荣等[14]通过形态学、区域细化等步骤提取了柑橘树部分骨架,再通过Hough直线变换、遮挡树枝骨架恢复的方法对果树骨架进行修复,最终正确识别率为67.3%。贺磊盈等[15]通过双轮廓同步跟踪方法对无叶核桃树进行枝干重建,但该方法适用的场景过于简单。TABB 等[16]通过超像素确定背景低纹理区域,进而对果树枝干进行分割,该分割方法只适应于简单背景。AMATYA等[17]通过聚类以及几何方法对樱桃树枝干进行检测,整体检测准确率为93.8%,但该方法只实现了单条枝干的识别,并未对存在分叉的枝干进行检测。MAJEED等[18]使用卷积神经网络和Kinect V2相机实现了苹果树的主干和分支的分割精度分别为92%和93%,该方法只针对无遮挡的苹果树枝干,并未考虑遮挡的情况。SHALAL 等[19]利用相机和激光扫描仪对果树树干进行检测,其检测精度为96.64%,该方法只对较粗的主树干进行检测,无法实现较细分叉枝干的识别。ZHANG 等[20]通过RCNN与拟合的方式对苹果树分支进行检测,其平均召回率与准确率分别为91.5%和85.5%,该方法仍是针对单条枝干和无遮挡的枝干,对于有分叉和遮挡的枝干并未进行研究。
针对以上情况,本文以自然场景下的柑橘树为研究对象,通过对存在多条分支以及被遮挡的枝干进行识别与重建研究,得到准确的枝干信息,为机器人路径规划及避障提供依据。
本文设计的采摘机器人平台如图1所示,其中L1表示机械臂末端与摄像机水平距,L2表示机械臂末端与树冠中心水平距,L3表示摄像机与树冠中心水平距,W表示机器人宽度。摄像机视觉系统由Point Gray 公司生产的BB2-08S2C-60型双目摄像机(分辨率为1 024像素×768像素)、1394图像采集卡和移动工作站组成,实验果园道路宽度在200 cm左右,机器人处在道路中间,其中机械臂末端与树冠中心水平距离约为68 cm,机械臂末端与摄像机水平距离为60 cm,可以计算出机器人相机中心与主树干距离约为90.69 cm。
图1 采摘机器人示意图Fig.1 Diagram of picking robot1.末端执行器 2.机械臂 3.双目摄像机 4.履带底盘 5.外壳
设计的图像采集实验平台如图2所示,拍摄地点位于重庆市北碚区金果园和重庆理工大学柑橘果园,拍摄时间分别为2016年12月和2019年1月,采集距离保持在80~100 cm。
图2 图像采集平台Fig.2 Image acquisition platform1.BB2摄像机 2.摄像机支架 3.便携式计算机 4.图像采集卡
由于果树生长姿态随机,枝干形态各异,采用整体标记会弱化卷积神经网络提取树干的形状特征,会增加模型对树干的误识别率,因此本文提出一种网格化标记方法,即将整体不规则的枝干网格简化为离散的形状规则的四边形网格,通过单个网格化枝干的识别及多网格的多变量约束,实现整个枝干的重建。本文将分叉枝干作为枝干的关键特征,将枝干分为两类:无分叉枝干(No forking branches,NF),包括无遮挡枝干、被树叶遮挡枝干、被果实遮挡枝干;有分叉枝干(Forking branches,FB),存在分支的枝干,设分叉枝干数量为N(2≤N≤5)。
在对无分叉枝干进行网格化标记时,采用类似于矩形的四边形对枝干进行标记,四边形的边框与枝干边缘保持一致,标记效果如图3a所示。对于有分叉枝干类采用类似于梯形的四边形对枝干进行标记,沿着树枝生长方向将分叉处之前的主枝干区域作为梯形的上底,分叉处之后的分叉枝干区域作为梯形的下底,梯形的两腰分别与分叉枝干边缘保持一致,标记效果如图3b所示。
图3 各类别标记方法Fig.3 Marking method
为了统一数据集中目标物的尺度,图像中过小的枝干不进行标记。如图4所示,红色圈中为进行标记的最小枝干,枝干宽度为7像素。由于拍摄距离和人工标记时存在偶然误差,因此,本文将6~8像素宽度作为最低标记标准,采用LabelMe[21]对果树枝干进行整体标记和网格化标记,结果对比如图5所示。
图6 识别与重建流程Fig.6 Diagram of branches detection system
图4 枝干标记的尺度范围Fig.4 Scale range of branch marks
图5 不同标记方法的结果Fig.5 Results of different marking methods
本次实验总样本量为750幅图像,其中100幅图像作为训练集,50幅图像作为测试集,其余600幅图像用于后续测试。实验环境为:Intel i7 7800X的CPU,2块11 GB GPU,运行内存为32 GB;软件环境为Ubuntu16.04,深度学习框架Pythorch1.0。
Mask R-CNN[22]是Faster R-CNN[23]的改进模型,两种模型都用于目标识别与定位,Faster R-CNN能够通过矩形框将物体识别出来,Mask R-CNN是在Faster R-CNN基础上引入了一个mask分支,实现了对图像的实例分割,为了得到枝干的像素级分割结果,本文采用Mask R-CNN作为识别模型得到初步识别结果,利用本文提出的多变量约束算法,完成各枝干的整体重建。识别与重建系统流程如图6所示。
图7 不同标记方式测试效果对比Fig.7 Comparison of different marking methods
对相同的100幅图像分别进行整体标记和网格化标记,在训练相同次数后,二者在测试集上测试效果对比如图7所示,其中网格化标记的平均召回率为81.09%,平均精确率为98.15%,整体标记的平均召回率为66.59%,平均精确率为69.52%,其原因是采用网格化标记使同一类别的训练样本量增加,强化了卷积神经网络对枝干形状特征的提取,因此在小样本情况下采用网格化标记具有较好识别效果。
经过Mask R-CNN模型检测后,输出信息中包含识别目标的类别信息、边框信息以及mask分割区域。为了恢复整体枝干的信息,需要把离散的mask区域进行连接、融合,因此需要对各个mask区域进行相关性分析,得到重建枝干的约束性条件。
首先,由于Mask R-CNN、YOLO[24]和SSD[25]等方法检测的目标框包含过多的背景信息,因此本文采用mask区域的最小外接矩形[26-28]代替原始的目标检测框,并将计算的外接矩作为网格化枝干的位置边框,以使位置边框更加符合枝干生长方式,为进一步融合重建提供准确的位置边框信息,结果如图8所示。
图8 离散mask的位置边框处理结果Fig.8 Discrete mask bounding-box processing results
其次,由于mask的生成是随机的,为了便于后续处理,对各位置边框进行随机编号,如图9所示,通过搜索相邻边框的方法实现枝干的融合重建。
图9 位置边框随机编号结果Fig.9 Random numbering of bounding-box
1.4.1相邻位置边框距离约束条件
本文算法是基于相邻位置边框进行区域搜索,因此需要分析相邻位置边框的距离范围。图10所示为同一枝干位置边框分布,d1表示相邻位置边框中心距,d2表示相隔位置边框中心距,为了确保在搜索半径内尽可能地只搜索出相邻位置边框,需要确定最大搜索半径d2。
图10 位置边框距离关系示意图Fig.10 Bounding-box distance relationship
通过对相邻位置边框的几何中心距分布进行统计,距离d1的分布范围统计如图11所示,相邻位置边框之间的几何中心距离主要分布在20~120像素之间,同时相邻位置边框之间存在一个空隙距离为20像素,即距离|d2-d1|,因此本文将距离约束d2最大阈值设置为140像素。
图11 相邻位置边框中心距统计结果Fig.11 Statistics on center distance of adjacent borders
1.4.2相邻位置边框角度约束条件
对于NF类,如图12所示(截取图9中部分枝干并对其进行简化),其中图12a为最小外接矩处理后的部分枝干截图,图12b为NF类中编号为17、29、34位置边框的简化示意图,图12c为编号29、34边框的中心线关系示意图,图12c中α1表示相邻边框各自长轴方向中心线的夹角,α2、α3分别表示相邻边框几何中心连线与各自长轴中心线的夹角。
图12 相邻边框角度关系图Fig.12 Angle relationship between adjacent bounding-box
通过对600幅图像进行上述角度统计,得到了8239个α1的分布情况,如图13所示,可见α1主要分布在0°~50°之间。因此本文将相邻边框的α1约束条件设定在0°~50°之间。
图14表示位置边框1和位置边框2在中心距相同时3种不同的位置,其中图14a的位置边框属于同一枝干,图14b、14c的两位置边框不属于同一枝干,设3种情况的α1均满足约束,由图可见,当两位置边框趋近同一枝干时α2、α3均趋近于0°。因此需要确定同一枝干相邻位置边框α2、α3的取值分布,共统计了16 478个角度α2、α3的分布范围,如图15所示,可见α2、α3主要分布在0°~40°之间。
图13 相邻边框长轴方向夹角分布Fig.13 Angle distribution of long axis direction of adjacent borders
图14 角度α2、α3关系Fig.14 Angle relationship of α2 and α3
图15 角度α2、α3分布Fig.15 Angle distribution of α2 and α3
1.4.3相邻位置边框交点约束条件
图16a所示为相邻的NF类与FB类边框,由于其形状不同,因此不能用上述的角度约束条件。图16b为FB类边框及其相邻的NF类最小外接矩形边框示意图,可见属于同一枝干的NF类长轴方向的中心线延长线与FB类位置边框的对角线存在交点。经过对2 359组属于同一枝干的NF类与FB类相邻边框进行统计,发现97%以上的此类相邻边框都存在交点。因此,本文将相邻NF类边框与FB类边框存在交点设为属于同一枝干的判断准则。
图16 分叉树枝边框区域融合条件分析Fig.16 Analysis of fusion condition of boundary branches
综上所述,通过对相邻mask位置边框的距离、角度和交点进行分析,确定了同一枝干相邻位置边框角度α1、α2、α3,距离d2和判断准则f等约束条件,分别如下:
满足距离约束
d2≤140像素
满足角度约束
0°≤α1≤50°
0°≤α2≤40°
0°≤α3≤40°
满足交点判断准则
1.5.1基于多参数变量约束的枝干动态重建算法
该算法对每个离散位置边框引入参数g、x、y、β、v、u,其中,g表示位置边框编号;x、y表示位置边框中心点坐标;β表示边框长轴与x轴的夹角;u表示离散枝干位置边框连接次数,当离散枝干为FB类时,u≥0;当离散枝干为NF类时,0≤u≤2,初始值为0。
v表示边框所属类别,当v=0时,位置边框属于NF类;当v=1时,位置边框属于FB类。
算法主要过程为以当前位置边框为起点,在约束条件(角度约束、距离约束、判断准则f)下搜索下一组位置边框,搜索过程中对各相邻位置的离散位置边框是否属于同一枝干类进行从属性划分,再对完成划分的位置边框进行曲线拟合,算法大致步骤如下:
(1)遍历位置边框,以被遍历边框为原点,搜索其它位置边框。
(2)计算被遍历边框与搜索边框的距离、角度、判断准则f,保存满足要求的位置边框。
(3)在满足要求的搜索边框中提取最短中心距离的搜索框,并与原点建立连接。
(4)重复步骤(1)~(3),直到所有边框遍历完成。
(5)以建立连接的端点边框或分叉类型边框为起始点,以连接线顺序提取边框,直到遇到下一个端点边框或分叉类型边框作为结束点,保存起始点到结束点过程中的所有边框为一组。
(6)重复步骤(5),直到所有边框提取完成。
(7)对提取的各组边框进行曲线拟合,拟合宽度为该组边框窄边的平均值。
对枝干重建的具体步骤如下:
(1)对离散的枝干位置边框随机编号。
(2)将所有经过编号处理的位置边框数据信息存入列表Li,其中Li表示第i个位置边框,Li=(g,x,y,β,v,u)(i=0,1,2,…)同时建立空列表Sk,其中Sk=(g1,g2,…,gt)表示第k条枝干包含的位置边框编号。
(3)Li_v表示列表Li中参数v的值,若Li_v≠1,则列表Li的当前索引号(初始索引号i为0)作为种子点。否则继续索引,直至找出种子点。
(4)搜索其他未访问的位置边框列表Lj(i≠j),如果被遍历边框Lj_v=1(j初始值为0),表示第j个位置边框属于FB类,然后转向步骤(6)。
(5)判断Lj_u是否小于2,其中Lj_u表示列表Lj中参数u的值,若否,则转向步骤(12)。若是,则进入下一步。
(6)判断Li_g、Lj_g是否同时在Sk中,若是,则表示Li_g、Lj_g已在Sk中,转向步骤(12)。若否,则进入下一步。
(8)判断Lj_v是否等于0,若否,则转向步骤(10)。若是,则进入下一步。
(10)判断f是否满足条件,若是,则转向步骤(11)。若否,则转向步骤(12)。
(11)判断Li_g、Lj_g是否只有一个在Sk中,若是,则将Li_g或Lj_g补入到Sk中。若否,则将Li_g、Lj_g存入列表Sk+1中,Li_u=Li_u+1,Lj_u=Lj_u+1。
(12)判断j是否到达索引末端,若否,j=j+1,并转向步骤(4)。若是,则进入下一步。
(13)判断i是否到达索引末端,若否,i=i+1,并转向步骤(3)。若是,则结束。
1.5.2枝干曲线拟合
复杂环境中柑橘树枝干的形状千差万别,且存在大量遮挡现象,上述重建结果得到的树枝离散点仍有未识别区域,因此需要对这些离散点进行拟合,以获得完整的枝干信息。目前常用的离散数据点拟合方法有最小二乘法、插值拟合、多项式拟合等。其中多项式拟合适用于离散数据点标准差较小的拟合,且具有计算量小、运算速度快等优点。考虑到本文获取的枝干位置边框中心点与枝干真实位置中心点偏差较小,且在同一枝干上分布较均匀,同时也为了降低计算量,提高运算速度,本文拟采用多项式曲线拟合的方法对重建位置边框中心点进行拟合[29-30],多项式拟合具体步骤如下:
(1)将获取的同一枝干中心点横坐标依次存入向量X,纵坐标依次存入向量Y。
(4)拟合的宽度取同一枝干矩形框窄边宽度的平均值。
采用多项式拟合对离散位置边框数据点进行拟合,以恢复枝干的形态信息。为了得到最优的拟合效果,完整恢复枝干的形态信息,进行枝干曲线拟合实验。分别进行二、三、四、五次多项式拟合对比实验,同时引入拟合性能评价指标,拟合误差为
(1)
式中Fi——拟合曲线包含的像素点集
Tu——真实枝干包含的像素点集
拟合对比实验结果如图17所示,拟合误差统计结果如图18所示。
图17 不同阶次的曲线拟合效果对比Fig.17 Comparison of curve fitting effects of different orders
图18 不同拟合阶次误差对比Fig.18 Comparison of different fitting order errors
由图18可知,二次曲线拟合平均误差为54%,三次曲线拟合平均误差为26.95%,四次曲线拟合平均误差为11.47%,五次曲线拟合平均误差为9.59%。随着拟合曲线阶次的增加,拟合误差呈下降趋势。当拟合曲线阶次大于四次时,其平均误差变化不明显,且四次多项式曲线拟合效果已实现了枝干形态的完整重建。因此,在保证拟合效果最佳的情况下,同时兼顾枝干曲线拟合重建过程中的运算高效性,本文采用四次多项式进行曲线拟合。
为了测试本文算法的有效性,进行了枝干重建性能评估实验。其中单幅图像采用Mask R-CNN模型识别平均用时2.2 s,本文算法平均用时0.7 s,总耗时为2.9 s。同时采集50幅图像作为验证数据集,部分验证集图像如图19a所示,利用Mask R-CNN识别模型对枝干进行识别,然后对识别出的位置边框进行初步划分,如图19d所示,最后通过曲线拟合实现枝干的完整重建,如图19g所示。为了准确衡量枝干重建效果,定义枝干重建准确率为
(2)
式中Ar——重建准确率
Crb——正确重建枝干数
Ab——实际枝干数
重建准确率统计结果如图20所示,其中平均重建准确率为88.64%。
本文方法不适合于处理相邻且趋于平行的不同枝干,如图19b所示,主要是因为本文的角度约束条件不能有效地划分此类枝干,在执行最邻近点优先搜索过程中,容易把不同枝干的信息重建在一起,如图19e、19h所示,两条枝干没有正确重建,但是根据果树枝干生长姿态,这种情况出现较少,因此对整体的重建误差影响不大。
此外,本文是基于平面果树图像进行识别和重建,对于三维空间上深度距离较远,而投影到二维平面上距离较近的枝干,如图19f所示,最中间的识别区域为其他果树枝干,在未考虑枝干深度信息的情况下,也会出现重建误差,如图19i所示。
图19 枝干重建结果Fig.19 Branch reconstruction results
图20 果树枝干重建准确率Fig.20 Accuracy rate of branches reconstruction
为了验证本文方法的性能,将本文算法与相关文献进行了对比,如表1所示。为了表示所检测枝干范围,本文以树状图的形式对检测枝干进行等级划分[31],其中文献中所检测的最粗枝干为1级枝干,遇到分叉节点的其后为2级枝干,以此类推,通过表1可以看到,本文方法比文献[14]和文献[20]提出的方法准确率分别提高了21.34、3.14个百分点,文献[13,17-19]提出的方法比本文方法准确率分别高了5.36、5.16、4.36、8个百分点,但所检测枝干等级均小于3级,且文献[13,18-19]检测场景复杂度低于本文应对场景,总体来看,本文方法提升了枝干检测范围,同时对于背景复杂、枝叶遮挡等情况也能很好地完成检测。
表1 不同枝干检测方法性能比较Tab.1 Performance comparison of different branch detection methods
(1)针对小样本下果树枝干的特征信息难以提取的问题,采用网格化的标记方式构建了无分叉和有分叉枝干两类训练数据集,训练的Mask R-CNN模型实现了对枝干的准确识别,平均识别精确率达98.15%,平均召回率达81.09%。
(2)用mask的最小外接矩形代替初始位置边框,实现了对枝干生长偏角、长度、宽度等姿态信息的准确获取。
(3)设计了基于多参数变量约束的离散枝干边框划分算法,对于划分好的枝干边框,采用多项式拟合的方法,完成了柑橘果树枝干重建,其中单条枝干拟合平均误差为11.47%,整体枝干平均重建准确率为88.64%。