农田害虫图像识别:基于深度学习的识别算法研究
一、绪论
- 赛题背景:农田害虫识别对农业生产至关重要,虫情检测灯通过自动诱集、拍照等过程辅助植保人员分析虫情,其效果依赖于高效的目标检测算法。深度学习是目标检测算法的热点。
- 问题重述:利用虫情检测灯采集的图像,建立识别率高、速度快、分类准确的模型,识别昆虫种类、位置及数量。
- 文献综述:YOLO系列算法作为目标检测的热点,YOLOv5在速度和精度上达到新高度,YOLOX引入Anchor-free和无锚点检测器,提升性能。
二、数据探索
- 类别不平衡问题:训练集中28种昆虫类别数量严重不均衡,17种昆虫标注次数少于20次,1637张图片为负样本。
- 数据标注质量问题:部分标注存在错误(如同一昆虫被标记为不同种类)和遗漏(如标注不完整、遗漏部分昆虫)。
- 样本标注不清晰:部分昆虫标注标准不明确,存在“漏标”“错标”问题。
三、数据预处理
- 图片种类均衡化:采用最近邻重采样、双线性重采样等上采样方式,结合人工加标和剔除错标样本,缓解类别不平衡问题。
- 图片大小归一化:将图片缩放至(684*456)大小,提高CPU加载数据速度。
- 数据增强:通过图像翻转、亮度调节、噪声处理、随机掩膜等手段增强模型泛化能力。
- TTA:采用Test Time Augmentation(测试时增强)提高模型预测稳定性。
- 数据集格式转化:将原始数据集格式转化为YOLO格式,扩展数据集至之前的五倍,增大训练样本量。
四、基于YOLOv5x的图像检测技术研究
- 输入端:采用Mosaic数据增强和自适应锚框计算,提高数据多样性和检测精度。
- Backbone骨干网络:采用残差结构避免梯度消失,提取多尺度特征。
- Focus结构:通过切片操作将W、H信息集中到通道空间,输入通道扩充4倍,实现无信息丢失的下采样。
- CSP结构:将输入分成两个分支进行卷积操作,增强模型特征提取能力。
- Neck网络:采用FPN+PAN结构,自顶向下和自底向上结合,提高对小目标的识别能力。
- Head输出端:使用GIOU Loss作为边界框损失函数,结合交叉熵损失函数计算类别概率和置信度得分。
五、YOLOX在图像检测上的应用
- 模型介绍:YoloX采用Darknet53作为骨干网络,引入Anchor-free无锚点检测器、Decoupled Head和SimOTA高级标签分配方法。
- 实验流程:输入端使用Mosaic和MixUp数据增强,Neck结构采用FPN,输出层采用Decoupled Head、Anchor Free和SimOTA进行标签分配。
六、模型融合
- 融合策略:结合YOLOv5和YOLOX模型结果,当两个模型预测框IoU不高于0.45时,均视为最终结果;IoU高于0.45时,类别相同时随机选择结果,类别不同时选择置信度更高的结果。
七、实验结果评估
- 实验环境:使用2块NVIDIA-A100-PCIE-40GB GPU,Intel-Xeon-Silver-4316 CPU,32GB内存,Windows 10操作系统,Python 3.10编程语言,Pytorch 1.1深度学习框架。
- 结果分析:YOLOv5x和YOLOX模型对大目标和小目标检测效果理想,处理重合和尺寸过小目标物体有效。YOLOX模型最终精度略高于YOLOv5x,mAP值分别为0.929和0.909。
- 模型展望:未来将引入半监督学习机制,扩大数据集丰富度,并借助更稳定的实验环境进行探索。
附录
- 结果链接:提供问题2和问题3的识别结果链接。
- 重要代码:包含图像翻转、缩放、标签生成、生成datasets、生成result2和result3等代码。