stable-makeup / HANDOFF.md
guobc2026
Stable-Makeup: HF Spaces deployment
21db46b
|
Raw
History Blame Contribute Delete
3.47 kB
# 🤝 AI 交接文档 · Stable-Makeup 妆容迁移部署
> 写给下一位 AI:请从 AutoDL 终端开始,跑通推理流程。
---
## 项目目标
部署 Stable-Makeup(妆容迁移 AI):用户上传素颜照 + 妆容参考图 → AI 输出迁移后的照片。
## 当前状态
用户在 **AutoDL** 租了一台 GPU 实例:
- **显卡**: RTX 2080Ti 11GB
- **环境**: PyTorch 2.x + CUDA 12.1 + Python 3.12 + Ubuntu 22.04
- **状态**: 实例已创建,JupyterLab 已打开,还没开始操作
代码仓库:`https://www.modelscope.cn/studios/guobc2026/stable-makeup.git`
---
## 下一步(在 AutoDL JupyterLab Terminal 里执行)
### 第 1 步:拉代码 + 装依赖
```bash
git clone https://www.modelscope.cn/studios/guobc2026/stable-makeup.git
cd stable-makeup && pip install -r requirements.txt
```
预计 3-5 分钟。依赖已锁版本,AutoDL 干净环境不会冲突。
### 第 2 步:启动
```bash
python app.py
```
模型加载(下载 + 加载到 GPU)预计 5-10 分钟。成功标志:打印 `✅ 模型加载完成 (float16 GPU + DDIM)`
### 第 3 步:测试
Gradio 会打印公网链接(`https://xxx.gradio.live`),打开后上传素颜照和妆容图,点「开始试妆」测试。
---
## 技术架构(关键信息)
### 推理链路
```
素颜照 → batch_face.RetinaFace(人脸检测) → SPIGA(98点关键点) → 骨架图 → ControlNet
参考图 → CLIP ViT-L/14 → SSR Attention → cross-attention注入
→ SD1.5 UNet(DDIM 30步) → 输出
```
### 文件说明
| 文件 | 作用 |
|------|------|
| `app.py` | 主入口,Gradio UI + 推理函数 |
| `spiga_draw.py` | 人脸关键点检测 + 骨架图生成 |
| `pipeline_sd15.py` | 自定义 StableDiffusionControlNetPipeline(支持双路 ControlNet + SSR attention) |
| `detail_encoder/` | 妆容编码器(CLIP + SSR cross-attention) |
| `requirements.txt` | 完整依赖,版本已锁定 |
### 依赖版本链(不可单拆)
```
diffusers==0.29.2 + transformers==4.42.4 + peft==0.10.0
```
这三个版本互相依赖,改任何一个会导致 import 报错。`pipeline_sd15.py` 专为 diffusers 0.29.2 编写。
### 模型下载源
- **SD1.5 / CLIP / SPIGA**: 从 ModelScope 下载(`_ms_download` 函数)
- **Stable-Makeup 预训练权重**: 从 HuggingFace Hub 下载(`Xiaojiu-z/Stable-Makeup`
- **人脸检测**: batch_face 包(pip 安装,不依赖 GitHub)
### 精度
- GPU: float16
- CPU: float32
- `app.py` 第 18 行自动判断:`DTYPE = torch.float16 if DEVICE == "cuda" else torch.float32`
---
## 已知坑(已踩过)
| 坑 | 症状 | 原因 | 解决 |
|----|------|------|------|
| peft/transformers 版本冲突 | `ImportError: cannot import name 'EncoderDecoderCache'` | peft 新版本要求 transformers ≥ 4.45 | 锁死 peft==0.10.0 |
| GitHub 不可达 | facelib 安装超时 | ModelScope/AutoDL 可能无法访问 GitHub | 用 batch_face 替代 |
| .gitignore 误伤 vendor | `ModuleNotFoundError: _vendor.facelib` | `models/` 递归匹配 | 已删除 vendor 方案 |
| float16 在 CPU 报错 | 推理崩溃 | CPU 不支持 float16 运算 | 自适应精度 |
| 调度器不匹配 | 推理结果不对 | 默认 DPMSolver 不是论文原版 | 改用 DDIMScheduler |
---
## 成功标准
1. `app.py` 启动无报错
2. 模型加载打印 `✅ 模型加载完成`
3. 上传两张照片后返回一张 512×512 的妆容迁移结果
4. 推理时间:GPU 上约 10-20 秒/张