从‘电池’到‘胡萝卜’:聊聊构建YOLO生活垃圾数据集时遇到的坑与收获

张开发
2026/4/7 20:43:15 15 分钟阅读

分享文章

从‘电池’到‘胡萝卜’:聊聊构建YOLO生活垃圾数据集时遇到的坑与收获
从‘电池’到‘胡萝卜’构建YOLO生活垃圾数据集的实战思考去年夏天我在自家小区做垃圾分类志愿者时发现一个有趣现象居民们对1号电池属于有害垃圾这类规则记得很牢但面对半个胡萝卜该扔哪个桶时却会犹豫。这种日常观察直接促成了我的生活垃圾识别项目——用计算机视觉技术解决垃圾分类中的模糊地带。本文将分享构建这个特殊数据集过程中的关键挑战和解决方案这些经验或许能帮你避开我踩过的坑。1. 定义垃圾类别的艺术在项目启动阶段最令人头疼的不是技术问题而是如何定义什么是厨余垃圾。最初我们按照市政分类标准制定了四个大类有害垃圾、可回收物、厨余垃圾和其他垃圾。但实际操作中边界模糊的案例层出不穷。1.1 尺寸引发的分类难题我们遇到了几个典型争议案例电池大小的厨余垃圾最初将小土豆、胡萝卜块定义为尺寸不超过5号电池但实际收集的土豆从鹌鹑蛋到拳头大小都有破碎物品的归属半片瓷碗属于其他垃圾但当它小到一定程度时外观特征几乎消失复合材料的处理带铝箔内层的药品包装究竟算有害垃圾还是可回收物最终采用的解决方案是# 类别定义示例 CLASS_DEFINITION { hazardous: [battery_1, battery_2, expired_medicine], kitchen: [potato_small, carrot_cut], # 尺寸阈值定义 size_threshold: { max_diameter: 5.0, # 单位厘米 min_pixel_area: 300 # 最小像素面积 } }1.2 数据平衡的实战策略原始数据采集后各类别数量严重失衡类别初始数量目标数量采集策略有害垃圾120500模拟不同摆放角度厨余垃圾800800保持原样可回收物300500增加不同品牌变体其他垃圾150500人工制造碎片样本我们采用三种增广方式解决这个问题物理模拟在白色转盘上旋转拍摄小物件数字增广使用Albumentations库进行色彩和几何变换合成数据Blender建模生成特定角度的电池图像2. 标注实战中的魔鬼细节标注过程看似机械实则充满认知陷阱。我们团队在标注2000张图片后才逐渐形成可靠的标注规范。2.1 小物体标注的最佳实践对于小尺寸垃圾如纽扣电池我们发现标注框最小尺寸至少15×15像素否则YOLO难以学习有效特征遮挡处理原则被遮挡≥50%的物体舍弃标注部分遮挡时标注可见部分密集小物体采用Mosaic增广时需注意最小间距标注员培训要点对于不确定的物体宁可标注为未知也不要猜测。我们设置了专门的review流程处理这类边缘案例。2.2 质量控制的四重机制为确保标注质量我们建立了以下流程初级标注使用LabelImg进行初始标注交叉验证不同标注员对同一批图片进行二次标注自动检查运行以下脚本检测常见错误# 标注验证脚本片段 def validate_annotation(ann_file, img_size): with open(ann_file) as f: lines f.readlines() errors [] for line in lines: cls, x, y, w, h map(float, line.split()) if not (0 x 1 and 0 y 1): errors.append(f坐标越界: {line}) if w*h 0.0005: # 面积过小 errors.append(f目标过小: {line}) return errors专家复核每周抽样检查5%的标注结果3. 从数据到模型的闭环验证数据集构建不是终点我们设计了特殊的验证方法确保数据质量能转化为模型性能。3.1 特征空间分析技术使用UMAP可视化特征分布我们发现有害垃圾在特征空间中形成紧密簇厨余垃圾分布最分散可回收物出现多个子簇对应不同材质# 特征可视化代码示例 from umap import UMAP import matplotlib.pyplot as plt def visualize_features(features, labels): reducer UMAP(n_components2) embeddings reducer.fit_transform(features) plt.scatter(embeddings[:,0], embeddings[:,1], clabels, alpha0.6) plt.colorbar() plt.title(Feature Space Distribution)3.2 困难样本挖掘策略模型初步训练后我们重点关注持续误判样本建立专门文件夹收集边界案例如电池与瓶盖的混淆特殊光照条件反光金属表面的识别针对这些问题样本我们不是简单增加数量而是分析误判原因光照角度遮挡设计针对性采集方案重新标注问题区域4. 工程化部署的隐藏成本当数据集达到1.5万张图片时一些非技术因素开始影响项目进度。4.1 存储与版本管理方案我们对比了三种存储方案方案成本访问速度版本管理适合场景本地NAS高快困难小团队高频访问AWS S3中中完善分布式团队阿里云OSS低慢基础归档长期存储最终采用的混合方案热数据本地SSD缓存最近使用的2000张图片温数据企业NAS存储完整数据集冷数据云存储备份原始素材4.2 标注团队管理经验经过三个月实践我们总结出标注团队效率公式每日有效标注量 (基础速度 × 质量系数) / (复杂度因子 疲劳度)其中质量系数通过交叉验证计算复杂度因子与物体平均尺寸负相关疲劳度采用工作25分钟休息5分钟的模式控制在项目后期我们为标注工具添加了以下人性化功能自动检测长时间未保存操作标注难度评分系统实时显示个人进度排名记得有次为了确定一个被压扁的铝罐是否还属于可回收物我们专门咨询了垃圾处理厂的技术人员。这种跨界沟通带来的认知提升往往比技术优化更令人惊喜。数据集构建从来不只是机械劳动它要求我们同时具备领域专家的洞察力和工程师的严谨性。

更多文章