基于卷积神经网络的国兰种类识别系统
Chinese Orchid Species Recognition System Based on Convolutional Neural Network
DOI: 10.12677/CSA.2020.1012248, PDF, HTML, XML, 下载: 371  浏览: 637 
作者: 张子赫:浙江农林大学,信息工程学院,浙江 杭州;赵吟吟:浙江农林大学,环境与资源学院,浙江 杭州
关键词: 国兰Inception-ResNet-v2网络图像识别AndroidChinese Orchid Inception-Resnet-V2 Network Image Identification Android
摘要: 针对兰花品种众多,外表相似,导致没法准确识别兰花的种类这一问题,本文构建了基于卷积神经网络的国兰识别模型,设计并实现了模型在移动端的应用。文中通过多种途径完成常见国兰数据集的创建,进而以Inception-ResNet-v2为卷积神经网络预训练模型,使用迁移学习技术完成模型训练,并基于Android平台完成系统的开发和测试。测试结果显示,对传统国兰图像分类识别准确率达到91.51%。
Abstract: Aiming at the problem that there are many varieties of orchids with similar appearances, which makes it impossible to accurately identify the types of orchids, a Chinese orchid recognition model based on convolutional neural network is constructed, and its transplantation to the mobile terminal is designed and implemented. First, this paper completes the creation of the common Chinese orchid data set through multiple channels, and then uses the Inception-ResNet-v2 convolutional neural network as the pretraining model, uses the transfer learning technology to complete the model construction, and develops and tests the system based on the Android platform. Through experiments and actual tests, the accuracy of classification and recognition of traditional Chinese orchid images reached 91.51%.
文章引用:张子赫, 赵吟吟. 基于卷积神经网络的国兰种类识别系统[J]. 计算机科学与应用, 2020, 10(12): 2346-2353. https://doi.org/10.12677/CSA.2020.1012248

1. 引言

随着时代的发展,人们越来越注重精神世界的培养。国人对于兰花的需求与日俱增,基于兰花的观赏价值以及药用价值 [1],加上国际市场的影响,我国兰花市场的发展十分迅速。根据海关数据统计,2017年我国兰花出口量约为六千万株,带来了巨大的经济价值。因而正确区分兰花的种类,确定其合理的价值十分重要。

近年来,深度学习发展迅速,基于各类神经网络的图像识别研究越来越广泛,然而由于数据量的缺乏,兰花方面的识别存在重大空缺。针对这一问题,本文通过网络搜集、实地拍摄和书籍扫描三种途径完成常见国兰数据集的创建,该数据集由春兰、蕙兰、建兰、墨兰、寒兰5类常见国兰种类构建得到。在此基础上基于迁移学习完成Inception-ResNet-v2 [2] 深度卷积模型的国兰识别训练,并将训练好的模型移植到移动端,验证兰花识别的效果。

2. Inception-ResNet-v2网络

Inception-ResNet-v2吸收了Inception V4和ResNet [3] 的优点,在ImageNet数据集上的测试更加准确。该模型将Inception-ResNet-A、Inception-ResNet-B、Inception-ResNet-C 3种Inception-ResNet块加入直连,从而使得通道多样化。相较Inception V4,Inception-ResNet-v2参数少,收敛快,同时对机器的性能要求也有一定的降低,可以在同实验环境下进行更高的参数设置;Inception-ResNet-v2设计了BN层,这样可以有效实现数据的输出不会发生偏移,数据规范化传输可以有效提高识别的准确度。该模型卷积核的体积很小,但是功能却很强大。Inception-ResNet-v2网络结构如图1所示。

3. 数据集

针对国兰图像数据集空缺的现状,本文通过中国兰花交易网下载、经典书籍《中国兰花精粹》扫描以及实地拍摄三种途径相结合初步获取5类3000余张国兰图像。经过筛选和预处理,保留1982张高质量的国兰图像进行数据集的构建。为解决因国兰图像不足造成的过拟合现象,本文采用水平翻转,随机裁剪,添加高斯噪声:对原始图像添加了30%的高斯噪声,图像亮度调节(调亮或者调暗),随机旋转变换(60˚、90˚、180˚、270˚)五种数据增强方式 [4] 对数据集进行扩充,最终得到12,150张国兰图像。以春建兰为例,数据增强前后对比如图2所示。

Figure 1. Inception-Resnet-v2 network structure

图1. Inception-Resnet-v2网络结构

注:a是未增强的图片,b~j是增强后的图片,对应的增强方法分别是水平翻转、随机剪裁、添加高斯噪声、调亮、调暗、旋转60˚、旋转90˚、旋转180˚、旋转270˚。

Figure 2. Comparison of original and enhanced images of Cymbidium tortisepalum var. longibracteatum

图2. 春剑兰图像增强前后对比图

4. 实验及结果分析

为检验模型效果,分别使用VGG16、VGG19、InceptionV3、InceptionV4、ResNet-50、ResNet-101、ResNet-152、InceptionResNet-v2,8种预训练的卷积神经网络模型进行兰花识别实验,实验方案编号记为1-8,实验结果如表1所示。其中卷积神经网络优化器均为Adam [5],迁移训练策略为重新训练预训练网络模型的全部网络层。

Table 1. Comparison of different CNN models

表1. 不同网络模型比较

表1中可以看出,ResNet-50网络模型训练结果准确率最低,而Inception-ResNet-v2最高,可以发现当模型深度逐渐上升时,模型的准确率是总体呈现上升趋势的,这也说明了卷积层的深度会对模型识别的准确率造成一定的影响,更深的网络结构会有更高的识别准确率。

本文使用识别效果最佳的Inception-ResNet-v2网络作为本文的预训练模型,设置初始学习率为0.01,批处理量为16,选取Relu [6] 函数作为激活函数,并在此基础上,使用Adam优化算法对网络参数进行优化,采用迁移学习方法重新训练网络所有参数层。

本文研究目标是要完成国兰图像分类识别问题,因此采用多分类交叉熵(Cross entropy)作为损失函数,其表达式如公式1所示:

C l o s s = 1 m j = 1 m i = 1 n y j i log ( y ^ j i ) (1)

式中,m为当前一批输入网络的国兰样本数量,n为国兰类别的总数, y j i 为国兰图像真实的标签, y ^ j i 为国兰图像预测的标签, C l o s s 为损失值。交叉熵刻画了实际输出概率与期望输出概率分布之间的距离,交叉熵的值越小,表示模型训练过程的中学习效果越好。

Figure 3. Loss curve of common Chinese orchid data set

图3. 常见国兰数据集损失曲线

图3训练结果可知,随着迭代次数的增加,交叉熵损失函数呈整体下降趋势,当迭代次数达到40,000步时,交叉熵损失函数基本完成收敛,故选取40,000步作为本模型训练的迭代次数。经测试,在迭代结束时交叉熵损失值为0.1165,经验证对应的准确率为91.51%,具有较高的识别准确率,可以辅助人们更好的识别兰花种类,达到预期目标。

5. 系统设计与实现

本文国兰识别系统的流程如图4所示,主要由图片获取模块和识别模块组成,最终由信息展示模块输出。通过前文对比实验结果展示,采用迁移学习训练Inception-ResNet-v2预训练模型的全部参数可以达到识别精度高并且训练时间短的要求,其中主要利用该模型卷积层的特征提取功能完成对国兰图像颜色花型等局部特征的提取。

此系统中,用户可以通过手机拍摄和相册上传两种途径将国兰图片上传到Web服务器端,此后服务端会通过国兰模型对接收到的图片进行识别分类。并根据识别结果将对应的国兰品种详情以及相应的养护知识一起打包发送给手机端屏幕显示。

Figure 4. Flow chart of Chinese orchid identification system

图4. 国兰识别系统流程图

5.1. 图像获取模块

图像获取模块主要负责国兰图像的采集 [7],以供识别模块调用识别,该模块需能调用智能手机的相机拍摄功能和手机本地相册读取功能,其工作流程如图5所示。

OpenCV提供的库函数可以完成图像采集部分,主要是由于它所在的图像获取模块由摄像头承接主要任务,而该函数可以很好地完成对摄像头的调用 [8]。OpenCV是一个可以在很多开发环境上进行运行的开源视觉库,这是由于很大数目的Java接口存在的结构,而且API接口函数获得方法比较简单即在线获得,还能很轻松的对Android应用主要使用的Android NDK [9] 库进行调用。结合JNI接口实现本地功能代码,由Android NDK对其进行编译,生成可由Java调用的动态库文件,该动态库文件可被打包编译,以实现国兰识别Android 程序。

5.2. 图像识别模块

图像识别模块的组成主要有三部分,包括模型的部署、结果的预测和信息的查询这几个部分。这一模块也可以算得上是本应用程序的核心模块,工作流程如图6所示。在接受到国兰图像后,服务器端会将收到的图像输入到国兰识别模型中去,然后根据预测出的结果到数据库中找寻对应种类的国兰信息和养护信息等,其中国兰识别模型部分由前文提到的改进的Inception-ResNet-v2网络国兰图像识别模型来承接。

Figure 5. Flow chart of image acquisition module

图5. 图像获取模块流程图

Figure 6. Flow chart of Chinese orchid identification module

图6. 国兰识别模块流程图

5.3. 信息展示模块

信息展示模块的组成相对简单,主要包含接受和展示两部分,工作流程见图7。接受部分首先需要判断网络的状况是否良好,如果网络连接有问题,则直接显示出错,并提示及时检查网络连接。如果检查网络状况正常,则接受从Web服务器端 [10] 传输来的关于国兰图像种类的详情以及对应养护知识,显示到屏幕上,完成本次识别操作。

Figure 7. Flow chart of the result display module

图7. 结果展示模块流程图

5.4. 系统界面

为了对该系统应用进行测试,并且对本研究的实时便捷性进行验证。使用型号为OPPO R9s PLus,搭载Android 6.0.1操作系统的智能手机来完成本次对系统的测试,如果发现不足,及时进行改进和调整。图8展示了系统运行的所有界面。整体页面设计相对简单清晰且易于操作,满足设计该应用程序的初衷。

主页面 拍照识别 国兰相册 待识别图像 花类详情 养护知识

Figure 8. Test chart of Chinese orchid identification system

图8. 国兰识别系统测试图

使用者点击开始识别之后,系统会跳转到相机功能页面进行拍照。拍照完成后,系统对接收到的兰花图像自动分类查询,并将对应的国兰种类信息等反馈到详情页面。或者根据需要选择本地相册中的兰花图像进行识别,只需在拍照识别界面点击左下角的相册按钮便可进入国兰相册界面进行选择,选定待识别图像后,点击确定按钮便可自动识别并获得对应的兰花种类详情和养护信息。也可以对相册中的待识别图像重新进行选择,只需点击重选按钮即可撤回操作。兰花详情页面,可以点击页面上的养护知识按获取该种类兰花更多的养护知识。实验显示,从选定图片到获得对应的种类信息大概需要2.5秒,表明该系统较快速便捷,达到了设计的预期。

6. 结束语

本文通过多种途径获取国兰图像完成了常见国兰图像数据集的构建,并且基于Inception-ResNet-v2网络和迁移学习优化训练完成国兰识别模型。经过实验表明,所设计的模型对兰花品种具有较高的识别准确率,填补了深度学习应用于国兰识别的空缺,同时Android端的应用能够达到辅助人们进行国兰识别的目的。通过多次实验验证,该系统在目前搭载的Android 6.0.1操作系统上具有较强的稳定性,识别准确率较为理想。但由于IOS操作系统的不开源问题,该系统的兼容性还有待进一步提升,这也是未来的研究的重点。

参考文献

[1] 邵伟丽. 福建省野生兰科植物种质资源调查与保育策略研究[D]: [硕士学位论文]. 福州: 福建农林大学, 2008.
[2] Szegedy, C., Ioffe, S., Vanhoucke, V., et al. (2016) Inception-v4, Inception-ResNet and the Impact of Re-sidual Connections on Learning. Thirty-First AAAI Conference on Artificial Intelligence, 4278-4284.
[3] He, K., Zhang, X., Ren, S., et al. (2016) Deep Residual Learning for Image Recognition. Proceedings of the IEEE Conference on Com-puter Vision and Pattern Recognition, Las Vegas, NV, 770-778.
https://doi.org/10.1109/CVPR.2016.90
[4] 杨明欣, 张耀光, 刘涛. 基于卷积神经网络的玉米病害小样本识别研究[J/OL]. 石家庄: 中国生态农业学报(中英文): 1-9.
https://doi.org/10.13930/j.cnki.cjea.200375, 2020-11-19.
[5] 汤烨, 陆卫忠, 陈成, 等. 基于Adam算法和神经网络的照度计算方法[J]. 照明工程学报, 2019, 30(2): 50-54.
[6] 郭子琰, 舒心, 刘常燕, 等. 基于ReLU函数的卷积神经网络的花卉识别算法[J]. 计算机技术与发展, 2018, 28(5): 154-157.
[7] 周毅敏, 陈榕. Dalvik虚拟机进程模型分析[J]. 计算机技术与发展, 2010, 20(2): 83-86.
[8] Sivkov, S., Novikov, L., Romanova, G., et al. (2020) The Algorithm Development for Operation of a Computer Vision System via the OpenCV Library. Procedia Computer Science, 169, 662-667.
https://doi.org/10.1016/j.procs.2020.02.193
[9] 岳智慧. Android平台上的细分插值算法研究[D]: [硕士学位论文]. 郑州: 郑州大学, 2019.
[10] 李群. 基于OkHttp的文件传输设计与实现[J]. 电子技术与软件工程, 2018(13): 180-181.