APP下载

基于彩色点云图像的不同成熟阶段番茄果实数量的测定方法

2022-01-27张先洁汪小旵孙国祥施印炎魏天翔

华南农业大学学报 2022年2期
关键词:分类器番茄植株

张先洁,汪小旵,2,孙国祥,施印炎,魏天翔,陈 昊

(1 南京农业大学 工学院,江苏 南京 210031; 2 江苏省现代设施农业技术与装备工程实验室,江苏 南京 210031)

对番茄植株不同成熟阶段的番茄果实数量准确测定不仅有助于精细化调整番茄种植过程中的施肥量,而且有助于提前制定番茄果实收获、仓储以及销售等计划[1-3]。番茄植株的生长形态不同,尚未完全成熟的番茄果实的颜色与叶片颜色相近,番茄果实容易出现重叠、被遮挡现象,复杂的环境背景导致番茄果实识别困难[4-5]。在复杂的环境背景下准确识别番茄果实是测定不同成熟阶段番茄果实数量的关键。

针对农作物的果实识别,国内外学者进行了广泛的研究[6-9]。目前大多数农作物的果实识别是通过深度学习和图像处理等方法处理二维RGB图像数据实现的[10-13]。这些方法识别果实的成功率较高,但是通过二维RGB图像数据识别果实无法获得果实的距离信息,因而无法分辨被识别果实是否属于当前被统计植株,被识别果实的归属不明确导致果实数量评估的不准确[14-15]。也有部分学者采用其他数据进行农作物果实识别[16-18]。Mehta等[19]通过多个视角的二维RGB图像数据合成伪立体视觉,在立体视觉的基础上识别果实,但该方法多个视角的相机布置降低了方法的可操作性。李寒等[20]在二维RGB图像中确定番茄果实轮廓,结合深度信息获取番茄果实点云数据,利用改进的SOM-K-means聚类算法实现番茄果实的识别,但该方法仅适用于识别成熟的红色番茄果实。目前针对农作物的果实识别已经有了较多的研究,但针对指定距离内不同成熟阶段的番茄果实数量识别的方法研究较少。

为准确测定近距离内不同成熟阶段的番茄果实数量,本文提出一种基于彩色点云图像的番茄数量测定方法。首先通过点云深度信息筛选出近距离内的番茄植株点云,去除远距离番茄果实对果实数量准确评估的干扰,然后合成2个视角的点云增加番茄果实的特征信息,提高番茄果实识别的准确率,再使用深度学习方法PointRCNN目标检测网络识别合成点云中的番茄果实,最后利用支持向量机(Support vector machine,SVM)分类器对已识别出来的果实进行分类,得到不同成熟阶段番茄果实的数量。

1 材料与方法

1.1 试验材料

番茄植株图像数据采集于江苏省农业科学院信息所番茄种植温室,番茄品种为‘奇美’与‘桃太粉’,番茄植株采用吊蔓式种植,高度为145~165 cm,株距为40 cm,行间距为120 cm,试验现场如图1所示。

图1 番茄种植温室试验现场Fig.1 Test site in the greenhouse for tomato plant

图像采集时间为2020年12月17日14时至17时和2020年12月23日14时30分至17时,在不同光照条件下共采集252组番茄植株图像数据。将微软公司的RGB-D相机KinectV2.0搭载在深圳玩智商科技有限公司研发的ROS机器人移动平台DashGo B1上,设定移动平台定点停靠并采集番茄植株的彩色图像和深度图像。KinectV2.0的彩色相机的分辨率为1 920像素×1 080像素,深度相机的分辨率为512像素×424像素,采集图像如图2所示,深度图像中由绿到黄表示目标距离相机由近到远。

图2 番茄植株图像Fig.2 Image of tomato plant

1.2 番茄果实数量识别与成熟阶段分类流程

首先将番茄植株RGB图像和深度图像合成番茄植株点云,然后将番茄植株不同视角下的2个点云配准合成1个番茄植株点云,再采用PointRCNN目标检测网络对番茄植株点云进行番茄果实目标检测,输出番茄果实识别框,最后利用训练好的SVM分类器对PointRCNN目标检测网络的检测结果进行成熟阶段分类。

1.3 番茄植株点云获取与预处理

1.3.1 番茄植株点云获取 KinectV2.0 通过不同的相机采集得到RGB图像与深度图像,相机精度不同与位置不同导致同一目标点在RGB图像与深度图像坐标不同,因此需要通过标定获取相机内置参数,进而得到RGB图像与深度图像的坐标映射关系,根据映射关系生成同时包含RGB信息和深度信息的RGB-D图像。

根据RGB-D图像的坐标与坐标对应的深度值可以转换生成三维空间坐标。本文使用Python语言调用Open3D库中的库函数,根据标定获得的相机参数,将RGB-D图像转换生成具备RGB信息的三维点云。

1.3.2 点云预处理 点云坐标中的Z轴坐标反映点到相机的距离,根据实际距离情况选取合适的阈值z分割点云得到距离相机近排的番茄植株点云,以便准确检测近排番茄植株上的番茄果实。

受到温室环境以及深度相机本身精度等因素影响,KinectV2.0获取的点云数据中存在部分离群点噪声,离群点会影响后期点云配准的精度,需要通过滤波移除离群点。离群点的特点是相同距离内点的数量较小,因此,采用统计滤波法将指定半径内临近点的数量小于指定数量的点记为离群点并移除。

1.4 番茄植株点云配准

从单视角采集到的番茄植株点云数据中,存在多处不同程度的番茄果实遮挡、重叠现象。本文提出将具有一定距离的2个视角采集到的点云数据配准融合,获取更全面的番茄植株三维信息,减少因重叠、被遮挡等现象导致的番茄果实检测错误。

点云配准是指将2个具有一定数量对应点的点云转换到同一个坐标系下,融合成1个点云,如图3所示。点云配准分为粗配准与精配准2个部分。

图3 番茄植株点云配准Fig.3 Point cloud registration of tomato plant

点云粗配准是在未指定2个点云的初始相对位姿情况下,将2个点云进行配准,为精配准提供一个较优的平移矩阵和旋转矩阵初始值。粗配准的主要方法包括基于特征匹配的配准方法和基于随机采样一致性的配准方法。本文选用基于随机采样一致性的配准方法对番茄植株点云粗配准。

点云精配准是在粗配准提供的平移矩阵和旋转矩阵初始值的基础上,通过不断迭代改进平移矩阵和旋转矩阵的参数来完成配准。精配准的主要方法是迭代最近点 (Iterative closest point,ICP)算法以及各种改进的ICP配准方法。本文选用基于pointto-plane的改进ICP配准方法[21]对粗配准后的番茄植株点云精配准。

调用Open3D库中的全局配准函数选择随机采样一致性参数,设定体素采样为0.02,距离阈值为0.03,进行点云的粗配准;调用ICP精配准函数选择point-to-plane方法参数,设定距离阈值为0.001,进行点云的精配准。

1.5 PointRCNN目标检测网络识别番茄果实

基于点云的目标检测网络主要分为2类,一类是一阶段的目标检测网络,另一类是二阶段的目标检测网络。二阶段的目标检测网络是在一阶段目标检测结果的基础上进行修正检测,因此一般二阶段目标检测网络的准确率要高于一阶段目标检测网络。本文选用二阶段检测网络PointRCNN[22]在番茄植株点云中检测识别番茄果实。

PointRCNN目标检测网络的第一阶段通过PointNet++网络提取点云特征,对点云进行自底向上的搜索,选出3D候选区域。第二阶段检测网络在第一阶段提取的点云特征和3D候选区域的基础上,对3D候选区域的评分进行修正,得到检测结果。PointRCNN目标检测网络的框架如图4所示。

图4 PointRCNN网络结构Fig.4 PointRCNN network structure

PointRCNN采用PointNet++网络提取点云特征输入到前景点分割网络,前景点分割网络在前景点分割中采用Focal Loss函数解决类别不平衡问题,同时通过加入边框回归头对前景点进行3D边框回归产生3D候选区域。在获得3D候选区域后,PointRCNN在点云区域池化的基础上结合之前产生的前景点特征获得新的局部区域特征和全局特征。PointRCNN二阶段网络融合局部区域特征和全局特征后对3D候选区域和置信度进行修正,得到最终的预测结果框。

算法基于 Pytorch(v1.3.1) + OpenPCDet(v0.3.0)框架实现,硬件配置为处理器Intel(R) Gold 6226,内存 256 GB,显卡 NVIDIA GeForce RTX 2080Ti,操作系统 Ubuntu 18.04。使用标注工具CloudCompare对点云进行人工标注得到番茄果实标签,通过脚本转换标注文件为Kitti数据集格式。在本试验中点云标签类别为番茄和其他2类,按照4∶1的比例随机划分为训练集和验证集。

采用迁移学习的方法对本试验的点云数据进行处理,主要设定参数包括:epochs为20 000,batch_size_per_gpu为 3,GPU 为 2,Learn_rate为0.01,div_factor为 10,optimizer为 adam_onecycle。其中,参数epochs是指训练的回合数,1回合是指把所有的训练样本全部处理1次;参数batch_size_per_gpu是指每个GPU每次处理样本的个数;参数GPU是指GPU的个数;参数Learn_rate为最高学习率;参数Learn_rate除以参数div_factor得到初始学习率;参数optimizer为优化器的选择。PointRCNN目标检测网络的损失函数如下:其中,Npos为 前景点的数量,与为正确标注的bin分配和残差,为前景点p的被预测的bin分配和残差,Freg为回归损失函数,Fcls为分类损失函数。

将数据集投入PointRCNN目标检测网络中训练,损失函数随迭代次数的变化趋势如图5所示纵坐标为损失函数值,横坐标为训练回合数。损失值在迭代前期快速下降至0.5附近,在迭代中期略有上升后重新下降,在迭代后期降至0.3附近。

图5 网络损失值的变化曲线Fig.5 Change curve of the loss value of the network

1.6 番茄果实成熟阶段分类

对番茄果实成熟阶段分类,首先,按照番茄果实内部的成熟情况对番茄果实的成熟阶段分类,然后分析番茄果实不同成熟阶段颜色特征的差异,选取合适的颜色特征组成特征矩阵训练SVM分类器,最后利用训练好的SVM分类器[23]对PointRCNN目标检测网络识别出的番茄果实进行成熟阶段判定。

将番茄果实切开后,通过肉眼观察番茄果实内部果肉颜色情况将番茄果实分为4种成熟阶段。如图6所示,果肉部分呈绿色(约90%以上)为绿熟;果肉部分出现微红(约占10%~40%)为微熟;果肉部分呈红色(约占40%~90%)为成熟;果肉部分完全为红色(约占90%以上)为完熟。

图6 番茄果实的成熟阶段Fig.6 Ripening stage of tomato fruit

选取番茄果实4个成熟阶段的RGB图像各80张,总计320张RGB图像作为样本数据。使用阈值法去除样本图像中背景像素,仅保留番茄果实像素,并分别获取番茄果实R、G、B 3个通道的像素值;将RGB图像数据转换为HSV图像数据,分别获取番茄果实S、V 2个通道的像素值,其中,HSV颜色模型中V分量为亮度分量,不做分析考虑。选取平均值 (μ)、方差 (σ) 2 个数字特征表征数据的分布情况,分别计算番茄果实5个通道(R、G、B、S、V)像素值的3个数字特征作为番茄果实的10个颜色特征(μR、μG、 μB、 μS、 μV、 σR、σG、 σB、σS、 σV)。统计计算得到番茄果实4个成熟阶段的10个颜色特征,并将4个成熟阶段的同一颜色特征数据归为一组计算变异系数,如表1所示。

表1 不同成熟阶段的番茄果实颜色特征Table 1 Color characteristics of tomato fruits at different ripening stages

分析表1可知,在5个颜色分量(R、G、B、S、V)的平均值颜色特征中,颜色特征 μG在各成熟阶段的均值相差较为明显,变异系数最大,表明颜色特征μG分布较为离散,适宜作为区分各成熟阶段的特征之一;同理,选取方差颜色特征中 σS作为选定特征之一。将剩余8个颜色特征依次与 μG、 σS2个颜色特征组合成特征矩阵进行SVM分类训练,选取预测结果最优的特征矩阵[μG,σS,μV]作为最终选定的特征矩阵。

从320个样本数据中随机选择60%的数据作为训练集,40%的数据作为测试集。将训练集数据的特征矩阵投入SVM分类器训练,使用训练好的SVM分类器进行预测,训练集的预测准确率为94.27%,测试集的预测准确率为96.09%。

1.7 PointRCNN目标检测网络识别番茄果实性能

通过2个方面对PointRCNN目标检测网络识别方法的性能进行评价。一方面是识别结果的数量比较,即比较PointRCNN目标检测网络识别出的番茄果实的数量与点云中番茄果实数量;另一方面是识别结果的位置比较,即比较PointRCNN目标检测网络识别出的番茄果实中心位置与点云中番茄果实中心位置。

针对识别结果的数量比较,将识别结果分为正检、错检和漏检3类,如图7所示。PointRCNN目标检测网络识别出的番茄果实总数量记为检出数(ND),识别正确的番茄果实数量记为正检数(NC),识别错误的番茄果实数量记为错检数(NF),未被识别出的番茄果实数量记为漏检数(NM),点云中番茄果实总数量记为参考数(NR)。通过计算精确率(AD),召回率(AR)对识别结果的数量方面进行性能评价。

图7 番茄果实识别结果分类示意图Fig.7 Classification diagram of tomato fruit recognition results

番茄果实数量识别的AD计算公式为:

番茄果实数量识别的AR计算公式为:

针对识别结果的位置比较,将PointRCNN目标检测网络识别结果3D框与人工标注3D框做对比统计,引入平均中心相对误差(CR)作为PointRCNN目标检测网络识别结果位置方面的评价指标。

CR的计算公式为:

式中,Di为中心距离,即第i个番茄果实的人工标注3D框中心与识别结果3D框中心的距离;Ri为标注框边长均值,即第i个番茄果实的人工标注3D框的长、宽、高均值。

2 结果与分析

2.1 番茄果实数量与位置识别结果

根据标定得到的相机参数将采集到的252组番茄植株图像数据转化生成252个番茄植株点云,通过点云配准技术合成获得246个合成的番茄植株点云。使用标注工具CloudCompare对合成的番茄植株点云中番茄果实进行标注,随机选取196个的番茄植株点云标注结果投入到PointRCNN目标检测网络中训练。利用训练好的模型对剩余的50个合成的番茄植株点云进行预测识别,并将预测结果与人工标注结果做统计对比。

将PointRCNN目标检测网络对50个番茄植株点云的预测识别结果可视化,并统计PointRCNN目标检测网络识别出的番茄果实总数、识别正确的番茄果实数、识别错误的番茄果实数、未被识别出的番茄果实数、点云中番茄果实总数。如图8所示,图8a中番茄果实数为6,PointRCNN目标检测网络识别出的番茄果实数为5,识别错误的番茄果实数为0,未被识别出的番茄果实数为1。

图8 番茄果实识别结果Fig.8 Recognition results of tomato fruit

根据“1.7”针对番茄果实数量识别的评价指标,对50个番茄植株点云的预测结果进行统计,计算精确率和召回率,PointRCNN目标检测网络识别番茄果实数量的参考数、检出数、正检数、错检数、漏检数分别为 277、268、231、37、46,精确率为86.19%,召回率为83.39%。

根据“1.7”针对番茄果实位置识别的评价指标,从50个番茄植株点云的预测结果中随机选择50个番茄果实预测框与人工标注框做对比统计,计算平均中心相对误差,如表2所示,平均中心相对误差为36.83%。

表2 PointRCNN目标检测网络识别番茄果实位置的精度评价Table 2 Accuracy evaluation of tomato fruit position recognition based on PointRCNN object detection network

2.2 番茄果实成熟阶段分类结果

遍历获取PointRCNN目标检测网络对50个番茄植株点云的预测结果框中的点云,获取对应的RGB信息,计算得到结果框内点云的特征矩阵,使用训练好的SVM分类器对点云的特征矩阵进行成熟阶段分类预测。分类结果显示,绿熟果实112个,微熟果实72个,成熟果实55个,完熟果实29个。

2.3 番茄果实成熟数量测定结果

设定移动平台DashGo B1采取定点停靠的行走策略,利用DashGo B1搭载的KinectV2.0采集温室内4行番茄植株的图像数据,使用基于彩色点云图像的番茄成熟数量测定方法进行数量测定,结果显示,绿熟果实448个,微熟果实393个,成熟果实294个,完熟果实281个,共计1 416个。

3 结论

1)本文提出了一种基于彩色点云图像的番茄果实数量测定方法。为消除远距离番茄果实的干扰,减轻番茄果实遮挡、重叠等的影响,准确评估不同成熟阶段的番茄果实数量,以二视角合成后的彩色点云作为数据处理对象,通过深度信息截取近距离点云,利用PointRCNN目标检测网络获取番茄果实识别框,使用SVM分类器对番茄果实识别框进行成熟阶段预测。

2)针对番茄果实成熟阶段分类识别,选取番茄果实颜色特征组成特征矩阵训练SVM分类器,SVM分类器对训练集预测准确率为94.27%,对测试集的预测准确率为96.09%。

3)选取精确率和召回率2个指标评价番茄果实数量识别的精度;选取平均中心相对误差指标评价番茄果实位置识别的精度。PointRCNN目标检测网络的番茄果实识别方法的精确率为86.19%,召回率为83.39%,平均中心相对误差为36.83%。

猜你喜欢

分类器番茄植株
少样本条件下基于K-最近邻及多分类器协同的样本扩增分类
学贯中西(6):阐述ML分类器的工作流程
基于朴素Bayes组合的简易集成分类器①
玉米倒伏的原因及防控措施研究
HOME家系列
基于AdaBoost算法的在线连续极限学习机集成算法
长匐茎与块茎
防治长茄弯果有窍门
编辑部故事
爱挑剔的番茄