一、 项目全局看板

1. 产品愿景

针对美甲行业“试错成本高、效果不可预见”的痛点,开发一款基于生成式 AI 的虚拟试戴工具。用户通过 Web、H5 或 App 等多端前端上传手部照片和美甲款式图,系统利用 AI 技术将款式“穿”在用户手上,实现“所见即所得”,打造一款商业级的 AI 美甲虚拟试戴 SaaS 平台,连接 C 端用户“试色”需求与 B 端美甲店“引流”需求。

2. 总体需求迭代矩阵

阶段 核心目标 关键用户故事/功能清单 商业/技术价值
一期 核心能力验证 (POC)

1. 管理员后台可上传美甲款式图并打标签;

2. 系统能接收手部图片并记录任务;

3. AI 服务能生成逼真的试戴效果图;

4. 内部后台可查看生成结果与耗时。

验证技术可行性 (TR),规避核心算法风险,搭建后端基座。
二期 核心能力优化

1. 优化手部遮罩 (Mask) 分割精度,解决边缘溢出问题;

2. 调优光影融合算法,提升指甲材质真实感;

3. 提升生成速度,引入并发队列机制;

4. 建立 AI 效果自动化评测指标。

重点攻坚:将“能用”提升至“商用”级别,确保生成效果逼真,消除“贴纸感”。
三期 多端前端发布 (MVP)

1. C端前端 (Web/H5) 上线,支持拍照与选图;

2. 提供“拍照辅助线”引导与多端适配;

3. 用户可对比原图与效果图并保存;

4. 前端展示排队进度动画。

跑通 C 端用户体验,获取首批种子用户反馈,验证跨端架构。
四期 商业化 V1.0

1. 接入会员订阅与单次付费体系;

2. 接入通用支付渠道 (微信/支付宝/Stripe);

3. 每日免费次数限制逻辑;

4. 高并发队列优化 (Redis Stream)。

实现营收闭环,保证系统在高负载下的稳定性。
五期 B端赋能 (SaaS)

1. 美甲店商户入驻与专属色板上传;

2. C端用户一键导航至门店;

3. 生成“指尖流光”短视频 (SVD技术)。

拓展 B 端收入,通过视频传播实现社交裂变。

3. 当前进度

  • 所处阶段一期: 核心能力验证 (POC) - Day 4

  • 本期冲刺路线图

    • ✅ Day 1: 基础设施搭建与双核架构落地 [Java基座/环境初始化]

    • ✅ Day 2: 业务建模与低代码开发 [表结构设计/代码生成/Docker化]

    • ✅ Day 3: 算力服务基建 [Python FastAPI搭建/基础接口/Token鉴权]

    • 👉 Day 4: AI 工作流攻坚 (上) [ComfyUI部署/手部Mask分割/基础生图]

    • ⬜ Day 5: AI 工作流攻坚 (下) [ControlNet手部结构控制/IP-Adapter风格迁移]

    • ⬜ Day 6: 异构系统联调 [Java异步调用Python/OSS图片流转/状态机]

    • ⬜ Day 7: 闭环验证与演示 [全流程跑通/内部验收/性能基准测试]

  • 今日焦点AI 工作流攻坚(上)与自动化分割落地

    • 今日重点在 GPU 服务器部署推理引擎,攻克美甲试戴中最关键的“指甲精准分割”技术,利用 ComfyUI 的节点化优势构建全自动化的图像预处理链路,确保 AI 生成仅作用于指甲区域。


二、 开发日记正文

CI/CD 状态:ComfyUI 推理后端部署完成 / 自动分割工作流测试通过

1. 今日任务清单

核心策略:利用 Cloud GPU (RTX 4090) 解决本地算力瓶颈;采用 ComfyUI + 组合分割算法 (MediaPipe/SAM) 实现工业级的图像处理流程。

ID 任务项 关联需求/业务价值 状态
T-08 Cloud GPU 环境租赁与配置 在 AutoDL 租赁 4090 服务器,安装 CUDA 与 PyTorch 环境。 一期-AI生成 解决 SDXL 模型在本地显存不足 (OOM) 的问题,提供稳定的推理算力。 ✅ 完成
T-09 ComfyUI 部署与插件安装 部署 ComfyUI 及 Manager,安装 Impact-Pack 等必备插件。 一期-AI生成 搭建可视化的 AI 工作流编辑环境,为后续算法调试提供工具支持。 ✅ 完成
T-10 SDXL 大模型与 VAE 加载 下载 Juggernaut XL 模型与 SDXL VAE,完成基础生图测试。 一期-效果逼真 确保底模具备生成高清、真实皮肤质感的能力,奠定“像真手”的基础。 ✅ 完成
T-11 指甲精准分割 (Segmentation) 搭建 YOLO Hand + SAM 检测流,实现从手部照片中自动提取指甲 Mask。 二期-核心优化 解决“AI 乱画”的问题,确保生成的指甲只长在指甲盖上,不溢出到手指肉。 ✅ 完成

2. 核心原理

今日的工作核心在于构建一套工业级、高保真的 AI 图像生成管线。我们不能简单地堆砌模型,而必须从精准度、真实感、可控性三个维度进行技术选型与架构设计。

(1) SDXL + ControlNet + IP-Adapter 复合管线原理
  • 场景描述:商业级美甲试戴有三个苛刻要求:高清真实(不能像卡通画)、手型不变(不能把手画歪)、款式还原(不能乱改设计)。

  • 技术原理/选型逻辑

    • 基座:SDXL (Stable Diffusion XL)

      • 概念:SDXL 属于视觉生成领域的“基础大模型” ,在 数十亿张 图片上训练出来的。它“看”过的图比人类几辈子看的都多。因为它见多识广,所以它被称为 “基座 (Foundation)”

      • 优势:相比 SD1.5 的 512px,SDXL 原生支持 1024px 分辨率。美甲的细节极多(闪粉、纹理),SD1.5 往往生成出塑料感,而 SDXL 的 2.6B 参数量能准确还原皮肤毛孔和指甲光泽。

    • 几何约束:ControlNet

      • 概念:ControlNet 属于“轻量级适配模型”或“伴生模型”。如果把 SDXL 比作一艘航空母舰,那么 ControlNet 就是航母甲板上的助飞弹射器。它不能独立运行,必须“寄生”在 SDXL 上才能工作,挂载它可以强行锁定了用户手部的空间几何结构,防止SDXL将手“画歪”。

      • 优势:AI 在画手时容易“致幻”(6根手指)。ControlNet 通过 Depth(深度)或 Canny(边缘)通道,向 U-Net 注入强空间约束,强制 AI “锁死” 原图的手指骨骼架构。

    • 风格注入:IP-Adapter

      • IP-Adapter 属于和 ControlNet 同级别的“轻量级适配模块”,它允许你直接喂给 AI 一张图片(比如小红书上的美甲款式图),它能把这张图里的风格、材质、配色、构图直接“提取”出来,然后“注射”到 SDXL 的大脑里,保证指甲上的花纹和光泽跟参考图一模一样。

      • 优势:文字 Prompt 无法描述复杂的“极光渐变猫眼”。IP-Adapter 采用解耦的 Cross-Attention 机制,直接提取款式图的 CLIP 特征向量注入模型,实现“以图生图”级别的材质迁移。

  • 架构图

(2) MediaPipe + SAM 级联分割 (Cascade Segmentation)
  • 场景描述:如何让 AI 知道“指甲在哪里”?传统 Object Detection 只能画框,无法沿边缘抠图。

  • 技术原理/选型逻辑

    • MediaPipe (粗定位):基于图神经网络 (GNN) 的轻量模型,能毫秒级返回手部 21 个关键点。我们取指尖坐标 (Index 4,8,12,16,20) 生成检测框 (BBox)。

    • SAM (精分割):Segment Anything Model 是分割领域的通用大模型。它不需要针对美甲微调,只要给它一个 BBox 提示,它就能基于注意力机制自动分割出框内最显著的物体(即指甲)。

    • 级联优势:MediaPipe 提供了语义(这是指尖),SAM 提供了精度(这是边缘)。两者结合实现了全自动、无人工干预的精准 Mask 提取。

(3) 形态学处理:收缩与羽化 (Erode & Blur)
  • 场景描述:SAM 生成的 Mask 过于完美,直接贴图会导致两个问题:1. 美甲溢出;2. 边缘锋利,像贴纸,显得太假。

  • 技术原理/选型逻辑

    • Erode (腐蚀/收缩):利用形态学算法,将 Mask 的白色区域向内收缩 2-4 像素。模拟真实美甲:真实美甲通常会离指甲后缘(Cuticle)留有 0.5mm 的安全距离,防止起翘。

    • Blur (高斯模糊/羽化):对边缘进行高斯卷积。模拟光线散射:在重绘时,模糊的边缘会让 VAE 解码器产生半透明的 Alpha 过渡,使美甲看起来是从肉里“长”出来的,而非“贴”上去的。

(4) ComfyUI 编排引擎 (Orchestration Engine)
  • 场景描述:复杂的 Mask 预处理(分割->收缩->羽化)和多模型串联(SDXL+CN+IPA)在 WebUI 中难以固化和自动化。

  • 技术原理/选型逻辑

    • 显式数据流:ComfyUI 将图像处理管线抽象为有向无环图 (DAG)

    • 后端即服务:它将 Workflow 直接序列化为 JSON。我们的 Python 后端只需加载这个 JSON,替换其中的 image_path 和 seed,即可驱动 GPU 执行复杂的推理逻辑,实现了研发环境与生产环境的 1:1 映射

(5) 核心技术关系全景图 

在“指尖魔镜”项目中,这些技术像是一个精密的流水线工厂,分为**“定位部门”“施工部门”**。为了让你能清晰地了解它们的关系,我采用了**“流程图 + 拟人化比喻”**的方式来解析这些技术之间的关系。

技术关系全景图:

3. 方案实现步骤

步骤 1: GPU 环境搭建与 ComfyUI-Manager 部署

这里参考【AutoDL 实战指南:构建基于 ComfyUI + SDXL + SAM 的复合 AI 生成与分割环境】这篇文章进行搭建

步骤 2: 核心算法流水线构建实战

接下来将在ComfyUI中像搭积木一样构建出“指尖魔镜”的核心算法流水线。我们目前的达成目标是:精准识别指甲并实现 80% 以上的边缘对齐重绘。

核心节点技术规格清单

1. 视觉定位与分割模块(解决“在哪画”的问题)

节点名称 所属分类/插件 核心功能描述 关键可调参数 参数作用深度解析
Load Image 原生节点 业务数据入口 upload 上传用户手部原图,作为整个工作流的像素基准。
UltralyticsDetectorProvider Impact-Subpack 模型加载器 model_name 选择检测模型(如 nail_yolov8_tammba.pt)。决定了 AI “找目标”的专业度。
Simple Detector (SEGS) Impact-Pack 坐标侦察兵 threshold 阈值:通常设为 0.5。数值越低越灵敏(容易误报),数值越高越严谨(容易漏报)。
SAMLoader Impact-Pack 模型加载器 model_name 加载 SAM 模型权重(建议 vit_b)。它是像素级抠图的算力保障。
SAMDetectorSegmented Impact-Pack 像素手术刀 detection_hint 检测提示:如中心点、边缘等。在级联流中通常设为 center-1 辅助定位。

2. 遮罩精修模块(解决“画得假”的问题)

节点名称 所属分类/插件 核心功能描述 关键可调参数 参数作用深度解析
Dilate Mask Impact-Pack 遮罩形态学处理 dilation 边缘伸缩:重点!设为 负数(如 -8)代表向内收缩。防止美甲油“溢出”到手指缝。
Mask Blur Essentials 遮罩柔化 amount 羽化值:通常设为 5-10。通过高斯模糊让边缘产生 Alpha 过渡,消除“贴纸感”。

3. SDXL 高清重绘模块(解决“画什么”的问题)

节点名称 所属分类/插件 核心功能描述 关键可调参数 参数作用深度解析
Load Checkpoint 原生节点 知识库加载器 ckpt_name 选择 Juggernaut_XL。决定了生成图像的整体画质、光影和写实度。
CLIP Text Encode 原生节点 语言指令编码 text 提示词:正向描述美甲款式,负向描述变异、模糊等拒绝生成的特征。
VAE Encode (for Inpainting) 原生节点 潜空间编码器 grow_mask_by 遮罩扩张:通常设为 6。在重绘时额外参考周围多少像素的纹理,决定衔接是否自然。
KSampler 原生节点 核心采样生成器 denoise 重绘幅度:核心参数!设为 0.6-0.7。太低改不动颜色,太高会导致手指形状扭曲。
KSampler 原生节点 核心采样生成器 cfg 提示词相关性:通常 7.0。数值越高越死板地执行提示词,数值越低 AI 越自由发挥。
VAE Decode 原生节点 像素还原器 将潜空间(Latent)信号翻译回肉眼可见的像素图片。
Preview Image 原生节点 结果显示 实时显示生成的图片,研发阶段建议用此节点替代 Save Image 以节省磁盘。

自动化流水线逻辑全景图

在 ComfyUI 中,数据流动遵循:原图入场 -> AI 侦探找位置 -> 手术刀抠轮廓 -> 边缘磨皮 -> 画师重绘。下面是ComfyUI的节点逻辑图:

实操ComfyUI连线总览图:

整个过程可以看成四个阶段:

第一阶段:视觉定位(寻找指甲盖)

这是流水线的“眼睛”,负责告诉 AI “在哪画”。

  1. Load Image:上传一张清晰的手部照片。

  2. UltralyticsDetectorProvider:model_name 必须选择我们下载的 nail_yolov8_tammba.pt

  3. Simple Detector (SEGS)

    • bbox_detector 线:连接 Provider 的输出。

    • image 线:连接 Load Image。

    • 效果:它会把图片里的每个指甲盖用一个绿色方框圈出来。

第二阶段:像素分割(生成黑白遮罩)

这是流水线的“手术刀”,负责把指甲从手指上“抠”出来。

  1. SAMLoader:model_name 选择 sam_vit_b_01ec64.pth。

  2. SAMDetectorSegmented

    • sam_model 线:接 SAMLoader。

    • segs 线:接 Simple Detector 的输出。

    • image 线:接 Load Image。

    • 效果:它会在方框范围内进行像素级识别,输出黑底白色的指甲轮廓图(MASK)。

第三阶段:边缘精修(告别“贴纸感”)

这是流水线的“美容师”,解决 80% 穿帮问题的核心就在这里。

  1. Dilate Mask

    • 参数:dilation 设为 -8(关键!负数代表向内收缩,确保红颜色不涂到肉上)。

    • masker线:接SAMDetect的Combined_mask

  2. Mask Blur

    • 参数:amount 设为 4(羽化边缘,让红甲边缘有半透明感,像自然长出来的)。

    • masker线:接Dilate Mask的masker

第四阶段:高清重绘(SDXL 上色)

这是流水线的“画师”,负责最终的渲染。

  1. Load Checkpoint:选择 Juggernaut_XL_v9。

  2. VAE Encode (for Inpainting)

    • pixels:接最开始的 Load Image。

    • vae:接大模型的 VAE。

    • mask:接上面 Mask Blur 的输出

    • grow_mask_by:设为 6。

  3. KSampler (核心采样器)

    • denoise:设为 0.6(重绘幅度。0.6 既能改颜色,又不会让指甲变形)。

    • positive (正向词):nnail art, classic red gel polish, creamy texture, soft ambient lighting, natural skin reflection, hyper realistic, 8k。

    • positive (正向词):glare, lens flare, bright white spots, plastic texture, neon reflections。

VAE Decode & Preview Image:将 Latent 信号翻译回图片,展示最终成果。

  1. latent:连接KSampler latent
  2. Vae:连接Load Checkpoint vae

连接完成以后,点击运行,第一个 AI 美甲作品诞生!效果如下图:

4. 今日成果

  1. ComfyUI 环境就绪

  2. 指甲分割效果
    成功提取出手部指甲的黑白 Mask,经过 Erode 和 Blur 处理后,边缘平滑自然。

  3. 基础重绘验证
    跑通 SDXL Inpainting 流程,成功在 Mask 区域生成了红色指甲,且未出现严重的空间扭曲。

    单纯靠 Mask(Day 4 的方案)是无法完美解决变形问题的,实例图中指甲还是出现了部分变形的问题,因为 Mask 只是告诉 AI “在哪里画”,并没有告诉 AI “骨头长什么样”。

    不过没关系,彻底解决变形的终极武器是 Day 5 的 ControlNet。我们将在明天用 ControlNet 彻底消灭变形。


三、 明日预告

关联需求:一期 - “AI 服务能生成逼真的试戴效果图”。

技术焦点:ControlNet 与 IP-Adapter 集成。

关联任务:ControlNet手部结构控制/IP-Adapter风格迁移

关键动作

  1. 引入 ControlNet:加载 Depth 模型,锁定手指形状。

  2. 引入 IP-Adapter:加载款式图,让 AI 自动“抄作业”。

  3. 工作流固化:将调试好的完整工作流导出,准备接入 Python 服务。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐