基于SegNet与三维点云聚类的大田杨树苗叶片分割方法
2022-08-05胡春华计铭杰李羽江李萍萍
胡春华 刘 炫 计铭杰 李羽江 李萍萍
(1.南京林业大学信息科学技术学院,南京 210037;2.南京林业大学生物与环境学院,南京 210037)
0 引言
为了更好地培育出优质的杨树苗,对于杨树苗的生长状态监测具有较大的研究意义,杨树苗叶能反映杨树苗的生长状态,远程无接触测量其表型特征对杨树苗的生长监控具有重要意义。对于大田杨树苗,为准确测量杨树叶表型特征参数,杨树叶的准确分割是前提。目前远程测量植物几何表型参数的手段中,大多基于二维彩色图像、基于RGB-D、基于飞行时间法(Time of flight,ToF)以及基于点云数据等。
虽然目前基于二维彩色图像的植物叶分割方法较成熟[1],但大多数基于颜色的检测方法只有在图像颜色特征明显、图像背景简单的情况下才能取得更好的效果。当植物叶与背景的颜色相近以及叶重叠较多时,仅使用RGB图像很难检测单个植物叶。基于地面激光雷达在大田场景中采集植物[2-3]数据,该方法一般应用于范围较大的数据采集,价格昂贵。一些研究者采用基于SfM[4](Structure from motion)与MVS(Multi-view stereo)的三维重建方式用来获取植物整体的三维数据[5-6]。ROSE等[6]使用SfM与MVS算法对番茄图像进行三维重建,计算番茄的叶面积。ITAKURA等[7]对重建的植物三维点云基于分水岭算法来分割植物单个叶片,进而测量每个叶片的面积与倾斜角。该方法一般需要从目标周围不同的角度拍摄图像,生成的点云包含更完整、更密集的信息,但是三维重建的运算过程需要消耗较长的时间。BAO等[8]使用双视图立体三维重建,用于测量高粱的叶长、叶角度等,并且分析了不同的立体重建算法之间的相关性。但是,这种传感方式的立体重建算法较复杂。近些年,RGB-D相机价格便宜、体积小、使用方便、数据采集速度快,引入了三维空间信息能较好地解决重叠分割等难题,越来越多的研究者使用其获取数据进行植物表型研究。
经典的植物叶片分割算法主要有基于颜色空间信息[9-10],基于叶片点云空间信息来分割出单个叶片[11-14]。基于颜色空间信息叶片分割方法一般需要较为复杂的图像处理过程。研究者通常利用叶片的颜色特征分割植物与背景。然后采用如基于边缘检测的方法、分水岭算法或K-means等方法来分割叶片。经典聚类算法K-means聚类算法[11]、Mean shift[12]以及密度聚类算法(Density-based spatial clustering of applications with noise,DBSCAN)[13]被用于植物单叶点云分割,这些算法针对复杂环境不容易识别出目标,HU等[14]提出基于LCCP(Locally convex connected patches)与K-meas++点云枝叶分离算法分割树的枝干与叶片,该算法基于点云区域分割算法与聚类算法混合能较好地分割枝叶,但是也不能识别出叶与枝。尽管研究者提出了许多的叶片分割方法,在处理具有复杂背景的图像时,特别是背景与叶片颜色相同时,经典的颜色特征不适用,点云聚类分割算法难以识别种类。
随着大数据技术发展,以及计算机运算能力的提高,利用深层次的卷积神经网络来识别物体的想法被验证。KRIZHEVSKY等[15]设计的深层次卷积神经网络AlexNet夺得ILSVRC的冠军,性能大大超过传统识别方法。由此,深度学习计算机视觉领域产生了图像分类、图像分割、目标检测等任务。LONG等[16]提出了全卷积网络(Fully convolutional networks,FCN)的思想,利用卷积神经网络对图像中每一个像素进行类别判断,引出了卷积神经网络的语义分割研究领域。随后,研究人员在医学图像分割、视觉导航等场景中利用深度学习技术开展大量研究[17]。GIRSHICK等[18]提出了R-CNN,实现了利用深度学习进行目标检测。之后,又对网络的结构进行优化,提出了Fast R-CNN[19],提升了R-CNN的检测速度与精度。REN等[20]在Fast R-CNN的基础上提出了Faster R-CNN,进一步优化网络性能。实例分割将以上任务集成化,具有速度快、提取特征深和鲁棒性强的优势,因此该技术已经在农业研究中广泛应用[21-22]。其中应用较多的方法为Mask R-CNN[23],实现了以较高准确度对图像中每个物体进行像素级分割,但是该算法在分割密集目标时容易受到邻近目标的干扰,产生预测区域的重合,这会增大表型参数预测误差。语义分割的目标是对图像中每一个像素进行分类,与实例分割不同的是,该算法并没有分离同一个类的实例,而是只考虑图像中每个像素的类别。FCN去除了网络任务中的全连接层,改为全卷积层,采用上采样的方式将图像还原到原始尺寸,分割图像中容易丢失细节且边缘模糊。BADRINARAYANAN等[24]提出了SegNet网络模型,SegNet基于FCN,是对VGG16网络结构进行修改而得到的语义分割网络,增强了图像分割的效果,通过端到端、像素到像素的训练实现目标分割。
本文采用RGB-D相机采集大田杨树苗的彩色RGB图像、深度数据以及RGB-D融合数据,针对融合数据采用语义分割算法SegNet对目标区域进行提取,并提出结合三维点云数据空间的几何距离kd-tree法分割出单片杨树叶。
1 数据采集
采集样本为江苏省泗洪县陈圩林场大田种植的南林3804杨树苗,生长时间约80 d,数据采集时间为2020年7月21—25日。采集设备为Kinect V2相机,离地1.3 m左右,固定于相机三脚架上。因为深度相机工作距离为0.5~4.5 m,深度相机无法采集到距离小于0.5 m的点,过近的点在深度数据中的值为0,颜色则会显示为黑色,经多次实验分析,工作距离为1.5~2.5 m效果较好,为更清晰地提取出重叠杨树叶,尽可能使目标在采集图像中像素多,因此,本次采集样本时相机距离杨树苗1.5 m左右。采集的样本图像既包括高度密集种植的杨树苗,也包括稀疏种植的杨树苗。为获得大量的样本图像,使用VC++编写采集图像程序,编程环境为Visual Studio 2015。同时采集RGB、深度图像以及RGB-D图像,均为1 068组。由于彩色与深度相机的位置不同,拍摄的图像不对齐。为了准确提取杨树叶与其几何表型特征,首先将彩色图与深度图进行匹配。图1a为RGB原图,分辨率为1 920像素×1 080像素,图1b为深度图像,图1c为配准后彩色图像,分辨率均为512像素×424像素。
图1 配准前后的彩色图像与深度图像Fig.1 Color image and depth image before and after registration
2 基于SegNet与kd-tree杨树苗叶片分割
本文使用语义分割先从配准后的彩色图像中检测所有的叶片像素区域,然后将茎与叶从图像中分离。为分割出单片杨树叶,对分割出的叶区域进行三维点云重构,在三维点云空间,使用kd-tree聚类法来分割出单片树叶。
2.1 SegNet 算法原理
SegNet是一种深度卷积神经网络,能够提取深层和抽象的特征,具有较好的图像分割性能。SegNet的组成包括编码器和解码器,最后是一个像素级的分类层,结构如图2所示。编码器网络由13个卷积层组成,对应于VGG16网络中的前13个卷积层。该算法抛弃传统卷积网络中常使用的全连接层,以便在编码器输出的最深处保留更高分辨率的特征映射,大大减少了SegNet编码器网络中的参数数量。每一个编码器层都有一个相应的解码器层,因此解码器网络有13层。
图2 SegNet网络结构Fig.2 Structure of SegNet
编码器网络中的每个编码器都与滤波器组进行卷积,以生成特征图。接着将特征图批量标准化。然后,对特征图上的每个元素使用线性整流函数(ReLU)。最后为宽度2×2的滤波器、步长2的最大池化层。
编码器处理结束后,解码器将特征信息映射到原图像,对每一个点进行分类。在解码器中,首先进行上采样,将最大池化缩小的图像尺寸增大。然后用反卷积层增强特征映射。最终,解码器的输出被送入多分类的softmax分类器,独立地产生每个像素的类别概率。
从图3可以发现,对于包含多株杨树苗的图像,图3a为配准后的彩色图像,通过SegNet算法能够识别出大多数的叶片与茎。如图3b所示,可以较好地将杨树叶与茎区分开。如图3c所示,像素较为稠密的叶片大部分被保存了下来,少部分像素较为稀疏的叶片被识别成了背景。
图3 SegNet对多株杨树苗图像的识别效果Fig.3 Leaf segmentation results for multiple poplar seedlings using SegNet
2.2 杨树叶区域点云重构算法
为了分割出单片杨树叶,特别是重叠杨树叶,本文将SegNet分割出的杨树叶彩色图像与深度图像融合转换为三维点云,再使用三维点云聚类方法进行单叶分割。
利用深度相机的内参将深度图像转换为三维点云的公式为
(1)
式中i——点云序号
N——点云数量
(xi,yi,zi)——像素i的三维坐标
(ui,vi)——像素i在深度图像坐标系下的坐标
D——深度图像
(Ux,Uy)——红外相机主点的像素坐标
fx——红外相机的X方向焦距
fy——红外相机的Y方向焦距
2.3 基于kd-tree的杨树叶单叶分割算法
基于SegNet检测的杨树叶像素区域并没有对单叶进行分割,所以本文采用点云聚类来分割单叶。为了进行单叶聚类,首先用式(1)将图像转换为三维点云,然后使用欧几里得kd-tree聚类算法来聚类。欧几里得kd-tree聚类算法原理如下:
(1)为输入点云数据集P创建一个kd-tree表示。
(2)建立一个空的集群C列表,需要检查点队列Q。
(4)当所有pi∈P的点都处理完后,所有点都是点集群C列表的一部分,算法终止。
3 实验
将数据分为训练集、验证集、测试集,作为深度学习的数据集。训练集共641组图像,验证集共214组图像,测试集共213组图像。采用标注软件VIA(VGG image annotator),该软件基于网页进行标注,对环境没有较大的依赖,使用方便。程序运行环境为Nvidia GTX 1080Ti GPU处理器,内存为32GB RAM,操作系统为Ubuntu 18.04系统。
大田种植杨树苗有的种植比较稀疏,有的种植比较密集。因此,为了验证分割方法对不同情况的有效性,本次实验进行包含单株、多株杨树苗的图像的叶片分割效果测试,比较不同深度学习算法的分割效果。然后对语义分割检测出的杨树叶片像素点转换到三维空间,采用三维点云kd-tree聚类算法进行单叶分割。针对单叶分割的阈值设定问题,进行了多次实验,以选取合适的阈值参数。
3.1 性能分析
训练网络选择VGG16,训练使用sgdm随机梯度下降法,动量为0.9,学习率为0.001,最小批大小为2,训练次数设置为2 000。为了验证模型的性能,本文使用准确率来评估分割性能,考虑分割结果中的正确点和错误点,突出反映了重叠叶片的分割效果。利用交并比表示目标的测量结果和目标实际位置的重合度。SegNet模型检测结果的准确率与交并比如表1所示。由表1可知,SegNet模型分割的杨树叶区域与茎区域效果均优于经典FCN模型。
表1 SegNet与FCN模型的检测性能分析Tab.1 Detection performance of SegNet and FCN model %
3.2 单叶聚类阈值选取
图4 不同阈值欧几里得聚类算法对单株杨树苗叶片的分割结果Fig.4 Leaf segmentation results of single poplar seedling using Euclidean clustering at different thresholds
图5 不同阈值欧几里得聚类算法对多杨树苗叶片的分割结果Fig.5 Leaf segmentation results of multiple poplar seedlings using Euclidean clustering at different thresholds
经过SegNet获得的叶片区域需要采用kd-tree聚类算法分割出单个杨树叶,由于点过于稀疏的叶片难以清晰地观测到,为了保留能够实际观测到的叶片,去掉较小的叶片与噪点,设置过滤阈值为100,用于去除点数小于100的簇,保留点数大于100的簇。图4、5为杨树苗图像进行单叶分割的结果,可以发现,随着阈值的增大,将距离相近的重叠叶片聚为同类的情况越来越多。除此以外,还出现了不同株杨树苗叶片之间的重叠问题。
由图4、5可知,经kd-tree聚类算法的处理,大部分的叶片都能利用距离分离,少部分的叶片由于本身的点云较稀疏,只识别了小块区域,这种情况在阈值较小时更为明显。阈值选择过小时会造成过分割。阈值为7 mm时,如图4a、5a能较好地区分开单片叶,但是部分稀疏点云叶片未被保留。随着阈值的增大,算法会将空间距离较近的叶片聚到一起,如图4b所示,阈值为8 mm时,上侧的2个叶片被聚为一类。阈值为9 mm时,算法将上侧的3个叶片聚为一类,如图4c所示。由图5可以发现,随着阈值的增大,将距离相近的重叠叶片聚为同类的情况越来越多。除此以外,还出现了不同株杨树苗叶片之间的重叠问题。然而阈值为8、9 mm时,能将左侧点较稀疏的叶片整体保存下来,虽然导致了相邻的叶片识别为同一叶片。阈值为8 mm时,如图5b所示,该阈值下叶片没有较多的过分割,也没有将过多的相连叶片聚为同类,该阈值的聚类效果取得了综合平衡。如果阈值选择过大,则会造成聚类到大量的相连叶片,如图5c所示,左侧右侧叶片均聚类为同一叶片。
为更好地选择合适的阈值,对叶片分割准确率与召回率进行了进一步分析。不同阈值对应叶片分割效果如表2所示,阈值为7 mm时,获得叶片准确率与召回率较低,阈值为8 mm时,获得的准确率虽然比阈值9 mm时低,但召回率较高。综合叶片分割显示结果与叶片分割率分析,阈值8 mm对于单株与多株杨树苗分割效果较好。
表2 不同阈值对应的叶片分割效果Tab.2 Leaf segmentation performance at different thresholds %
4 结论
(1)为获得叶片的三维点云数据,对相机进行了标定,并对采集的彩色图像数据RGB与深度数据进行了对齐处理,获得RGB-D融合的数据。
(2)设计了适合叶片区域与树干区域分割的SegNet网络结构,对样本区域进行大量的训练,并与FCN进行了对比分析,本文的SegNet模型对叶、茎检测的准确率分别为94.4%、97.5%,交并比分别为75.9%、67.9%,而FCN对叶、茎检测的准确率分别为86.9%、92.3%,交并比分别为61.7%、59.2%,结果表明本文设计的SegNet模型优于FCN模型,适合杨树枝叶区域分割。
(3)为获得单个杨树叶,对叶片区域进行了三维点云重建,采用基于kd-tree的欧几里得聚类算法分割出单个杨树叶。为获得准确的距离分割阈值,分析了阈值为7、8、9 mm时的点云欧几里得聚类算法对分割叶片效果的影响,表明阈值为8 mm时综合效果最优,能够较多地分割出单个叶片,并且较少的出现过分割现象。