超强垃圾分类数据集:40类精细标注助你搞定智能回收系统开发
2026-02-04 04:20:17作者:董宙帆
你还在为垃圾分类数据集标注混乱、类别不全而头疼吗?还在纠结如何构建高效的智能垃圾识别模型吗?本文将全面解析ai53_19/garbage_datasets项目,带你掌握这个包含40个细分类别的高质量数据集的核心价值与使用方法。读完本文,你将能够:
- 快速理解数据集的结构与类别体系
- 掌握YOLO格式标注文件的解析方法
- 熟练配置数据增强策略提升模型性能
- 利用提供的工具高效管理和使用数据集
数据集概述
ai53_19/garbage_datasets是一个专为垃圾分类算法开发设计的图像数据集,包含40个细分类别,可归类为4个主要类别:可回收物、有害垃圾、厨余垃圾和其他垃圾。该数据集采用YOLO格式标注,适合训练目标检测模型,可广泛应用于智能垃圾桶、垃圾分拣机器人等场景。
核心特点
| 特点 | 详情 |
|---|---|
| 类别数量 | 40个细分类别,4个主要类别 |
| 标注格式 | YOLO格式,包含类别ID和边界框信息 |
| 数据量 | 训练集19028个标注,验证集18653个标注 |
| 数据增强 | 支持Mosaic和MixUp增强 |
| 配置文件 | 提供完整的data.yaml配置 |
数据集结构
datasets/
├── images/ # 图像文件目录
│ ├── train/ # 训练集图像
│ └── val/ # 验证集图像
└── labels/ # 标注文件目录
├── train/ # 训练集标注
└── val/ # 验证集标注
flowchart TD
A[数据集根目录] --> B[datasets]
B --> C[images]
B --> D[labels]
C --> E[train - 训练集图像]
C --> F[val - 验证集图像]
D --> G[train - 训练集标注]
D --> H[val - 验证集标注]
A --> I[data.yaml - 配置文件]
A --> J[garbage_datasets.py - 工具脚本]
类别体系详解
主要类别分布
pie
title 主要类别分布
"可回收物" : 23
"有害垃圾" : 3
"厨余垃圾" : 8
"其他垃圾" : 6
详细类别清单
可回收物(23类)
- 充电宝、包、化妆品瓶、玩具、塑料碗
- 塑料衣架、纸袋、插头电线、旧衣物、易拉罐
- 枕头、毛绒玩具、洗发水瓶、玻璃杯、鞋子
- 铁砧、纸板箱、调味品瓶、酒瓶、金属食品罐
- 锅、食用油桶、饮料瓶
有害垃圾(3类)
- 干电池
- 药膏
- 过期药品
厨余垃圾(8类)
- 剩饭剩菜、骨头、水果皮
- 纸浆、茶叶、蔬菜
- 蛋壳、鱼骨
其他垃圾(6类)
- 快餐盒、污损塑料
- 烟头、牙签
- 花盆、竹筷
类别映射关系
classDiagram
class 可回收物 {
+充电宝
+包
+化妆品瓶
+玩具
+塑料碗
+塑料衣架
+纸袋
+插头电线
+旧衣物
+易拉罐
+枕头
+毛绒玩具
+洗发水瓶
+玻璃杯
+鞋子
+铁砧
+纸板箱
+调味品瓶
+酒瓶
+金属食品罐
+锅
+食用油桶
+饮料瓶
}
class 有害垃圾 {
+干电池
+药膏
+过期药品
}
class 厨余垃圾 {
+剩饭剩菜
+骨头
+水果皮
+纸浆
+茶叶
+蔬菜
+蛋壳
+鱼骨
}
class 其他垃圾 {
+快餐盒
+污损塑料
+烟头
+牙签
+花盆
+竹筷
}
可回收物 <|-- 主要类别
有害垃圾 <|-- 主要类别
厨余垃圾 <|-- 主要类别
其他垃圾 <|-- 主要类别
数据集使用指南
环境准备
首先,克隆项目仓库:
git clone https://gitcode.com/ai53_19/garbage_datasets
cd ai53_19/garbage_datasets
配置文件解析
配置文件data.yaml中已包含所有必要的配置信息,主要内容如下:
path: ./datasets # 数据集根目录
train: images/train # 训练集图片路径
val: images/val # 验证集图片路径
augment: true # 是否启用数据增强
mosaic: 1.0 # Mosaic增强比例
mixup: 0.1 # MixUp增强比例
nc: 40 # 类别总数
names: # 类别名称列表
- FastFoodBox
- SoiledPlastic
# ... 其他类别名称
category_mapping: # 主要类别映射
Recyclables:
- Powerbank
# ... 其他可回收物类别
标注文件格式
数据集使用YOLO格式标注,每个图片对应一个同名的.txt标注文件,格式如下:
<class_id> <x_center> <y_center> <width> <height>
其中:
<class_id>: 类别索引,对应data.yaml中names的顺序<x_center>: 目标中心x坐标(归一化,0-1)<y_center>: 目标中心y坐标(归一化,0-1)<width>: 目标宽度(归一化,0-1)<height>: 目标高度(归一化,0-1)
例如,一个标注文件可能包含以下内容:
23 0.45 0.32 0.2 0.3
5 0.6 0.7 0.15 0.25
数据增强配置
数据集支持以下数据增强方式,可在data.yaml中配置:
-
Mosaic增强:将4张图片拼接成1张,增加训练样本的多样性
- 配置参数:
mosaic: 1.0(比例,1.0表示全部使用)
- 配置参数:
-
MixUp增强:将两张图片按比例混合,提高模型的鲁棒性
- 配置参数:
mixup: 0.1(比例,0.1表示10%的概率使用)
- 配置参数:
stateDiagram
[*] --> 原始图像
原始图像 --> Mosaic增强: 100%概率
Mosaic增强 --> MixUp增强: 10%概率
Mosaic增强 --> 输出图像: 90%概率
MixUp增强 --> 输出图像
输出图像 --> [*]
数据加载示例
使用Python加载数据集的示例代码:
import yaml
import os
from PIL import Image
def load_dataset_config(config_path):
"""加载数据集配置文件"""
with open(config_path, 'r') as f:
return yaml.safe_load(f)
def load_image_annotation(image_path, config):
"""加载图像及其对应的标注"""
# 获取标注文件路径
label_path = image_path.replace('images', 'labels').replace(os.path.splitext(image_path)[1], '.txt')
# 读取图像
image = Image.open(image_path)
width, height = image.size
# 读取标注
annotations = []
if os.path.exists(label_path):
with open(label_path, 'r') as f:
for line in f.readlines():
parts = line.strip().split()
if len(parts) == 5:
class_id, x_center, y_center, w, h = map(float, parts)
# 转换为像素坐标
x_center *= width
y_center *= height
w *= width
h *= height
annotations.append({
'class_id': int(class_id),
'class_name': config['names'][int(class_id)],
'x_center': x_center,
'y_center': y_center,
'width': w,
'height': h
})
return image, annotations
# 使用示例
config = load_dataset_config('data.yaml')
image, annotations = load_image_annotation('datasets/images/train/img_1.jpg', config)
print(f"图像尺寸: {image.size}")
print(f"标注数量: {len(annotations)}")
for ann in annotations:
print(f"类别: {ann['class_name']}, 位置: ({ann['x_center']}, {ann['y_center']}, {ann['width']}, {ann['height']})")
高级应用技巧
数据平衡处理
由于不同类别的样本数量可能存在差异,建议在训练前进行数据平衡处理:
- 过采样:对样本较少的类别进行过采样
- 欠采样:对样本过多的类别进行欠采样
- 类别权重:在训练过程中为不同类别设置权重
模型训练流程
timeline
title 模型训练流程
数据集准备 : 加载数据集, 检查标注完整性
数据预处理 : 图像 resize, 归一化, 数据增强
模型选择 : 选择YOLOv5/YOLOv7等目标检测模型
模型训练 : 配置超参数, 开始训练
模型评估 : 在验证集上评估模型性能
模型优化 : 调整参数, 进行模型优化
模型部署 : 导出模型, 部署到实际应用中
性能优化建议
- 标注质量检查:定期检查标注质量,确保边界框准确
- 数据增强策略:根据实际情况调整Mosaic和MixUp的比例
- 学习率调整:使用余弦退火等学习率调度策略
- 迁移学习:利用预训练模型进行迁移学习,加速收敛
注意事项
- 使用前请确保数据集目录结构正确,与
data.yaml中的配置一致 - 训练前建议检查数据集的完整性,确保每个图像都有对应的标注文件
- 类别ID与类别名称的对应关系请参考
data.yaml文件中的names字段 - 数据增强参数可以根据模型训练效果进行调整,建议从默认参数开始尝试
- 如在使用过程中发现标注错误,请及时反馈以便更新数据集
总结与展望
ai53_19/garbage_datasets数据集为垃圾分类算法开发提供了高质量的标注数据,其40个细分类别的设计覆盖了日常生活中常见的垃圾类型。通过合理使用数据增强和模型训练策略,可以构建高性能的垃圾识别模型。
未来,该数据集可以从以下几个方面进行扩展:
- 增加更多垃圾类别的样本
- 扩充不同场景下的垃圾图像
- 添加更多角度和光照条件的图像
- 增加视频序列数据,支持动态垃圾识别
如果你在使用过程中遇到任何问题或有改进建议,欢迎参与项目贡献,共同完善这个有价值的开源资源。
希望本文对你理解和使用ai53_19/garbage_datasets数据集有所帮助。如果你觉得这个项目有价值,请点赞收藏并关注项目更新!
登录后查看全文
热门项目推荐
相关项目推荐
GLM-5智谱 AI 正式发布 GLM-5,旨在应对复杂系统工程和长时域智能体任务。Jinja00
GLM-5-w4a8GLM-5-w4a8基于混合专家架构,专为复杂系统工程与长周期智能体任务设计。支持单/多节点部署,适配Atlas 800T A3,采用w4a8量化技术,结合vLLM推理优化,高效平衡性能与精度,助力智能应用开发Jinja00
请把这个活动推给顶尖程序员😎本次活动专为懂行的顶尖程序员量身打造,聚焦AtomGit首发开源模型的实际应用与深度测评,拒绝大众化浅层体验,邀请具备扎实技术功底、开源经验或模型测评能力的顶尖开发者,深度参与模型体验、性能测评,通过发布技术帖子、提交测评报告、上传实践项目成果等形式,挖掘模型核心价值,共建AtomGit开源模型生态,彰显顶尖程序员的技术洞察力与实践能力。00
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
MiniMax-M2.5MiniMax-M2.5开源模型,经数十万复杂环境强化训练,在代码生成、工具调用、办公自动化等经济价值任务中表现卓越。SWE-Bench Verified得分80.2%,Multi-SWE-Bench达51.3%,BrowseComp获76.3%。推理速度比M2.1快37%,与Claude Opus 4.6相当,每小时仅需0.3-1美元,成本仅为同类模型1/10-1/20,为智能应用开发提供高效经济选择。【此简介由AI生成】Python00
Qwen3.5Qwen3.5 昇腾 vLLM 部署教程。Qwen3.5 是 Qwen 系列最新的旗舰多模态模型,采用 MoE(混合专家)架构,在保持强大模型能力的同时显著降低了推理成本。00- RRing-2.5-1TRing-2.5-1T:全球首个基于混合线性注意力架构的开源万亿参数思考模型。Python00
热门内容推荐
最新内容推荐
Degrees of Lewdity中文汉化终极指南:零基础玩家必看的完整教程Unity游戏翻译神器:XUnity Auto Translator 完整使用指南PythonWin7终极指南:在Windows 7上轻松安装Python 3.9+终极macOS键盘定制指南:用Karabiner-Elements提升10倍效率Pandas数据分析实战指南:从零基础到数据处理高手 Qwen3-235B-FP8震撼升级:256K上下文+22B激活参数7步搞定机械键盘PCB设计:从零开始打造你的专属键盘终极WeMod专业版解锁指南:3步免费获取完整高级功能DeepSeek-R1-Distill-Qwen-32B技术揭秘:小模型如何实现大模型性能突破音频修复终极指南:让每一段受损声音重获新生
项目优选
收起
deepin linux kernel
C
27
11
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
564
3.82 K
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
892
661
Ascend Extension for PyTorch
Python
376
443
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
349
199
昇腾LLM分布式训练框架
Python
116
145
暂无简介
Dart
794
197
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.37 K
775
openJiuwen agent-studio提供零码、低码可视化开发和工作流编排,模型、知识库、插件等各资源管理能力
TSX
1.13 K
269
React Native鸿蒙化仓库
JavaScript
308
359