☰
ComfyUI电商换装工作流实战:从分割重绘到批量出图
2026/10/14 5:16:42 网站建设 项目流程

简介:这份资源是面向电商视觉设计与AI绘画爱好者的ComfyUI换装实战教程配套源码包,聚焦用Flux Fill与Flux Redux工具为商品图快速更换服饰风格,适合零基础想入门AI绘画、或希望提升电商视觉营销效率的从业者。压缩包共4个文件,约7KB,以md说明文档、html页面、inscode配置与gitignore为主,分别承担流程讲解、页面展示与工程配置等用途,结构轻量便于直接上手。目前已有149人学习。内容围绕模型选择、生成参数设置、提示词与反推提示词对换装效果的影响展开,并指出复杂图案换装效果较差,建议选用简洁参考衣物、精细调整提示词、手动处理模特蒙版并在换装后做高清修复。随包还整理了stable diffusion安装包、入门教程与关键词合集等学习线索,可帮助读者快速建立从工具配置到效果优化的完整认知。

1. 电商换装工作流为什么值得用 ComfyUI 重做一遍

做电商视觉的团队大多经历过这样的场景:一款服装要出十几个模特图,换颜色、换姿势、换背景,美工一天修不了几张,外包一张几十块还排期。传统路径是拍摄加后期,成本高、周期长、风格还难统一。ComfyUI 电商换装教程这类需求最近被问得特别多,核心就一句话——用节点式工作流把「模特换装」这件事做成可复用、可批量、可微调的流水线,而不是每次从零抠图。

它解决的不是「能不能换」的问题,而是「换得稳不稳、能不能批量、改一个参数会不会全盘崩」的问题。适合两类人:一类是电商视觉、服装类目的运营和设计,想低成本出图;另一类是有一定 Stable Diffusion 基础、想把散装插件串成生产管线的技术同学。这篇笔记按「先立住原理、再跑通最小工作流、最后讲参数和坑」的顺序写,源码部分给出可直接落地的节点配置和脚本片段,你照着搭一遍就能出第一张换装图。

2. 换装工作流的三个核心模块与选型理由

2.1 为什么是「分割 + 重绘 + 融合」而不是端到端

很多人第一反应是找一个「一键换装」的大模型,输入模特图和衣服图直接出结果。这条路在 Demo 阶段能跑,但落到电商场景几乎必翻车:衣服纹理丢失、边缘糊、肤色和衣服光照不匹配。原因是端到端模型把「识别衣服区域」和「生成新衣服」耦合在一个网络里,你没法单独调其中一环。

主流可靠做法是拆成三段:先用分割模型把模特身上的原始服装区域抠出来,得到一张 mask;再在 mask 区域内用重绘(inpainting)方式生成目标服装;最后把生成结果和原图做边缘融合与色彩校正。这样每一段都能单独换模型、单独调参,出问题也知道是哪一环的锅。ComfyUI 的节点图天然适合这种拆分,每个环节就是一个节点组,连线即数据流。

选型上,分割常用 SAM 系列或专门的服装分割模型,重绘用 SDXL Inpainting 或 SD1.5 Inpainting 配合 ControlNet,融合阶段用简单的图像混合节点加羽化。不要一上来就追最新最大的模型,先用手上能跑动的版本把流程串通,再逐步替换。

2.2 节点图的最小骨架怎么搭

下面是一个可运行的最小工作流骨架,用 Python 描述节点连接逻辑(实际在 ComfyUI 里是拖拽连线,这里用代码表达数据流,方便你理解依赖关系)。

# 最小换装工作流的数据流描述(非直接运行,用于理解节点依赖) workflow = { "load_model": { # 加载基础模型 "ckpt": "sd_xl_inpainting.safetensors", "outputs": ["model", "clip", "vae"] }, "load_image": { # 加载模特原图 "path": "model_input.png", "outputs": ["image", "mask"] }, "load_cloth": { # 加载目标服装图 "path": "cloth_target.png", "outputs": ["cloth_image"] }, "segment_cloth": { # 分割原始服装区域 "model": "cloth_seg_model.pth", "inputs": ["image"], "outputs": ["cloth_mask"] # 二值 mask,白色为待替换区域 }, "inpaint": { # 在 mask 区域内重绘 "inputs": ["model", "clip", "vae", "image", "cloth_mask", "cloth_image"], "steps": 25, "cfg": 7.0, "denoise": 0.85, "outputs": ["inpainted_image"] }, "blend": { # 边缘融合 "inputs": ["image", "inpainted_image", "cloth_mask"], "feather": 8, # 羽化像素 "outputs": ["final_image"] } }

逻辑说明:segment_cloth输出的 mask 决定了重绘的作用范围,mask 质量直接决定最终边缘干不干净。inpaint节点的denoise控制重绘强度,太低会保留原衣服颜色,太高会改变模特体型。blend节点用羽化把生成区域和原图过渡,避免硬边。

参数说明:steps25 是速度和质量的平衡点,电商出图建议不低于 20;cfg7.0 是提示词遵循度,换装场景不要超过 9,否则颜色会过饱和;denoise0.85 是经验值,换整件衣服用 0.8 到 0.9,只换颜色可以降到 0.6 左右。

2.3 服装分割模型怎么选和怎么接

分割是整条链路的地基。常见做法有两种:一种是用通用分割模型(如 SAM)加文本提示定位服装区域,灵活但需要调提示词;另一种是用专门训练的服装分割模型,直接输出上衣、裤子、裙子等类别 mask,省事但泛化性受训练集限制。

我一般会先用专用模型跑一版,看边缘是否贴合。如果模特姿势复杂、衣服和背景颜色接近,专用模型容易漏分割,这时候切到 SAM 加点选或框选提示来补。ComfyUI 里有对应的分割节点,把图像输入、输出 mask 接到重绘节点即可。注意 mask 要做一次膨胀(dilate)处理,向外扩 3 到 5 像素,给重绘留出过渡空间,否则生成区域和原图之间会有一条明显的缝。

# mask 膨胀与羽化预处理 import cv2 import numpy as np mask = cv2.imread("cloth_mask.png", 0) # 读取二值 mask kernel = np.ones((5, 5), np.uint8) # 5x5 膨胀核 mask_dilated = cv2.dilate(mask, kernel, iterations=2) # 向外扩约 4 像素 mask_blur = cv2.GaussianBlur(mask_dilated, (9, 9), 0) # 高斯羽化 cv2.imwrite("cloth_mask_processed.png", mask_blur)

这段预处理很关键,iterations=2配合 5x5 核大约扩 4 像素,具体数值按图片分辨率调整,1080P 图用这个值,4K 图要加倍。羽化核用 9x9 是轻量过渡,想要更柔和可以加到 15x15,但太大会让衣服边缘发虚。

3. 从零跑通一张换装图的完整步骤

3.1 环境准备与模型放置

先把 ComfyUI 跑起来,确认能正常出图。然后准备三类模型文件:基础重绘模型、分割模型、可选的 ControlNet 模型(用于保持姿势)。模型放置路径按 ComfyUI 的目录约定来,checkpoints 放基础模型,custom_nodes 里装好分割和图像处理相关节点包。

# 目录结构示例(按实际安装路径调整) ComfyUI/ ├── models/ │ ├── checkpoints/ │ │ └── sd_xl_inpainting.safetensors │ ├── sam/ │ │ └── sam_vit_h.pth │ └── controlnet/ │ └── openpose_sdxl.safetensors └── custom_nodes/ ├── comfyui-segment-anything/ └── comfyui-image-blend/

放置完成后重启 ComfyUI,在节点搜索里能搜到对应节点就说明加载成功。如果搜不到,先看控制台报错,多数是依赖包没装全,按提示补装即可。

3.2 搭建节点图并设置关键参数

按第 2 章的数据流把节点拖出来连线。顺序是:加载模型 → 加载模特图 → 加载服装图 → 分割节点 → 重绘节点 → 融合节点 → 保存图像。连线时注意 mask 要同时接到重绘节点和融合节点,重绘节点用 mask 限定区域,融合节点用 mask 做过渡。

关键参数集中在这几处:重绘节点的denoise设 0.85,steps设 25,cfg设 7;分割节点的置信度阈值设 0.5 到 0.6,太低会误分割背景,太高会漏掉衣服边缘;融合节点的羽化值设 8 到 12 像素。提示词写清楚目标服装的特征,比如「红色针织开衫,圆领,长袖,贴身」,不要只写「换衣服」。

# 提示词模板(正向与负向) positive_prompt = ( "a model wearing a red knit cardigan, round neck, long sleeve, " "slim fit, natural fabric texture, studio lighting, high detail" ) negative_prompt = ( "blurry, deformed, extra limbs, bad anatomy, " "color mismatch, harsh edge, watermark, text" )

正向提示词要包含颜色、材质、版型三个要素,这是电商换装和普通 AI 绘画的区别——你要的是可控的服装属性,不是艺术创作。负向提示词重点压边缘问题和颜色错配,harsh edge和color mismatch这两个词在换装场景里很管用。

3.3 批量换装的脚本化处理

单张跑通后,批量才是电商的真实需求。ComfyUI 支持通过 API 方式提交任务,可以用脚本循环读取服装图和模特图组合,批量出图。

import requests import json import os server = "http://127.0.0.1:8188" workflow_api = json.load(open("workflow_api.json")) # 从 ComfyUI 导出的 API 格式工作流 model_images = ["model_01.png", "model_02.png"] cloth_images = ["cloth_red.png", "cloth_blue.png"] for model_img in model_images: for cloth_img in cloth_images: # 替换工作流中的输入路径 workflow_api["3"]["inputs"]["image"] = model_img # 模特图节点 workflow_api["4"]["inputs"]["image"] = cloth_img # 服装图节点 workflow_api["9"]["inputs"]["filename_prefix"] = ( f"output_{os.path.splitext(model_img)[0]}_{os.path.splitext(cloth_img)[0]}" ) resp = requests.post(f"{server}/prompt", json={"prompt": workflow_api}) print(resp.status_code, resp.json())

逻辑说明:workflow_api.json是在 ComfyUI 界面里开启开发者模式后导出的 API 格式文件,节点编号对应界面上的节点 ID,需要按你的实际连线调整。每次循环替换输入路径和输出前缀,提交到/prompt接口。参数上注意服务端要留足显存,批量任务建议串行提交,并发太高会爆显存导致任务失败。

4. 换装效果不稳?这五个坑我替你踩过了

4.1 现象:衣服边缘有一圈灰边或硬边

原因:mask 没有做膨胀和羽化,重绘区域和原图之间是硬切。解决:按 2.3 节的预处理脚本对 mask 做膨胀加高斯羽化,膨胀 3 到 5 像素,羽化核 9 到 15。如果还有轻微灰边,在融合节点后加一个色彩匹配节点,把生成区域的颜色统计对齐到原图。

4.2 现象:换完衣服模特体型变了

原因:denoise设太高,重绘时把模特身体也重新生成了。解决:把denoise降到 0.7 到 0.8,同时检查 mask 是否只覆盖了衣服区域。如果 mask 把手臂或腰部也包进去了,重绘就会改体型。用分割结果可视化检查一遍,确保 mask 边界贴着衣服轮廓。

4.3 现象:衣服颜色对,但纹理糊成一团

原因:重绘步数不够或模型本身细节能力弱。解决:steps提到 30 以上,换用细节表现更好的重绘模型。另外提示词里加上材质描述,比如knit texture、denim fabric,模型会往对应纹理上靠。如果还糊,检查 VAE 是否匹配,用错 VAE 会整体发灰发糊。

4.4 现象:复杂姿势下分割漏掉一部分衣服

原因:专用分割模型对遮挡和极端姿势泛化不够。解决:切到 SAM 加提示点或提示框的方式补分割,或者对 mask 做形态学闭运算把断裂区域连起来。实在不行就手动修一版 mask,电商出图量不大时人工兜底比调模型快。

4.5 现象:批量任务跑到一半显存溢出

原因:并发提交太多,或者上一张图的缓存没释放。解决:串行提交任务,每张图之间加短暂延时;在 ComfyUI 启动参数里加上显存优化选项;降低单张图的分辨率,出图后再用放大节点提升。批量场景下稳定比单张极限质量更重要。

5. 让换装图直接能上架的三个进阶技巧

第一个技巧是姿势锁定。电商图往往要求同一姿势换不同衣服,这时候用 ControlNet 的 OpenPose 把模特骨架固定住,重绘时只改衣服区域,姿势不会漂。把 OpenPose 节点接在重绘节点的条件输入上,权重设 0.6 到 0.8,太高会限制衣服自然褶皱,太低姿势会跑。

第二个技巧是色彩校正。生成区域和原图的光照、色温经常不一致,尤其是棚拍图换外景衣服时。在融合节点后加一个色彩迁移节点,用原图非衣服区域的颜色统计去校正生成区域,或者简单点用曲线调整把生成区域的亮度和饱和度对齐到原图。这一步做完,图基本就能直接用了。

第三个技巧是分辨率策略。不要一开始就用 4K 跑重绘,显存吃不消且速度慢。先用 1024 跑通换装,确认效果后用放大节点配合低 denoise 的重绘做细节增强,分两步走。放大时 denoise 设 0.3 到 0.4,只补细节不改结构。

技巧关键参数适用场景
姿势锁定ControlNet 权重 0.6-0.8同姿势多衣服批量出图
色彩校正亮度/饱和度对齐棚拍图换不同光照服装
两步放大放大 denoise 0.3-0.4需要高分辨率上架图

我自己的习惯是每调完一个参数就存一版工作流,命名带上日期和改动点。换装工作流参数多,改着改着就忘了哪版效果最好,有存档才能回退。另外别追求一次出图就完美,先出结构对的图,再用局部重绘修细节,比反复调全局参数快得多。希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询