超强垃圾分类数据集: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数据集有所帮助。如果你觉得这个项目有价值,请点赞收藏并关注项目更新!
登录后查看全文
热门项目推荐
相关项目推荐
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00
GLM-4.7-FlashGLM-4.7-Flash 是一款 30B-A3B MoE 模型。作为 30B 级别中的佼佼者,GLM-4.7-Flash 为追求性能与效率平衡的轻量化部署提供了全新选择。Jinja00
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin07
compass-metrics-modelMetrics model project for the OSS CompassPython00
项目优选
收起
deepin linux kernel
C
27
11
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
525
3.72 K
Ascend Extension for PyTorch
Python
329
391
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
877
578
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
335
162
暂无简介
Dart
764
189
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
12
1
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
1.33 K
746
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
67
20
React Native鸿蒙化仓库
JavaScript
302
350