1. 引言
蝴蝶是动物界的一种昆虫,在生态系统中起着重要的作用,其对周围环境敏感,可作为地方生态环境的指示物种 [1] ,研究生态学的专家们会通过对蝴蝶的种类识别来判断当地的生态环境 [2] ,因此研究蝴蝶种类识别对研究生态系统的稳定十分重要。地球上所有的蝴蝶都有相似的外表,科学家根据蝴蝶翅膀的形状和行为将蝴蝶分为不同的类别,世界上已记载的有两万多种,在中国有2100多种 [3] 。值得注意的是,蝴蝶幼虫大部分是农作物和树木的害虫,与农作物和人类和动物的环境有着直接的关系。因此,可靠的物种鉴定方法在害虫防治、边境防治和环境保护等方面具有非常重要的实际应用价值。蝴蝶的种间差异很小,而种内变异很大,这使得昆虫学家很难确定蝴蝶的种类。此外,采集、识别和存档标本图像对昆虫学家来说也是一项繁琐而昂贵的工作。蝴蝶种类的自动准确识别具有重要的现实意义,可以为生物多样性研究和物种分析提供帮助。
在蝴蝶识别领域,早期大多采用传统的机器学习算法,如局部二进制模式(LBP)、K-最近邻(KNN)和支持矢量机(SVM),被广泛用于解决分类问题,特别是在小数据集上表现良好。G.M等使用二值化等图像处理工具对蝴蝶进行分割,并将RGB图像转换为HIS颜色模型,对9种蝴蝶进行分类取得了良好的识别效果 [4] 。但对于更复杂的数据集,深度学习的表现优于传统的机器学习。谢娟英等基于他们的数据集提出了一种新的数据分区方法和数据扩展技术,并在RetinaNet模型上实现了最高79.7%的mAP [5] 。李飞等人提出LDResNet网络对自然环境蝴蝶图像进行识别,引入可变形卷积,注意力机制和改进的深度可分离卷积,取得了87.61%的平均识别准确率 [6] 。目标检测识别算法具有高效,准确地自动学习、检测分类能力。其主要分为单阶段和两阶段目标检测算法。两阶段目标检测算法会先在第一阶段生成一些候选框,然后在第二阶段进行对生成的候选框进行分类和回归。而单阶段算法则直接在整个图像上预测目标的位置和类别。双阶段算法对目标检测的精度较高,而单阶段算法的效率更高。YOLO系列算法是目前目标检测的主流算法 [7] [8] [9] 。Liang等综合不同训练机制下的YOLO模型的结果,提出了一种基于YOLO算法的蝴蝶自动检测分类算法。极大地提高了YOLO算法的泛化能力,使其具有更好地解决小样本问题的能力 [10] 。
上述研究在蝴蝶识别检测上已取得一定进展,但仍可以进一步优化:1) 对同科的识别精度不够高,采用CSandGlass模块和SE注意力机制。2) 优化损失函数,提高蝴蝶检测的精确度和鲁棒性。
2. YOLOv5s网络结构
YOLOv5s在结构上可以分为主干网络,颈部和头部。主干部分使用CSPDarknet作为特征提取网络从输入图像中提取特征。颈部使用PANet生成一个特征金字塔网络,对特征进行聚合,并将其传递给头部进行预测。头部会根据锚框生成预测的层,用于对象检测。YOLOv5还采用了Mosaic数据增强方法,该方法会对四张图片进行随机裁剪与拼接,以增强数据的多样性,同时增加更多的小目标。它还使用二元交叉熵损失函数,sigmoid作为激活函数,解决了损失函数权重更新过慢的问题。同时YOLOv5s还使用了Focal Loss技术,能有效缓解类别不平衡问题。YOLOv5s结构如图1所示。

Figure 1. YOLOv5snetworkarchitecture
图1. YOLOv5s网络结构
3. YOLOv5s网络改进
3.1. 主干网络改进
3.1.1. CSandGlass模块
YOLOv5s中的CSPNET结构将基础层的特征层分为两部分,然后使用跨阶段层次结构将两者合并,从而使网络能实现更丰富的梯度组合信息,但这也更容易造成信息丢失和梯度混淆。因此,本文借鉴了MobileNext [11] 的思想,使用沙漏状模块CSandGlass来替代YOLOv5s网络中的Res单元模块。CSandGlass模块的结构如图2所示。与中间有深度卷积的瓶颈结构不同,本文用高维表示将3 × 3深度卷积层(Dwise)移动到残差路径的两端,并将YOLOv5s的两个基本组件CBL在中间。两个深度卷积可以编码更多的空间信息,并使更多的梯度在多层间传播,减少信息丢失。使用CSandGlass改进的特征有较好的提取效果,背景信息和特征信息也更加清晰。

Figure 2. Structure diagram of CSandGlass
图2. CSandGlass结构图
3.1.2. SE注意力机制
SE注意力机制是通道注意力模式下一种确定权重的方法,SE注意力机制 [12] 旨在研究通道特征的相互依赖性。而非引入新的空间维度 为了融合通道上的特征图,该模块使用新的特征重新校准策略。SE注意力机制通过学习获得每个通道特征的重要性,然后据此提升有用的特征或抑制无用的特征重要性。它通过在不同通道间分配权重达到主次优先的目的。图3为SE注意力机制的结构图。
先经过全局平均池化将每个通道进行特征压缩,从而使每个通道由一个数值所表示。压缩的操作如式(1)所示。
(1)
上式中:
为压缩操作后的输出结果;
为输入矩阵的第c个通道数;H和W分别为通道空间的长和宽。
得到特征图的每个通道特征权重后,由于其间并没有相关性,因此进行两次全连接进行激励操作获得不同通道间的相关性。第一层全连接采用了ReLU激活函数,目的是压缩通道数量,降低计算量;第二层全连接采用了Sigmoid激活函数,将通道特征缩放到0到1之间,使网络具有更多非线性,加强通道间相关性的拟合,并把通道升到原始的维度。然后再将通道的权重加权到输入特征图的每个通道上,形成新的特征图。具体操作如式(2) (3)所示。
(2)
(3)
上式中
和
分别为Sigmoid激活函数和ReLU激活函数;
为第一个全连接层,降低通道数量;
为第二个全连接层,上升通道维度;
为激励操作的输出。将
的通道权重值与输入
相乘得到Y,为经过通道注意力机制后的特征图。
3.1.3. 损失函数改进
YOLOv5模型共使用三种损失函数,采用分类损失计算锚框与对应的分类是否正确;使用定位损失判定预测框与标定框的误差;采用置信度损失来计算网络置信度,以更好地进行目标检测任务。它采用二元交叉熵作为置信度损失和分类损失的损失函数,提高模型准确性和收敛速度;采用CIOU作为定位损失的损失函数,更好处理不同目标间的交叉问题。如式(4) (5)所示。
(4)
(5)
A为预测框面积,B为真实框面积。
代表了预测框和真实框中心点之间的欧式距离。c代表的是能同时包含预测框和真实框的最小闭包区域的对角线距离。av为长宽比。
本文使用α-CIOU做定位损失,在CIOU基础上引入了一个α参数 [13] 。通过调整参数α,可以使检测头具有更高的灵活性。调整合适的α可以增加目标边界框的权重,从而可以更多地关注与目标匹配的边界框,加快网络收敛,并且减少噪声边界框对模型性能的影响。α-CIOU在训练轻量级模型时表现良好,鲁棒性更强,可以很好地处理噪声边界框,提高检测精度和稳定性。如式(6) (7)所示。
(6)
(7)
4. 蝴蝶数据集制作
4.1. 蝴蝶数据集制作
本文使用的数据集来自拍摄、公共数据集和互联网。有985张,以JPG格式保存,尺寸约为600 × 400像素。数据集包含5种蝴蝶,同属粉蝶科,即迁粉蝶,斑粉蝶等,每类图像数量均在100张以上。一些蝴蝶样例如图4所示。每个类别中的图像数量超过100张。本文使用“LabelImg”标注工具对数据集进行手动标注,标注信息存储在XML标签文件中,其中每个标注文件逐个对应一个图像文件,每行包含一个目标信息,其中信息按顺序排列:目标类别,检测框中心点的X和Y轴坐标,以及目标宽度和高度。
4.2. 图像预处理
在目标检测中,如果数据量较少,模型易出现过拟合现象。因此利用图像增强技术生成新的样本数据,扩大数据集大小,提高模型的泛化能力,从而提高目标检测的准确性和稳定性 [14] [15] 。
本文选择的图像增强方法包括平移、垂直翻转、水平翻转、镜像翻转和缩放增强,随机裁剪等方式。数据增强后生成了带标签的蝴蝶图像共2995张。训练集和测试集按照8:2的比例划分。

Figure 4. Butterfly samples. (a) Catopsilia_pomona; (b) Colias_erate; (c) Delias_pasithoe; (d) Gonepteryx_rhamni; (e) Hebomoia_glaucippe
图4. 蝴蝶样例。(a) 迁粉蝶;(b) 豆粉蝶;(c) 斑粉蝶;(d) 钩粉蝶;(e) 鹤顶粉蝶
5. 实验结果与分析
5.1. 实验参数
本文实验的操作系统为Windows10,使用Anaconda创建虚拟环境。其中,python版本为3.8.1,pytorch版本为1.7.1,GPU为NVIDIA RTX3080,CUDA版本为11.0。
YOLOv5的输入端可以对输入图片的大小调整,预设定图片大小为256 × 256。Batchsize设定为8,work设定为1。训练轮数为300轮,采用随机梯度下降作为优化算法,初始学习率为0.01。
5.2. 对比实验
本文选取YOLOv3,YOLOv4,SSD,YOLOv5s和本文改进的YOLOv5s_CS模型进行对比,在超参数完全相同的情况下,在同个实验设备上运行,从精确率(P)、F1、平均精度(mAP)三方面进行比较评价,不同网络实验结果如表1所示。使用改进的YOLOv5s_CS算法对不同蝴蝶种类检测结果如表2所示。
(8)
(9)
(10)
(11)
其中,TP表示正确检测的样本数量,FP表示误检的样本数,FN表示漏检的样本数,
是平均精度函数。

Table 1. Experimental results of different models
表1. 不同模型实验结果

Table 2. Different categories of butterfly identification results
表2. 不同类别蝴蝶识别结果
本文选择了几种目标检测模型与本文提出的YOLOv5s_CS在同台机器进行对比。从表1的四个方面进行对比分析,本文提出的YOLOv5s_CS模型相比其他模型具有较高的准确率,F1,和平均精度,尽管FPS有所下降,但是对识别效率影响不是很大,这意味着本模型进行蝴蝶检测时具有更高的准确率。图5为本模型测试效果,可以看出本文所提出模型达到了较好的检测效果。
6. 结论
本文针对粉蝶科下的蝴蝶识别研究,采用YOLOv5s作为基础网络,使用CSandGlass来替代YOLOv5s网络中的Res单元,解决信息丢失和梯度混淆的问题;又引入了SE注意力机制,将蝴蝶本身特征的权重增强;为增加目标相应的边界框权重,在CIOU基础上引入α系数来计算定位损失,加快模型的收敛并降低噪声干扰。
根据上述实验和测试的结果,表明本文提出的模型能对同科目下的蝴蝶具有更高的识别精度,适用于蝴蝶分类检测研究,并且模型较轻量化,适合部署到嵌入式设备中进行实时检测。在后续的研究中,将着重于扩充蝴蝶数据集,提升小目标,多种类蝴蝶的识别精度,模型轻量化研究。
基金项目
这项工作得到了国家重点研发计划(编号:2016YFD0201305-07)、贵州省科技项目(No.ZK[2023]060),教育部半导体功率器件可靠性工程中心开放基金项目(No.ERCMEKFJJ2019-06)。贵州大学公共大数据国家重点实验室的计算支持。
NOTES
*通讯作者。