1. 引言
蝴蝶隶属于昆虫纲鳞翅目,种类繁多,全世界已知的蝴蝶约有18000种 [1] ,其中,中国蝴蝶占2000多种 [2] 。蝴蝶色彩艳丽,具有极高的观赏价值;又因为蝴蝶对其生存环境下的气候变换敏感,是气候变化的指示性生物,可帮助气候学家预测全球气候变化;但是部分蝴蝶对农作物有害,会影响人们的生产与生活。因此,对自然环境中的蝴蝶种类识别具有重要意义。
近年来,使用传统方法对蝴蝶种类进行识别已经取得了一些成果。Kaya等人 [3] 使用局部二值模式和灰度共生矩阵对190张蝴蝶图像纹理信息进行了提取,然后利用极限学习机进行分类。Li等人 [4] 使用多尺度曲率直方图和灰度共生矩阵提取蝴蝶形状及纹理特征,并结合KNN算法对蝴蝶种类识别。薛安康等人 [5] 利用灰度共生矩阵提取蝴蝶纹理信息,结合KNN算法进行分类,对10种蝴蝶标本照片进行了有效识别。上述方法均是在单一实验背景下进行,但因蝴蝶纹理信息复杂,形状和大小各异,人为设计的特征提取器很难将蝴蝶信息表达出来,使识别准确率受到影响,不能为自然环境中蝴蝶种类识别提供技术支持。
随着计算机视觉技术的发展,研究者们逐渐将深度学习技术应用到蝴蝶种类识别中来,并取得了一定效果。谢娟英等人 [6] 制作了包含蝴蝶生态照和标本照的中国蝴蝶数据集,使用FasterR-CNN进行种类识别,模型取得的最低mAP达到60%。Feng等人 [7] 设计了一种基于生成对抗网络和残差网络相结合的方法识别蝴蝶种类,在ResNet50上取得了90.34%的识别准确率。李策等人 [8] 提出了一种基于迁移学习和可变形卷积网络的蝴蝶识别方法。虽然上述方法已经在蝴蝶种类识别上取得一定效果,但仍然存在识别准确率较低的问题。
综上所述,本研究构建了自然环境中蝴蝶图像数据集,提出了一种融合多尺度和迁移学习的蝴蝶种类识别方法。首先,针对数据集分布不均衡的问题,使用焦点损失函数替换交叉熵损失函数;其次针对蝴蝶图像特征,将在ImageNet数据集上训练好的EfficientNet-B0 [9] 模型权重迁移到本文模型,加快网络收敛速度,提升识别准确率;最后,针对蝴蝶尺度多样问题,引入空洞空间卷积池化金字塔,提升网络对各类蝴蝶整体特征提取能力。实验结果表明,本文方法对蝴蝶种类识别的效果显著,平均识别准确率达到了98.03%,可为自然环境中蝴蝶种类识别提供技术支持。
2. 蝴蝶种类识别模型
2.1. EfficientNet
EfficientNet网络利用复合模型缩放方法来平衡网络深度、宽度和分辨率,既提高了模型识别准确率又保证了识别速度。考虑到蝴蝶的拟态性会导致自然环境中的蝴蝶存在复杂的背景干扰,影响网络对蝴蝶种类的识别,且本文数据集较小,因此本研究选用轻量化、高识别率的EfficientNet-B0作为基础模型 [10] 。EfficientNet-B0网络结构参数如表1所示,由两个普通卷积、7个移动倒置瓶颈卷积(Mobile inverted Bottlenneck Convolution, MBConv) [11] 、平均池化层和全连接层组成。EfficientNet-B0网络使用残差结构增加网络深度,可提取到蝴蝶丰富的细粒度特征,提高识别率。由表1可知,EfficientNet-B0网络的主要模块是MBConv,使用深度可分离卷积减小模型参数量与运算量,结合SE注意力模块,使网络更加关注蝴蝶所在通道信息,降低背景干扰权重数值,进而提升网络特征提取能力,MBConv模块结构图如图1所示。

Table 1. Network structure parameters of EfficientNet-B0
表1. EfficientNet-B0网络结构参数

Figure 1. Structure diagram of MBConv
图1. MBConv结构图
2.2. 迁移学习
迁移学习利用在其他任务上训练得到的结果辅助新任务学习,使模型速度收敛加快、减少模型训练时间。本研究将在ImageNet数据集上实验得到的模型权重参数迁移到蝴蝶种类识别实验中,只需要微调参数,就可加快网络收敛,提升蝴蝶种类识别准确率。因EfficientNet网络为轻量级卷积神经网络,模型参数量较少,因此不需要冻结任何层,直接训练网络中所有参数。
2.3. 空洞空间卷积池化金字塔
因蝴蝶形状大小各异,原始模型对尺度不一的蝴蝶整体信息提取能力较弱,因此本文在EfficientNet-B0网络的特征提取层后引入空洞空间卷积池化金字塔(ASPP) [12] 。ASPP主要由一个1 × 1的卷积层、采样率分别为6、12、18的空洞卷积和全局平均池化并联组成,其结构图如图2所示,其中GAP表示全局平均池化。在EfficientNet-B0网络特征提取层后引入ASPP,网络可获得多种不同尺度的感受野,感受野越大,全局特征更丰富;感受野越小,提取到的局部特征和细节特征越丰富,捕获到的蝴蝶具有更多全局和局部细节特征,进而网络可实现对任意大小蝴蝶种类识别的目的。
2.4. FcoalLoss损失函数
由表1知,本文数据集种类分布不均衡。比如,最多的钩凤蝶有826张,最少的东方菜粉蝶只有232张,钩凤蝶与东方菜粉蝶数量之比达到3.6:1。这种情况会导致模型对数量多的蝴蝶识别率高,对数量少的识别率低,影响整体识别效果。为此,使用焦点损失函数(FocalLoss) [13] 替换交叉熵损失函数。与交叉熵损失函数相比,焦点损失函数会为难区分的蝴蝶种类添加较大权重,为易区分的蝴蝶添加较小权重:
(1)
(2)
式(1)中
可平衡正负样本比例不均问题,对于数量较少的种类,其值较大。
的值根据样本复杂性进行调节。
表示经过Softmax函数的输出概率。与交叉熵损失函数相比,焦点损失函数只需调节
和
的值,就能在一定程度上解决蝴蝶种类分布不均的问题。
2.5. 模型总体架构
蝴蝶表面的纹理信息十分复杂,本研究以特征提取能力较强的轻量级EfficientNet-B0网络为基础;将在ImageNet数据集上训练好的参数权重迁移到本研究中,加快模型收敛速度、提升模型识别准确率;考虑到蝴蝶形状大小多样,在EfficientNet-B0网络的特征提取层后引入ASPP以获得不同尺度蝴蝶的特征,实现多尺度特征融合 [14] ,以此来增强网络特征提取能力,提高模型识别率。改进后的模型整体架构如图3所示,改进后的模型命名为EfficientNet_B0_A。
3. 实验结果与分析
3.1. 制作蝴蝶数据集
现有蝴蝶种类识别研究中大多使用标本图像,且涉及种类数量较少。针对此,本文构建了自然环境中蝴蝶数据集,如图4所示。

Figure 3. Overall structure of the model
图3. 模型整体架构
(a) (b) (c) (d)
(e) (f) (g)
注:(a)~(g)依次为迁粉蝶、斑缘豆粉蝶、报喜班粉蝶、钩粉蝶、鹤顶粉蝶、东方菜粉蝶和黑纹粉蝶。
Figure 4. Butterfly images
图4. 蝴蝶图像
该数据集由粉蝶科下7种蝴蝶生态图像组成,共2716张。数据集来源有:在贵州省贵阳市使用佳能数码相机拍摄;从kaggle官方数据网站(https://www.kaggle.com)获取。本文所用蝴蝶生态图像均经过昆虫学家识别确认,数据集的详细情况如表2所示。
3.2. 图像数据预处理
为满足网络输入图像要求,像素统一为224 × 224。按7:3划分为训练集和验证集。由于数据样本较少,为防止训练过程中出现过拟合,使用椒盐噪声、左右翻转、增强亮度、降低亮度等数据增强方法对训练集进行扩充,扩充后图像数据集共9525张。
3.3. 实验环境以及参数设置
实验训练与验证均在同一平台上进行。实验硬件环境:CPU为Intel(R) Core(TM) i5-11400F @ 2.6GHZ 2.59 GHZ,内存为16 GB;GPU为Nvidia RTX3060Ti8GB。软件环境:Pytorch版本为1.7.1;Python版本为3.8。批量大小(Batch size)设置为16,迭代次数(Epoch)设置为100,使用随机梯度下降算法(Stochastic Gradient Descent, SGD)作为损失函数优化器,初始学习率设置为0.01,学习率随着训练轮次变化,每10轮次衰减0.5。
3.4. 评价指标
本研究使用分类问题中常用的平均准确率、精确率、召回率作为评价标准。
1) 平均准确率
平均识别准确率(Average recognition accuracy /%, Arc)指的是验证集分类正确的样本占验证集总样本数的比例,计算方法如式(3)所示:
(3)
式中:
为数据类别总数,本研究中
;
为第
类的数量;
为第
类中分类正确数量。
2) 精确率
精确率(Precision)表示实际正确的蝴蝶数量占全部预测为正的蝴蝶数量的比例,计算方法如(4)所示:
(4)
3) 召回率
召回率(Recall)表示真实正确的蝴蝶数量占实际为正的蝴蝶数量的比例,计算方式如(5)所示:
(5)
4) F1-score
F1-score综合考虑了精确率和召回率,是两者的调和平均,计算公式如式(6)所示,
(6)
3.5. 结果分析
3.5.1. 不同识别模型对比实验
为验证本文模型(EfficientNet_B0_A)有效性,选取ResNet [15] 、DenseNet [16] 和MobileNetV3 [17] 模型与本文模型对比,实验结果如表3所示。

Table 3. Comparative experiment of different recognition models
表3. 不同识别模型对比实验
由表3知,四种对比网络中EfficientNet_B0效果最好,平均识别率达到93.15%。本文模型识别率较基础模型提升4.88%,达到98.03%,且本文模型的精确率、召回率和F1-score也均优于四种对比模型。
EfficientNe_B0与EfficientNe_B0_A对比实验的验证集识别准确率和损失值曲线如图5所示,其中绿线代表EfficientNe_B0,蓝线代表EfficientNe_B0_A。由图5知,原模型在60轮左右开始收敛,而改进后模型在20轮已经收敛,说明引入权重迁移后,模型收敛速度加快。且本文模型在验证集上验证所得平均识别率更高,损失值更小。
(a)
(b)
Figure 5. Recognition accuracy and loss value of model validation set. (a) Validation set accuracy; (b) Validation set loss value
图5. 模型验证集识别准确率和损失值。(a) 验证集准确率;(b) 验证集损失值
3.5.2. 消融实验
为验证FocalLoss、迁移学习和空洞空间卷积池化金字塔的有效性,本文在EfficientNet_B0网络基础上,通过逐项增加各模块进行验证,实验结果如表4所示。表中FL、TL、ASPP分别表示FocalLoss损失函数、迁移学习和空洞空间卷积池化金字塔,其中组1模型使用的是交叉熵损失函数。
注:√表示使用该方法,―表示没有使用该方法。
由表4可知,组1和组2对比可知,引入FocalLoss损失函数后,模型识别准确率较基准模型提升0.41个百分点,说明数据分布不均问题对模型性能的影响得到一定缓解;由组2和组3对比可知,引入迁移学习后,模型识别准确率大幅度提升,达到97.25%,且由图5可知,模型收敛速度更快;由组3和组4对比可得,引入ASPP后网络能从多个尺度提取蝴蝶信息,进一步提升了识别准确率。
3.5.3. 实验结果分析
本文模型在蝴蝶数据集上得出的混淆矩阵如图6所示,其横坐标为真实标签,纵坐标为预测标签,主对角线上数字为预测正确的样本数,其余数字均为预测错误的样本数。由图6知,迁粉蝶(Catopsilia_pomona)较易被误判为其他类别,因为其分为有纹型和无纹型,有纹型迁粉蝶易与斑缘豆粉蝶混淆(Colias_erate),无纹型迁粉蝶易与钩粉蝶(Gonepteryx_rhamni)混淆。

Figure 6. Confusion matrix of the validation set
图6. 验证集混淆矩阵
4. 结语
针对自然环境中蝴蝶种类识别率低的问题,本文提出融合多尺度和迁移学习的蝴蝶种类识别模型。实验结果表明,使用焦点损失函数可以从一定程度上解决样本分布不均衡的问题;引入迁移学习可加速网络快速收敛并提升模型准确率;引入ASPP后模型能够根据蝴蝶形状和大小从不同尺度捕捉信息,提取出各类蝴蝶图像整体特征,提高识别准确率。本研究所提方法的识别准确率、精确率和召回率均优于四种对比网络,对粉蝶科的7种蝴蝶平均识别准确率达到98.03%。在未来的研究中,我们会扩充蝴蝶数据集,并寻找新的改进算法,提高模型泛化能力。