Face Emotion App
本地人脸情绪识别 · YOLOv8-face 检测 + ViT 7 类情绪分类 · 暗色玻璃拟态 UI · 完整本地 API
✨ 功能
- 图片识别:拖入或上传图片,返回带人脸框 + 情绪标签的图,并统计情绪分布
- 视频处理:上传视频,后台逐帧推理,完成后下载带标注的 MP4
- 摄像头实时:选择摄像头,浏览器看带标注的实时画面 (MJPEG 流)
- 本地 API:完整的 REST API + Swagger 文档,供其他程序调用
- 暗色玻璃拟态 UI:深色主题、毛玻璃 + 渐变 + 动画
- 纯 ONNX 推理:无 torch / 无 ultralytics / 无 transformers
🏗️ 架构
face-emotion-app/
├── app/ # FastAPI 后端
│ ├── main.py
│ ├── config.py
│ ├── schemas.py
│ ├── models/
│ │ ├── detector.py # YOLOv8-face ONNX (akanametov/yolo-face)
│ │ ├── classifier.py # ViT ONNX (trpakov/vit-face-expression)
│ │ └── pipeline.py
│ ├── services/
│ │ ├── video_processor.py
│ │ └── camera_service.py
│ └── routers/ # health / image / detect / video / camera
├── static/ # 暗色玻璃拟态前端 (无 emoji,纯 SVG 图标)
│ ├── index.html
│ ├── style.css
│ └── app.js
├── models/ # yolov8n-face.onnx + trpakov-vit-face.onnx
├── outputs/ # 生成的 MP4
├── .venv/ # 项目本地虚拟环境 (自动创建)
├── requirements.txt
├── check_env.py
├── run.py # 一键启动
└── README.md
🚀 快速开始
1. 环境要求
| 项目 | 要求 |
|---|
| Python | 3.10 ~ 3.13 |
| 内存 | ≥ 8 GB |
| 系统 | Windows / macOS / Linux |
2. 一键启动
cd face-emotion-app
python run.py
run.py 会自动:
- 找到系统里的 Python 3.10+ (优先 3.12)
- 在
.venv/ 下创建虚拟环境
- 把
requirements.txt 装进 venv
- 下载两个 ONNX 模型到
models/
- 启动 uvicorn + 自动打开浏览器
如果想用 GPU 加速(推荐):
.venv\Scripts\pip install onnxruntime-directml
然后启动,默认会优先使用 DmlExecutionProvider。
3. 手动启动(可选)
# 创建 venv
python -m venv .venv
.venv\Scripts\activate # Windows
# source .venv/bin/activate # macOS/Linux
# 装依赖
pip install -r requirements.txt
# 跑环境检查
python check_env.py
# 启动服务
uvicorn app.main:app --host 0.0.0.0 --port 8000
打开 。
🤖 模型与下载
模型在首次运行时自动下载。自带断点续传 — 如果公司网络 SSL 频繁断,会自动从断点续下,最多 8 次重试。
手动下载(如网络不通):
# YOLO
curl -L -o models/yolov8n-face.onnx \
https://github.com/akanam