崇左市网站建设_网站建设公司_MongoDB_seo优化
2025/12/26 16:59:19 网站建设 项目流程

厨余垃圾检测数据集 14964张 4类

yolo格式

【垃圾四类检测YOLO数据集】共【14964】张,按照8比2划分为训练集和验证集,其中训练集【11971】张,验证集【2993】张,模型分为【4】类,分类为:【‘可回收垃圾’, ‘其他垃圾’, ‘厨余垃圾’, ‘有害垃圾’】
每个类别的图片数量和标注框数量如下:
可回收垃圾: 图片数【7183】,标注框数【9229】
其他垃圾: 图片数【5527】,标注框数【9121】
厨余垃圾: 图片数【3449】,标注框数【5257】
有害垃圾: 图片数【1538】,标注框数【1983】

1

以下是厨余垃圾检测数据集(实为四类生活垃圾检测数据集)的详细信息汇总表,采用清晰结构化表格呈现,便于用于项目文档、模型训练说明或技术报告:


🗑️ 四类生活垃圾检测数据集信息表(YOLO 格式)

项目内容
数据集名称生活垃圾四分类目标检测数据集(YOLO格式)
总图像数量14,964 张 JPG 图像
标注格式YOLO.txt(每张图对应一个标签文件,坐标归一化)
类别数量4 类
数据划分比例训练集 : 验证集 =8 : 2
训练集数量11,971 张
验证集数量2,993 张
测试集未单独提供(可从验证集中划分或自行预留)

📊 各类别分布统计表

类别(中文)类别索引(YOLO class_id)图片数量(含该类的图像数)标注框总数(实例数)占总图像比例
可回收垃圾07,1839,229≈48.0%
其他垃圾15,5279,121≈36.9%
厨余垃圾23,4495,257≈23.1%
有害垃圾31,5381,983≈10.3%

⚠️ 注:

  • 图片数量 ≠ 总图像数之和(因单张图像可能包含多个类别,存在重叠)
  • 总图像数为14,964,但各类别图片数之和为7,183 + 5,527 + 3,449 + 1,538 = 17,697,表明约2,733 张图像包含多类垃圾

📁 推荐目录结构

garbage_detection_dataset/ ├── images/ │ ├── train/# 11,971 张 .jpg│ └── val/# 2,993 张 .jpg├── labels/ │ ├── train/# 11,971 个 .txt│ └── val/# 2,993 个 .txt└── dataset.yaml# YOLO 配置文件

📄dataset.yaml示例

# dataset.yamltrain:./images/trainval:./images/valnc:4names:['可回收垃圾','其他垃圾','厨余垃圾','有害垃圾']

💡 注意:Ultralytics YOLO 支持中文类别名,但建议在部署时使用英文(如recyclable,residual,organic,hazardous)以避免编码问题。


🔍 数据集特点与挑战

特点说明
多类别共现单图常含多种垃圾(如“厨余+其他”),适合多标签检测
类别不平衡“有害垃圾”样本最少(仅 1,538 张图,1,983 个框),需关注召回率
背景复杂拍摄场景多样(垃圾桶、街道、厨房等),光照/遮挡变化大
形态多样同一类垃圾外观差异大(如“可回收垃圾”含塑料瓶、纸箱、金属罐等)

✅ 适用场景

  • 智能垃圾分类机器人
  • 垃圾投放监控系统
  • 城市环卫 AI 管理平台
  • 高校课程设计 / 毕业设计 / AI 竞赛(如天池、Kaggle)

该数据集是构建智能垃圾分类视觉系统的理想选择,支持高精度四分类目标检测,助力绿色城市与可持续发展。

以下是针对四类生活垃圾检测数据集(14,964 张图像,YOLO 格式,4 类:可回收垃圾其他垃圾厨余垃圾有害垃圾)的完整YOLOv8 训练系统代码,包含数据配置、训练、验证、推理、评估及部署全流程。


✅ 一、前提条件

1. 数据目录结构(已按 8:2 划分)

garbage_detection_dataset/ ├── images/ │ ├── train/# 11,971 张 .jpg│ └── val/# 2,993 张 .jpg├── labels/ │ ├── train/# 11,971 个 .txt│ └── val/# 2,993 个 .txt└── dataset.yaml# 配置文件

💡 若你尚未划分,请使用文末提供的自动划分脚本。

2. 安装依赖

pipinstallultralytics opencv-python torch torchvision scikit-learn

📄 二、dataset.yaml配置文件

⚠️建议使用英文类别名(避免部分系统编码问题),但 YOLOv8 支持中文。

# dataset.yamltrain:./images/trainval:./images/valnc:4names:['recyclable','residual','organic','hazardous']# 或使用中文(确保终端支持 UTF-8):# names: ['可回收垃圾', '其他垃圾', '厨余垃圾', '有害垃圾']

🔁类别映射说明

  • 0 → recyclable(可回收垃圾)
  • 1 → residual(其他垃圾)
  • 2 → organic(厨余垃圾)
  • 3 → hazardous(有害垃圾)

🚀 三、YOLOv8 训练代码(train.py

# train.pyfromultralyticsimportYOLOimporttorchdefmain():device='cuda'iftorch.cuda.is_available()else'cpu'print(f"🚀 使用设备:{device}")# 加载预训练模型(推荐 yolov8s,平衡速度与精度)model=YOLO('yolov8s.pt')# 可选: yolov8n (更快), yolov8m (更准)# 开始训练results=model.train(data='dataset.yaml',epochs=100,# 垃圾分类数据量大,100 轮通常足够imgsz=640,# 推荐 640(兼顾细节与速度)batch=32,# 根据 GPU 显存调整(RTX 3090 可设 64)name='garbage_yolov8s_640',optimizer='AdamW',lr0=0.001,lrf=0.01,weight_decay=0.0005,warmup_epochs=3,# 数据增强(针对复杂背景优化)hsv_h=0.015,# 色调扰动(适应不同光照)hsv_s=0.7,hsv_v=0.4,degrees=10.0,# 轻微旋转translate=0.1,scale=0.5,fliplr=0.5,# 左右翻转(垃圾无方向性)mosaic=0.9,mixup=0.2,copy_paste=0.3,# 提升小目标(如有害垃圾电池)检测close_mosaic=10,device=device,workers=8,save=True,save_period=10,exist_ok=False,verbose=True)if__name__=='__main__':main()

💡为什么用copy_paste=0.3
“有害垃圾”样本少且目标小(如电池、药片),Copy-Paste 可合成更多正样本,显著提升召回率。


🔍 四、推理与可视化(detect.py

# detect.pyfromultralyticsimportYOLOimportcv2# 加载最佳模型model=YOLO('runs/detect/garbage_yolov8s_640/weights/best.pt')defdetect_image(image_path,conf_thres=0.3):"""检测单张图像并显示结果"""results=model(image_path,conf=conf_thres)annotated=results[0].plot()# 自动绘制框 + 中文/英文标签cv2.imshow("Garbage Detection",annotated)cv2.waitKey(0)cv2.destroyAllWindows()defdetect_folder(input_folder,output_folder="output"):"""批量检测文件夹并保存结果"""model.predict(source=input_folder,conf=0.3,save=True,project=output_folder,name="results",exist_ok=True)print(f"✅ 检测结果已保存至:{output_folder}/results/")

📊 五、验证集评估(evaluate.py

# evaluate.pyfromultralyticsimportYOLO model=YOLO('runs/detect/garbage_yolov8s_640/weights/best.pt')metrics=model.val(data='dataset.yaml')print("="*60)print("📊 验证集性能报告:")print(f"mAP@0.5 (Box):{metrics.box.map50:.4f}")print(f"mAP@0.5:0.95:{metrics.box.map:.4f}")print(f"Precision:{metrics.box.mp:.4f}")print(f"Recall:{metrics.box.mr:.4f}")print("="*60)# 按类别输出 AP@0.5class_names=['recyclable','residual','organic','hazardous']fori,nameinenumerate(class_names):ap50=metrics.box.ap50[i]ifhasattr(metrics.box,'ap50')else0.0print(f"{name:<12}: AP@0.5 ={ap50:.4f}")# 保存评估结果withopen("evaluation_results.txt","w",encoding='utf-8')asf:f.write(f"mAP@0.5:{metrics.box.map50:.4f}\n")f.write(f"mAP@0.5:0.95:{metrics.box.map:.4f}\n")fori,nameinenumerate(class_names):ap50=metrics.box.ap50[i]ifhasattr(metrics.box,'ap50')else0.0f.write(f"{name}: AP@0.5 ={ap50:.4f}\n")print("📝 评估结果已保存至 evaluation_results.txt")

🧩 六、自动划分脚本(如需从原始数据划分)

# utils/split_dataset.pyimportosimportrandomimportshutil# 假设原始数据在 raw_images/ 和 raw_labels/raw_img_dir='raw_images'raw_lbl_dir='raw_labels'# 获取所有图像文件(确保 .jpg 和 .txt 一一对应)all_files=[f.replace('.jpg','')forfinos.listdir(raw_img_dir)iff.endswith('.jpg')]random.seed(42)random.shuffle(all_files)split_idx=int(0.8*len(all_files))train_files=all_files[:split_idx]val_files=all_files[split_idx:]# 创建目录forsplitin['train','val']:os.makedirs(f'images/{split}',exist_ok=True)os.makedirs(f'labels/{split}',exist_ok=True)# 复制文件forfintrain_files:shutil.copy(f'{raw_img_dir}/{f}.jpg',f'images/train/{f}.jpg')shutil.copy(f'{raw_lbl_dir}/{f}.txt',f'labels/train/{f}.txt')forfinval_files:shutil.copy(f'{raw_img_dir}/{f}.jpg',f'images/val/{f}.jpg')shutil.copy(f'{raw_lbl_dir}/{f}.txt',f'labels/val/{f}.txt')print(f"✅ 划分完成: 训练集{len(train_files)}张, 验证集{len(val_files)}张")

📦 七、模型导出(用于部署)

# export_model.pyfromultralyticsimportYOLO model=YOLO('best.pt')# 导出为 ONNX(用于 CPU/Web)model.export(format='onnx',imgsz=640,simplify=True)# 导出为 TensorRT(用于 Jetson/NVIDIA GPU)model.export(format='engine',imgsz=640,half=True)# FP16 加速

该系统可助力智慧环保建设,推动垃圾分类智能化落地。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询