基于MobileNet-SSD的蝶类昆虫识别算法
2021-06-05杨颖
杨 颖
(浙江农林大学 信息工程学院,浙江 临安311300)
0 引 言
神经网络,命名为MobileNet[1]。其能够有效的减少网络层间的计算量,同时保证目标识别的精准度。
昆虫是世界上数量最多的物种,已被认定的就有150多万种,约占全球生物的80%。蝴蝶属于昆虫的一种,种类繁多,经科学家估计蝶类昆虫的数量大约在1.6万~2万种之间。由于蝴蝶的种类较多,通过人工对蝶类昆虫进行种类的鉴定识别及分类,较为耗时。目前,对蝶类识别的实际市场需求日益增加,以现有的分类学专家和研究人员数量远远不够。通过便捷简单的检测识别操作,帮助昆虫知识储备不充足的广大农林从业者快速识别蝶类昆虫具有重大意义。
得益于信息技术的飞速发展,科研人员已实现了通过机器学习自主识别图像,从而代替人脑对图像蕴含信息进行识别。卷积神经网络也由此而生,并且在当今的学术研究中被广泛应用,但其往往在硬件资源有限的设备上没有优势。对于嵌入式设备平台的应用,比如移动设备与机器人,需要匹配更轻量、更高效,同时又能保持高精度的网络模型。因此,Google针对移动设备等嵌入式设备,提出一种轻量级的深层
1 基于MobileNet-SSD的目标检测
MobileNet-SSD目标检测算法,是以MobileNet作为具体的网络结构,使用MobileNet神经网络结构替换传统SSD算法当中的VGG16的卷积神经网络结构,用来提取特征,再结合SSD目标检测的一种算法[2]。SSD[3]以VGG16的卷积神经网络结构作为基础,增加4个卷积层来提取特征信息,其沿用了YOLO[4]目标检测思想:一次完成回归边框和分类,再加入Faster R-CNN[5]中,使用anchor的思想来提升识别准确性。SSD通过结合这两种目标检测算法的优点,使其在保证高效的识别速度的同时,还能使识别准确性达到较高的水平。
MobileNet的网络结构中,第13层卷积层是其结构中骨干网络中的最后一层。如图1所示,MobileNet-SSD网络结构中前13层卷积层的结构与MobileNet的网络结构一致,而MobileNet-SSD是在第13层卷积层后面,增加8个卷积层用来进行检测。MobileNet-SSD目标检测算法将MobileNet以及SSD的优点相结合,在计算量小、测量速度快的前提下,还能保证检测目标精度准确。
图1 MobileNet-SSD模型结构图Fig.1 MobileNet-SSD model structure diagram
2 实验过程与分析
2.1 蝶类昆虫数据集建立
经过收集、过滤特征残缺及分辨率过低的图像,本文共收集16种蝶类的1 615张图像,数据集主要来源于开源的利兹蝴蝶数据集[6]。由于本文所收集的图像样本数量有限,有些种类的蝴蝶样本甚至还不到100个,而深度学习模型通常需要通过大量的样本数据学习才能提取有效的模式。因此,通常都会增加神经网络的深度和广度,需对数据进行数据加强操作。数据增强[7]可以有效解决样本量过少,过拟合问题[8]。经过数据加强,将16种蝶类的1 615张图像扩充至17 622张图像,见表1。将数据增强后的图像集进行特征提取,并使用labelImg框架[9]进行特征标注[10],标注后的数据集按照voc2007格式制作成所需数据集。
表1 蝴蝶种类及其数据增强扩充之后样本数量Tab.1 Butterfly species and their data are enhanced and expanded after the sample size
2.2 蝶类昆虫识别实验结果
本研究在Windows系统64位,显卡配置为RTX2080TI,利用深度学习框架TensorFlow对卷积神经网络进行搭建,设置模型参数见表2。基于MobileNet-SSD算法进行蝶类图像识别。模型检测时间及模型训练结果见表3、表4。
表2 模型部分参数设置Tab.2 Some parameter settings in the model
表3 蝶类目标检测时间Tab.3 Butterfly object detection schedule
表4 蝶类图像目标检测结果Tab.4 Table of experimental results of object detection for butterfly images
2.3 基于移动端的蝶类昆虫识别程序开发
将训练模型以Web App的形式植入移动端,开发出识别蝶类昆虫的应用。通过在嵌入式移动端设备上对蝶类进行识别检测,获取快速精准识别蝶类昆虫的方法。Web App的形式可以同时植入Android、iOS系统,开发一套代码,就能够快速实现多端应用。
蝶类识别系统主要由移动端功能设计、服务端数据库以及服务端接口设计调用组成。通过移动端手机的拍照功能,对蝶类昆虫进行拍摄或者从相册中对蝶类图片进行选取识别;将蝶类昆虫图像通过服务端接口上传;服务端调用训练模型脚本,获得实验检测结果以及检测识别时间,将所识别的种类与服务端数据库进行匹配,拉取该蝶类昆虫相关介绍数据;通过接口,返回检测识别图、识别种类、检测时间以及其相关介绍,识别系统流程如图2所示。
图2 蝶类识别系统流程图Fig.2 Butterfly recognition system flow chart
2.3.1 移动端系统结构
识别系统使用Xcode 11.3.1工具进行开发,iPhone11设备iOS 13系统进行检测。本研究核心功能是对蝶类进行识别,故iOS系统页面尽量精简。系统页面共分为首页,蝶类识别以及设置3个主要页面,如图3所示。
图3 蝶类识别iOS系统页面展示图Fig.3 Butterfly recognition iOS system page display diagram
2.3.2 移动端系统运行测试
蝶类系统识别过程如图4所示。页面有拍照以及相册选取两种方式选择蝶类图像进行识别。以测试集一张黑脉金斑蝶为例,选取蝶类图像之后点击检测识别,进行加载,请求后端接口,等待返回数据,显示识别结果。
图4 基于iOS系统蝶类昆虫识别过程Fig.4 Butterfly recognition process base on iOS system
使用蝶类识别系统,通过服务端调用MobileNet-SSD目标检测方法所训练出的模型脚本,进行运算,检测时间见表5。
表5 蝶类识别系统目标检测时间表Tab.5 Butterfly recognition system object detection schedule
3 结束语
本文提出了一种基于MobileNet-SSD的蝶类图像目标检测算法,并结合移动端设备开发一套蝶类识别系统。基于蝶类图像建立数据集,通过实验,利用数据增强扩充数据能够有效解决卷积神经网络过拟合问题。利用MobileNet-SSD技术进行目标检测,图像识别的平均精准度[11]高达99.63%,在移动端设备上检测一张蝶类图像仅需0.18 s,解决了在大自然环境下拍摄的蝶类图像目标识别普遍存在的效率低下和识别精度不高的问题,为今后对蝶类识别的研究提供新思路。