基于特征点邻域Hough变换的水稻秧苗行检测
2020-10-29王姗姗余山山张文毅王兴松
王姗姗 余山山 张文毅 王兴松
(1.东南大学机械工程学院, 南京 211189; 2.农业农村部南京农业机械化研究所, 南京 210014)
0 引言
作为精准农业的重要组成部分,农业机器人视觉导航技术越来越受关注[1-4],并已广泛应用于农作物种植、除草、施药、收获等[5-8]作业环节。水稻秧苗行检测可为插秧机的自动导航和水稻行间除草提供依据,是水田农业机械智能化的重要组成部分[9-10],促进了精准农业的发展。
目前,国内外专家学者主要对玉米、小麦、蔬菜等旱地作物的作物行检测进行了研究,对水田水稻秧苗行检测的研究极少。最小二乘法已被广泛用于作物行中心线提取[11],与Hough变换相比,最小二乘法计算简单、实时性好,但其准确性易受噪声影响,导致作物行中心线提取的鲁棒性差[12]。MONTALVO等[13-14]将最小二乘法应用于具有高杂草密度的玉米田作物行图像检测。JIANG等[15]在假设作物行间距相等的基础上,采用多个感兴趣区域(ROI)移动的方法将特征点进行聚类,该算法在高杂草密度的作物图像中可以成功提取特征点,但作物行等间距的前提条件使该方法在实际农田环境中应用受限。司永胜等[16]提出基于最小二乘法的早期作物行中心线检测算法,利用特征点的邻近关系对目标点分类,用最小二乘法对作物行的特征点集进行拟合,然而在分类过程中,当前点的选择对分类以及直线拟合有很大影响,容易受到噪声点干扰。ZHANG等[17]提出一种玉米田稳健作物行检测方法,该方法先采用基于Ostu的双阈值结合粒子群优化的改进分割算法将作物行从背景中分离,然后通过位置聚类算法和最短路径确认最终的聚类特征点集,最后采用最小二乘法拟合作物行。
Hough变换和一些原始变换形式已被广泛用于基于视觉的农业导航系统中的作物行检测[18-21],结合颜色特征和阈值处理将作物从图像中分割出来,通过Hough变换及其改进方法提取作物行的中心线,这适用于低杂草密度分布情况下的作物行检测。JI等[22]提出一种基于梯度的随机Hough变换算法,该算法可以有效地适应植株密度的变化,比标准Hough变换的速度更快,检测准确率更高。JIANG等[23]提出了Hough变换与消隐点约束相结合的算法。张勤等[24]提出一种基于最小核值相似区(SUSAN)的除草机器人导航方法,根据SUSAN角点提取秧苗特征点,使用改进的顺序聚类算法和基于已知点的Hough变换提取秧苗行中心线。Hough 变换受噪声影响小,鲁棒性强,但存在峰值检测难和计算量大等问题。
针对水稻秧苗行检测容易受到杂草噪声和农田环境光照变化等因素影响的问题,为提高秧苗行检测的鲁棒性和精度,本文基于卷积神经网络(Faster RCNN)获得秧苗特征点,提出一种基于秧苗特征点邻域的Hough变换算法,计算特征点邻域Hough空间的峰值,以解决Hough变换峰值检测困难的问题,从而准确提取秧苗行中心线。
1 材料与方法
1.1 图像采集
本研究使用的图像采集于江苏省盐城市的水稻实验田,选择机插秧苗作为研究对象,在秧苗的第1个杂草萌发期即机插后8~12 d,此时的杂草主要以禾本科和异型莎草科杂草为主,分别在晴天和阴天情况下,在水稻实验田采集不同位置(不同密度的杂草分布和秧苗生长状况)图像。
将佳能数码相机安装在可移动支架上进行静态图像采集,相机离地高度约1.0 m,相机中心线相对于垂直方向的倾斜角约为30°,相机随着支架移动以采集不同位置的水稻秧苗行图像。获得的图像通过 USB线传输到计算机,采集的原始水稻秧苗行图像的分辨率为2 592像素×1 728像素,以jpeg格式存储在RGB颜色空间,图1为不同情况下采集的水稻秧苗行图像。
图1 具有代表性的水稻秧苗行图像Fig.1 Representative images of rice seedling rows
1.2 软硬件环境
采用Windows 10系统,CPU为Intel i7-6900K,8核16线程,主频3.20 GHz,32 GB DDR4内存,英伟达GTX1080Ti显卡。采用软件为CUDA9.0、CUDNN7.1、Python3.6,Tensorflow 1.10 框架搭建深度学习环境,Visual Studio 2015配置OpenCV4.0图像处理库。
1.3 水稻秧苗检测及特征点提取
1.3.1图像预处理
2018年7月在江苏省盐城市的水稻实验田采集了约1 000幅水稻秧苗图像,采集的原始水稻秧苗行图像的分辨率为2 592像素×1 728像素,过高的分辨率导致增加训练参数和时间耗费,因此先对原始图像进行缩放,缩放为原分辨率的1/4,则缩放后的分辨率为648像素×432像素。采集图像的80%作为训练集,20%作为测试集。然后使用LabelImg工具对样本集中的水稻秧苗进行逐一标注,生成对应的xml格式的目标框位置文件。
1.3.2基于Faster RCNN的水稻秧苗检测模型
基于Faster RCNN[25]的水稻秧苗检测模型框架如图2所示。①使用13 Conv+13 ReLU+4 Pooling提取图像特征,生成一组特征图,其中Conv层的卷积核尺寸为3×3,填充为1,步长为1,Pooling层的卷积核尺寸为2×2, 步长为2,输出特征图的尺寸是输入图像的1/16,该特征图被共享用于后续Region proposal networks (RPN)层和全连接层。② RPN用于生成能够区分前景和背景的精确候选区域,RPN层通过Softmax分类锚点框属于前景还是背景,再利用Bounding box回归修正锚点框获得精确的候选框。③ROI Pooling 层利用RPN生成的候选框和VGG16得到特征图,从特征图中得到候选特征图(尺寸、位置由RPN生成),并通过Pooling层生成固定尺寸的输出。④Classifier层对ROI Pooling层形成固定尺寸的特征图进行全连接操作,利用Softmax进行秧苗和背景的分类,同时利用Bounding box回归操作获得秧苗的精确位置,完成秧苗目标识别和精确定位。
图2 基于Faster RCNN的水稻秧苗检测模型结构Fig.2 Rice seedling detection model structure based on Faster RCNN
秧苗检测中感兴趣区域搜索使用Faster RCNN 中的RPN 模块,锚点框的中心点坐标就是当前特征图的像素点映射到输入图像上对应区域的中心点,设置不同尺寸和不同长宽比可以在输入图像上获得不同尺寸的先验锚点框。本研究选择3种尺寸、3种长宽比,对当前特征图的每个点从原图中标记出9个锚点框。其中在生成锚点框时,先定义一个尺寸为16×16的基准锚点框,长宽比的参数设置为[0.5, 1, 2],根据输入图像中秧苗尺寸,设定3 种尺寸为 [2, 4, 8];经过尺寸和长宽比不同的组合,形成 [32, 32]、[16, 32]、[32, 16]、[64, 64]、[32, 64]、[64, 32]、[128, 128]、[128, 64]、[64, 128]共9种锚点框。
针对水稻秧苗数据集,需要把原始的多类检测模型修改为针对水稻秧苗检测的单类检测模型。水稻秧苗检测模型使用VGG16网络的13个卷积层提取水稻秧苗图像的特征,并在Classifier层保留VGG16网络的前两个全连接层,由于模型只检测单个类别,需要去掉VGG16网络的最后一个全连接层,如图2所示,Classifier层两个全连接层后的输出包括cls_score和bbox_predict,其中cls_score层用于分类,输出p=(p0,p1)表示属于背景和秧苗的概率;bbox_predict层输出Bounding box回归的位置偏差。
1.4 水稻秧苗行中心线识别
利用水稻秧苗检测模型得到水稻秧苗的特征点即预测框的中心点后,由于插秧机的前进方向不完全笔直,受地形坡度等影响,水稻秧苗行曲率较大。传统的Hough变换对曲率较大的作物行检测效果较差,本文提出一种基于特征点邻域的Hough变换算法,可以用来识别不同曲率的水稻秧苗行,并且对孤立的杂草噪声不敏感,相对于最小二乘法具有较好的鲁棒性。该方法主要包括基于特征点邻域的Hough图像计算和基于直方图投影的峰值参数计算。
1.4.1基于特征点邻域的Hough图像计算
Hough变换的主要思想是将直角坐标系下的直线映射为参数空间下的峰值点,假设直线方程为r=xcosθ+ysinθ,其中r表示该直线到原点的距离,θ表示该直线经过原点的垂线与x轴之间的夹角。Hough变换将x、y作为已知量,那么直角坐标系下的直线方程在参数空间表示为点(r,θ)。直角坐标系下的每个点对应参数空间的一条曲线,直角坐标系下的一条直线上有多个点,在参数空间对应多条曲线,这些曲线相交于一点,该点坐标值即为所求参数r和θ。
如图3所示,水稻秧苗预测框的中心点即为秧苗的特征点,用红色点表示。水稻秧苗检测模型得到的特征点不一定在一条直线上,可能分布于直线两侧,本文提出对秧苗特征点的邻域进行Hough变换,假设特征点的邻域是[xi-d,xi+d](图3中用蓝线表示,邻域长度设置为2d),以每个特征点为邻域中心,把特征点邻域内的所有点映射到Hough参数空间。
图3 特征点邻域示意图Fig.3 Schematic of neighborhood of feature points
特征点邻域的Hough空间计算方法如下:
(1)建立一个二维图像hough_2D,宽度方向表示距离r,高度方向表示角度θ,遍历所有水稻秧苗特征点的邻域,对每个邻域点按照θ从-45°到45°,精度为1°,计算出相应的距离r,并且每当有相同的距离r和角度θ出现时,hough_2D中对应位置(r,θ)的像素进行累加:p(r,θ)←p(r,θ)+Δp。获得的基于特征点邻域的Hough空间图像如图4所示。
图4 基于特征点邻域的Hough空间图像Fig.4 Hough space image based on feature point neighborhood
(2)然后对图像hough_2D进行阈值处理去除大部分噪声,首先计算图像hough_2D的像素最大值pmax,并以pmax的1/2作为阈值Tp遍历图像,根据图像的像素p(r,θ)和Tp的关系,如果p(r,θ) 图5 阈值处理后的图像hough_2D Fig.5 Hough_2D after threshold processing (3)最后对hough_2D进行形态学处理,去除一些孤立噪声,先进行腐蚀操作再进行膨胀操作。其中腐蚀操作去除噪声,消除小物体,膨胀操作平滑物体轮廓,连接沟壑。设置结构元素分别为3×3、5×5的矩形元素,腐蚀膨胀后的效果如图6所示,5×5的矩形结构元素过大,导致部分前景被消除,本文选择3×3的矩形结构元素对hough_2D进行形态学处理。 图6 不同矩形结构元素的形态学处理结果Fig.6 Morphological post-processing results of different rectangular structural elements 1.4.2基于直方图投影的峰值参数计算 对形态学处理的结果进行直方图变换,并对直方图进行垂直投影计算峰值区域的距离索引,然后在距离索引范围内对每个峰值区域进行聚类操作,具体步骤如下: 图7 hough_2D的距离直方图分布Fig.7 Distance histogram distribution of hough_2D (2)对直方图进行垂直投影,记录每个非零区域的距离索引,具体如下:设置非零区域的开始距离索引为bi,结束距离索引为ei,每次进入非零区域的距离为bi的值,每次进入空白区域的距离为ei的值。 (3)将开始距离索引值和结束距离索引值相近的2个区域合并,计算bi+1-ei的差值,如果该差值小于设定阈值Tr,则区域i和区域i+1合并为一个区域,最终得到的bk和ek分别保存了峰值区域的开始距离索引和结束距离索引。 (4)hough_2D在每个开始距离索引bk和对应的结束距离索引ek范围内进行聚类操作,统计每个峰值区域的像素最大值,以该值对应的像素作为种子点,寻求周围像素相同的点进行聚类,对聚类后的每个峰值区域求出质心(cxk,cyk),即为所求秧苗行中心线的参数(rk,θk)。 该算法得到的秧苗行中心线识别结果如图8所示。综上所述,基于特征点邻域Hough变换的水稻秧苗行检测流程如图 9所示。 图8 秧苗行中心线识别结果Fig.8 Recognition results of centerlines of seedling rows 图9 基于特征点邻域Hough变换的秧苗行检测流程Fig.9 Detection process of seedling row centerlines based on Hough transform of feature point neighborhood 图10 基于Faster RCNN的水稻秧苗检测模型的损失值曲线Fig.10 Loss curve of rice seedling detection model based on Faster RCNN 对标注好的水稻秧苗样本,采用在ImageNet数据集上训练得到的模型参数VGG16.ckpt,对基于Faster RCNN的水稻秧苗检测模型进行迁移学习,初始网络参数设置如下:初始学习率为0.001,权值衰减系数为0.000 5,动量系数为0.9,批尺寸设置为32,最大迭代次数设置为10 000次。训练过程中, 对算法的各项指标进行动态记录,随着迭代次数的增加,损失值的变化趋势如图10所示。训练集最初的损失值在4.5左右,开始时下降速度较快,迭代4 000次后,损失值在1.0到1.5之间振荡,之后损失值下降速度减慢,迭代6 000次后,损失值下降到1.0以下,迭代8 000次后,损失值在0.5左右振荡,最小损失值为0.25。 对于不同的置信度阈值,精度和召回率会发生变化,选取多个阈值,可以获得相应的精度和召回率。绘制精度-召回率曲线如图11所示。由图11可以看出,当召回率为0时,精度是1.0,当召回率逐渐增加到0.4时,精度变化幅度很小,从1.0下降到0.85左右,当召回率增加到0.5时,精度降低到0.8以下,根据精度-召回率曲线和坐标轴之间的面积,可以计算出秧苗的平均精度(AP)为0.484 2。AP值较低的原因为:以倾斜角度拍摄得到的原始图像中水稻秧苗之间有重叠,人工很难标注出完整的秧苗,标注框之间会有重叠(密集标注导致标注框数量较多),2棵水稻秧苗的分界对于模型来说没有很明确;秧苗的外观非常相似,预测出的秧苗框和标注框的重叠性多种多样,导致交并比(IOU)不高,AP值较低。虽然AP值较低,但是不影响后续秧苗中心线的识别。因为预测秧苗框的中心点反映了秧苗行的成行趋势,如果有杂草被误识别为秧苗,提出的基于特征点邻域的Hough变换算法对孤立的中心点(误识别的杂草)不敏感,具有较好的鲁棒性。 图11 基于Faster RCNN的水稻秧苗检测模型的精度-召回率曲线Fig.11 P-R curve of rice seedling detection model based on Faster RCNN network 采用测试集评估基于Faster RCNN的水稻秧苗检测模型的预测值和标签值的统计像素偏差,结果如表1所示。 表1 基于Faster RCNN的水稻秧苗检测模型统计偏差Tab.1 Statistical deviation of rice seedling detection model based on Faster RCNN 图12 基于Faster RCNN的水稻秧苗检测模型的测试效果Fig.12 Test effect of rice seedling detection model based on Faster RCNN 使用训练好的基于Faster RCNN的水稻秧苗检测模型对水田秧苗图像进行测试,测试效果如图12所示。 为了判断秧苗行中心线的识别准确性,需要人工标注秧苗行中心线作为衡量基准。人工标注的秧苗行中心线与算法提取的秧苗行中心线之间的夹角为误差角,该误差角用来衡量算法提取秧苗行中心线的识别精度。本文算法参数设置如下:d=10 cm,θ∈[-45°,45°],Δp=20。 对比本文算法和标准Hough变换对测试集中的200幅图像的识别准确率和算法平均运行时间,识别准确率的判断标准是单个秧苗行的识别精度超过3°,即认为秧苗行识别失败。测试集包括晴天采集的秧苗图像 60 幅,阴天采集的秧苗图像50幅,高杂草密度的秧苗图像40幅,低杂草密度的秧苗图像50幅,本文算法和标准Hough变换的性能比较结果如表2所示。 表2 不同算法的性能比较Tab.2 Performance comparison of different algorithms 本文算法是在秧苗特征点邻域的基础上通过直方图投影、种子点聚类操作对秧苗行在参数空间的峰值区域进行定位,通过表2可知,该算法对测试集的200 幅秧苗行图像的平均识别准确率达到92%,比标准Hough变换算法的平均识别准确率提升19个百分点,但算法运行时间达0.458 s,比标准Hough变换的运行时间高26 ms。后续需要考虑对算法进行优化改进,以提高算法的检测速度。本文算法在农机行驶速度不超过1.5 m/s时,可以满足每秒2帧的实时性要求。 对于测试集中不同杂草密度分布下的水稻秧苗行图像,对比本文算法和标准Hough变换对4个不同秧苗行的中心线识别精度,对比结果如表3所示。 由表3可知,本文算法对低杂草密度的秧苗行中心线的平均识别精度为0.460 5°,对高杂草密度的秧苗行中心线的平均识别精度为0.495 3°。标准Hough变换对低杂草密度的秧苗行中心线的平均识别精度为1.389 9°,对高杂草密度的秧苗行中心线的平均识别精度为1.461 3°。 图13从左至右分别是低杂草密度秧苗图像、高杂草密度秧苗图像、晴天秧苗图像和阴天秧苗图像。 表3 不同杂草密度分布下的秧苗行中心线识别精度对比Tab.3 Comparison of centerline recognition accuracy of seedling rows with different weed densities (°) 对于不同杂草密度分布的秧苗行图像,图13a为采用本文算法的秧苗行中心线识别效果。由图13a可以看出,本算法对秧苗行中心线的识别不受杂草噪声和光照变化的影响,具有较好的鲁棒性,识别出的4个秧苗行中心线和人工标注的中心线相比,都具有较小的角度偏差,并且对蓝色区域内的弯曲秧苗行也可以准确识别,但当秧苗行的曲率较大时,识别精度会降低。 图13b为采用标准Hough变换的秧苗行中心线识别效果。由图13b可以看出,标准Hough变换对于杂草密度分布不均和光照变化的情况,在一定的角度偏差范围内可以识别出秧苗行,其中部分秧苗行相对于人工标注的中心线产生较大偏差;尤其当秧苗行曲率较大的时候,此时秧苗特征点较为分散,标准Hough变换对秧苗行的检测结果具有较大的误差(蓝色区域所示)。 图13 不同杂草密度和光照条件下的秧苗行中心线识别效果对比Fig.13 Comparison of recognition effects of centerlines of seedling rows under different weed densities and light conditions (1)在杂草萌发期,建立不同光照条件、不同杂草密度和不同秧苗生长状况的水稻秧苗行图像数据库,采用基于Faster RCNN的目标检测模型对秧苗位置进行检测,以获得秧苗特征点。根据基于特征点邻域Hough变换识别秧苗行中心线,可以有效解决秧苗行周围背景噪声和杂草噪声的影响,对光照不均、秧苗行曲率较大的问题,具有较好的鲁棒性。 (2)通过对测试集200 幅图像进行测试可知,本文算法对秧苗行中心线的平均识别准确率为92%,高于标准Hough变换。 (3)采用本文算法和标准Hough变换对测试集中不同杂草密度分布下的水稻秧苗行图像进行了秧苗行中心线识别精度对比,结果表明,本文算法对不同杂草密度分布下的秧苗行平均识别精度小于0.5°,能够准确提取秧苗行中心线。2 实验
2.1 秧苗位置检测
2.2 秧苗行中心线提取
3 结论