- HAIRSTYLES_AVAILABLE.md: 179个可用发型说明(男93/女86) 含本次新发型(中文名)、历史测试(英文名)、生产发型(数字ID)分类 附 LoRA 权重位置、测试方法、训练新发型指引 - hairstyles_available.csv: 全量发型清单(hair_id/gender/预览图/LoRA大小) 数据来源 /api/hairstyles 接口实时返回,要求三件齐全(LoRA+ref材质+config)
139 lines
4.5 KiB
Markdown
139 lines
4.5 KiB
Markdown
# 可用发型清单
|
|
|
|
> 当前共 **179 个发型**可用于换发型功能(hair_flow 训练完成后为 180 个)。
|
|
> 数据来源:`/api/hairstyles` 接口实时返回,要求发型同时具备「LoRA权重 + ref材质 + config.json」三件齐全。
|
|
> 全量清单见同目录 `hairstyles_available.csv`。
|
|
|
|
---
|
|
|
|
## 概览
|
|
|
|
| 类别 | 数量 | 说明 |
|
|
|------|------|------|
|
|
| **总可用发型** | **179** | 三件齐全,可直接换发型 |
|
|
| ├ 男款 (boy) | 93 | 适合男性脸型 |
|
|
| ├ 女款 (girl) | 86 | 适合女性脸型 |
|
|
| ├ 中文名命名 | 7 | 本次按脸型训练的新发型 |
|
|
| ├ 英文名命名 | 15 | 历史测试发型 |
|
|
| └ 数字ID命名 | 157 | 生产环境发型(雪花算法ID) |
|
|
|
|
**性别说明**:gender 字段决定发型被分到"男款/女款",但换发型时**男女发型都能用**(只是预览图用对应性别的标准脸)。
|
|
|
|
---
|
|
|
|
## LoRA 权重文件位置
|
|
|
|
每个发型的 LoRA 权重(约 144MB/个,共约 26GB):
|
|
|
|
```
|
|
/home/xsl/change_hair/data/train_material/<hair_id>/model/hairstyle_hd_lora.safetensors
|
|
```
|
|
|
|
换发型时 photo_service 会从该路径动态加载 LoRA。
|
|
|
|
---
|
|
|
|
## 一、本次训练的新发型(中文名,按脸型适配)
|
|
|
|
这 7 个是本次会话按 `<脸型>-<发型>` 规则训练的,可在 `hair_type_images/` 找到原图:
|
|
|
|
| hair_id | 脸型 | 发型 | gender | 预览图 |
|
|
|---------|------|------|--------|--------|
|
|
| 圆-心形 | 圆脸 | 心形刘海 | girl | ✓ |
|
|
| 圆-椭圆 | 圆脸 | 椭圆 | girl | ✓ |
|
|
| 圆-波浪 | 圆脸 | 波浪卷 | girl | ✓ |
|
|
| 圆-直线 | 圆脸 | 直发 | girl | ✓ |
|
|
| 圆-花瓣 | 圆脸 | 花瓣剪 | girl | ✓ |
|
|
| 心形-心形 | 心形脸 | 心形刘海 | girl | ✓ |
|
|
| 心形-椭圆 | 心形脸 | 椭圆 | girl | ✓ |
|
|
|
|
> ⏳ 还有 23 个同类发型(方脸/椭圆/菱形/长脸系列)尚未训练完成,可用 `batch_train_hairstyles.py` 继续训练。
|
|
|
|
---
|
|
|
|
## 二、历史测试发型(英文名)
|
|
|
|
| hair_id | gender | 备注 |
|
|
|---------|--------|------|
|
|
| huaban1 | girl | 画板1 |
|
|
| huaban2 | girl | 画板2 |
|
|
| new_test_001 | boy | 测试 |
|
|
| newf_1214 / 12141 / 12314 / 1235314 | girl | 测试系列 |
|
|
| newf_121445553 | boy | 测试 |
|
|
| newf_204 / 216 | girl | 测试 |
|
|
| test001 | boy | 测试 |
|
|
| test002 | girl | 测试 |
|
|
| test003 / 0036 | boy | 测试 |
|
|
| test888 | boy | 测试 |
|
|
|
|
---
|
|
|
|
## 三、生产发型(数字ID,157个)
|
|
|
|
这部分是生产环境训练的发型,使用雪花算法生成的纯数字 ID(如 `1935356131338985473`)。
|
|
|
|
**男款 76 个,女款 81 个**(具体清单见 `hairstyles_available.csv`)。
|
|
|
|
部分 ID 段对应的训练批次(推测):
|
|
- `1905xxx` / `1906xxx`:早期批次
|
|
- `1907xxx`:第2批
|
|
- `1929xxx`:第3批
|
|
- `1935xxx`:第4批(数量最多)
|
|
- `1938xxx` / `1939xxx` / `1940xxx` / `1941xxx`:补充批次
|
|
- `1953xxx` / `1954xxx`:扩展批次
|
|
- `1980xxx`:最新批次
|
|
|
|
---
|
|
|
|
## 四、未完成训练的发型
|
|
|
|
| 状态 | 数量 | 说明 |
|
|
|------|------|------|
|
|
| 有 LoRA 但缺 ref 材质 | 135 | 训练了 LoRA 但没生成换发型材质,**不能用于换发型** |
|
|
| 有 ref 材质但缺 LoRA | 14 | 材质在但 LoRA 丢失 |
|
|
| 训练目录但两样都没有 | 34 | 训练中断或失败 |
|
|
|
|
> 如需让这 135 个"有 LoRA 缺材质"的发型可用,可对它们单独跑 `train_hairstyle_full.py` 的 step3/step4(生成 ref 材质),无需重新训练 LoRA。
|
|
|
|
---
|
|
|
|
## 五、如何测试这些发型
|
|
|
|
### 1. 简易测试页
|
|
访问 `http://localhost:8888/test_new`(本次新发型)或 `http://localhost:8888/swap`(全部 179 个发型)。
|
|
|
|
### 2. 调试页(带可视化)
|
|
- `http://localhost:8888/debug` — 全参数调试台
|
|
- `http://localhost:8888/manual` — 手绘 mask 重绘
|
|
- `http://localhost:8888/hairline` — 发际线 mask 实验
|
|
|
|
### 3. API 调用
|
|
```bash
|
|
# 列出所有可用发型
|
|
curl http://127.0.0.1:8888/api/hairstyles
|
|
|
|
# 换发型(hair_id 替换为上面的任意发型)
|
|
curl -X POST http://127.0.0.1:8888/api/swap \
|
|
-H "Content-Type: application/json" \
|
|
-d '{"img":"<base64图片>","hair_id":"1935356131338985473"}'
|
|
```
|
|
|
|
---
|
|
|
|
## 六、训练新发型
|
|
|
|
参考 `docs/` 和项目根的 `README.md`,使用:
|
|
```bash
|
|
# 单个发型训练
|
|
python batch_train_hairstyles.py --src <发型图目录> --gender girl --only <hair_id>
|
|
|
|
# 批量训练
|
|
python batch_train_hairstyles.py --src hair_type_images --gender girl
|
|
```
|
|
训练完成会自动生成 LoRA + ref材质 + 模板材质 + 预览图,发型立即可用。
|
|
|
|
---
|
|
|
|
*文档生成时间:2026-07-07*
|
|
*发型数据可随时通过 `/api/hairstyles` 接口获取最新状态。*
|