初始化:换发型/换发色/训练发型服务

包含:
- hair_service_sd: 主服务(换发型/换发色/生发,端口8801)
- photo_service: LoRA调度+训练(端口32678)
- hair_grow_service: 调试测试页(端口8888,含4个测试页)
- 批量训练脚本(batch_train_hairstyles.py)
- 发际线mask自动识别(hairline_mask.py,4种方案)
- 手绘mask换发型(hair_swap_manual.py)
- 文档:README.md + LARGE_FILES.md + docs/

大文件(模型权重200G、训练数据123G)已排除,见 LARGE_FILES.md
OSS/COS密钥已脱敏为环境变量,原文件备份在本地
This commit is contained in:
xsl
2026-07-07 13:53:52 +08:00
commit 443cfa298f
312 changed files with 67065 additions and 0 deletions
+32
View File
@@ -0,0 +1,32 @@
#!/usr/bin/env python3
"""换发色接口测试"""
import base64, json, requests, sys
img_path = "/home/xsl/change_hair/project/data/userImage/8488902485_20250630055547.jpg"
with open(img_path, "rb") as f:
img_b64 = base64.b64encode(f.read()).decode()
payload = {
"img": "data:image/jpeg;base64," + img_b64,
"userId": "test_xsl",
"rgb": [255, 0, 0], # 红色
"output_format": "base64"
}
print("=== 调用换发色 /hairColor/v2 (红色 rgb=[255,0,0]) ===")
try:
r = requests.post("http://127.0.0.1:8801/hairColor/v2", json=payload, timeout=180)
d = r.json()
print(f"HTTP {r.status_code} | msg={d.get('msg')} | state={d.get('state')}")
result = d.get("result", "")
if d.get("state") == 0 and result:
# 保存结果图
out = "/home/xsl/change_hair/project/logs/test_haircolor_result.jpg"
with open(out, "wb") as f:
f.write(base64.b64decode(result))
print(f"✅ 换发色成功! 结果图已保存: {out} ({len(result)} bytes base64)")
else:
print(f"❌ 换发色失败: {d}")
except Exception as e:
print(f"❌ 请求异常: {e}")
sys.exit(1)