SmartBin

SmartBin

一个全栈 AI 垃圾分类器——上传一张照片,十一个深度学习模型决定它该进哪个垃圾桶。

类型
网站
角色
独立开发
Status
进行中
Tech
FastAPI PyTorch Next.js TypeScript Docker AWS
Started
2024年10月

概述

SmartBin 是一个由 AI 驱动的垃圾分类系统。你上传任何一件垃圾的照片,深度学习模型就会判断它属于哪个类别——可回收、可堆肥、填埋、有害垃圾——速度快到让你感觉它是个工具,而不是一个演示。后端是一个 FastAPI 服务,可以热切换十一个预训练的图像分类模型,让你可以并排比较它们的准确率、延迟和内存占用。

这些模型在一个兄弟仓库 GarbageClassfication 中分别训练,该仓库负责数据集流水线、训练脚本和评估工具。SmartBin 本身是推理 + 服务层。

支持的模型

通过一个下拉菜单即可在这些模型间切换,每个模型都按需加载:

  • DenseNet (densenet201)
  • EfficientNet (efficientnet_b7)
  • GoogLeNet
  • LeNet
  • MobileNetV2 / MobileNetV3 (mobilenet_v2 / mobilenet_v3_large)
  • ResNet (resnet50)
  • AlexNet
  • ShuffleNetV2 (shufflenet_v2_x2_0)
  • VGG
  • RegNet (regnet_x_32gf)

每个模型都在可用的硬件上运行——优先 CUDA,然后是 Apple Silicon 上的 MPS,最后是 CPU 作为后备方案——无需任何配置。

技术栈

  • 后端 — FastAPI,提供一个 /api/predict 端点,接收图片上传和模型名称,返回带有 softmax 概率的 top-k 预测结果。
  • 模型加载 — PyTorch 模块从 weights/ 目录懒加载。权重托管在 Google Drive 上(体积太大不适合 git),在部署时一次性获取。
  • 前端 — Next.js + TypeScript,支持拖放上传,提供实时预测反馈和一个用于对比运行的模型选择器。
  • 部署 — 容器化以便移植,托管在 AWS 上,地址是 smrtbin.com

亮点

  • 十一个模型,一个端点 — 选择器让 SmartBin 变成了一个即兴的基准测试工具。用同一个瓶子测试每个模型,看看哪些模型意见不一。
  • 可热切换的权重 — 模型懒加载,所以容器启动快,并且只支付实际使用模型的内存成本。
  • 硬件自适应 — 得益于 PyTorch 的 torch.device 自动检测,在 CPU、CUDA 和 MPS 上使用相同的代码路径。