首页
/ 超强垃圾分类数据集:40类精细标注助你搞定智能回收系统开发

超强垃圾分类数据集: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中配置:

  1. Mosaic增强:将4张图片拼接成1张,增加训练样本的多样性

    • 配置参数:mosaic: 1.0(比例,1.0表示全部使用)
  2. 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']})")

高级应用技巧

数据平衡处理

由于不同类别的样本数量可能存在差异,建议在训练前进行数据平衡处理:

  1. 过采样:对样本较少的类别进行过采样
  2. 欠采样:对样本过多的类别进行欠采样
  3. 类别权重:在训练过程中为不同类别设置权重

模型训练流程

timeline
    title 模型训练流程
    数据集准备 : 加载数据集, 检查标注完整性
    数据预处理 : 图像 resize, 归一化, 数据增强
    模型选择 : 选择YOLOv5/YOLOv7等目标检测模型
    模型训练 : 配置超参数, 开始训练
    模型评估 : 在验证集上评估模型性能
    模型优化 : 调整参数, 进行模型优化
    模型部署 : 导出模型, 部署到实际应用中

性能优化建议

  1. 标注质量检查:定期检查标注质量,确保边界框准确
  2. 数据增强策略:根据实际情况调整Mosaic和MixUp的比例
  3. 学习率调整:使用余弦退火等学习率调度策略
  4. 迁移学习:利用预训练模型进行迁移学习,加速收敛

注意事项

  1. 使用前请确保数据集目录结构正确,与data.yaml中的配置一致
  2. 训练前建议检查数据集的完整性,确保每个图像都有对应的标注文件
  3. 类别ID与类别名称的对应关系请参考data.yaml文件中的names字段
  4. 数据增强参数可以根据模型训练效果进行调整,建议从默认参数开始尝试
  5. 如在使用过程中发现标注错误,请及时反馈以便更新数据集

总结与展望

ai53_19/garbage_datasets数据集为垃圾分类算法开发提供了高质量的标注数据,其40个细分类别的设计覆盖了日常生活中常见的垃圾类型。通过合理使用数据增强和模型训练策略,可以构建高性能的垃圾识别模型。

未来,该数据集可以从以下几个方面进行扩展:

  • 增加更多垃圾类别的样本
  • 扩充不同场景下的垃圾图像
  • 添加更多角度和光照条件的图像
  • 增加视频序列数据,支持动态垃圾识别

如果你在使用过程中遇到任何问题或有改进建议,欢迎参与项目贡献,共同完善这个有价值的开源资源。

希望本文对你理解和使用ai53_19/garbage_datasets数据集有所帮助。如果你觉得这个项目有价值,请点赞收藏并关注项目更新!

登录后查看全文
热门项目推荐
相关项目推荐