陈龙,王浩云,季呈明,孙云晓,徐焕良
(南京农业大学人工智能学院,江苏 南京 210095)
点云数据反映一个物体的空间结构,近年来对点云数据研究比较广泛的是对物体进行三维建模。刘刚等[1]提出一种基于深度信息分割聚类的草莓冠层结构形态三维重建算法,三维重建出具有颜色信息的草莓冠层结构形态;Yamamoto等[2]使用Kinect与旋转台获取苹果各个角度的点云数据,然后通过点云配准及贴皮建立苹果果实三维模型;徐胜勇等[3]使用Kinect传感器获取不同角度的角果期油菜分枝点云数据,使用基于KD-tree搜索的最近点迭代算法实现点云配准,进行油菜枝的三维重建。
点云数据除了在三维建模研究项目上发展比较迅速之外,也逐渐应用于物体的表型参数预测的研究。王浩云等[4]通过3D-CNN建立苹果高光谱图像与苹果糖度、硬度、含水量的多任务学习模型,提出一种苹果高光谱多品质参数同时检测方法;郭彩玲等[5]提出一种获取苹果树冠层参数的方法KD-trees-ICP,用于高精度配准苹果树冠层三维点云数据,获取较为精准的苹果树冠层几何参数;Su等[6]利用深度图像和彩色图像相结合的方法构建马铃薯的3D模型,预测马铃薯的长度、宽度、厚度和体积参数,预测平均绝对误差均小于2.4 mm;Pamornnak等[7]通过Kinect相机获取油棕果的RGB信息和深度信息,将深度信息映射到彩色图像中获得油棕果的2.5D模型,然后使用体积积分法估测油棕果的相对体积并进行分级。
上述方法是将点云数据转化为规则的三维体素网格或图像集合,然而这会使数据大量增加并忽略数据本身之间的关联性。本文提出了一种新的苹果外部表型参数的估算方法,直接把点云作为输入,通过椭圆几何模型建立仿真数据模型库;引入Pointnet网络[8],改变网络输出层,使用回归模型代替原网络的分类模型,训练后直接将预处理后的实测点云数据迁移到模型中,再进行模型参数微调;通过5-折交叉验证,用来弥补实测数据量少带来的过拟合和泛法能力差等影响,最终得到一个基于任意角度拍摄到残缺率较高的点云数据条件下,仍然能够快速、准确估算出苹果外部表型参数的网络模型。
选择250个大小均匀、无明显缺陷与损伤的陕西红富士苹果,使用美耐特电子数字显示不锈钢高精度游标卡尺测量苹果的高度和直径。选取苹果最高点与最低点距离作为高度;每隔30°测1次直径,再垂直角度测另一条直径,取3个重复次共6组数据的平均值作为直径(表1)。
表1 实测苹果表型参数Table 1 Measured apple phenotypic parameters
选用谷歌公司发布的Kinect V2相机[9],拍摄物距为650 mm时的正立、倒立、侧面3个角度的苹果,搭建好试验拍摄平台后,使用matlab2016b提供处理点云数据的基本工具[10],获取初始点云(图1-A)。Kinect相机获取的初始点云数据包含很多噪声,使用直通滤波法[11]去除噪声,排除多余的背景信息造成的干扰(图1-B)。选用最远点采样法[12]继续对点云进行采样处理获得符合模型输入格式的精简点云(图1-C)。
图1 初始点云(A)、直通滤波后点云(B)和最远点采样后点云(C)Fig.1 Original point cloud(A),point cloud after pass through filtering(B)and point cloud after farthest point sampling(C)
本文的技术路线如图2所示。利用点云数据作为Pointnet网络的输入,对苹果的表型参数直径、高度、体积进行估算。先测量苹果直径、高度和体积等表型参数,使用Kinect相机采集苹果点云数据,并选择直通滤波和最远点采样法对原始点云进行预处理。考虑实测数据量不足,训练模型易产生过拟合现象,使用椭球曲面方程建立仿真苹果模型库,加入迁移学习思想,训练用于迁移的仿真数据Pointnet模型,通过模型迁移到实测数据中去重新训练实测网络模型,提高模型预测精度。
图2 苹果表型参数估算技术路线图Fig.2 Algorithm for estimating apple phenotypic parameters technology roadmap
2.1.1 Pointnet网络原理点云数据因具有旋转性和无序性,很多传统的点云深度学习主要采取2种方法对数据进行处理:一种是把点云投影到选定的二维平面,如三视图角度,同时还可以融合多种图像信息,实现点云数据预处理;另一种是把数据划分到空间依赖的体素,先分割三维空间,再使用3D卷积等方式继续处理数据。但是这2种方法会在增加大量不必要数据的同时破坏本身的内在不变性。
Qi等[8]提出的Pointnet网络直接将点云数据作为输入,在物体分类试验上取得了很好的效果,网络对点云数据的无序性和旋转性得到了很好的处理。模型先对每个点进行一定程度的特征提取之后,通过最大池化层提取点云的整体特征;然后引入2次空间变换网络解决点云的旋转性问题,第1次为3×3的输入变换网络对空间中的点云进行位置调整,第2次为64×64的特征变换网络对提取出的64维特征进行对齐,即在特征层面对点云进行变换,将所有的输入点集对齐到1个统一的点集空间。
网络中的多层感知器(multi-layer perception,MLP)是通过共享权重的卷积实现的,第1层卷积核大小是1×3,之后的每一层卷积核大小都是1×1。经过2个空间变换网络和2个MLP之后,对每一个点提取1 024维特征,经过MAX Pooling构成 1×1 024 的全局特征。再经过1个MLP得到k个得分。分类网络最后衔接的损失函数是softmax。Pointnet网络结构如图3 所示。
图3 Pointnet网络结构图Fig.3 Pointnet network structure diagram
该模型影响力在于其为点云处理提供了简单、高效的特征提取方法,核心思想是设计1个对称函数去融合所有点的信息。模型公式如下:
F({x1,x2,…,xn})≈G(h(x1),h(x2),…,h(xn))
(1)
式中:F为模型目标;G为设计的理想对称函数,这里指Max Pooling;h为MLP;x1,x2,…,xn为模型中的每个点。基本思路是对点云数据中的各个点使用MLP分别处理,再送入对称函数MAX Pooling层中处理实现点云排列不变形,通过简单的MLP+MAX Pooling解决点云无序性与旋转性问题。
2.1.2 基于Pointnet苹果表型参数估算模型设计引入Pointnet网络,将输出层的分类模型改为回归模型。输入为全部点云数据的集合,表示为1个m×n×3的二维张量,将点云看成是W和H分为n和3的2D图像。其中:m指批处理的大小;n代表点云数量;3对应x、y、z坐标。本试验中m为64,点云数量为 1 024。在此基础上做卷积,第1个卷积核大小为[1,3],正好对应1个点,输出通道数是64;第2个卷积核大小是[1,1],数据通过与第1个T-Net学习到的转换矩阵相乘来对齐,保证模型对特定空间转换的不变性。第1个输入变换网络大小为3×3,通过多次MLP对各点云数据进行特征提取,再用第2个 T-Net 对特征进行对齐,第2个特征变换网络大小为64×64,在特征的各个维度上执行MAX Pooling操作得到最终64×1 024的全局特征。经过3层全连接层得到64×1维输出,模型中的MLP除了第1层卷积核大小为1×3,其他都是1×1。网络结构如图4所示。
图4 基于Pointnet的网络结构图Fig.4 Network structure diagrambased on Pointnet
模型的损失函数如下:
(2)
2.2.1 迁移学习原理深度学习模型训练需要大量的标注数据,然而在很多领域获得大数据的代价太大,并且给数据添加标签耗时耗力。迁移学习把一个领域的知识,迁移到另一个领域,使目标领域能够取得更好的学习效果,这样可以弥补数据量不足带来的影响。
本试验采用基于模型的参数迁移学习。根据迁移学习领域自适应的研究[13-15],以及迁移学习过程中参数调整的分析[16-17],试验的实测数据集相对较少且实测数据与仿真数据在模型上具有一定的差距,所以将模拟数据集上训练好的模型参数迁移到实测数据集上时,只保留前几层卷积层参数不变,将1个较小的学习率对模型参数进行微调重新训练其他层的参数。在新的数据集较小的情况下,考虑到重新训练的模型要防止过拟合的情况,需要保持原模型网络层参数不变。新的数据集与原数据集有一定的分布差距,原模型的深层卷积层所学习到的高级特征不能适用于新的数据,需要在原基础上重新训练新的参数,但是训练的仿真数据模型是基于大量的仿真数据集,所以低级特征的检测仍可以适用于新的实测数据集,新模型的前几层卷积层参数并不需要重新训练。
2.2.2 仿真模型库的建立迁移学习需要大量的数据训练用于迁移的模型,为了获取足够的数据用于训练迁移模型,试验建立了苹果仿真模型库。从苹果外形看,可以把它当作是添加了上、下2部分凹陷的椭球构成,能够使用合适的参数曲面方程变形构造出苹果的仿真模型。本文采用基于椭球变形的苹果果实造型方法,首先通过参数方程生成1个椭球体曲面,其次对椭球体的上、下两端添加2组干扰函数将椭球体曲面变形为苹果外部造型,最终苹果外形参数方程如下:
(3)
式中:Xp、Yp、Zp为生成点的x、y、z轴的坐标;a、b、c为可调参数,控制苹果模型的3条半轴的长度;u、v表示方程在竖直和平面上的旋转角度;g(u,v) 为干扰函数,具体表示如下:
(4)
式中:g1(u,v)、g2(u,v)分别是底部干扰函数与顶部干扰函数,共同组成完整的干扰函数;k1、k2控制椭球面上、下端向内部的凹陷程度。试验取0.1作为外形参数a、b、c的步长;参数k1设置的步长为2;参数k2设置的步长为20。再根据畸形排除法[18]去除不合实际的畸形苹果。得到的结果如表2所示。
表2 椭圆方程参数取值情况Table 2 Parameter values of elliptic equation
根据表2的参数取值情况,通过椭球曲面方程理论上可以生成约500万组参数组合。经过畸形排除法筛选出来的非畸形苹果模型的参数组合约为20万组。
根据参数方程,计算生成的仿真苹果模型表型参数值。先控制u、v的大小,然后根据模型中点的y的最大值与最小值之差作为仿真苹果的高度,再从模型的点中找到坐标为(x,0,0)与(0,0,z)的点,2x与2z就是苹果模型的2个直径,取2个直径的平均值作为仿真模型的直径;最后对曲面方程进行积分得到仿真模型的体积。
2.2.3 基于Pointnet+TL苹果表型参数估算模型设计试验主要由数据预处理、仿真数据Pointnet模型训练、实测数据迁移学习3个部分组成,数据预处理部分主要把实测数据去除背景噪声并通过最远点采样方法得到精简点云数据;仿真数据Pointnet模型训练如2.1.2节,将仿真数据代替实测数据进行训练;在训练好的仿真数据模型基础上,把实测数据迁移过去,给1个较小的学习率进行微调,经过 5-折交叉验证得到最终的网络模型(图5)。
图5 基于Pointnet+迁移学习的网络结构图Fig.5 Network structure diagram based onPointnet+transfer learning
2.3.1 苹果表型参数回归算法评价指标试验选择均方根误差(RMSE)和决定系数(R2)作为算法回归效果的评价指标,其计算公式如下:
(5)
RMSE是真实值标签与预测值的均方误差的平方根,该指标的数值越大,说明模型回归效果越差,反之效果越好。
(6)
2.3.2 苹果表型参数的估算结果试验采用TensorFlow框架,使用英伟达2080Ti显卡进行模型训练,深度学习的优化算法选用Adam动量优化算法,批量训练和测试批次大小为64。
在仿真模型上把通过控制椭圆方程式生成的12 480组仿真数据模型库离散成点云数据,对模拟数据进行任意角度切割,获得50%残缺率的仿真苹果,取11 520组作为训练集,960组作为测试集,学习率设为0.001,批次大小为64,最大迭代次数为800,模型网络迭代500次后趋于稳定。得到模拟数据的预测模型对苹果的直径、高度、体积3个表型参数的预测指标RMSE分别为0.696、1.264和4.670,R2分别为0.982、0.956和0.980。表明试验模型在模拟数据上取得了优异的预测效果。
试验有250组实测苹果数据,每个数据有3个角度的点云信息,共计 750组残缺率约为50%的实测数据。将得到的模拟数据训练好的模型参数迁移到实测数据上,用比仿真数据小10倍的学习率即0.000 1微调网络模型的参数,网络训练8 000次后趋于稳定,然后通过5-折交叉验证,将数据均分为5份,将每个子集数据分别取1组作为测试集,其他4组作为训练集,这样会得到5个模型,用这5个模型测试集的回归指标平均数作为结果,这样既能在一定程度上避免过拟合和欠拟合的发生,又可以在很大程度上保证模型的可靠性。最终预测模型对苹果的直径、高度、体积3个表型参数的预测指标RMSE分别为2.247、2.276 和22.780,R2分别为0.919、0.841和0.927。3组表型参数的RMSE均在误差允许的范围,直径和体积的预测R2均在0.900以上,而高度的R2为0.841,这是因为苹果的外观不完全均匀,而仿真数据分布均匀,实测数据的高度与仿真点云模型的高度分布差距与直径和体积相比较大,但仍然在可接受范围。
将750组实测数据经过降噪和最远点采样后作为输入,640组作为训练集,余下的作为测试集,训练完成后分别估算出训练集对应的苹果外部表型参数直径、高度和体积,将估算值与实测值进行线性回归分析。从图6可见:通过该算法估算的苹果外部表型参数和实测值具有很高的相关性,虽然高度的估算结果存在误差,但误差稳定,估算值的点紧密围绕在回归线附近且分布均匀,符合实际。证明该方法对从任意角度拍摄的残缺率达到50%左右的点云数据进行表型参数估算时,仍然能够保证较高的精度。
图6 苹果直径(A)、高度(B)和体积(C)的估算结果Fig.6 The estimation results of apple diameter(A),height(B)and volume(C)
2.3.3 基于不同模型和方法的对比试验结果试验比较Pointnet、LPC-GA-PSO[19]、DGCNN[20]+迁移学习和Pointnet+迁移学习对实测苹果的外部表型参数的估算能力。其中采用Pointnet方法是从750组数据中取640组作为训练集,余下的作为测试集,学习率设为0.000 1,批次大小为64,最大迭代次数为10 000,由于实测数据较少,因此做5-折交叉验证。本地点云-遗传算法-粒子群优化(LPC-GA-PSO)算法中粒子群最大迭代次数设为200,遗传算法最大迭代次数为5,选择操作采用轮盘赌法,交叉概率为0.75,变异概率为0.05。动态图卷积神经网络DGCNN作为Pointnet网络的衍生版本,深化了对局部点云的信息采集,模型参数与Pointnet大体相同,只是确定近邻点数的超参数设为10。Pointnet+迁移学习方式如2.3.2节。试验结果如表3所示。
表3 不同算法苹果表型参数预测模型效果比较Table 3 Comparison of prediction models for apple phenotypic parameters with different algorithms
对比分析4种方法对苹果外部表型实测参数的估算结果,Pointnet+迁移学习比只用Pointnet网络的苹果体积、高度和直径的RMSE略高,而R2增加较多,这是因为实测数据较少,很容易导致模型过拟合,而通过在大量的模拟数据上训练仿真模型后再迁移到数量较少的实测数据上能够有效解决过拟合问题;Pointnet+迁移学习相较于LPC-GA-PSO算法,苹果体积、高度和直径的RMSE略高,而体积和高度的R2增加较多,这是由于实测数据和用于迁移训练的仿真数据分布不同,会导致试验结果具有一定的误差,但这些误差很小,在允许范围内。Pointnet+迁移学习算法相较于LPC-GA-PSO算法,通过神经网络学习点云数据的深层特征,使模型对数据的拟合程度和泛化性有了很大的提升。DGCNN+迁移学习的各项指标都很差,这是因为DGCNN作为Poinetnet的衍生版本,添加了边卷积操作,在动态更新图的同时,在语义上将点聚合起来以获取更深的局部点云信息,然而由于模型过于复杂,在处理一般规模数据时,尽管使用了迁移学习,但模型还是很容易过拟合。
本文提出的基于点云数据的苹果表型参数估算方法,通过Pointnet和迁移学习相结合,提供了一种在小样本情况下提高检测精度的方法,试验结果显示表型参数直径、高度、体积的预测准确率较高,模型拟合度也很好。
1)通过引入Pointnet网络,修改网络的输出层,使用回归模型代替原网络的分类模型,在实测苹果点云数据差异较大的情况下,建立的模型仍然能很好完成由点云到表型参数的预测。
2)针对实测数据采集困难等导致的实测数据量不足的问题,引入迁移学习方法,通过共享网络的特征提取层,在训练好的仿真数据模型的基础上,以一个较小的学习率模型参数迁移到实测数据模型中,对模型参数进行微调,实现对实测数据的预测,避免因实测数据不足而导致的模型过拟合问题,增加模型的可信度,提高实测数据的预测精度。
3)在训练仿真模型时,对输入的仿真点云进行角度切割,输入残缺率为50%的数据,在模型迁移时,迁移的实测数据为3个角度下拍摄的残缺率约为50%的点云数据,通过5-折交叉验证,证明该模型对从任意角度拍摄到的残缺率达到50%的点云数据仍然能够达到较高的估算精度。
基于Pointnet网络和迁移学习的苹果表型参数估算算法对于从任意角度拍摄的苹果点云数据的高度估算效果还有待进一步提高,后续采用Pointnet++对苹果的局部特征进行提取,研究在大规模数据的情况下使用Pointnet++和迁移学习网络对试验结果的影响,并进一步完善模型多视角点云数据的模型估算精度。期待最终的模型能通过Kinect相机拍摄到的点云作为输入,在不损伤苹果的前提下获取该数据,为以后在大型果园中无人机载Kinect相机快速、精准测量苹果表型参数提供可能性。