本项目是一套基于YOLOv8的垃圾分类识别系统,以44 细类垃圾目标检测数据集为数据基础,面向四十四种具体垃圾物品的定位、识别与四大类归并完成模型训练、评估与系统应用。系统提供Web 端和 PyQt6 桌面端,支持图片、视频和摄像头输入,并集成结果查看、历史查询、模型管理与训练指标展示,适用于项目设计、课程实践和答辩展示。
一、项目简介
使用四十四细类垃圾目标检测数据识别具体物品,再按照项目内的类别映射归入可回收物、厨余垃圾、有害垃圾和其他垃圾。系统同时展示目标框、细类明细与大类统计,支持大批量处理、历史查询和结果导出。
| 组成 | 项目内容 |
|---|---|
| 数据集 | 44 细类垃圾目标检测数据集 |
| 模型 | YOLOv8n |
| 识别任务 | 四十四种具体垃圾物品的定位、识别与四大类归并 |
| 实验资料 | 训练参数、日志、权重与已有图表 |
| 应用端 | 桌面界面与浏览器操作界面 |
二、系统功能设计
2.1 登录与系统概览
账号登录后通过侧栏进入图片、批量、视频、摄像头、历史、分类规则、模型与指标页面。概览汇总已有检测记录与实验信息。
2.2 图片检测与目标定位
上传图像后显示目标框、44 细类名称、置信度、坐标及四大类统计。支持目标定位和类别筛选,方便逐项检查同一图像中的多个物品。
2.3 大批量图片检测
支持多选、拖拽和文件夹导入,单批最多 15,000 张,分块上传、逐张推理并分页浏览。损坏图片单独记录,没有检出目标的图片按成功处理,任务可取消并保留完成部分。
2.4 四大类与细类对应
分类规则页展示四大类与 44 个细类的对应关系,检测框、大类统计、结果明细与导出保持关联。归并依据是本项目映射,实际使用时可结合目标场景调整。
2.5 视频、历史与导出
视频按采样帧处理,可查看播放、趋势与分类统计。历史长期保存检测明细和统计,标注媒体保留 24 小时;标注图片、视频、CSV 与批量 ZIP 可按页面下载。
2.6 模型与参数
模型页展示项目既有垃圾检测权重和推理参数。训练日志中的峰值、轮次与末轮结果分别呈现,可回看完整实验变化。
三、技术栈
| 类别 | 技术及用途 |
|---|---|
| 编程语言 | Python、JavaScript |
| 深度学习框架 | PyTorch |
| 模型训练与推理 | Ultralytics YOLOv8 |
| 桌面界面 | PyQt6 |
| Web 服务 | FastAPI |
| Web 前端 | HTML、CSS、JavaScript |
| 图像与视频处理 | OpenCV、NumPy |
| 训练日志与离线绘图 | Matplotlib;CSV 训练记录 |
| 结果保存 | Web 独立目录中的账号、任务、历史与结果文件 |
四、项目结构
项目将训练代码、界面、模型产物和 Web 服务分别组织,主要目录如下:
c293/ ├─ data/ ├─ data_prepare/ ├─ main.py ├─ plot_results.py ├─ README.md ├─ requirements.txt ├─ runs/ ├─ ui/ ├─ utils/ └─ web/ ├─ backend/ # 服务接口与推理任务 ├─ frontend/ # 页面与交互 └─ data/ # Web 独立运行数据本文对应的训练日志位于runs/detect/train/results.csv。 数据集按实际配置定位;浏览器端的运行结果独立保存在 Web 数据目录。
五、数据集说明
5.1 数据集与识别任务
项目使用44 细类垃圾目标检测数据集,面向四十四种具体垃圾物品的定位、识别与四大类归并。每个目标由类别与边界框共同描述,模型输出位置及对应预测分数。
5.2 数据规模与划分
以下数量按当前本机配套数据目录统计;所列划分对应本项目的数据组织。
| 数据划分 | 图像数量 |
|---|---|
| 训练集 | 10,319 |
| 验证集 | 1,478 |
| 测试集 | 2,964 |
| 合计 | 14,761 |
5.3 类别与标注格式
| 类别编号 | 类别名称 | 中文含义 |
|---|---|---|
| 0 | 一次性快餐盒 | 一次性快餐盒 |
| 1 | 书籍纸张 | 书籍纸张 |
| 2 | 充电宝 | 充电宝 |
| 3 | 剩饭剩菜 | 剩饭剩菜 |
| 4 | 包 | 包 |
| 5 | 垃圾桶 | 垃圾桶 |
| 6 | 塑料器皿 | 塑料器皿 |
| 7 | 塑料玩具 | 塑料玩具 |
| 8 | 塑料衣架 | 塑料衣架 |
| 9 | 大骨头 | 大骨头 |
| 10 | 干电池 | 干电池 |
| 11 | 快递纸袋 | 快递纸袋 |
| 12 | 插头电线 | 插头电线 |
| 13 | 旧衣服 | 旧衣服 |
| 14 | 易拉罐 | 易拉罐 |
| 15 | 枕头 | 枕头 |
| 16 | 果皮果肉 | 果皮果肉 |
| 17 | 毛绒玩具 | 毛绒玩具 |
| 18 | 污损塑料 | 污损塑料 |
| 19 | 污损用纸 | 污损用纸 |
| 20 | 洗护用品 | 洗护用品 |
| 21 | 烟蒂 | 烟蒂 |
| 22 | 牙签 | 牙签 |
| 23 | 玻璃器皿 | 玻璃器皿 |
| 24 | 砧板 | 砧板 |
| 25 | 筷子 | 筷子 |
| 26 | 纸盒纸箱 | 纸盒纸箱 |
| 27 | 花盆 | 花盆 |
| 28 | 茶叶渣 | 茶叶渣 |
| 29 | 菜帮菜叶 | 菜帮菜叶 |
| 30 | 蛋壳 | 蛋壳 |
| 31 | 调料瓶 | 调料瓶 |
| 32 | 软膏 | 软膏 |
| 33 | 过期药物 | 过期药物 |
| 34 | 酒瓶 | 酒瓶 |
| 35 | 金属厨具 | 金属厨具 |
| 36 | 金属器皿 | 金属器皿 |
| 37 | 金属食品罐 | 金属食品罐 |
| 38 | 锅 | 锅 |
| 39 | 陶瓷器皿 | 陶瓷器皿 |
| 40 | 鞋 | 鞋 |
| 41 | 食用油桶 | 食用油桶 |
| 42 | 饮料瓶 | 饮料瓶 |
| 43 | 鱼骨 | 鱼骨 |
YOLO 标注按每行一个目标组织:
class_id center_x center_y width height中心点坐标与宽高采用相对图像尺寸的归一化值,图像与 TXT 标注按文件名对应。
六、模型训练过程
6.1 训练流程
项目按 YOLO 格式整理垃圾细类图像与标注,训练记录保存在runs/detect/train/。本次实验使用已有预训练权重进行微调,权重、参数与 CSV 一并保留。
- 按当前数据目录读取图像及对应标签。
- 将输入调整为实验配置的尺寸,并应用训练预处理。
- 加载基础模型,在对应类别上进行训练。
- 在验证阶段计算指标并保存日志及权重。
- 使用已有训练图表分析结果,并在系统中加载权重开展推理。
6.2 模型与训练参数
| 参数 | 本次记录 |
|---|---|
| 基础模型 | YOLOv8n |
| 配置轮数 | 100 |
| 日志实际轮数 | 100 |
| 输入尺寸 | 640 × 640 |
| Batch Size | 16 |
| 优化器配置 | auto |
| 预热轮数 | 3.0 |
| DataLoader Workers | 8 |
日志最后一行累计耗时为9,161.19 秒,约 152.7 分钟。 数据增强与学习率调度以本次参数记录和逐轮 CSV 为准;配置值与实际日志中的学习率分别读取。
6.3 训练产物
args.yaml:本次实验参数。results.csv:每一轮损失、检测指标和学习率。weights/:已保存的模型权重。- 训练图表:原始产物中的曲线、分布或评估图,见第八节。
七、训练结果与核心指标
7.1 最后一轮结果
以下为当前实验 CSV 的第100 轮验证结果:
| 指标 | 日志数值 | 百分比 |
|---|---|---|
| Precision | 0.75643 | 75.643% |
| Recall | 0.62701 | 62.701% |
| mAP@0.5 | 0.69712 | 69.712% |
| mAP@0.5:0.95 | 0.5981 | 59.810% |
7.2 各指标最高值
| 指标 | 最高值 | 对应轮次 |
|---|---|---|
| Precision | 0.79973 | 第 53 轮 |
| Recall | 0.6455 | 第 66 轮 |
| mAP@0.5 | 0.69909 | 第 81 轮 |
| mAP@0.5:0.95 | 0.59859 | 第 98 轮 |
单项峰值可能出现在不同轮次;末轮表用于查看同一轮完整结果,峰值表用于查看各指标在本次训练中的最高记录。
7.3 结果分析
44 细类的外观差异、相近包装和同图多物品使识别更具挑战。可分别核对细类检测与四大类归并,结合真实误检、漏检样本开展后续实验。
八、可视化图表说明
以下图片直接采用源码目录已有的训练产物,保留原始图表内容与数值。
8.1 训练与验证损失
展示图中对应的损失项随训练轮次的变化,结合训练与验证结果观察拟合情况。
8.2 训练与验证损失
展示图中对应的损失项随训练轮次的变化,结合训练与验证结果观察拟合情况。
8.3 检测指标变化
展示对应检测指标随训练轮次的变化,数值与本文列出的原始 CSV 结果按同一实验读取。
8.4 检测指标变化
展示对应检测指标随训练轮次的变化,数值与本文列出的原始 CSV 结果按同一实验读取。
8.5 检测指标变化
展示对应检测指标随训练轮次的变化,数值与本文列出的原始 CSV 结果按同一实验读取。
8.6 检测指标变化
展示对应检测指标随训练轮次的变化,数值与本文列出的原始 CSV 结果按同一实验读取。
本项目为个人原创项目,配套源码、模型权重、训练资料和项目说明,可用于毕业设计、课程实践、简历展示及个人学习。有项目成品或定制需求,可以通过主页联系作者。