蝴蝶种类自动识别研究
2018-08-06谢娟英史颖欢景丽萍庄福振张军平谭晓阳许升全
谢娟英 侯 琦 史颖欢 吕 鹏 景丽萍 庄福振 张军平 谭晓阳 许升全
1(陕西师范大学计算机科学学院 西安 710119)2(南京大学计算机科学与技术系 南京 210023)3(山东财经大学计算机科学与技术学院 济南 250014)4(北京交通大学计算机与信息技术学院 北京 100044)5(中国科学院计算技术研究所 北京 100190)6(复旦大学计算机科学技术学院 上海 200433)7(南京航空航天大学计算机科学与技术学院 南京 210016)8 (陕西师范大学生命科学学院 西安 710119) (xiejuany@snnu.edu.cn)
蝴蝶是节肢动物门、昆虫纲、鳞翅目、锤角亚目昆虫的统称,全世界大约有 18 000多种[1],中国的蝴蝶种类约有1 200种.蝴蝶大多白天活动,其翅和身体一般都有各色鳞片形成的色斑和花纹.这些色彩和斑纹往往和蝴蝶的生活环境一致,是其保护色,可使蝴蝶避免被鸟类等天敌发现.自古以来蝴蝶就是重要的文化昆虫,不仅美化人类生活,梁祝化蝶等爱情故事千百年来也被人们传颂.同时多数蝴蝶对其生存的自然环境要求颇高,因此是重要的环境指示昆虫.但人工鉴别蝴蝶种类不仅需要长期的经验积累而且费时费力,严重影响了人类对蝴蝶的认识.为了提高蝴蝶物种识别效率,方便众多昆虫爱好者及大众了解和认识蝴蝶,本文将建立包含蝴蝶生态照片和标本模式照片的中国蝴蝶数据全集;提出基于深度学习模型Faster R-CNN的生态照片蝴蝶自动检测和物种鉴定方法,构建生态照片中蝴蝶种类的自动识别系统.
1 蝴蝶自动鉴定研究背景
近年来,蝴蝶自动识别受到了越来越多研究者的关注,出现了大量蝴蝶识别应用研究.在基于内容检索的蝴蝶所属科识别[2]中根据蝴蝶形状、颜色和纹理分别提取图像特征,然后根据相似度返回分类结果.基于极限学习机的蝴蝶种类自动识别[3]使用局部二值模式(local binary patterns, LBP)[4]和灰度共生矩阵(grey-level co-occurrence matrix, GLCM)[5]提取蝴蝶图像纹理特征,然后使用极限学习机进行分类.基于单隐层神经网络的蝴蝶识别[6]使用分支长度相似度熵(branch length similarity entropies, BLS)提取蝴蝶形状特征,然后使用单隐层神经网络进行分类.Kang等人提出了借助多视角观察蝴蝶图像来扩充训练集,以训练神经网络的蝴蝶识别方法[7].基于神经网络的物种自动识别[8],从图片的几何结构、形态学、纹理特征3方面对鱼、蝴蝶、植物3类不同生物设计了15个特有特征,然后使用神经网络进行训练和物种分类.然而现有蝴蝶物种识别研究存在如下2个问题:1)使用的蝴蝶数据集均只包含较少的蝴蝶种类;2)使用的蝴蝶照片均是标准蝴蝶照片,即蝴蝶标本的模式照片,没有涉及蝴蝶在自然生态环境中的生态照片.鉴于此,本研究将提供一个较完整的蝴蝶图像数据集,其中包括中国现有的所有蝴蝶标本模式照片,以及尽可能多的蝴蝶在其生态环境中的照片,并使该数据集可随时间积累不断完善.
Fig. 1 Samples of natural butterfly images图1 蝴蝶生态照的部分样本
为实现该数据集,我们通过扫描《中国蝶类志》[9]中的蝴蝶照片得到包含中国蝶类志全部蝴蝶种类的蝴蝶模式照数据,并通过野外拍摄、蝴蝶爱好者捐赠等方式收集尽可能多的蝴蝶生态照数据,这两大类蝴蝶照片数据一起构成蝴蝶数据全集.该蝴蝶数据集是目前世界上最大的蝴蝶图像数据集.数据集中包含来自蝴蝶生态环境的多种尺寸、姿态的蝴蝶生态照片,以及中国蝶类志的全部蝴蝶种类的标准模式照片.
然而,蝴蝶本身的拟态性为生态照片中蝴蝶的检测和识别带来巨大挑战.为了识别生态照片中的蝴蝶种类,需要完成照片中蝴蝶的定位问题,以及在此基础上的蝴蝶种类自动分类识别问题.
深度学习作为机器学习领域的一项技术突破,在图像处理领域表现出非常好的潜能.Faster R-CNN[10]是深度学习在目标检测领域的一个经典算法,相比于以往算法不仅提高了检测精度,更大大提升了检测速度;多尺度、多长宽比的区域建议框,使其适用于不同尺度的物体检测;区域位置检测网络和分类网络的结合,真正实现了端到端的目标检测框架.因此,我们采用Faster R-CNN算法同时实现对生态环境中蝴蝶照片的蝴蝶位置自动检测和种类识别,以期从复杂的自然环境背景中检测到不同尺寸、不同姿态的蝴蝶,并进行物种分类,构建一个真正意义上的蝴蝶种类自动识别系统.
本研究不仅克服了现有蝴蝶自动识别研究只依据蝴蝶标本照片进行蝴蝶种类识别的局限;同时提供了一个真正意义上的蝴蝶自动识别系统,实现了对包括任意姿态、任意大小蝴蝶的蝴蝶生态环境中照片的蝴蝶位置自动检测与种类自动识别;还提供了一个供研究者们使用的目前种类最齐全的包含蝴蝶生态照片的蝴蝶图像数据集,且该数据集的蝴蝶生态照片还可以随时间推移,继续积累和完善.
2 数据与方法
2.1 蝴蝶数据集
本文构建的蝴蝶数据集不仅包括标准的蝴蝶标本照片,还包括自然生态环境中的蝴蝶照片.数据集中的蝴蝶标本标准照片,称为模式照片,主要来源于中国蝶类志[9];蝴蝶在其生态环境中的照片,简称生态照,来源于野外实地拍摄和蝴蝶爱好者捐赠.
数据集共包含5 695张蝴蝶照片,其中的生态照片如图1所示,共有1 425张、111种,均为在野外使用高清单反相机拍摄所得.其中17种蝴蝶的生态照片只有一张,即有17种蝴蝶的生态照片只有一个样本.蝴蝶生态照片的特点是每张照片包含的蝴蝶数量、种类不确定,而且蝴蝶由于自身的拟态躲避天敌缘故,总是趋向于处在有利于隐藏自身的环境中,使得蝴蝶和周围环境较难辨别.生态照片的数据统计如图2所示,多数生态照的蝴蝶类别包含的样本数量在20个以内,每个蝴蝶种类至少包含一个样本,最多的包含121个样本,呈现出典型的长尾分布.
Fig. 2 Data distribution of natural butterfly images图2 蝴蝶生态照数据分布图
Fig. 3 Samples of butterfly pattern images图3 模式照的部分样本
Fig. 4 Data distribution of standard pattern images of butterflies图4 蝴蝶模式照数据分布图
蝴蝶标本的标准照片,即模式照,如图3所示,通过扫描中国蝶类志[9]的蝴蝶照片得来,共有4 270张、1 176种,包含蝴蝶生态照的所有种类.模式照的特点是一张照片确定地含有一只蝴蝶.模式照的数据分布如图4所示,多数模式照蝴蝶类别包含的样本数量在4个左右,每个蝴蝶种类至少包含一个样本,最多含有14个样本.对比图4和图2可见,模式照数据集包含的蝴蝶种类多,每类样本数量相差不大,但依然呈现出典型的长尾分布.我们将模式照的蝴蝶种类按照科、亚科、属、种、亚种,以及蝴蝶的雌、雄、背、腹进行分类.由于部分亚种缺失,部分蝴蝶种类雌、雄、背或腹不全.因此,为了统一,实验中将蝴蝶数据集所有模式照和生态照的蝴蝶种类均精确到种.该数据集将在“2018年第三届中国数据挖掘竞赛——国际首次蝴蝶识别大赛”中首次对外公开.
数据集中的模式照包含中国蝶类志全部蝴蝶种类,构成蝴蝶种类全集,生态照的蝴蝶种类是模式照蝴蝶种类的子集.我们的目标是自动识别生态照中的蝴蝶种类.因此,以生态照为准,去掉只有单张生态照的蝴蝶种类,最终的实验数据中,蝴蝶生态照图像有1 408张、94种.按照训练集、测试集各50%的比例进行划分,训练集向上取整,得到包含721张蝴蝶生态照的训练集,包含687张蝴蝶生态照的测试集.图5表示训练集和测试集的图像数量统计分布,可以看出训练集和测试集的分布大致相同,以确保现有数据环境下得到尽可能优的实验结果.
Fig. 5 Data distribution of natural butterfly images on training and testing datasets图5 蝴蝶生态照训练集和测试集数据分布图
2.2 数据集划分
我们对所有生态照的蝴蝶位置进行人工标注,模式照的蝴蝶位置默认为全图大小.由于深度学习需要大量训练数据,因此对训练数据集样本采用翻转、旋转、加噪、模糊、对比度升降等9种方式进行变换,以扩充训练数据集的蝴蝶图像数量.
训练集样本同时包含生态照和模式照.所有生态照在去掉只有一个样本的蝴蝶种类后划分训练集和测试集.我们的目标是对生态照中的蝴蝶同时进行定位和分类,因此,测试集只包含蝴蝶生态照片.我们希望借助模式照的一些信息预测生态照的蝴蝶类别,因此,将模式照也加入训练集.模式照加入训练集的方式分为2种:1)将所有模式照都加入训练集,这样做是考虑到蝴蝶全集可有助于更好地提取蝴蝶间的共有特征信息,另外还可提高数据的扩展性,提供包含所有蝴蝶种类的预训练版本,如果有新数据增加,可以在这个版本上继续进行增强训练;2)只加入与生态照种类对应的模式照,这是更为通用的方法,只对要分类的蝴蝶进行训练,减小模型复杂度,提高分类精度.如2.1节所述,生态照在去掉只有一个样本的蝴蝶种类后,包含94种蝴蝶、1 408张蝴蝶生态照片.按照训练集和测试集各50%的比例划分生态照,测试集包含687张生态照,其余721张生态照片加入训练集.按照第1种构造训练集的方法,将所有模式照加入训练集,再对训练集所有样本进行扩充,最终得到训练集的蝴蝶图像为49 910张,我们称之为Data_1.按照第2种生成训练集的方式,训练集只加入生态照蝴蝶种类对应的蝴蝶模式照,得到蝴蝶训练数据集包含13 060张图像,命名为Data_2.至此,我们将蝴蝶自动识别问题转化为一个94类的多类目标自动检测和识别问题.与普通的多类目标检测和识别问题相比,我们的蝴蝶自动检测与识别问题的难点不仅在于类别多,更重要的是我们要进行的是相同大类(蝴蝶)下的小类(不同种类蝴蝶)识别,或称为细粒度分类,因此,本文的蝴蝶自动识别研究更具有挑战性.
2.3 蝴蝶位置检测与种类识别方法
本文采用Girshick等人[10]提出的目标检测方法,同时实现目标的定位和分类.Faster R-CNN[10]结构如图6所示,它是对R-CNN[11]和Fast R-CNN[12]的改进,相比于开山之作的R-CNN,Fast R-CNN提出新的兴趣区域(region of interest, ROI)层来规避冗余的特征提取方式,只对整张图片全区域进行一次特征提取,同时加入了多任务学习,使得网络训练过程中同时学习物体分类和窗口位置回归.Faster R-CNN在Fast R-CNN基础上加入了区域生成网络层(region proposal network, RPN),来代替耗时的候选区域生成方式,真正实现端到端的目标检测任务.
Fig. 7 Faster R-CNN image detection procedure图7 Faster R-CNN图像检测流程
Fig. 6 Faster R-CNN network topology图6 Faster R-CNN的网络结构
Faster R-CNN区域生成网络RPN采用多任务学习,将生态照中蝴蝶的位置定位和蝴蝶种类鉴定2个任务同时进行.
(1)
(2)
Faster R-CNN图像检测流程如图7所示,我们首先通过共享卷积层提取蝴蝶图像特征,得到图像的特征映射,输入的特征图通过滑动窗口扫描,每个滑窗位置得到9种可能的anchors,得到区域建议的低维特征向量,再经过RPN网络得到区域建议和区域得分,并对区域得分采用非极大值抑制,输出Top-N得分的区域建议给ROI池化层;通过ROI池化层得到区域建议特征,区域建议特征通过全连接层后,输出该区域的分类得分以及区域位置.
本文实验基于深度学习框架Caffe,采用ZF[13],VGG_CNN_M_1024[14],VGG16[15]三种网络结构,使用联合训练方式,分别训练了3个蝴蝶自动识别系统.实验首先在ImageNet数据上进行预训练,然后使用扩充的蝴蝶训练数据集进行微调,所有模型的超参数使用默认参数,初始学习率为0.001,随后按步长调整;动量设置为0.9,权重衰减设置为0.000 5,共迭代10 万次.
2.4 蝴蝶识别评价指标
使用交并比(intersection-over-union,IoU)作为区域检测的评价指标,其定义是预测产生的候选框(candi-date region)与原标记框(ground-truth region)的交叠率,即它们的交集与并集的比值.最理想情况是完全重叠,即比值为1,实验中取IoU>0.5.我们的目标是生态照中蝴蝶种类的正确识别,因此,实验结果中没有具体列出生态照中蝴蝶位置检测结果的评价指标值.
多类图像分类评价指标中,平均精度均值(mean average precision,mAP)作为目标检测的通用指标,是评价多类分类的平均精度均值,因此,本文采用mAP作为蝴蝶识别情况的评价指标.mAP根据精度(precision)和召回率(recall)计算得到.精度的计算方法如式(3)所示,召回率的计算方法如式(4)所示.
(3)
(4)
其中,TP(true positive)为预测结果中正确分类和定位的正样本个数,FP(false positive)为被错误标记为正样本的负样本个数,FN(false negative)是被错误标记为负样本的正样本个数.
为预测训练所得模型的性能,我们定义正样本为真实框(ground-truth)和预选框的交并比大于0.5,且预测的分类概率大于0.5,也就是定位和分类同时满足条件才可认为是正样本.
根据不同的置信度可以得到若干个(precision,recall)点,以召回率为横坐标、精度为纵坐标画出P-R曲线,AP(average precision)是精度和召回率曲线下的面积,也就是P-R曲线的积分,如式(5)所示.
(5)
实际计算中,一般都用若干矩形面积来代替曲线下面积,即将召回率划分为n块,[0,1n,…,(n-1)n,1],则AP可以表示为式(6).
(6)
最终得到的所有类的平均精度,如式(7)所示,其中N为测试数据中的蝴蝶种类数.对于具体的矩形划分,采用PASCAL VOC Challenge在2010年以后的计算方法[16].
(7)
3 实验结果与分析
对2种不同的训练数据集和3种不同的网络结构,训练得到6个不同蝴蝶识别系统,各系统对测试集的蝴蝶种类识别mAP结果如表1所示.测试集上蝴蝶位置检测和分类鉴定的实际效果如图8所示.由于页面空间有限,图8只列出了部分测试结果.为了进一步验证我们选择Faster R-CNN实现生态照中蝴蝶位置检测与种类识别研究的正确性,我们采用最新的算法YOLO v2[17]和YOLO v3[18]对相同的蝴蝶识别任务进行实验,网络结构采用相应算法的原始网络结构,实验结果如表2所示.
Table1ThemAPResultsofButterflyAutomaticRecognitionSystemsBasedonFasterR-CNN
表1 基于Faster R-CNN的蝴蝶自动识别系统的mAP结果 %
从表1实验结果可以看出,无论采用哪种网络结构,基于Faster R-CNN的蝴蝶自动识别系统对生态照中的蝴蝶种类识别均显示出不错的效果,最差的mAP值也接近60%,这不仅说明Faster R-CNN在细粒度分类方面的性能,也说明了提出的基于Faster R-CNN的蝴蝶生态照中蝴蝶位置自动检测和种类自动识别的可行性和准确性.另外,表1数据还揭示,Data_2所得模型的mAP值在整体上优于Data_1所得模型的mAP值,这说明训练集包含721张蝴蝶生态照片及其与这些生态照蝴蝶种类对应的蝴蝶模式照时,训练所得模型的蝴蝶位置自动检测与种类自动识别能力比包含721张蝴蝶生态照与蝴蝶模式照全集所得模型的性能更优.分析只加入与生态照种类对应的蝴蝶模式照片的蝴蝶自动识别系统性能更优的原因在于:该系统降低了模型的复杂度,减少了过多无用蝴蝶种类的干扰,因此,其分类平均精度均值mAP值更高.
Table2ThemAPResultsofButterflyAutomaticRecognitionSystemsBasedonDifferentYOLO
表2 基于不同YOLO算法的蝴蝶自动识别系统的mAP结果 %
表1关于3种不同网络结构的实验数据还显示:在蝴蝶生态照片的蝴蝶位置自动检测与种类分类识别中,VGG16网络的性能优于其他2种网络;但是该模型的复杂度高,训练时间长,故实际使用过程中可选用分类和位置检测性能较优、训练速度较快的中型网络VGG_CNN_M_1024.
表2关于算法YOLO v2和YOLO v3对2个不同的蝴蝶训练集进行训练,所得模型在测试集的mAP值显示:YOLO v2对Data_2只能得到62.3%的mAP值,远低于表1所示的基于Faster R-CNN的实验结果;另外,YOLO v2对Data_1训练集的训练结果一直不能收敛,因此,没有相应测试集的mAP值.YOLO v3对Data_2训练所得模型的测试集mAP=72.8%,除了与基于Faster R-CNN且采用VGG_CNN_M_1024网络结构的测试集mAP值类似,不如基于其他网络结构的Faster R-CNN在Data_2的实验结果;YOLO v3对Data_1的mAP值只有52.59%.
以上关于表1和表2的实验结果分析揭示,我们采用Faster R-CNN进行蝴蝶种类识别是非常正确和有效的.
Fig. 8 The detection results on samples of natural butterfly images图8 部分生态照的检测结果
如图8所示,部分生态照蝴蝶位置检测和种类识别结果显示:提出的基于Faster R-CNN的蝴蝶自动识别模型,可以同时实现蝴蝶生态照片中蝴蝶的位置自动定位和种类自动识别;还可以同时定位出生态照片中的多只蝴蝶,并正确分类识别其种类;对非常拟态的蝴蝶生态照片中的蝴蝶也能进行位置自动检测和物种自动鉴定.
4 结论与展望
本文发布了一个全新的蝴蝶图像数据集,填补了现有蝴蝶自动识别研究使用的蝴蝶图像数据集没有蝴蝶自然场景图像数据的空白;同时提供了一个较完整的中国现有蝴蝶图像数据集,供“2018年第三届中国数据挖掘竞赛——国际首次蝴蝶识别大赛”使用,并可供所有对蝴蝶自动识别感兴趣的研究者们使用,也可用于测试目标自动检测和分类的相关算法.需要说明的是,使用该数据集时,请按照数据集使用规范引用本文.另外,本文基于Faster R-CNN深度学习模型,构建了一个对自然场景下拍摄的蝴蝶照片中的蝴蝶进行自动定位和物种自动分类鉴定的蝴蝶自动识别系统,弥补了蝴蝶识别研究只对标准的蝴蝶模式照片进行蝴蝶种类识别的局限,实现了一个真正意义上的蝴蝶自动识别系统.最后,本文提出的数据集除可用于目标检测领域外,还可以用于小样本分类、细粒度分类等方向,这也是我们未来的研究工作之一.
本研究实现的蝴蝶自动识别系统默认一张生态环境中的蝴蝶照片包含的多只蝴蝶为同一种类的蝴蝶,虽然现实中不同种类的蝴蝶聚集一起的概率很小,也就是说一张生态照中包含多个种类蝴蝶的概率很小,但一旦出现这样的情况,蝴蝶自动识别问题的难度将上升为多类别多标签的更具挑战性的蝴蝶自动识别问题.这也将是我们今后需要进一步考虑和研究的问题之一.另外,实现一个蝴蝶自动识别系统的App,为广大昆虫爱好者提供一个蝴蝶自动识别软件也是我们的未来目标之一.
致谢我们非常感谢Faster R-CNN算法的提出者,因为他们的工作才使我们的蝴蝶自动识别系统得以实现.另外,我们非常感谢南京大学的高阳教授、北京交通大学的于剑教授、北京邮电大学的杜军平教授,以及山东大学的尹义龙教授为我们稿件提出的宝贵修改意见.我们还要感谢为我们的蝴蝶数据集无偿提供蝴蝶生态照片的南开大学的李后魂教授、广西钦州学院的甄文全博士、青海师范大学的陈振宁教授,以及广西河池学院的李晓东副教授.最后我们还要感谢陕西师范大学的马丽滨副教授协助拍摄蝴蝶生态照片,并且非常感谢中国科学院大学网络空间安全学院的高红超博士所给予的技术指导!
XieJuanying, born in 1971. PhD, professor. Senior member of CCF. Her main research interests include machine learning, data mining, and biomedical big data analysis.
HouQi, born in 1994. Master candidate. His main research interests include data mining and deep learning.
ShiYinghuan, born in 1984. PhD, associate professor. His main research interests include medical image analysis and machine learning.
LüPeng, born in 1989. PhD, associate professor. His main research interests include video processing, video under-standing, computer vision, and machine learning.
JingLiping, born in 1978. PhD, professor. Member of CCF. Her main research interests include machine learning and high-dimensional data mining.
ZhuangFuzhen, born in 1983. PhD, associate professor. His main research interests include data mining, machine learning, transfer learning, multi-task learning and recommendation systems, etc.
ZhangJunping, born in 1970. PhD, professor. Senior member of CCF. His main research interests include machine learning, biometric authentication, intelligent transportation systems and image processing.
TanXiaoyang, born in 1971. PhD, professor. His main research interests include deep learning, reinforcement learning, and Bayesian learning.
XuShengquan, born in 1967. PhD, professor. His main research interests include entomological taxonomy, insect systematics and bioinformatics, etc.