1. 数据集概述与核心价值
这个由无人机航拍采集的沙滩垃圾分类识别数据集,是我在参与海岸线环保项目时积累的实战资源。数据集包含1148张高分辨率沙滩垃圾照片,采用VOC和YOLO双格式标注,覆盖6类常见海岸垃圾,标注框总数达到9831个。相比市面上的通用垃圾数据集,它的独特价值在于:
-
真实航拍视角:所有图片由无人机在3-5米高度拍摄,保留了沙滩垃圾的自然分布状态和光照条件,避免了人为摆放导致的数据偏差。这种俯视角与地面拍摄的垃圾图像存在显著差异,更接近实际环保巡查时的观察角度。
-
专业标注规范:每个标注框都经过三轮质检:
- 初级标注员框选物体
- 资深环保专家复核类别准确性
- 计算机视觉工程师检查坐标合规性
-
双格式兼容:同时提供VOC格式的XML文件和YOLO格式的TXT文件,省去了格式转换的麻烦。实测从下载到训练YOLOv5模型,整个过程不超过10分钟。
提示:虽然数据集标注了"外卖盒"和"外卖杯"等具体类别,但在实际应用中,建议根据任务需求考虑是否合并为"塑料容器"等更通用的类别,以提升模型泛化能力。
2. 数据集文件结构详解
解压后的数据集目录结构如下(以实际github仓库为准):
code复制datasets_sl/
├── JPEGImages/ # 原始图像
│ ├── 000001.jpg
│ └── ...(共1148张)
├── Annotations/ # VOC格式标注
│ ├── 000001.xml
│ └── ...(共1148个)
└── labels/ # YOLO格式标注
├── 000001.txt
├── ...
└── classes.txt # 类别索引文件
2.1 图像规格与采集细节
-
分辨率:所有图像统一为1920×1080像素,无人机采用DJI Mavic 2 Pro拍摄,传感器尺寸1英寸,保证了在航拍高度下的细节捕捉能力。
-
光照条件:包含三种典型场景:
- 晴天正午(强光下的反光物体)
- 多云天气(均匀漫反射)
- 黄昏时段(长阴影干扰)
-
拍摄角度:无人机以45°俯角拍摄,既避免了完全垂直拍摄导致的纹理信息缺失,又规避了低角度拍摄产生的透视畸变。
2.2 标注文件解析
VOC格式示例(000001.xml片段):
xml复制<object>
<name>plastic-bottle</name>
<bndbox>
<xmin>512</xmin>
<ymin>243</ymin>
<xmax>609</xmax>
<ymax>420</ymax>
</bndbox>
</object>
YOLO格式示例(000001.txt):
code复制1 0.532292 0.306944 0.101042 0.163889
其中各参数含义:
- 第一个数字"1"对应classes.txt中的类别索引(注意:不与原始统计的类别顺序一致!)
- 后续四个数字表示归一化后的中心坐标(x_center, y_center)和宽高(width, height)
重要:实际使用时务必以labels/classes.txt中的类别顺序为准,本数据集的默认顺序为:
code复制glass
plastic-bottle
retort-pouch
take-away-containers
takeaway-cup
tin-and-aluminum-cans
3. 数据分布与关键统计
3.1 类别数量分布
| 类别名称(英文) | 中文标签 | 标注框数量 | 占比 |
|---|---|---|---|
| tin-and-aluminum-cans | 铁罐和铝罐 | 2500 | 25.43% |
| plastic-bottle | 塑料瓶 | 2118 | 21.54% |
| retort-pouch | 杀菌袋 | 1733 | 17.63% |
| takeaway-cup | 外卖杯 | 1436 | 14.61% |
| glass | 玻璃 | 1183 | 12.03% |
| take-away-containers | 外卖盒 | 861 | 8.76% |
从分布可以看出:
- 金属容器和塑料瓶占比最高,符合海岸垃圾的普遍组成
- 玻璃类相对较少,可能与沙滩区域玻璃制品实际存量较低有关
- 外卖相关垃圾(杯+盒)合计占比23.37%,反映出现代生活方式对海岸环境的影响
3.2 目标尺寸分布
通过分析所有标注框的宽高(以像素为单位):
- 小目标(<32×32像素):约18%
- 中等目标(32×32~96×96像素):约63%
- 大目标(>96×96像素):约19%
这种分布对模型设计提出要求:
- 需要较强的中小目标检测能力
- 建议使用FPN(特征金字塔网络)结构
- 可尝试专门针对小目标的检测头改进
4. 数据使用建议与实战技巧
4.1 数据预处理方案
基于实际项目经验,推荐以下预处理流程:
-
自动增强(可选):
python复制# Albumentations示例 transform = A.Compose([ A.HorizontalFlip(p=0.5), A.RandomBrightnessContrast(p=0.2), A.RandomFog(p=0.1), # 模拟海雾效果 A.RandomSunFlare(p=0.1) # 模拟阳光反射 ], bbox_params=A.BboxParams(format='yolo')) -
类别平衡策略:
- 对"take-away-containers"采用过采样
- 对"tin-and-aluminum-cans"采用降采样
- 或使用focal loss缓解类别不平衡
-
验证集划分建议:
python复制# 按8:1:1划分训练/验证/测试集 # 确保每个集合都包含所有类别 from sklearn.model_selection import train_test_split train_val, test = train_test_split(images, test_size=0.1, stratify=labels) train, val = train_test_split(train_val, test_size=0.11, stratify=labels[train_val])
4.2 模型训练注意事项
-
锚框(anchor)优化:
python复制# 使用k-means聚类计算自定义锚框 from sklearn.cluster import KMeans # 加载所有标注框的宽高... kmeans = KMeans(n_clusters=9) kmeans.fit(box_wh) anchors = kmeans.cluster_centers_ -
学习率设置经验:
- 初始学习率建议3e-4
- 使用余弦退火调度器
- 早停(early stopping)耐心设为15个epoch
-
评估指标选择:
- 重点关注mAP@0.5:0.95
- 对"glass"类别单独监控Recall(玻璃碎片危害大,漏检成本高)
5. 常见问题与解决方案
5.1 标注框抖动问题
现象:同一物体在不同图片中标注位置存在几个像素的偏移
解决方案:
- 训练时加入马赛克增强(mosaic augmentation)
- 在损失函数中加入CIoU损失项
- 测试时使用加权框融合(WBF)后处理
5.2 相似类别混淆
典型错误:
- plastic-bottle与takeaway-cup混淆
- retort-pouch与take-away-containers混淆
改进策略:
-
可视化混淆矩阵:
python复制from sklearn.metrics import confusion_matrix cm = confusion_matrix(true_labels, pred_labels) -
针对性增强:
- 对易混淆类别生成对抗样本
- 添加注意力机制模块
5.3 小目标检测优化
技巧实录:
-
修改YOLO的检测头结构:
yaml复制# YOLOv5模型配置文件修改 head: [[-1, 1, Conv, [256, 1, 1]], [-1, 1, nn.Upsample, [None, 2, 'nearest']], [[-1, 6], 1, Concat, [1]] # 增加浅层特征融合 ] -
使用高分辨率测试:
- 训练时采用640×640输入
- 测试时切换到1024×1024
-
后处理优化:
- 降低小目标的置信度阈值
- 调整NMS的iou阈值
在实际部署中发现,通过这些优化可以将玻璃碎片的检出率从72%提升到89%,显著提升了沙滩清洁作业的安全性。
