1. 项目背景与核心价值
在工业自动化与环保领域,废料传送带上的实时垃圾分类一直是个棘手问题。传统人工分拣不仅效率低下,还存在卫生安全隐患。我们团队开发的这个数据集,正是为了解决传送带场景下的5类垃圾自动识别需求。
这个VOC+YOLO双格式数据集包含1476张高质量标注图像,覆盖了传送带工作环境下的典型垃圾类型。与通用垃圾分类数据集不同,我们的数据特别强调动态传送场景的特性:
- 物体存在运动模糊
- 存在堆叠和部分遮挡
- 光照条件复杂多变
- 背景包含传送带纹理特征
关键提示:传送带场景的检测难点在于物体姿态单一(基本都是俯视角度),但存在速度相关的运动模糊和相邻物体的粘连现象。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 数据集技术规格详解
2.1 数据采集与标注规范
我们使用工业相机在3条不同速度的传送带上采集原始素材,确保覆盖以下工况:
- 传送带速度:0.2m/s、0.5m/s、0.8m/s
- 光照条件:自然光+补光灯混合照明
- 拍摄角度:距传送带1.2米高度的45度俯角
标注遵循严格的质检流程:
- 初级标注员完成初始标注
- 高级工程师进行边界框修正
- 最后由领域专家抽样复核
标注规范特别规定:
- 对于重叠物体,按可见部分标注完整轮廓
- 运动模糊超过50%的样本直接剔除
- 每个样本至少包含2个以上待分类物体
2.2 类别分布与样本特性
数据集包含5个经过精心选择的垃圾类别,这些类别在工业场景中出现频率最高且最具回收价值:
| 类别名称 | 样本数量 | 典型特征 | 常见误判情况 |
|---|---|---|---|
| PET瓶 | 428 | 透明/半透明圆柱体 | 易与玻璃瓶混淆 |
| 纸板箱 | 367 | 规则立方体褶皱表面 | 堆叠时边界难界定 |
| 金属罐 | 312 | 高反光圆柱体 | 镜面反射造成特征丢失 |
| 泡沫塑料 | 289 | 白色不规则多孔结构 | 易被识别为纸类 |
| 其他塑料 | 180 | 形状颜色多变 | 分类准确率最低 |
数据集采用8:1:1的比例划分训练集、验证集和测试集,且确保每个子集都包含所有速度条件下的样本。
3. 双格式设计的技术考量
3.1 VOC格式的优势与应用
采用PASCAL VOC格式主要基于以下考虑:
- 兼容绝大多数传统检测算法(Faster R-CNN等)
- XML标注文件可读性强,便于人工校验
- 成熟的评估工具(如VOCdevkit)
典型VOC标注示例:
xml复制<object>
<name>PET_bottle</name>
<bndbox>
<xmin>256</xmin>
<ymin>189</ymin>
<xmax>312</xmax>
<ymax>287</ymax>
</bndbox>
<difficult>0</difficult>
<truncated>1</truncated>
</object>
特别注意:我们额外标注了
和 标签,这对传送带场景特别重要——当物体部分移出画面或严重变形时,这些标记能帮助算法正确处理边缘案例。
3.2 YOLO格式的优化设计
针对YOLO系列算法的特点,我们做了以下专门优化:
- 归一化坐标保留4位小数,减少精度损失
- 为每个样本生成配套的txt标注文件
- 提供预定义的data.yaml配置文件
YOLO标注示例:
code复制3 0.5482 0.6719 0.1250 0.2344
(类别ID 中心x 中心y 宽度 高度)
在实际使用中发现,YOLOv5/v8对这类连续帧数据的处理效果最好,因此我们建议:
- 训练时启用
--rect参数处理非正方形输入 - 使用
--augment增强运动模糊样本 - 调整anchor尺寸匹配传送带物体比例
4. 实际应用与模型训练建议
4.1 数据预处理要点
传送带场景需要特殊的预处理流程:
- 运动模糊补偿:
python复制# 使用Wiener滤波器减少运动模糊
def deblur(image):
psf = np.ones((3, 3)) / 9 # 假设匀速直线运动
return restoration.wiener(image, psf, 0.1)
- 传送带背景抑制:
- 采用HSV色彩空间分离传送带背景
- 使用频域滤波消除周期性纹理
- 数据增强策略:
- 运动模糊模拟(关键增强)
- 随机遮挡模拟(模拟堆叠)
- 光照条件扰动
4.2 模型训练技巧
基于我们的实验,推荐以下训练配置:
| 参数项 | 推荐值 | 理论依据 |
|---|---|---|
| 输入尺寸 | 640x640 | 兼顾细节和速度 |
| Batch size | 16 | 显存利用率最优 |
| 初始学习率 | 0.01 | 配合余弦退火策略 |
| 损失权重 | cls:1.0 obj:1.0 box:0.5 | 侧重分类准确性 |
| 增强概率 | 0.8 | 防止过拟合 |
特别有效的trick:
- 使用CBAM注意力模块提升小物体检测
- 采用BiFPN特征融合网络
- 添加传送带速度作为辅助输入(需改造网络结构)
5. 部署优化与性能指标
5.1 边缘设备部署方案
针对工业现场常见的Jetson系列和RK3588平台,我们验证了以下优化手段:
- TensorRT加速:
bash复制trtexec --onnx=yolov8n.onnx \
--saveEngine=yolov8n.engine \
--fp16 \
--workspace=2048
- 量化方案对比:
| 量化方式 | 精度(mAP) | 推理速度(FPS) | 适用场景 |
|---|---|---|---|
| FP32 | 0.892 | 45 | 高精度要求 |
| FP16 | 0.887 | 68 | 最佳平衡点 |
| INT8 | 0.861 | 92 | 纯速度优先 |
- 多相机同步处理框架:
python复制class MultiCamProcessor:
def __init__(self, model_path):
self.models = [load_model(model_path) for _ in range(4)]
def process_streams(self, streams):
with ThreadPoolExecutor() as executor:
results = list(executor.map(
lambda m,s: m(s),
self.models, streams
))
return results
5.2 性能基准测试
在测试集上的表现:
| 模型 | mAP@0.5 | 推理时延(ms) | 参数量(M) |
|---|---|---|---|
| YOLOv8n | 0.872 | 12.3 | 3.2 |
| YOLOv8s | 0.891 | 15.7 | 11.4 |
| YOLOv8m | 0.903 | 22.1 | 26.2 |
| Faster R-CNN | 0.845 | 48.6 | 41.8 |
典型误检案例分析:
- 严重变形的PET瓶被识别为"其他塑料"
- 反光强烈的金属罐被误判为背景
- 堆叠纸箱的边界框定位不准
6. 常见问题解决方案
6.1 标注相关疑问
Q:如何处理部分移出画面的物体?
A:我们的规范是:
- 可视部分>50%:标注完整物体,标记为
- 可视部分<50%:标注可见部分,标记为
- 完全移出:不标注
Q:类别不平衡如何解决?
A:建议采用:
- 过采样+数据增强组合
- 分类头使用Focal Loss
- 在损失函数中添加类别权重
6.2 训练过程中的典型问题
问题:验证集mAP波动大
可能原因:
- 运动模糊样本分布不均
- 学习率设置过高
解决方案:
yaml复制# 修改data.yaml
train: ../train/images
val: ../val/images
nc: 5
names: ['PET_bottle', 'cardboard', 'metal_can', 'foam', 'other_plastic']
# 调整超参数
lr0: 0.01 # 初始学习率
lrf: 0.2 # 最终学习率 = lr0 * lrf
问题:推理时漏检率高
检查清单:
- 确认输入分辨率与训练一致
- 测试时禁用letterbox(添加--no-letterbox)
- 调整conf-thres(建议0.25-0.4)
在实际部署中,我们发现最影响精度的因素是光照条件。建议工业现场:
- 安装波长590nm的补光灯(减少金属反光)
- 每季度重新校准白平衡
- 在传送带急停时触发模型重校准
这个数据集目前已经成功应用于多个垃圾分拣中心,平均识别准确率达到92.7%,比人工分拣效率提升300%。对于想尝试工业场景物体检测的开发者,建议先从YOLOv8s模型开始,逐步优化到满足实际需求。
