APP下载

基于深度学习的自然环境下花朵识别

2019-07-05郑玉龙赵明

计算技术与自动化 2019年2期

郑玉龙 赵明

摘   要:基于自然环境下的花朵识别已经成为了现在园艺植物以及计算机视觉方面的交叉研究热点。本文的花朵图像数据集是利用手机直接在自然场景中当场拍摄的,采集了湖南省植物园内26种观赏花朵的2600幅图像,其中还包括同一品种不同类别相似度很高的杜鹃,郁金香等花朵。设计了一种由3个残差块组成的20层深度学习模型Resnet20,模型的优化算法结合了Adam的高效初始化以及Sgd优秀的泛化能力,该优化算法主要是根据每次训练批次以及learning rate来进行转换调整,实验结果表明比单独使用Adam算法正确率高4到5个百分点,比单独使用Sgd算法收敛更快。该模型在Flower26数据集上,通过数据增强识别率可达到 96.29%,表明深度学习是一种很有前途的应用于花朵识别的智能技术。

关键词:深度卷积神经网络;残差网络;花朵识别;随机梯度下降

中图分类号:TP391;S605                                      文献标识码:A

Deep Learning for Flower Identification in Natural Environment

ZHENG Yu-long?覮,ZHAO Ming

(College of Software Engineering,Central South University,Changsha,Hunan 410075,China)

Abstract:Rapid identification of flower plants has become a hot topic in the cross-study of horticultural plants and computer vision. The flower image dataset of this article was photographed directly on the spot using a mobile phone in a natural scene,and 2600 images of 26 ornamental flowers in Changsha Botanical Garden were collected,including azaleas and tulips with similar similarities in different categories. A 20-layer deep learning model Resnet20,consisting of three residual blocks is designed. The model optimization algorithm combines Adam's efficient initialization and Sgd's excellent generalization ability. The optimization algorithm is mainly based on each training batch and learning rate to adjust the conversion,the experimental results show that the correct rate is 4 to 5 percentage points higher than the Adam algorithm alone,and it converges faster than using the Sgd algorithm alone. This model is based on the Flower26 dataset,through the data enhanced recognition rate can reach 96.29%,which shows that deep learning is a promising intelligent technology for flower recognition.

Key words:deep convolutional neural network;residual network(Resnet);flower recognition;stochastic gradient descent(SGD)

花朵識别是园艺学科以及农林等行业生产经营非常重要的工作,像花朵识别这样类似的植物分类学是一项对日常生活很有意义的研究课题,这些植物分类学的分类依据主要是依据植物的外形特征,包括花朵、叶子、枝条、树皮、果实等特征。因此,花朵识别也可以算是植物分类学的重要的一部分。由于生活条件的改善,人们开始越来越关注周边的环境,对身边花朵的种类也越来越有兴趣,因此花朵识别的需求也日益增多。但花朵种类繁多,同一类花朵也因生长时间、生长环境还有各种基因变异的影响,导致花朵的形态各有不同,甚至差异很大,因此花朵识别一直都是人工智能识别领域中很有挑战性的一项研究。

由于现在硬件条件及数据集的改善,复杂的模型被提出用于花朵的自动识别。随着智能手机的快速普及和微软识花[1],形色[2]等移动应用的出现,已经获得了数百万张花朵等植物照片。基于移动的花朵自动识别对于现实世界的社会生态监测是必不可少的。但是这些软件大都不能识别同一品种不同类别的花朵,而本文Flower26数据集包括了几种相识度很高的同一品种不同类别的杜鹃等来进一步提高花朵识别的细致分类。

目前,人们在花朵识别方面的研究工作已经有很多。文献[3]Nilsback和Zisserman就在2010年提出了一种用视觉词包来描述颜色、形状、纹理等特征的方法。在2017年Sun Y,和Liu Y等就在文献[4]中提出了使用Sgd算法的深度卷积网络[5]来进行植物识别,文中为防止梯度爆炸和消失采用的是残差网络来进行植物识别,并取得了不错的效果。在文献[6],Zhang C和 Liu J等人将Harr特征与花图像的SIFT特征相结合,用非负稀疏编码方法对它们进行编码,并对它们进行分类。Hsu T H和Lee C H等在文献[7]中提出了花朵识别中加入交互操作,就是通过很多复杂的人工操作来提高系统的识别率。

为了克服数据集缺乏自然场景花朵图像和人工选择特征的难题,受到图像识别[8]领域关于深度学习[9]的启发,通过手机在自然环境下获得了Flower26数据集。该数据集包含长沙省植物园内26种观赏花朵的2600幅图像,其中還包括同一品种不同类别相似度很高的杜鹃,郁金香等花朵。

1   网络架构

网络架构是以Resnet网络结构为原型,Resnet通过建立前面层与后面层之间的“短路连接”来减少损失,从而加强训练中梯度的反向传播,训练出更深层次的卷积神经网络模型,用以实现更高的准确度。Resnet[10]架构在很大程度上已经不再需要去精心设计特征,而是让神经网络[11]自身去学习重要的特征。但是针对不同的任务,还是需要用不同的目标函数去保证学习方向的正确性。

2.1   基本的残差网络结构

残差结构单元主要是利用标识映射的快捷连接,快捷连接就是跳过一层或多层的连接,一个有快捷连接的前馈神经网络可以实现原始的底层映射。本文模型首先需要构建一个基本的残差模块,就是图1中的Weight layer,这个模块包括一层卷积层,接着是一层批标准化层,最后是一层激活层。可以看到图1中下面的那个layer没有激活层,所以需要在函数体内做一个判断来实现。批标准化层的作用是对输出参数归一化,这样可以使网络更易训练。模型中的卷积层加入了L2正则化[12],这样可以保证模型的泛化能力有一定的提高。

图1表示成公式的话就是,假设需要的理想输出定义为H(X),新加的非线性层F(X)就等于H(X)-X,那么最开始的输出X就变为了F(X)+X。公式表示如下:

残差模块就是上述公式中的公式(1),其中的x表示输入,y表示输出,F(x,wi)表示要学习的残差输出。图1中有两层网络,用F = W2 δ(W1 x)表示,其中的δ表示ReLU激活层[13]。而Wx是表示线性的卷积操作,ReLU是非线性的操作。

1.2   总的resnet网络结构

构建深层神经网络模型时会遇到瓶颈结构问题,就是当网络结构层数[14]很深时,用1x1,3x3,1x1这样三个卷积层代替两个3x3卷积层(就是图1中的两个Weight layer层),1×1层可以负责尺寸的缩减和恢复,其中第一个1x1层是用来降低维度的,第三个1x1层又可以用来增加维度,这样就可以使3x3的卷积层拥有较小的输入和输出维度。这样可以使用较少的参数来获得更多的层抽象。本文的花朵识别模型,搭建的简要结构如下图2:

由于花朵数据集Flower26的每种花朵是100张图片,所以ResNet使用一个20层的小号版就足够使用,还可以减少运行时间。总的模型结构主要分为五大部分,像图1中的那种结构称为一个building block,第一层是输入层,第2到7层属于层的叠加,每一个循环体内都是在搭建一个building block,第8到13层中其中的首层strides =2,这样输出张量就是16*16*32,而输入张量是32*32*16,相当于对输入又做了一次卷积操作,使得其shape和正常卷积层的shape保持一致,这样才可以保证顺利执行add操作。第14到19层操作类似。

不管是卷积层还是pooling层,图片经过该卷积层或pooling层后的大小计算公式为:s=(sy+2*sp-sc+1)/ss。其中s表示图片处理后的大小为s*s,加上filter的数量sf,结果为s*s*sf,sy代表的是原图片大小为sy*sy,sp是指padding的数量,sc就是卷积核的大小是sc*sc,而步长就是ss。

2   网络训练

以开源的神经网络框架Keras为基础,本文实验中的Keras是基于TensorFlow的,以Resnet网络结构为模型。训练花朵识别模型时,为加快训练速度以及防止过拟合,优化算法中结合了Adam和Sgd两种优化算法,残差模块中加入了BN层,可以加强模型的泛化能力。

2.1   训练集预处理

用深度学习来识别花朵需要从大量样本中学习花朵特征,若样本集不具备代表性,很难选择出的特征。本文以自然环境下拍摄的花朵数据集Flower26作为训练和测试数据集。Flower26不同于很多公开的数据集,而是自己用手机拍摄的自然环境下的花朵,数据集包含在一个文件夹中,里面的子文件夹为花朵名字,子文件里面是每个类别的花朵照片100张,默认设置前70张花朵图片为训练集,后面30张花朵图片为测试集。本次采集的图像中有很多复杂背景,还有光照因素等因素会对花朵识别有不同程度的干扰。如下图3中的花朵背景,包含很多的草和其他不需要识别的花朵,还有右边的图片背景较暗,可能会对花朵识别的准确度识别会产生一定的影响。

Flower26花朵数据集包括2600张自然环境下的花朵照片,对于高大的乔木花朵,图像是从地面的一个低角度拍摄的。低矮的灌木花朵是从高角度拍摄的。其他观赏花朵是从水平角度采摘的。所以研究对象的大小可能会有一个数量级的变化(例如,一些图像只显示花朵,而另一些则显示出整棵植物的距离)考虑到照片数量问题,可以对数据集Flower26先做数据增强,比较常见的操作就是旋转图片,对图片做部分剪切,改变图片色差,改变图片尺寸等,通过这些操作增强训练集的数据,随着数据集的增大可以更好的提取图片特征,泛化模型,防止模型的过拟合。数据集增强后对其再进行训练,可以保证模型能有更好的效果。图4中的两张花朵图片从左至右依次是旋转图片,部分剪切图片的主要应用,还包括一定的角度旋转和平行移动等操作。

2.2   训练参数及算法

实验参数主要根据Epoch来调节learning rate的大小,然后适时切换 Adam和Sgd算法。保证训练前期拥有Adam的快速初始化以及训练后期拥有Sgd更好的泛化能力。算法伪代码如下:

上述代码中的Adam和Sgd是根据Epoch切换使用,算法的转换过程是根据Epoch设置自动完成的,因此它并不会引入更多的超参数。本文主要通过原有的参数Epoch来分批设置学习率和切换Adam和Sgd算法,本实验在前10Epoch用了Adam算法,之后切换为Sgd算法,Adam和Sgd算法的实现方法就是代码里体现的那样。发现实现较SWATS[15]更简便,依旧比Adam和Sgd算法单独作用的效果更优,实验结果对比如图6所示。

3   实验结果和分析

实验环境主要为:处理器为英特尔 Core i5-6200U @ 2.30 GHz,8 GB内存,显卡是Nvidia GeForce 930 M(4GB),Windows 10 64位操作系统。在这样实验环境配置下,基本可以满足花朵识别模型的性能要求。

3.1   各个花朵识别率

下表显示的是26类花朵的各自的识别率,其中包括一些类似的同品种花朵,像满山红和映山红就极其相似。

通过表5各花朵的识别率可以看出同一种类很相似的花朵对识别的正确的影响并不大,比如图5左侧前四类就属于同一品种不同类别的花朵,可见模型的可使用性。有些识别率较低的花朵图片可能是由图像清晰度或者图片中对应花朵所占的整张图片环境下比例过小,从而造成识别出错,如图3中背景复杂图片的例子,图片中包含了很多其他的东西,花朵所占比重并不大,测试时花朵的识别率可能会出现偏差。

3.2   结果对比

对比算法主要是Adam,Sgd以及Adam和Sgd结合的算法,对比效果图如下:

由图可知,三种算法是数据未增强时Epoch=50内的正确率,数据增强后,正确率会提高将近10个百分点,达到96.29%的识别率。图中可以看出Adam初始化确实比Sgd快的多,前50Epoch以内,Adam也始终高于Sgd。由于实验中Adam和Sgd结合的算法前10Epoch设置的是Adam,可以看出,在第5Epoch的时候还是会有相交的地方,后面才慢慢稳定领先,主要是由于Sgd的泛化能力优于Adam,就是Adam加上Sgd对测试集的预测能力会高于Adam单独作用。

4   结   论

Adam和Sgd优化程度还可以进一步加大,精確度也可以随着每种花朵数据集的增加会有所提高。如果能在一个算法中实现每一Epoch都可以拥有Adam快速初始化和Sgd的泛化优点那就更好了。本文数据集模型的参数文档对学术界开放,可在百度网盘链接访问或者下载,训练的参数文档链接如下:https://pan.baidu.com/s/1AB-AJfnQc9HyZKq8xRcQvw。查看这些模型参数可以作为其他花朵识别研究进行迁移学习的初始化工作,加快研究进程。在今后的工作中,Flower26数据库将由更多的花朵物种在生命周期的不同阶段和更详细的注释中扩展。深度学习模型也将从分类任务扩展到产量预测、昆虫检测、病害分割等。

参考文献

[1]    微软亚洲研究院,中科院.微软识花[EB/OL].https://www.microsoft.com/en-us/research/pr-oject/flowerreco-cn/,2016.

[2]    杭州大拿科技股份有限公司.形色[EB/OL].http://www.xingseapp.com/,2016.

[3]    NILSBACK M E,ZISSEMAN A. Delving deeper into the whorl of flower segmentation[M]. Butter worth-Heinemann,2010.

[4]    SUN Y,LIU Y,WANG G,et al. Deep learning for plant identification in natural environment.[J]. Computational Intelligence & Neuroscience,2017,2017(4):1—6.

[5]    IOFFE S,ZEGEDY C. Batch normalization: accelerating deep network training by reducing internal covariate shift[J]. arXiv preprint:1502.03167,2015.

[6]    ZHANG C,LIU J,LIANG C,et al. Image classification using Harlike transformation of local features with coding residuals[J]. Signal Processing,2013,93(8):2111—2118.

[7]    HSU T H,LEE C H,CHEN L H. An interactive flower image recognition system[J]. Multimedia Tools & Applications,2011,53(1):53—73.

[8]    HE K, ZHANG X, REN S,et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016:770—778.

[9]    SCHMIDHUBER J. Deep learning in neural networks[M]. Elsevier Science Ltd,2015.

[10]  HE K,ZHANG X,REN S,et al. Identity mappings in dResidual networks[M]. Computer Vision ECCV 2016. Springer International Publishing,2016:630—645.

[11]  YOSINKI J,CLUNE J,BENGIO Y,et al. How transferable are features in deep neural networks[J]. Eprint arxiv,2014,27:3320—3328.

[12]  SMIRNOV E A,TIMOSHENKO D M,ANDRIANOV S N. Comparison of regularization methods for imageNet classification with deep convolutional neural networks [J]. Aasri Procedia,2014,6(1):89—94.

[13]  HE K,ZHANG X,REN S,et al. Spatial pyramid pooling in deep convolutional networks for visual recognition[J]. IEEE Trans Pattern Anal Mach Intell,2014,37(9):1904—1916.

[14]  KIM Ji-won,KWON LEE J,MU lEE K. Accurate image super-resolution using very deep convolutional networks[C]//Proceedings of the. IEEE Conference on Computer Vision and Pattern Recognition,2016:1646—654.

[15]  KESKAR N S,SOCHER R. Improving Generalization Performance by Switching from Adam to SGD[J]. arXiv:1712.07628, 2017.