用 MobileNet 教 AI 分垃圾?这个项目很适合练手也很有用!

摘要垃圾分类不是新鲜事儿了,但很多人还是搞不清楚什么是“干的”“湿的”“可回收的”。如果有一个小程序或 Web 工具,拍张照就能告诉你这是什么垃圾,是不是就方便多了?这篇文章就带你从零搭建一个图像识别辅助的垃圾分类系统,覆盖模型选择、训练技

用 MobileNet 教 AI 分垃圾?这个项目很适合练手也很有用!

摘要

垃圾分类不是新鲜事儿了,但很多人还是搞不清楚什么是“干的”“湿的”“可回收的”。如果有一个小程序或 Web 工具,拍张照就能告诉你这是什么垃圾,是不是就方便多了?这篇文章就带你从零搭建一个图像识别辅助的垃圾分类系统,覆盖模型选择、训练技巧、部署方式和简单 UI 演示,适合做公益项目或技术实践练手!

引言

我们都知道垃圾分类好,但做起来总是各种疑问:外卖盒到底是湿垃圾还是干垃圾?奶茶杯算可回收吗?这些问题,机器视觉其实可以帮上大忙。

图像识别在 AI 公益场景里最典型的应用就是“看图识物”。对开发者来说,实现一个垃圾识别工具门槛并不高,核心是选好轻量模型 + 搭个界面,让普通用户能快速用起来。

项目拆解:垃圾识别工具怎么做?

项目目标

  • 用户上传垃圾照片
  • 系统识别垃圾种类(可回收、厨余、有害、其他)
  • 返回分类建议
  • 支持本地 or 云端部署

所需组件

  • 前端界面(小程序或 Web)
  • 图像识别模型(建议 MobileNet 或 EfficientNet-lite)
  • 模型训练数据集(可使用垃圾图片公开数据)
  • 推理服务(Flask/FastAPI/Node.js)
  • 可选:本地离线部署 / 云端部署(腾讯云函数、vercel、huggingface space)

模型选型和训练过程

模型推荐:MobileNetV2

  • 优点:轻量、适合移动端、本地部署没压力
  • 训练框架:PyTorch or TensorFlow 都可
  • 输出层:4分类(可回收、湿垃圾、干垃圾、有害垃圾)

数据集推荐

模型训练代码(PyTorch)

代码语言:python代码运行次数:0运行复制
import torchvision.transforms as transforms
from torchvision.datasets import ImageFolder
from torch.utils.data import DataLoader
import torch.nn as nn
import torch.optim as optim
from torchvision.models import mobilenet_v2

# 数据预处理
transform = transforms.Compose([
    transforms.Resize((224, 224)),
    transforms.ToTensor()
])

dataset = ImageFolder(root='data/train', transform=transform)
dataloader = DataLoader(dataset, batch_size=32, shuffle=True)

# 模型准备
model = mobilenet_v2(pretrained=True)
model.classifier[1] = nn.Linear(model.last_channel, 4)

# 训练配置
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=1e-4)

# 简单训练过程
for epoch in range(5):
    for inputs, labels in dataloader:
        optimizer.zero_grad()
        outputs = model(inputs)
        loss = criterion(outputs, labels)
        loss.backward()
        optimizer.step()

如何部署?

本地运行(离线)

可保存为 .pt 模型,用 PyTorch 加载推理

代码语言:python代码运行次数:0运行复制
model.eval()
img = Image.open("test.jpg").convert("RGB")
input_tensor = transform(img).unsqueeze(0)
output = model(input_tensor)
pred = torch.argmax(output, dim=1)

Web API 推理接口(FastAPI)

代码语言:python代码运行次数:0运行复制
from fastapi import FastAPI, File, UploadFile
from PIL import Image
import io

app = FastAPI()

@app.post("/predict/")
async def predict(file: UploadFile = File(...)):
    image = Image.open(io.BytesIO(await file.read())).convert("RGB")
    input_tensor = transform(image).unsqueeze(0)
    with torch.no_grad():
        output = model(input_tensor)
    pred = torch.argmax(output, dim=1).item()
    return {"class": label_map[pred]}

简单前端 UI 示例

Web 页面上传图片识别

代码语言:html复制
<input type="file" id="fileInput" />
<button onclick="upload()">识别垃圾类别</button>

<script>
async function upload() {
  const file = document.getElementById('fileInput').files[0]
  const formData = new FormData()
  formData.append('file', file)

  const res = await fetch('/predict/', {
    method: 'POST',
    body: formData
  })
  const result = await res.json()
  alert("识别结果:" + result.class)
}
</script>

QA 环节

Q: 没有 GPU 怎么训练模型?

A: 可以用 Google Colab 免费训练,节省成本。

Q: 图片拍得不清楚会影响识别吗?

A: 会,一定程度上可通过数据增强方式提升模型鲁棒性。

Q: 想嵌入到小程序中怎么做?

A: 可将后端 API 部署到云函数,再通过小程序调用识别接口。

总结

这个垃圾识别工具是一个典型的“技术 + 公益”的结合。虽然模型简单、界面也不复杂,但对于帮助普通人养成垃圾分类习惯,还是挺有意义的。如果是公益团队或学生组织,也可以把这个项目作为校园 AI 实践项目落地。

未来展望

  • 加入语音识别功能,辅助视障人群
  • 联动地图或社区管理系统,实现智能投放建议
  • 进一步训练模型识别更复杂的垃圾类型

参考资料

  • Garbage Classification Dataset
  • MobileNetV2 论文
  • FastAPI 文档

发布者:admin,转转请注明出处:http://www.yc00.com/web/1747651502a4676118.html

相关推荐

  • 用 MobileNet 教 AI 分垃圾?这个项目很适合练手也很有用!

    摘要垃圾分类不是新鲜事儿了,但很多人还是搞不清楚什么是“干的”“湿的”“可回收的”。如果有一个小程序或 Web 工具,拍张照就能告诉你这是什么垃圾,是不是就方便多了?这篇文章就带你从零搭建一个图像识别辅助的垃圾分类系统,覆盖模型选择、训练技

    5小时前
    20

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信