diff --git a/docs/接口2-C端生发-技术实现方案.md b/docs/接口2-C端生发-技术实现方案.md index 126ff12..6b19ea1 100644 --- a/docs/接口2-C端生发-技术实现方案.md +++ b/docs/接口2-C端生发-技术实现方案.md @@ -1,4 +1,8 @@ -# 接口 2:C 端生发 — 技术实现方案(第一步:发际线遮罩渲染) +# 接口 2:C 端生发 — 技术实现方案(发际线预览 + 生发图) + +> **当前状态(2026-06-15):两步均已实现。** ① 发际线曲线叠加预览图(§1~§9); +> ② 生发后图片(§10,ComfyUI/Flux)。`results[]` 每项同时返回 `image_base64`(预览) 与 +> `grown_image_base64`(生发图)。下文 §0「本期只做预览」为初版历史描述,以本说明与 §10 为准。 > 在 **高性能 worker(GPU 机)** 上实现,与接口 1 同机。对外接口经网关代理(见 [`系统架构-网关与高性能后端.md`](系统架构-网关与高性能后端.md))。 > 发际线检测算法移植自 **head3d** 项目(已实现 502 点 mesh + UV 贴图方案)。 @@ -9,7 +13,9 @@ 接口 2 输入用户正面照 + **性别**,按性别对应的发际线类型贴图,**逐张把发际线曲线渲染到照片上**,输出多张「叠加了建议发际线的预览图」,按固定顺序返回。 -- **本期只做「渲染遮罩/预览图」**,不做真正的文生图生发(那是后续步骤)。当前 `image_url` 返回的是「原照片 + 发际线曲线叠加图」。 +- 第一步「渲染遮罩/预览图」**已实现**:`results[].image_base64` = 「原照片 + 发际线曲线叠加图」。 + 第二步「文生图生发」**也已实现**(见 §10),`results[].grown_image_base64` = 植发3个月效果图。 + (以下 §0 文字为初版"只做预览"的历史背景,现已扩展为预览 + 生发两步。) - 排序 `order` 本期不计算,按贴图顺序 `1..N`。 --- @@ -238,7 +244,9 @@ transformers>=4.40 # SegFormer 人脸分割 3. **歪头/非正面**:head3d 矢状-arc 假设近正脸,大角度发际线贴合差。可复用接口 1 的 solvePnP 做前置姿态校验(可选)。 4. **秃头/高发际线/刘海**:SegFormer 找不到头发时射线回退几何外推,曲线可能偏高;valid_hairline 标记可用于提示。 5. **排序**:本期 order=1..N。后续排序需定义依据(脸型/额型匹配度)。 -6. **真正的生发(文生图)**:本期只出遮罩/预览。下一步把预览图/曲线作为 ControlNet/inpaint 输入接文生图模型,再替换 `image_url` 为真实生发图。 +6. **真正的生发(文生图)**:**已实现**(§10)——把划线图 + 遮罩送 ComfyUI(add_hair.json, Flux-2) + 出生发图,`results[].grown_image_base64` 返回。后续可优化:发际线目标位置下移以增强"植发填充"效果、 + 同步 N 张较慢可改异步。 --- diff --git a/docs/接口文档.md b/docs/接口文档.md index 96b1073..203fec1 100644 --- a/docs/接口文档.md +++ b/docs/接口文档.md @@ -179,7 +179,8 @@ **说明**:输入用户正面照 + 性别,按性别对应的发际线类型,逐张把建议发际线渲染到照片上,输出多张方案。 -> **当前阶段(第一步)**:`image_url` 返回的是「**原照片 + 发际线曲线叠加的预览图**」,尚未做真正的文生图生发;后续会替换为生发后图片。实现见 [`接口2-C端生发-技术实现方案.md`](接口2-C端生发-技术实现方案.md)。 +> **每个方案返回两张图**:`image_url`=「原照片 + 发际线曲线叠加的**预览图**」;`grown_image_url`= +> 经 ComfyUI/Flux 的「植发 3 个月**生发后图片**」。两者均已实现,见 [`接口2-C端生发-技术实现方案.md`](接口2-C端生发-技术实现方案.md)。 **请求**:`POST /api/v1/hair/grow`