基于Faster R-CNN的田间西兰花幼苗图像检测方法

2019-08-13 01:42:30张春龙葛鲁镇谭豫之
农业机械学报 2019年7期
关键词:西兰花幼苗卷积

孙 哲 张春龙 葛鲁镇 张 铭 李 伟 谭豫之

(中国农业大学工学院, 北京 100083)

0 引言

中国是西兰花生产大国,总产量约150万t,占全球7%左右,随着种植面积的不断扩大,西兰花除草工作量逐年增大[1-2]。目前,我国除草作业主要采用化学除草与人工除草,在食品安全意识与劳动力成本提高的背景下[3],发展智能除草装备具有广阔的应用前景[4-6]。作为智能除草装备的核心技术之一[7],快速精准的作物识别是影响除草质量的关键因素。

近年来,科研工作者对自然环境下作物识别进行了深入研究[8-13]。陈树人等[14]提出基于颜色特征的棉花与杂草识别技术,采用R分量与B分量的标准差小于5作为判断苗草的阈值,对棉花识别的总体准确率为82.1%。HERRMANN等[15]利用高光谱成像技术获取麦田图像,并设计基于最小二乘法的分类器,分割小麦与杂草,对田间作物的分类准确率为72%。GARCIA等[16]在分割植物与土壤背景后,利用Otsu自动阈值分割法区分作物和杂草,该方法对作物的正确识别率为86.3%。张志斌等[17]研究了基于快速SURF特征的提取算法,该方法中立体视觉系统的左、右目作物图像正确匹配率分别为94.8%和92.4%。NIEUWENHUIZEN等[18]结合颜色与纹理特征,采用自适应贝叶斯分类器进行分类,该方法对固定光照和变化光照条件下甜菜的正确分类率分别为89.8%和67.7%。

上述传统识别方法主要根据经验,易受小样本和人为主观因素影响[19],无法找到通用特征模型,鲁棒性不强,很难用一种方法对复杂田间环境下的作物进行有效识别。相比传统方法,深度学习采用数据本身特征进行自我学习,对图像具有极强的表征能力,可以克服传统方法的不足。彭红星等[20]利用改进SSD模型,对自然环境下的荔枝、皇帝柑、脐橙和苹果进行检测,平均检测精度为89.53%。周云成等[21]提出一种基于深度卷积神经网络的番茄器官分类识别方法,分类错误率低于6.39%。

基于深度学习准确度高、普适性强的特点,本文采用Faster R-CNN[22]模型对自然环境下的西兰花幼苗进行识别。依据田间环境下西兰花幼苗图像特点,优化特征提取网络与超参数,建立一种基于深度卷积神经网络的西兰花幼苗图像识别模型。

1 数据材料

1.1 数据采集

试验图像于2018年4—5月采集自北京国际都市农业科技园,采集设备为Canon SX730 HS型相机,图像分辨率为1 600像素×1 200像素,共采集图像样本6 230幅。为保证图像样本的多样性,针对3块不同播种时间的试验田,分别采集西兰花幼苗除草期的作物图像。图像样本包含不同光照强度、不同地面含水率和不同杂草密度等情况,部分样本示例如图1所示。

图1 部分样本示例Fig.1 Examples of sample diversity

1.2 数据集建立

图像采集过程中虽然已考虑样本所处环境的多样性,但西兰花幼苗叶和茎的生长以及成像角度具有随机性,因此本文采用图像旋转0°、90°、180°和270°的方法进行数据增强,将总样本数扩大至4倍,提高训练模型的泛化能力。受样本集规模与训练次数的影响,深度卷积神经网络会对图像样本的高频特征进行学习,导致过拟合的出现。本文在图像样本上添加零均值特性的高斯噪声,使图像样本在所有频率上都产生数据点,可有效抑制高频特征,减小其对模型的影响。

将整体样本按照PASCAL VOC数据集格式进行划分,试验样本数据集包括训练集图像17 440幅,测试集图像7 480幅,总样本数为24 920。训练集从整体样本中随机选出,且与测试集互斥。为保证所得模型的可靠与稳定,训练过程中将训练集平均划分为n份,每次选取n-1份作为训练集,另外1份作为验证集,验证集上n次误差的平均值作为该模型的误差,最后采用测试集评估模型的泛化能力。

2 检测方法

2.1 Faster R-CNN模型框架

Faster R-CNN模型是对R-CNN[23]和Fast R-CNN[24]的改进,通过卷积神经网络提取候选框,同时加入多任务学习,使得网络训练过程中能够同时获得物体所属类别和位置。基于Faster R-CNN的西兰花幼苗检测步骤如下:

(1)利用特征提取网络提取图像的特征图,该特征图被后续候选区域(RPN)网络与Fast R-CNN网络共享。

(2)RPN网络通过Softmax分类器执行二分类任务,判断锚点(anchors)属于前景还是背景,并通过锚点回归得到候选框位置。

(3)Fast R-CNN综合特征图与候选框信息,判别前景所属类别,并生成最终检测框的精确位置。

Faster R-CNN模型结构如图2所示,Faster R-CNN用RPN网络代替Fast R-CNN中Selective Search方法实现候选框的提取,提高了检测的精度与速度。

图2 Faster R-CNN模型结构Fig.2 Faster R-CNN architecture

2.2 RPN网络

使用RPN网络提取候选框,使Faster R-CNN实现了端到端的物体检测。RPN网络是一个全卷积网络,在特征图传入RPN后,使用3×3的滑窗生成一个n维长度的特征向量,然后将此特征向量分别传入分类层与回归层。在分类层中,使用Softmax分类器对锚点进行前景与背景的判断。在回归层中,通过调整锚点边框的中心坐标与长宽,拟合出候选框位置。在训练过程中,RPN网络的损失函数[22]、分类层损失函数[22]与回归层损失函数[24]如下

(1)

(2)

(3)

(4)

(5)

式中L——RPN网络损失

Lcls——分类层损失

Lreg——回归层损失

i——锚点索引

ti——预测边界框坐标向量

Ncls——分类样本数

Nreg——回归样本数

pi——目标的预测概率

λ——权重参数

smoothL1——平滑函数

2.3 特征共享

RPN与Fast R-CNN为两个独立的网络,分别进行单独训练无法获得收敛结果。本文采用交替训练方法对网络进行训练。首先采用ImageNet的预训练模型对RPN网络中的卷积层进行参数初始化,获得图像通用特征,并生成候选区域框。其次,利用RPN网络输出的候选框对Fast R-CNN进行训练。然后,用Fast R-CNN卷积层参数训练RPN网络,仅更新RPN中特有网络层参数。最后固定共享卷积层,微调Fast R-CNN的全连接层,将RPN与Fast R-CNN统一起来,实现两个网络共享相同的卷积层。

3 试验设计与结果分析

3.1 试验平台

试验处理平台为台式计算机,处理器为Intel Core i7-8700k,主频3.7 GHz, 16 GB内存,500 GB固态硬盘, GPU采用NVIDIA 1080Ti,运行环境为Windows 10(64位)系统,Python 3.5.4,Tensorflow 1.8.0,CUDA 9.0.176版并行计算架构与cuDNN 9.0版深层神经网络库。

3.2 试验评价指标

采用平均精度(Average precision)作为目标检测的评价指标。平均精度与精确率、召回率有关,精确率和召回率的计算方法为

(6)

(7)

式中Pre——精确率Rec——召回率

TP——被正确划分为正样本的数量

FP——被错误划分为正样本的数量

FN——被错误划分为负样本的数量

绘制精确率-召回率曲线,曲线的横轴召回率反映了分类器对正样本的覆盖能力,纵轴精确率反映了分类器预测正样本的精准度。平均精度是对精确率-召回率曲线进行积分,积分公式为

(8)

式中AP——平均精度

平均精度体现模型识别效果,其值越大效果越好,反之越差。

3.3 试验设计

在模型训练中,特征提取器的选择可影响模型的检测精度与速度,随着特征提取器层数的增加,网络能够提取更高维度的样本特征,检测准确度应该同步增加,但是网络深度的增加会对各层更新信号造成影响,由于采用误差反向传播的方式,网络深度增加后,前层网络梯度变化非常缓慢,产生梯度消失问题。并且在网络层数增加的同时,模型的参数空间也随之扩张,巨大的参数量使得优化问题变得更加复杂,单纯地堆叠网络深度反而会出现更高的训练误差。

在训练一个深层网络时,假设存在一个性能最佳网络N,整体网络与网络N相比会存在多余层,训练结果希望这些多余层是恒等变换,即让一些层拟合恒等映射函数H(x)=x,其中x为输入变量,此时整体网络为最优网络。HE等[25]根据恒等变换的映射关系,提出残差网络(ResNet)结构。此模型使用残差块,如图3所示,通过加入残差通路,学习残差函数F(x)=H(x)-x。求解F(x)=0时,网络多余层实现恒等映射,H(x)-x过程可以去掉相同的主体部分,从而突出微小的权重变化。

图3 残差块Fig.3 ResNet block

这种改进能够有效解决梯度消失与训练退化问题,因此本试验采用ResNet50网络、ResNet101网络与经典的VGG16网络进行对比试验,结果如表1所示。

表1 特征提取器对比试验结果Tab.1 Comparison test result of feature extractor

为了降低模型的泛化误差,通常采用训练几个不同模型,然后让所有模型表决测试样例的输出,但当模型是一个庞大的神经网络时,会消耗大量的运行时间与内存。因此本文采用Dropout方式,在每个训练批次中,通过随机忽略一定比例的隐含层节点,来降低运行时间。由于被忽略隐含层节点是随机选取的,因此每个批次都在训练不同的网络参数,最后通过参数共享使模型的泛化误差降低。并且Dropout在网络训练过程中,可有效减少神经元之间的相互依赖,从而提取出独立的重要特征,抑制网络过拟合。

在网络训练过程中,通常随机忽略一半的神经元[26],即Dropout设置为0.5。但Dropout对平均精度的影响与数据集规模和训练次数有关,在本试验中,通过设置间隔的Dropout值来寻找最高的平均精度,如表2所示。

3.4 结果与分析

由表1可知,基于本文所用试验平台,使用网络层数最深、参数空间较小的ResNet101网络作为特征提取器时,可以保证在较快的检测速度下获得最佳的检测效果,其平均精度为90.89%,平均耗时249 ms。由表2可知,在使用ResNet101网络作为特征提取网络的基础上,设置Dropout值为0.6时,可以取得最佳的西兰花幼苗识别效果,其平均精度为91.73%,平均耗时248 ms。

表2 参数优化试验Tab.2 Parameters optimization test

为更好地显示卷积神经网络的运作流程,将特征提取的部分中间过程进行可视化操作,并将图像统一尺寸以便观察。如图4所示,随着网络深度的增加,特征图颗粒度增强,高维特征逐步凸显。可以看出浅层网络的特征,图4b~4e包括边缘和线条等细节,凸显局部信息。网络深层的特征是一种全局信息,图4g~4i具有更强的语义特征。经过卷积网络的多层特征表达,能够有效提取西兰花幼苗特征,降低噪声干扰,强化目标学习。

图4 卷积层特征图Fig.4 Feature maps of convolution layer

使用训练好的网络模型对复杂自然环境下的西兰花幼苗进行识别,结果如图5所示。针对叶片完整的西兰花幼苗具有良好的检测效果,但在检测虫蚀作物样本时,出现定位不准的情况,如图5i所示,降低了整体的平均检测精度。原因是图像采集过程中,田间的虫蚀作物较少,虫蚀样本占总样本的比例低,因此训练模型对其识别敏感度不足,可通过增加此类图像数量,提高本方法对虫蚀类型的包容性。

图5 测试结果Fig.5 Test results

综上可知,本文采用的Faster R-CNN模型具有较高的检测精度,对光照强度、地面含水率和杂草密度变化具有较好的鲁棒性,能够有效识别自然环境下的西兰花幼苗,且耗时较短,可满足智能除草装备对作物识别的要求。

4 结论

(1)提出了一种基于Faster R-CNN的自然环境下西兰花幼苗检测方法,通过卷积神经网络对数据本身特征进行非线性表达,能够从复杂数据中学习到西兰花幼苗的特征,增强了模型的鲁棒性。

(2)以ResNet50网络、ResNet101网络和VGG16网络作为特征提取器进行对比试验,确定了ResNet101网络为最佳特征提取器,并在该网络下,设Dropout值为0.6,使西兰花幼苗检测的平均精度达到91.73%,平均耗时为248 ms。

猜你喜欢
西兰花幼苗卷积
西兰花
种玉米要用“锌” 幼苗不得花白病
今日农业(2021年10期)2021-11-27 09:45:24
基于3D-Winograd的快速卷积算法设计及FPGA实现
从滤波器理解卷积
电子制作(2019年11期)2019-07-04 00:34:38
星级大厨
新青年(2018年8期)2018-08-18 02:39:58
基于傅里叶域卷积表示的目标跟踪算法
默默真爱暖幼苗
中国火炬(2015年12期)2015-07-31 17:38:35
一种基于卷积神经网络的性别识别方法
电视技术(2014年19期)2014-03-11 15:38:20
莴苣—西瓜—西兰花高效种植模式
长江蔬菜(2014年1期)2014-03-11 15:09:52
“五老”倾注心血 呵护“幼苗”成长
中国火炬(2013年3期)2013-07-24 14:15:06