【原创】基于 RoBERTa 的智能垃圾分类系统(规则 + AI 混合,FastAPI 接口 + Web Demo)

大家好,我是 Kerten

最近在研究 NLP(自然语言处理) ,想着做一个 偏实用向的项目 来练练手。刚好这几年垃圾分类要求越来越细,有时候拿着个东西真的不知道该扔哪个桶,于是就动手写了这个 基于 RoBERTa 预训练模型的智能垃圾分类系统

这个项目并不是简单地"调个模型跑一跑",而是加入了我自己设计的一套 「混合预测模式」

  • 对于数据集中已经存在的常见垃圾,直接 规则查表返回,保证 100% 准确
  • 对于规则库里没有的新词、模糊词,则交给 RoBERTa 模型进行语义推理,提高泛化能力。

整体思路是:能确定的就不用 AI,不确定的再交给 AI,在准确率和实用性之间做一个平衡。

目前已将项目 完整开源,主要是供大家学习交流,比较适合:

  • 想入门 PyTorch / Transformers 的坛友
  • 想做 中文文本分类实战
  • 或者学习 FastAPI 写后端接口 的同学

📌 项目地址(欢迎 Star ⭐ 支持一下)

👉 https://github.com/MTQ851/garbage-classification-roberta


一、项目特点

混合预测模式(核心亮点)

  • 数据库中已有的垃圾 → 直接规则匹配(100% 准确)
  • 未命中的新垃圾 → RoBERTa 模型语义预测

中文效果优秀

  • 使用哈工大讯飞 chinese-roberta-wwm-ext
  • 相比普通 BERT 对中文粒度更友好

生产级 API

  • 基于 FastAPI
  • 支持 GET 请求
  • 自带 Swagger 接口文档

附带 Web 页面 Demo

  • 可直接浏览器查询
  • 适合小程序 / H5 / 教学演示

二、技术栈

  • Python 3.8+
  • PyTorch 2.x
  • HuggingFace Transformers
  • FastAPI + Uvicorn
  • RoBERTa-wwm-ext(中文)

三、项目结构

text 复制代码
garbage_classification/
├── data/
│   └── garbage_sorting.csv        # 垃圾分类数据集
├── src/
│   ├── train.py                   # 模型训练(Fine-tuning)
│   ├── predict.py                 # 命令行预测(规则 + AI)
│   ├── api_server.py              # FastAPI 接口服务
│   ├── check_data.py              # 数据冲突检测
│   └── analyze_errors.py          # 错误样本分析
├── static/
│   └── index.html                 # Web 前端页面
├── model/                         # 训练生成的模型(已忽略)
└── requirements.txt

四、使用说明

1️⃣ 数据检查(必做)
bash 复制代码
python src/check_data.py

确保 CSV 中不存在「同名不同类」的脏数据。


2️⃣ 模型训练
bash 复制代码
python src/train.py
  • 首次会自动下载 RoBERTa 预训练模型
  • 微调完成后模型保存至 model/roberta_garbage_model
  • 建议使用 GPU,CPU 也可运行但较慢

3️⃣ 命令行预测
bash 复制代码
python src/predict.py

可交互式输入垃圾名称进行测试。


4️⃣ 启动 API 服务
bash 复制代码
python src/api_server.py
  • 服务地址:http://127.0.0.1:9000
  • Swagger 文档:http://127.0.0.1:9000/docs

五、接口示例

请求:

复制代码
GET /predict?text=香蕉皮

返回:

json 复制代码
{
  "name": "香蕉皮",
  "type": 3,
  "confidence": "100.00%",
  "source": "rule_match",
  "desc": "厨余垃圾"
}

source=rule_match 表示规则命中
source=ai_predict 表示模型推理


六、在线 Demo

👉 https://tool.kerten.cn/rb/

可直接浏览器测试垃圾分类。


七、截图说明

1️⃣ Web 界面演示

  • 浏览器打开 Web 页面,输入垃圾名称
  • 展示分类结果

2️⃣ Swagger API 调试

  • 打开 http://127.0.0.1:9000/docs
  • 展示 /predict 接口返回 JSON

3️⃣ 模型训练 / 命令行预测

  • 终端显示训练过程或命令行预测结果

八、说明与声明

  • 模型文件较大(约 400MB),未上传仓库
  • 请自行运行 train.py 生成模型
  • 数据集和分类标准可按本地城市规则替换

九、结语

📌 本项目适合:

  • AI/深度学习实战
  • 中文文本分类
  • 垃圾分类系统后端
  • FastAPI + Transformers 学习

欢迎大家 Star ⭐️ https://github.com/MTQ851/garbage-classification-roberta

有问题欢迎留言交流!

相关推荐
人工智能技术咨询.1 小时前
DNN案例一步步构建深层神经网络(4)
人工智能
qdprobot1 小时前
齐护机器人AiTallpro小智AI图形化编程Mixly Scratch MQTT MCP远程控制
人工智能·mqtt·机器人·图形化编程·ai对话·mcp·小智ai
北京耐用通信2 小时前
告别“蜘蛛网”布线!耐达讯自动化Profibus六路集线器:电力控制更简单
人工智能·科技·网络协议·自动化·信息与通信
AI营销快线2 小时前
原圈科技AI营销内容生产助力SaaS企业增长新引擎
人工智能
51camera2 小时前
单色线阵相机结合特殊光源的多项检测解决方案
人工智能·计算机视觉
idkmn_2 小时前
Daily AI 20251219 (PyTorch基础回顾3)
人工智能·pytorch·python·深度学习·神经网络
bulingg2 小时前
集成模型:gbdt,xgboost,lightgbm,catboost
人工智能·算法·机器学习
Piar1231sdafa2 小时前
【计算机视觉】YOLO11-DGCST:轴承表面划痕检测新方案
人工智能·计算机视觉
TG:@yunlaoda360 云老大2 小时前
华为云国际站代理商的UCS主要有什么作用呢?
人工智能·自然语言处理·华为云·云计算