基于深度学习的垃圾分类系统的设计与实现

PyTorch 对 TrashNet 六类垃圾(玻璃、纸张、塑料等)图像智能分类平台,含可回收/干垃圾归类、混淆矩阵与管理员在线训练,适合深度学习环保应用类毕业设计。

评分:4.8/5.0
销量:5
发布:7/12/2026
难度:L3 高级

获取完整源码

演示视频仅作效果参考。完整源码、项目说明与运行答疑,请私聊沟通(适合毕业设计 / 课程设计 / 课设参考)。

获取完整源码观看演示视频
含项目说明文档,便于对照学习
可本地运行,适合课设演示
沟通获取后可咨询运行问题

项目封面

截图 1

项目概览

本系统基于 TrashNet 公开垃圾分类数据集,采用 Flask + PyTorch + SQLite + ECharts 技术栈,对上传图片中的玻璃、纸张、纸板、塑料、金属、其他垃圾六类进行自动识别,返回 Top-3 置信度与可回收物/干垃圾归类。数据概览展示类别分布、置信度区间、近 14 日识别趋势与管理员测试集混淆矩阵;REST API 全部来自真实模型推理与数据库统计,管理员可配置训练超参在线发起模型训练,适合作为毕业设计中 CNN 图像分类、智慧环保与 Flask 深度学习 Web 服务方向。

项目说明

基于深度学习的垃圾分类系统的设计与实现

项目简介

本系统是一个基于 Flask Web 框架与 PyTorch 深度学习模型的垃圾分类智能识别平台。系统面向垃圾图像分类场景,能够对上传图片中的玻璃、纸张、纸板、塑料、金属、其他垃圾等六类垃圾进行自动识别与置信度评估,并提供识别历史、数据统计、模型在线训练与记录导出等完整功能。

系统使用 TrashNet 公开垃圾分类数据集进行模型训练,管理员可手动发起模型训练,训练完成后自动加载新权重。启动服务不会自动训练。


API 接口

所有接口返回 JSON,格式 { "code": 0, "data": ... }{ "code": 1, "message": "..." }。数据均来自数据库或模型真实推理,无 mock。

接口方法权限说明
/api/dashboardGET登录数据概览统计:识别次数、置信度、类别/类型分布、置信度区间、各类平均置信度、数据集分布、识别趋势;管理员额外返回测试集混淆矩阵
/api/datasetGET登录TrashNet 数据集各类别真实样本数
/api/recordsGET登录识别记录分页,page/per_page 参数
/api/records/<id>DELETE登录删除识别记录
/api/classifyPOST登录上传图片分类,返回模型真实推理结果
/api/model/statusGET登录模型是否存在及最近训练指标
/api/training/recordsGET管理员训练历史记录
/api/training/startPOST管理员发起训练,body: {epochs, batch_size, learning_rate}
/api/usersGET管理员用户列表
/api/users/<id>DELETE管理员删除用户

/api/dashboard 主要数据字段(均为真实统计,无 mock):

字段说明
class_distribution识别记录按六类统计
category_distribution可回收物 / 干垃圾统计
confidence_bins置信度区间分布(0–50%、50–70%…)
class_avg_confidence各类平均置信度与次数
dataset_distributionTrashNet 目录真实样本数
daily_trend近 14 日识别趋势
confusion_matrix管理员:最近一次训练测试集混淆矩阵

/api/classify 返回字段说明(数值由模型实时推理产生):

{
  "code": 0,
  "data": {
    "predicted_class": "plastic",
    "predicted_cn": "塑料",
    "category": "可回收物",
    "confidence": 0.8734,
    "top3": [
      {
        "class_name": "plastic",
        "class_cn": "塑料",
        "category": "可回收物",
        "confidence": 0.8734
      },
      {
        "class_name": "glass",
        "class_cn": "玻璃",
        "category": "可回收物",
        "confidence": 0.0621
      },
      {
        "class_name": "paper",
        "class_cn": "纸张",
        "category": "可回收物",
        "confidence": 0.0312
      }
    ]
  }
}

功能模块

模块功能说明
用户认证用户注册、登录、退出;基于 Session 的会话管理;管理员与普通用户两级角色权限控制
数据概览核心指标卡片 + ECharts 图表:垃圾类别分布、可回收/干垃圾分布、置信度区间分布、各类平均置信度、TrashNet 样本分布、近 14 日识别趋势;管理员额外展示测试集混淆矩阵热力图
垃圾识别支持点击上传单张图片,实时执行模型推理,返回预测类别、垃圾类型、置信度与 Top-3 结果,并自动保存识别记录
识别记录识别记录分页浏览,查看历史识别结果,删除记录,导出 CSV(中文表头)
数据集信息展示 TrashNet 数据集统计(各类别样本数、数据集路径、下载地址、模型架构说明)
模型训练管理员可配置训练轮次、批次大小、学习率并启动在线训练;左侧模型指标卡与右侧准确率曲线同高展示,另含损失曲线与训练历史
用户管理管理员查看所有用户列表,删除普通用户账户

垃圾类别

系统支持识别以下六类垃圾:

类别 ID英文名称中文名称垃圾类型说明
0glass玻璃可回收物玻璃瓶、玻璃制品等
1paper纸张可回收物报纸、书本、纸箱纸等
2cardboard纸板可回收物纸箱、硬纸板等
3plastic塑料可回收物塑料瓶、塑料袋等
4metal金属可回收物易拉罐、金属制品等
5trash其他垃圾干垃圾不可回收的其他垃圾

标准版目录结构

python-deeper-study-lajifenlei/
├── app.py                         # Flask 应用工厂
├── run.py                         # 启动脚本(初始化数据库、启动服务,无模型时提示训练)
├── train.py                       # 独立模型训练脚本
├── config.py                      # 系统配置(端口、数据库路径、模型路径、类别映射、训练参数)
├── database.py                    # SQLite 数据库初始化与连接管理
├── requirements.txt               # Python 依赖包清单
├── mac_run.sh                     # macOS/Linux 一键启动脚本
├── window_run.bat                 # Windows 一键启动脚本
├── 项目说明.md                    # 项目功能与目录结构说明
├── 训练手册.md                    # 模型训练与数据集使用手册
├── DATASET.md                     # 数据集下载地址与引用说明
├── ml/
│   ├── __init__.py
│   └── classifier.py              # ResNet18 / TrashCNN 模型定义、训练与推理
├── services/
│   ├── auth_service.py            # 用户认证业务逻辑
│   ├── classify_service.py        # 图片分类与记录管理
│   ├── stats_service.py           # 数据统计与数据集信息
│   └── train_service.py           # 训练记录管理
├── routes/
│   ├── auth.py                    # 登录、注册、退出路由
│   ├── main.py                    # 页面路由
│   └── api.py                     # API 接口路由
├── templates/                     # Jinja2 HTML 模板
│   ├── base.html                  # 基础模板(侧边栏、本地资源引用)
│   ├── login.html                 # 登录页
│   ├── register.html              # 注册页
│   ├── dashboard.html             # 数据概览
│   ├── classify.html              # 垃圾识别页
│   ├── history.html               # 识别记录页
│   ├── dataset.html               # 数据集信息页
│   ├── train.html                 # 模型训练页
│   └── users.html                 # 用户管理页
├── static/
│   ├── css/
│   │   └── app.css                # 自定义样式(绿色环保主题)
│   ├── uploads/                   # 用户上传图片存储目录
│   └── vendor/                    # 本地前端资源(无需 CDN)
│       ├── bootstrap/             # Bootstrap 5.3 CSS/JS
│       └── echarts/               # ECharts 5.5 图表库
├── data/
│   └── app.db                     # SQLite 数据库文件(自动生成)
├── models_weights/                # 训练输出的模型权重
│   ├── trash_classifier.pth       # 分类模型权重
│   └── model_meta.json            # 模型元信息(准确率、训练时间等)
├── trashnet-master/               # TrashNet 数据集
│   └── data/
│       └── dataset-resized/       # 已缩放数据集(6 类,2527 张)
│           ├── glass/
│           ├── paper/
│           ├── cardboard/
│           ├── plastic/
│           ├── metal/
│           └── trash/
├── 运行步骤必看/
│   ├── window.md                  # Windows 运行步骤说明
│   └── mac.md                     # macOS 运行步骤说明
└── 用户上传检测文件/              # 测试用垃圾图片样例
    ├── 玻璃.jpg
    ├── 纸张.jpg
    ├── 纸板.jpg
    ├── 塑料.jpg
    ├── 金属.jpg
    ├── 其他垃圾.jpg
    └── 使用说明.md

技术栈

类别技术
后端框架Python 3.12 + Flask 3.0
用户认证Flask Session + Werkzeug 密码哈希
数据库SQLite 3
深度学习PyTorch + TorchVision(ResNet18 迁移学习,兼容 TrashCNN)
图像处理Pillow
数据处理NumPy
前端HTML5 + Bootstrap 5.3 + ECharts 5.5
数据集来源TrashNet(Stanford CS 229 公开数据集)

环境要求

项目要求
Python3.12
操作系统Windows / macOS / Linux
内存建议 4GB 以上(模型推理与训练时使用)
磁盘约 1GB(含依赖、数据集与模型权重)
GPU可选,支持 CUDA / CPU 自动回退
浏览器Chrome / Firefox / Safari / Edge 现代版本

账号信息

系统初始化时自动创建以下默认账户:

角色用户名密码权限
管理员adminadmin123全部功能,含模型训练、用户管理
普通用户自行注册自行设置垃圾识别、识别记录、数据概览、数据集查看

新注册用户默认为普通用户角色,仅能访问自身识别数据;管理员可查看全部用户数据。

获取完整源码

技术分类

包含内容

完整源码
项目说明文档
演示材料
训练手册

适合方向

适合人工智能、环境工程、软件工程专业毕业设计中垃圾分类深度学习、TrashNet 数据集与 PyTorch Web 推理方向。

关于 AI源码

AI源码 整理计算机毕业设计、课程设计向的可运行项目参考,含说明文档与演示材料。完整源码请通过联系方式沟通获取。

QQ: 861077046
邮箱: 861077046@qq.com
已帮助 5+ 位同学完成选题参考
问能不能做我的题目

相关推荐

查看全部 →
基于用户画像的食谱推荐系统
高级

基于用户画像的食谱推荐系统

Flask+SQLite 食谱推荐 Web:问卷与活动数据构建用户向量,KMeans 聚类画像 + 规则过滤 + RandomForest 融合排序,输出可解释推荐,含 Hit@K/NDCG 离线评估,适合推荐系统毕业设计。

PythonHTMLSQLite
4.885
基于协同过滤的电影推荐系统设计与实现
高级·新上架

基于协同过滤的电影推荐系统设计与实现

Flask+SQLite 豆瓣电影推荐平台:scikit-surprise 实现 UserCF/ItemCF,三级冷启动降级、星级评分收藏、Pyecharts 后台图表与一键重训,含算法讲解页,适合推荐算法毕业设计。

PythonHTMLSQLite
4.881
基于机器学习的古籍文字识别与断句校正系统
高级

基于机器学习的古籍文字识别与断句校正系统

Vue3+Flask 古籍 OCR 流水线:PaddleOCR 识文、文本整理勘校、BERT 句读标注与多格式导出,JWT 任务隔离,支持离线微调数据闭环,适合 OCR+NLP 毕业设计。

PythonVue3SQLite
4.827
基于深度学习的音乐风格分类系统
高级·新上架

基于深度学习的音乐风格分类系统

Django+Vue2 音乐平台:Mel 频谱 CNN+Bi-LSTM 八类风格分类,含在线 MP3 播放、协同过滤推荐、热榜与 SimpleUI 管理后台,MySQL 预置 12 首歌曲,适合深度学习+Web 毕业设计。

PythonVue2MySQL
4.833
基于深度学习的日常服饰分类与推荐系统设计
高级·新上架

基于深度学习的日常服饰分类与推荐系统设计

PyTorch CNN 对 Fashion-MNIST 服饰图像 Top-5 分类,融合协同过滤与 Embedding 相似度的混合推荐引擎,含 120 件商品目录与评分收藏,适合深度学习推荐系统类毕业设计。

PythonHTMLSQLite
4.877
微小异物检测与识别系统
高级·新上架

微小异物检测与识别系统

YOLOv8 工业表面六类微小缺陷(龟裂、夹杂、点蚀等)检测平台,基于 NEU-DET 钢材数据集,支持单张/批量检测、在线训练与 PDF 报告导出,适合计算机视觉质检类毕业设计。

PythonHTMLSQLite
4.88