CNN在农田杂草图像识别的可行性探讨
2018-11-26张旭王斌张旭
张旭 王斌 张旭
摘要:机器学习识别算法如果需要达到较高的识别精度,需要根据需求采用相应的算法。本文阐述了机器学习的背景,以及相关的基本原理,详细介绍了卷积神经网络中对数据逐层的特征提取,建立模型及其改进优化。针对农田中杂草因为不能准确识别,尝试运用CNN来检测图像中农田杂草位置,对其可行性进行探讨,在一定精确度上的能够达到杂草图像的识别。
关键词:机器学习;卷积神经网络;图像识别
中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2018)22-0187-03
在20世纪,现代农业虽然在肥料技术、灌溉技术、机械化耕作技术的促进下不断发展,满足了全球急剧增长的人口对粮食的需求,但同时也存在一些问题,例如:农作物产量受到田间杂草的影响极大。本文主要探讨机器学习算法在农业除草防虫害应用的可行性猜想。
1 国内外研究现状
1.1机器学习研究现状
机器学习[1]是一种演进的计算算法,旨在机器通过从周围环境中的学习来模拟人类智能。机器学习被认为是大数据时代的最重要的应用之一。基于机器学习的技术已经成功应用于从模式识别、计算机视觉和医学应用的各种领域。
从本质上来说,机器学习是一种用于程序来分析数据集合的方法,机器学习和数学中的概率统计联系十分紧密,理论上来说,如果一个识别算法要想达到目标预定精确度,是需要大量的输入样本,即训练样本。我们在处理大样本的实际问题时,很可能由于样本集合中的质量不高,极大影响其泛化能力,而在处理小样本问题上具有重要意义。机器学习的一般框架一般由样本,背景知识作为学习算法的输入,当二者经过学习宣发的训练后,产生目标概念的描述,并对其进行识别。
1.2农业除草现状
农田杂草影响农作物产量的一个重要因素。据估计,全球15亿hm2耕地每年杂草危害就造成76.3亿美元的损失,占病、虫、草、鼠所造成的总损失(243.7亿美元)的1/3,仅粮食就损失1.25亿t,足够2.5亿人生活一年[3]。目前由于不能精确去除杂草,大规模的大面积的化学除草剂使用带来的问题有:农产品的农药残留超标,影响食品安全;杂草的抗药性大大增加,二次除草难度加大等等。
2 采用方法以及算法
2.1 基于机器学习的图像别算法基本原理
人的大脑在处理图像时,在意识不到的情况下就完成了对图像的处理。而机器在处理图像时是把完整的图像打碎成像素矩阵,每个矩阵中的位置记录相应的颜色码。卷积神经网络(Convolutional Neuron Networks,CNN)由若干个卷积层及全连接层组成,并且包括相关权值和池化层,CNN 的这种结构能够充分利用数据的二维结构,使得识别图像具有较高的准确率。
2.2 卷积神经网络(CNN)
CNN由一个输入层和一个输出层组成,以及多个隐藏层。 CNN的隐藏层通常由卷积层,合并层,完全连接层和规范化层组成。惯例是将过程描述为神经网络中的卷积。在数学上它是一种互相关而不是卷积。一般一个基本的神经网络基本包括以下几层:卷积层(Convolutional Layer),池化层(Pooling Layer)和全连接层(Fully Connected Layer)
1) CNN卷积层(Convolutional Layer)
卷積层将卷积运算应用于输入,并将结果传递给下一层。卷积模拟个体神经元对视觉刺激的反应[7]。 每个卷积神经元仅处理其接受场的数据。每个卷积神经元仅处理其接受场的数据。由于与图像相关的非常大的输入,每个像素都是相关变量,所以即使在浅(与深度相对)架构中,所以需要非常多的神经元。卷积运算为这个问题提供了一个解决方案,因为它减少了可用参数的数量,从而使网络更深入,参数更少。例如,考虑一个大小为5×5的图像,和一个3×3的卷积核。这里的卷积核共有9个参数,就记为 吧。这种情况下,卷积核实际上有9个神经元,他们的输出又组成一个3×3的矩阵,称为特征图。第一个神经元连接到图像的第一个3×3的局部,第二个神经元则连接到第二个局部具体如图2所示。
上面例子中的9个神经元均完成输出后,实际上等价于图像和卷积核的卷积操作。
2) CNN池化层(Pooling Layer)
池化(pool)的意思是降采样(downsamples),其目的是为了减少特征图。由于在卷积层之后我们会得到很大的纬度特征,我们通过池化层将特征分割成若干个区域,选择对其进行去最大值或者平均值,从而得到维度较小的新特征。池化层进行的运算一般有以下几种:最大池化(Max Pooling),均值池化(Mean Pooling),高斯池化和可训练池化。
3)全连接层(Fully Connected Layer)
全连接层将一层中的每个神经元连接到另一层中的每个神经元。它原则上与传统的多层感知器神经网络(MLP)相同
全连接层和卷积层可以相互转换:对于任意一个卷积层,要把它变成全连接层只需要把权重变成一个巨大的矩阵,其中大部分都是0 除了一些特定区块(因为局部感知),而且好多区块的权值还相同(由于权重共享)。相反地,对于任何一个全连接层也可以变为卷积层。
3 采用机器学习中CNN算法实现
3.1 收集制作农田杂草图像库
为进一步提高分析的精确度,把目标的检测问题直接转换为分类问题,即:杂草和其他目标,数据的处理工作有采集大量的图像信息,并且为图片进行分类编号编写xml文件[4]。在实际情况中的农田杂草图像都是采集于传感器的,这里为了方便算法的可行性的验证,我们直接利用网络爬虫爬取农田中带有杂草的图片。首先进行图片数据的清洗工作,把不符合实际需求的图像删除。
3.2 CNN在各层上对杂草图像分析
当建立的图像中的图像进入CNN时,CNN就会得到图像中的特征,之后通过池化层,去掉重复的特征,这样就可以提高计算效率,去掉不必要的重复计算。CNN开始只能获得图片的边缘,纹理等底层信息,之后不断的卷积,逐渐可以获得一些复杂的特征,最终获得杂草的特征信息。
3.2.1 卷积层上的分析方法
由于我们在输入图像时,网络中的每一个神经元对应着一个像素点,我们把杂草图片抽象成如下图3所示的网格:
网格中的每一个格子都代表这一个像素点,利用卷积核将原始图片进行转换。对于卷积核来说,如图4:
橙色矩形所示的像素点集合想要变成一个数字的话,需要我们定义一个类似于y=Ax+B 其中x就是橙色小块。y为转化后的输出。系数是A就是卷积核。首先定义好一个权值矩阵,也就是卷积核来进行矩阵内积运算,用来提取图片中的特征。这里我们选取局部原始图片说明方法如图5所示。
例如,上面的卷积核操作结果中所有列中第三列的绝对值之和最大,说明原始杂草图片上对应的区域有一条垂直方向的特征,并且像素数值变化幅度较大,若我们变换卷积核,再次进行计算,会得到全新的操作结构以及全新的特点,所以卷积核的起到一种杂草特征提取的作用。所以CNN的卷积层在理论上是可以进行杂草特征分析的。
实际中输入是一定区域大小(width*height)的数据,和滤波器filter(带着一组固定权重的神经元)做内积后等到新的二维数据。具体来说,左边是图像输入,中间部分就是滤波器filter(带着一组固定权重的神经元),不同的滤波器filter会得到不同的输出数据,比如颜色深浅、轮廓。相当于如果想提取图像的不同特征,则用不同的滤波器filter,提取想要的关于图像的特定信息:颜色深浅或轮廓。如图6所示。
3.2.2 池化层上的分析方法
在这一层上,我们主要是尝试CNN中池化层上杂草图片识别的可行性进行探讨。池化层上,我们的目的是通过降采样的方法减少参数,对卷积层的结果再次进行压缩,方便我们进一步对特征进行提取,减少数据的处理量。
1)我们首先采用最大池化(Max Pooling)方法,即通过去窗口中的像素网格中的最大值。现在我们结果如图7所示:
由于不同的卷积核会提取不同的特征,虽然取最大值会舍弃大量的像素点的信息,但是由于卷积层已经能够提取出相应的特征,舍去的特征对我们的特征提取并没有太多的影响。进过这一层的计算后,样本图片像素规模会大大减小,参数也相应得减少。
实际的结果也说明了上述分析,如图8:
2) 我们还可以尝试使用补零方法(Zero Padding),其目的是为了使每次卷积后或者池化后的像素矩阵等我大小不变,如下图所示:
3.2.3 全连接层上的分析方法
在这一层上,我们一个基本的卷积操作已经完成,在多层卷积和填充后,我们需要以类的形式输出。卷积和池化层只会提取特征,并减少原始图像带来的参数。然而,为了生成最终的输出,我们需要应用全连接层来生成一个等于我们需要的类的数量的输出。仅仅依靠卷积层是难以达到这个要求的。理论上杂草的识别在卷积过程中可行,在全连接层上也是可行的。
实际结果我们在图片中标出的目标都能够识别出来,如图10。
4 结束语
本文尝试使用机器学习中卷积神经网络尝试对一定农田场景中的杂草进行识别,在一定程度上说明了机器学习有推动现代农业的发展潜力,同时本文使用的算法也在一定车广度上可行。但对于复杂场景下农田杂草的准确识别还需进一步的研究。
参考文献:
[1] 何清,李宁,罗文娟,等.数据下的机器学习算法综述[J].中国计算机学会人工智能会议,2013.
[2] Terry,P.J.The Proceedings of Second International Weed Control Congress[J].Copenhagen,1996,601- 609.
[3] 衣世东.基于深度學习的图像识别算法研究[D].信息工程大学.
[4] 韩凯,张红英.一种基于Faster R-CNN 的车辆检测算法[J].西南科技大学学报,2017,32(4).
【通联编辑:唐一东】