1. 蝴蝶鱼识别项目概述
水下生物识别一直是计算机视觉领域的重要应用方向,其中蝴蝶鱼因其丰富的种类和独特的形态特征成为研究热点。蝴蝶鱼作为珊瑚礁生态系统的重要指示物种,其种群变化直接反映了海洋健康状况。然而,复杂的水下环境、多变的光照条件以及蝴蝶鱼自身多样的形态特点,给传统识别方法带来了巨大挑战。
本项目基于YOLOv10n模型进行改进,通过引入SPDConv(Spatial Pyramid Depthwise Convolution)模块,显著提升了模型对蝴蝶鱼的识别精度。实验采用包含20种蝴蝶鱼的5200+图像数据集,经过CLAHE增强和多角度数据扩充,最终模型mAP达到0.876,较原始YOLOv10n提升3.7%,参数量减少12.3%,特别在小目标检测性能上提升显著。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 数据集构建与预处理
2.1 数据收集与标注
构建高质量的数据集是模型成功的基础。我们收集了来自海洋生物学研究机构和实地拍摄的蝴蝶鱼图像,涵盖20种常见蝴蝶鱼种类,总计5200+张图像。数据集特征如下:
| 特征维度 | 详细描述 |
|---|---|
| 图像数量 | 5200+ |
| 种类数量 | 20种 |
| 光照条件 | 自然光、人工光、弱光 |
| 水质状况 | 清澈、浑浊、中等 |
| 拍摄角度 | 正面、侧面、俯视、仰视 |
数据标注采用LabelImg工具,确保每个蝴蝶鱼个体都被准确标记。标注时特别注意以下几点:
- 当多个蝴蝶鱼重叠时,确保每个个体都有独立标注
- 对于部分遮挡的个体,仍然标注完整边界框
- 记录每张图像的拍摄环境参数(深度、光照条件等)
2.2 数据预处理技术
针对水下图像的特殊性,我们采用了以下预处理策略:
-
CLAHE增强:使用对比度受限的自适应直方图均衡化技术处理图像,有效解决水下图像常见的蓝色调偏移和低对比度问题。
-
数据增强:应用多种增强技术扩充数据集:
- 随机旋转(-15°~15°)
- 水平/垂直翻转
- 亮度调整(±20%)
- 对比度调整(±20%)
- 添加高斯噪声(σ=0.01)
-
归一化处理:将像素值归一化到[0,1]范围,加速模型收敛。
python复制def clahe_enhancement(image):
# 将图像转换为LAB颜色空间
lab = cv2.cvtColor(image, cv2.COLOR_BGR2LAB)
l, a, b = cv2.split(lab)
# 应用CLAHE到L通道
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
cl = clahe.apply(l)
# 合并通道并转换回BGR
limg = cv2.merge((cl,a,b))
enh
