马志艳,张徐康,杨光友
(湖北工业大学农业机械工程研究设计院,武汉市,430068)
目前,国内联合收割机智能化应用程度相较于国外发展较慢,德国CLAAS公司已在联合收割机内实现水稻含杂率实时检测分析[1],而国内仍依赖于人工称重法来实现对水稻含杂率的检测。该方法不仅效率低下,在实际收割过程中,由于驾驶员不能得到实时的含杂率信息反馈,还会产生收割评价指标下降导致的“软故障”[2]。因此,联合收割机收割过程中的含杂率实时检测研究对农机智能化发展有着重要意义。
近年来,图像处理技术在水稻杂质识别中有着较大进展。Mahirah等[3]采用双光源视觉系统,并利用颜色阈值可有效检测水稻杂质。苏忆楠[4]基于水稻和茎秆杂质的形状、颜色与不变矩等特征建立模型,结合BP算法对杂质进行识别,其正确率在90%以上。陈进团队[5-6]利用水稻与茎秆、枝梗杂质在HSV空间的差异性对水稻杂质进行识别分割在实时性上取得较好成果;该团队还结合U-Net模型对茎秆进行分割其茎秆识别准确率可达到87.16%。
基于掩膜的区域卷积神经网络特征(Mask regions with CNN,Mask R-CNN)是He等[7]提出的一种目标检测方法。岳友军等[8]利用Mask R-CNN对苹果进行分割,试验结果表明该网络可较好的应用于农业中。本文依据所采集图像中茎秆杂质的形状与位置特征对Mask R-CNN进行改进,利用该网络训练后模型对茎秆杂质进行分割,并进行试验验证其性能。
本文的试验对象为深两优136水稻,均为2019年10月雷沃RG50联合收割机收获于试验武汉市黄陂某水稻试验基地,收割机额定喂入量为5 kg/s,水稻作物密度为2.08 kg/m2,联合收割机收割过程中平均行走速度为1.2 m/s,割幅为2 m,平均割茬高度为15 cm,拍摄时水稻籽粒平均含水率为21.6%。
本试验采集3 000张大小为512像素×512像素的含茎秆杂质的水稻图像,格式为jpg,并用labelme标记工具进行人工标定。其中包括2 400张训练集、300张测试集以及300张验证集。因细小枝梗杂质质量在实际含杂率中占比非常少,因此本试验主要针对茎秆杂质进行标定与分割。
深度神经网络需要大量训练样本以保证模型性能,数据过少易导致网络过拟合。本试验使用图像增广技术,通过对训练集样本采用镜像、旋转、Retinex色彩增强、高斯噪声与模糊处理,扩增训练集样本至四倍。以此解决上述问题,并能有效降低模型对某些属性的依赖,从而提高模型的泛化能力[9]。
Mask R-CNN自提出以来,在目标检测与分割上取得良好效果,其整体框架如图1所示,其中残差网络(Residual network, ResNet)与特征金字塔网络结合(Feature pyramid networks,FPN)作为特征提取网络[10],融合高层特征与低层特征得到具有多维度特征的特征图,并将其共享至区域生成网络(Region proposal networks,RPN)与区域特征聚集层(RoIalign)。RPN以特征图作为输入,得到含茎秆杂质锚框(Anchor)与该锚框对应分数,并利用非极大抑制值(Non-Maximum suppression,NMS)去除分数较低锚框[11]。由于RPN产生的锚框尺寸不同,使用RoI Align将不同尺寸锚框映射成固定区域尺寸后输入全连接层(Fully connected layer,FCL)与全卷积网络层(Fully convolution network,FCN)。FCL输出含水稻边框回归精确边框位置和所属类得分,FCN输出茎秆杂质区域掩膜[11]。
图1 Mask R-CNN整体框架
2.2.1 ResNet网络优化
He等[10]在2015年提出ResNet网络,作者将训练过程中层拟合函数的过程转化为学习残差函数,以此有效解决了以往浅层神经网络增加层数时产生的训练退化问题,并在特征提取上取得较好效果。但该网络仍会存在网络越深,模型复杂度越高,计算量越大的问题。因此XIE等在ResNet基础上进行优化,提出通过拓扑方式,将通道分解再归并的方法解决上述问题。本文对原始Mask R-CNN中ResNet层进行改进,如图2所示。
(a) 残差块示意图 (b) 改进后残差块示意图
2.2.2 RPN层优化
RPN层根据特征图生成所有可能含茎秆杂质区域的目标框,并采用传统NMS对目标框进行筛选[12-13]。由于传统NMS可能对水稻杂质图像中黏连处或位置较近处茎秆产生误判,因此引入高斯函数对NMS进行优化[14],该函数会衰减与最高得分检测框M有重叠的相邻检测框分数,传统NMS如式(1)所示,优化后检测框得分如式(2)所示。本文针对茎秆杂质形状特征,RPN层锚框比优选为(1∶1,1∶3,3∶1),锚框尺度选用(64×64,128×128,256×256)。图3(a)、图3(b)分别为改进前后锚框示意图,可见改进前锚框对茎秆杂质两端框选仍有遗漏,而改进后锚框对茎秆框选更加完整。
(1)
(2)
式中:si——当前检测框得分;
Si——当前检测框最终得分;
M——当前目标候选框;
Mi——第i个候选框区域;
IoU(M,Mi)——Mi与M的面积交集与面积并集之比,表示二者间重叠率;
σ——高斯函数中预定义参数。
(a) 改进前锚框框选示意图
(b) 改进后锚框框选示意图
2.2.3 RoI Align层优化
RoIPooling在对区域特征图进行池化时,常常会存在量化误差[15],而Mask R-CNN中采用双线性插值法减少了该部分的误差如式(3)所示[16]。由于水稻茎秆图中,水稻谷粒与茎秆黏连情况较为严重,较小的量化误差仍会对结果产生较大影响,因此本试验选用二重积分法进一步减少池化层中存在的量化误差,如式(4)所示。
(3)
(4)
式中:bin——待池化特征块;
N——待池化特征块划分块数;
F——特征块数;
ai,bi——RoI区域分块后线性插值所得块横、纵坐标值;
x1,y1,x2,y2——RoI区域左上角、右下角坐标值。
2.2.4 损失函数优化
由于水稻与水稻茎秆重叠黏连时,两者边缘特征较为接近,因此该部分边缘特征会导致训练时间较慢,且最后分割掩膜对边缘容易不敏感[17]。本文选择在在损失函数中加入边缘损失Ledge,首先利用二阶微分Laplace算子对训练样本中标定好的茎秆掩膜卷积求得实际边缘,并将其加入训练集,在损失函数中,依据对预测掩膜采用Laplace算子求得的预测边缘与实际边缘对比,求得边缘损失,为防止其他掩膜边缘影响所检测掩膜边缘损失,选择平均二值交叉熵为边缘损失函数,如式(5)所示。
(5)
式中:qi——像素点的预测概率;
qi*——该像素点是否为边缘像素点,若是则为1,否则为0。
则该改进后Mask R-CNN网络总损失函数如式(6)所示。
L=Lclass+Lbox+Lmask+Ledge
(6)
式中:Lclass——分类损失;
Lbox——边框回归损失;
Lmask——掩膜损失。
本文分割模型使用Tensorflow深度学习框架,使用的编程工具及软件运行平台为anaconda3、spyder4、CUDA10.1、keras2.2.4、Tensorflow1.13.1、Python3.6.8。算法运行硬件环境为CPU I9-10750H、GPU RTX2060 6 g、16 g内存。
为了能达到较优效果模型,本试验训练模型分为两个阶段。第一阶段为预训练阶段,从加州大学欧文分校(University of CaliforniaIrvine,UCI)数据库中可获取种子数据集(Seeds date set)和水稻灾害识别数据集(Dataset for field crop disease identification),其中含有大量水稻谷粒数据,选用该数据集进行训练可得到模型初步拟合的权重参数和语义特征信息。第二个阶段为正式训练阶段,采用所得图像增广后训练集进行训练,以测试集为泛化误差评判依据,为防止信息泄露,选用验证集做最后模型评估。
试验正式训练阶段优化调整参数包括学习率(Learning rate,LR)和上述预训练阶段所得初步拟合的权重参数。当LR较高时,会有益于迭代更新速度的增加,但不利于找到最优解;LR较低时,可能导致模型陷入局部最优解而无法打到全局最优,因此本试验先采用较大LR寻找全局最优解,后续选择较小LR,期待以此达到模型全局最优解。本试验预先设置LR为0.01,选择小批量梯度下降法对LR进行调整优化,当两次迭代之间变化小于0.001,则以1/5比例降低LR。试验中,选择batch size=1,RPN batch size=256,将epoch设置为100进行训练,并得到最终分割用模型。
以3.2节中所设定参数分别对改进前后Mask RCNN进行训练,改进前后训练过程中损失值变化曲线如图4、图5所示。由图4可知改进前网络在迭代100次时损失值趋近于0.3,而改进后网络在迭代至100次时损失值趋近于0.25,优于原始网络。
图4 原始Mask R-CNN训练过程中损失值变化曲线
图5 基于改进Mask R-CNN训练过程中损失值变化曲线
为验证改进后Mask R-CNN模型对水稻谷粒中茎秆杂质分割的有效性。本试验先将经过改进的Mask R-CNN与未改进Mask R-CNN进行对比。然后选择与现有分割效果较好的算法进行对比,并得出试验结论。
由于需要对茎秆杂质分割结果做出评价,选用精确率P(Precision)与召回率R(Recall)两个指标对分割结果进行量化评价。并选取F1值作为分割结果综合评价指标,如式(7)~式(9)所示。
F1=2P×R/(P+R)
(7)
P=TP/(TP+FP)
(8)
R=TP/(TP+FN)
(9)
式中:TP——分割后图像中分割正确的茎秆杂质上的点;
FP——分割后图像中茎秆杂质上的点误判为背景的点;
FN——分割后图像中背景上的点误判为茎秆上的点。
训练后模型对512像素×512像素中茎秆杂质分割结果如图6所示,图像1中间处细长茎秆在原始Mask R-CNN中分割效果较差,而改进后掩膜覆盖较好;图像2中茎秆重叠处改进Mask R-CNN模型分割效果优于原始模型;图像3中细长茎秆在原始Mask R-CNN中未被正确识别,而改进后模型识别效果较好。图像4中下方被水稻部分遮掩茎秆原始Mask R-CNN 模型未能准确识别,而改进后Mask R-CNN模型分割效果优于原始模型,但在该茎秆上方与水稻重叠处有轻微过分割现象。
图6 分割结果
从未使用过的验证集与测试集中随机挑选100幅图像,分别用文献[5]、文献[6]、原始Mask R-CNN与改进后Mask R-CNN对水稻中茎秆杂质进行分割,计算精确率、召回率与计算所得F1值,并记录各算法平均处理时间,结果如表1所示。
表1 4种算法分割结果对比Tab. 1 Comparison of segmentation results of four algorithms
由试验结果可知,文献[5]结合MSRCR与HSV颜色模型对杂质与水稻进行分割识别在处理时间上有明显优势,单张图片处理时间仅需2.88 s,但对于颜色相近的谷物茎秆易造成误识别,综合评价指标为71.64%。文献[6]中采用改进U-NET模型对水稻茎秆杂质分割结果表现较好,综合评价指标F1可达到88.07%。本试验中改进后Mask R-CNN网络综合评价指标F1为91.12%,单张处理时间为3.57 s,相较于改进U-NET模型有一定优势,且明显优于原始Mask R-CNN。
1) 本文提出一种基于改进Mask R-CNN的水稻中茎秆杂质分割方法。采用拓扑方式对ResNet中残差模块进行改进提高网络召回率;针对茎秆杂质特征,对RPN层中锚框尺寸进行优选,并优化锚框选取方法;针对图像粘连情况,采用双重积分法对RoI Align层进行优化;最后针对边缘分割精度较差问题,引入边缘损失计算。试验结果表明改进后模型明显优于原始Mask R-CNN。
2) 为了对分割结果进行量化评价,采用F1对精确率和召回率进行综合评价。训练后模型对茎秆杂质分割识别准确度可达91.12%,平均处理时间为3.57 s。
3) 改进后Mask R-CNN模型检测精度较高,速度基本满足联合收割机作业中实时检测要求,为含杂率实时检测落地奠定基础,在下一步研究中还可一步优化分割模型,提高检测准确度。