1. 项目概述:当YOLOv5遇上垃圾分类
去年夏天,我在小区垃圾站目睹了一场"厨余垃圾该扔哪个桶"的争论后,萌生了用AI解决垃圾分类问题的想法。经过三个月的迭代,这套基于YOLOv5的垃圾识别系统在测试集上达到了94.3%的mAP,部署在树莓派上也能保持15FPS的实时检测速度。不同于常见的演示项目,这个系统特别针对中国垃圾分类标准进行了优化,处理了光照变化、遮挡等现实场景中的棘手问题。
整套方案包含三个核心模块:① 自建的3.2万张标注数据集(覆盖46类常见生活垃圾)② 经过通道剪枝的轻量化YOLOv5s模型 ③ 带分类结果语音提示的交互界面。最让我自豪的是,通过改进的K-means++锚框聚类方法,模型对小目标垃圾(如电池、药片)的识别率提升了27%。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心方案设计
2.1 数据集构建的魔鬼细节
市面公开的垃圾分类数据集往往存在两个问题:类别体系不符合国内标准(比如将"塑料袋"简单归为"塑料"),以及缺乏真实场景的复杂背景。为此我采用了"三步采集法":
-
基础数据收集:
- 使用爬虫抓取主流电商平台的商品图片(确保包装完整性)
- 在20个小区垃圾站定点拍摄不同时段、天气条件下的场景
- 通过数据增强生成遮挡、旋转等挑战性样本
-
标注规范制定:
python复制# 标注示例(YOLO格式)
class_id x_center y_center width height
3 0.452 0.671 0.12 0.08 # 3对应"易拉罐"
特别设计了"复合标签"机制,比如"奶茶杯"需要同时标注材质(塑料/纸)和残留物状态(空/半满)
- 数据清洗策略:
- 用CLIP模型过滤标注错误的样本
- 对长尾类别(如有害垃圾)进行定向过采样
- 保留5%的"困难样本"用于后期模型调优
2.2 模型选型的权衡之道
对比试验了四种架构后,最终选择YOLOv5s作为基础模型,主要基于三点考量:
- 速度-精度平衡:
模型 mAP@0.5 参数量(M) 推理速度(ms)
