ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

ComfyUI电商换装工作流全解析:从抠图到合成,参数避坑与批量生产

2026/9/29 16:04:42 拓冰建站 浏览量
ComfyUI电商换装工作流全解析:从抠图到合成,参数避坑与批量生产 简介面向电商视觉设计与AI绘画初学者的ComfyUI换装实操源码包基于Flux Fill与Flux Redux详细讲解商品图换装流程。内容覆盖模型选择、生成参数设置、提示词调优、模特蒙版手动处理与换装后高清修复等环节并结合多个示例对比不同提示词及反推提示词的效果针对复杂图案换装欠佳的问题给出优先选择素雅参考衣物、精细调整提示词、必要时手动处理蒙版并做高清放大修正的具体做法。压缩包仅7KB共4个文件由md说明文档、html页面、inscode可运行脚本和gitignore配置组成其中说明文档承载步骤讲解页面与脚本展示可视化运行效果配置类文件便于工程整理整体结构精简适合快速对照搭建与验证。已有149人学习下载包内提供清晰的步骤拆解、提示词实例以及stable diffusion安装包、入门教程、关键词合集等AI绘画自学资源入口对完全没有基础的读者同样友好适合低成本入门电商换装与AI绘画应用。1. 电商换装跑通之前先搞懂它到底在解决什么问题电商换装说白了就是把模特身上那件衣服换成另一件或者把一件衣服换到另一个模特身上输出一张看起来像实拍的商品图。这事放在过去要么重拍、要么PS抠图成本都不小。ComfyUI电商换装教程这类可运行源码就是把整套换装流程拆成可视化的节点工作流让本地跑通一条「抠图→换装→补光→合成」的链路而不是靠一张图反复抽卡碰运气。这篇文章解决的是三类人的问题电商运营想让上新图不再等摄影排期设计师想把换装从PS里解放出来技术同学则想知道这套工作流到底怎么搭、参数怎么调、哪些地方会翻车。它和单纯的文生图不一样换装图的底线是有原图打底所以要的是「可控」而不是「发挥」。下面按我平时搭这套工作流的顺序把整个链路、参数和踩坑讲清楚。2. 电商换装工作流长什么样从抠图到合成的完整链路2.1 为什么是局部重绘而不是全图生成很多人第一次接触电商换装第一反应是用文生图直接把「穿着白色连衣裙的模特」画出来。这个路线在纯创意场景能用但放到电商货架图里基本都会翻车衣服版型不对、LOGO细节乱编、模特脸和原商品页对不上。商品图最核心的资产是「真实感」和「可复现性」买家秀和卖家秀差太多退货率会直接教做人。所以主流的ComfyUI电商换装工作流走的是局部重绘Inpainting路线保留原图的模特姿态、背景和大部分细节只对衣服区域做重绘。控制范围靠的是遮罩控制重绘内容靠的是提示词和模型控制融合效果靠的是denoise和采样器。这套逻辑和PS里用蒙版做合成是一样的思路只是把「手绘蒙版人工修图」换成了「自动抠图模型推理」。局部重绘还有一个隐性好处它不需要训练专属模型。一张商品图进来先经过抠图节点把衣服区域抠出来再用遮罩精准框住换装范围最后交给修复模型处理。整个链路的计算量比全图生成小得多出图速度也更容易在电商大批量的场景里撑住。这才是电商换装能落地的关键。2.2 工作流骨架五个节点的最小链路我一般会把换装工作流拆成五个核心节点加载图像、抠图分割、遮罩处理、局部重绘采样、解码输出。可运行源码通常也是围绕这五段组织的只不过会多挂一些模型和LoRA。下面用ComfyUI的API调用方式展示这个最小链路方便你理解节点之间的数据流。import json import requests # ComfyUI API 调用示例提交一个换装工作流 workflow { 3: { class_type: LoadImage, inputs: {image: model_original.jpg} }, 6: { class_type: SAMDetector, # 用 SAM 分割出衣服区域 inputs: { sam_model: sam_vit_h_4b8939.pth, image: [3, 0], prompt: clothes } }, 10: { class_type: GrowMask, inputs: { mask: [6, 0], grow: 12, # 遮罩向外扩张12像素避免边缘生硬 blur: 8 } }, 15: { class_type: VAEEncodeForInpaint, inputs: { pixels: [3, 0], vae: [4, 0], mask: [10, 0] } }, 20: { class_type: KSampler, inputs: { model: [5, 0], positive: [12, 0], negative: [13, 0], latent_image: [15, 0], seed: 42, steps: 28, cfg: 4.5, sampler_name: dpmpp_2m, scheduler: karras, denoise: 0.8 } } } resp requests.post( http://127.0.0.1:8188/prompt, json{prompt: workflow} ) print(resp.json())这段代码的逻辑是加载原图后先用SAM节点分割出衣服遮罩再对遮罩做扩张和模糊处理防止生成区域和原图交接处出现硬边。VAEEncodeForInpaint节点负责把原图和遮罩融合成潜空间数据最后KSampler在这个受限的潜空间里做重绘。注意这里用的是SAMDetector如果你手里的源码包用的是其他分割模型比如Semantic-SAM或UL2节点名会不一样但数据流是一致的。参数说明是这个链路里最容易出问题的地方。seed不用多说固定住就能复现steps和cfg在换装场景不建议用默认的20/7因为重绘区域小采样步数太短会让布料纹理出不来CFG太高会让衣服风格跑偏。我一般先用28步、4.5的CFG打底后面再根据效果微调。2.3 可运行源码到手后先做这三件检查拿到一份换装工作流的可运行源码包先别急着跑按下面三件事做基础检查能省下大量排错时间。第一确认模型路径对不对。源码包里的工作流JSON文件里通常会写死模型的绝对路径或相对路径比如checkpoints、loras、controlnet、sam这些子目录。如果你的ComfyUI目录结构和作者不一致直接跑会报「model not found」。检查一下models目录里缺什么补什么别一股脑全下一个遍。第二看依赖节点装没装齐。换装工作流基本绕不开ComfyUI_essentials、ComfyUI_Impact_Pack、ControlNet辅助节点、SAM分割节点这几个插件包。打开ComfyUI Manager的「Custom Nodes Manager」页面按工作流JSON里的节点类型名逐个核对缺什么装什么。这一步最耗时间但也是绝大多数「工作流跑不起来」的根因。第三检查显存余量。换装需要同时加载底模、SAM模型、可能还有ControlNet模型显存低于8G会非常紧张。就算源码包写着「可运行」那也是作者在他自己的硬件条件下验证的。你的显卡如果只有6G建议先把底模换成一个优化过的版本或者降低输出分辨率别硬扛。这三项检查做完工作流基本能跑通接下来才是真正花时间的部分——调参数。3. 让换装不翻车的四个核心参数这组数值先测一遍3.1 denoise与CFG控制「换」的力度换装翻车的第一大元凶就是denoise设太高。denoise表示重绘区域在原图信息基础上被改变的程度0.4以下基本是小修小补0.8以上相当于把遮罩区域当作空白画布重新生成。电商换装里衣服的版型、褶皱走向、面料质感全依赖原图信息denoise太高会把这一切毁掉出来的衣服像塑料壳子一样贴在人身上。我一般把denoise放在0.6到0.75之间。这个区间能保证衣服款式被换掉的同时模特身体的明暗关系还能保留住。如果你发现衣服是换上了但身体的姿势、手的位置明显变形多半是denoise偏高先降到0.65再试一轮。CFG提示词引导强度在换装里作用是稳住「衣服描述」的贴合度。CFG越高提示词对重绘区域的控制越强但代价是饱和度上升、纹理变硬。注意做电商图是要拿去做商品展示的过度渲染的风格反而会拉低真实感。推荐先用4到6的范围测试不要学文生图那种7以上的打法。3.2 ControlNet与LoRA保住版型和质感比CFG更有效的保版型手段是ControlNet。常见的做法是在换装工作流里挂一个OpenPose或Depth节点约束生成区域的人物姿态和身体结构。电商商品的拍摄角度千变万化正面、侧面、45度、坐姿、蹲姿都有如果没有姿态约束局部重绘很容易把身体画歪。LoRA则负责面料质感和服装风格。同一个工作流底模画出来的牛仔和丝绸可能都不尽人意但挂一个织物LoRA之后就自然很多。注意一个容易犯的错换装场景的LoRA权重不要超过0.8不然衣服会被LoRA的风格覆盖掉失去模特身上原本的光影信息。我在电商换装里比较推荐的组合是Depth/OpenPose控制结构 面料LoRA控制质感 底模控制整体光影。三者各司其职比单靠提示词硬拉要稳定得多。如果你手里的源码包没有挂ControlNet建议自己加上这是换装效果质的飞跃的关键一步。3.3 IC-Light补光解决违和感的关键一步换装合成最大的穿帮点不在衣服本身在光影。原图的模特可能处在棚拍柔光环境里而新衣服是在另一个光照条件下渲染出来的两张图一拼明暗交界线、地面反光、皮肤上的环境色全对不上一眼假。这个问题靠denoise和CFG都解决不了因为它们是作用于潜空间的光影信息没那么容易跨区域迁移。IC-Light是专门解决这个问题的。它的工作原理是在重绘后对整张图做一次光照一致性优化让前景衣服的光影方向和背景原图匹配。在ComfyUI里挂一个IC-Light节点输入原图和重绘结果输出就是融合后的打光图。注意IC-Light有「relight」和「inpaint」两种模式电商换装用inpaint模式更合适它不会把整张图的光照推倒重来。接IC-Light之后通常还要加一个细节恢复节点比如Detailer因为补光过程会稍微压掉一些皮肤和布料的纹理细节。这个过程我用大白话说就是「打完光再补一层皮肤质感」不然模特的脸会显得像塑料娃娃。3.4 分辨率与放大策略从预览到出图换装工作流跑预览的时候可以用低分辨率加速但真正出商品图不能直接拿低分辨率。我一般流程是先在512或768分辨率下快速试跑两三轮确认换装效果和遮罩位置没问题再切到放大节点做最终输出。放大常见做法是走Ultimate SD Upscale或者Tiled Diffusion。前者适合单张快速放大后者适合大图分块重绘保持细节均匀。电商详情页的主图通常要1200像素以上建议放大倍数控制在1.5到2倍之间倍数太高会引入AI塑胶感放大到2400再裁剪是够用的。还有一个容易被忽略的参数是放大时的denoise。二次放大如果不加控制容易把换装区域的内容重新画一遍导致衣服细节和第一次输出对不上。放大的denoise建议压在0.2到0.3之间Upscale模型选不带锐化的版本锐化步骤放到最后手动加别让AI顺手做掉。4. 避坑电商换装最容易翻车的五个场景4.1 衣服边缘有一圈白边现象换装完成后衣服和皮肤交界处有一圈发白的光晕特别在领口、袖口、下摆位置最明显。原因遮罩在抠图时把衣服边缘的部分像素也划进了重绘区但重绘后的衣服边缘覆盖不住原图的亮色像素形成一个半透明的混合带。GrowMask参数设置不当也会加剧这个问题扩张太多或模糊不够。解决回到遮罩处理环节把GrowMask的扩张值调小到6到10像素同时把blur值适度提高让边缘过渡更柔和。如果白边还在可以在合成前加一个InpaintModelConditioning节点让它把「仅遮罩区域重绘」和「原图边缘约束」分开处理效果比单纯调遮罩好很多。4.2 模特的手指出问题现象换装图里模特的手多了一根指头或者手指像融化的蜡烛一样粘连在一起。原因局部重绘在采样时如果遮罩范围不小心把手指划进去一半模型就要自主补全手指的形态。手部结构本身是扩散模型的公认弱项加上电商图里模特手指经常碰到衣服遮罩不可能完全避开翻车概率就被放大了。解决第一道防线是遮罩范围——衣服遮罩宁可小一点也不要往手部、脸部蔓延。第二道防线是挂一个ADetailer或FaceDetailer节点把重绘区域里的手部框出来做二次修复。第三道防线才是提示词在negative里加「bad hands, missing fingers, extra fingers」这类描述但记住这只能降低概率不能根治。4.3 衣服纹理被画成糊的现象换装后衣服像是一片纯色色块完全看不出针织、棉麻、牛仔布料的纹理质感。原因重绘分辨率不够或者denoise设得太低导致模型没有足够的自由度去生成纹理。另一个常见原因是底模对特定面料的表达能力弱比如细针织和丝绸这类高纹理密度面料通用模型不吃这一套。解决先把重绘区域的分辨率提上去方法有两种——要么增加整体出图分辨率要么在重绘前把遮罩区域单独crop出来放大处理后再贴回原图。第二种做法更省显存ComfyUI里有专门的节点实现。如果提分辨率后依然糊那问题就在模型侧去CivitAI找一个织物类LoRA挂上比死磕参数快得多。4.4 换了衣服但光影明显对不上现象衣服和身体的明暗方向相反或者衣服没有吃上环境光看起来像后期PS硬贴上去的。原因局部重绘只重绘了衣服区域没有感知它周围的环境光照。比如原图模特左脸被暖光照射但生成的衣服却自带冷色阴影这就是模型在潜空间里没有读取足够的环境信息。解决按前面说的做法接IC-Light的inpaint模式做整图补光。另一个技巧是重绘前把原图做一次颜色抖动增强让衣服区域的潜空间初始化更贴近周围环境色调。具体操作是在VAEEncodeForInpaint之前加一个ImageScale节点把图像缩放到1.02倍细微的颜色混叠能让模型在采样时更「入境」。4.5 风格迁移过头不像商品图现象衣服是换成功了但整体画面往插画风、超写实风或者奇怪的艺术风格飘和商品图该有的朴素感差很远。原因底模的风格倾向太强或者CFG/denoise设置给模型太多发挥空间。电商商品图需要的是「真实摄影感」很多写实模型其实是「艺术写实」自带强烈风格滤镜。解决选底模时优先挑专门为摄影或电商场景训练过的模型。换装工作流里底模权重占比可能只有50%CFG和denoise再各占一部分三者要一起调。如果发现风格偏了先把CFG降到4以下试试再不行就把底模换掉不要在一个风格跑偏的模型上反复抽卡那是浪费时间的玄学。5. 从单张出图到批量生产换装工作流的三种进阶改法5.1 保持同一位模特的Step级稳定电商场景经常有「一件衣服在同一个模特身上出多张角度图」的需求。如果每张图都单独调整遮罩和随机种子出来的模特脸和肤色会有轻微差异放在同一个商品详情页里就会露馅。解决办法是用LoRA或InstantID把模特脸部锁定。锁脸的思路是第一轮先用原图提取模特面部特征生成一个脸部LoRA之后所有换装工作流都挂上这个LoRA并固定权重。这样模特的脸型、五官比例、肤色会保持稳定换装后的结果拼接起来更像同一次拍摄的素材。注意脸部LoRA的训练不需要太多图8到12张同一个模特不同角度的照片就够了。5.2 批量生成多SKU的自动化变体一个电商详情页经常需要展示多个颜色、多个SKU。手工一张一张跑工作流很痛苦但这个场景其实是ComfyUI API最好发挥的地方——把工作流保存为API格式用脚本循环提交多个任务。import glob import json import time import requests # 批量跑多个 SKU 换装每张原图固定种子以保持风格统一 for img_path in glob.glob(skus/*.jpg): target_color img_path.split(/)[-1].split(_)[0] positive_prompt fstudio product photo, {target_color} dress, soft shadow, fabric texture # 读取之前保存好的 API workflow.json with open(workflow.json, r, encodingutf-8) as f: workflow json.load(f) # 更新提示词节点和图像节点 for node_id, node in workflow.items(): if node[class_type] LoadImage: node[inputs][image] img_path if node[class_type] CLIPTextEncode and node[inputs].get(text, ).startswith(studio): node[inputs][text] positive_prompt resp requests.post(http://127.0.0.1:8188/prompt, json{prompt: workflow}) print(img_path, resp.json())这段脚本做的事很简单遍历skus目录下的原图每次读取同一个工作流模板替换掉图像路径和提示词中的颜色描述然后提交到ComfyUI后台跑。输出用固定的seed和denoise所以同一批图的风格和光影会保持很高的统一度。这里有个小技巧在提示词里把颜色写进开头复用同一个模板就能覆盖多个SKU不用为每个颜色单独建工作流。5.3 文生图与换装的混合玩法电商换装不是只能从原图改起。有时候客户手里只有一件衣服的白底图没有模特上身照这时候可以先用文生图生成一个符合要求的模特场景再跑换装流程把衣服「穿」上去。混合玩法的关键是把白底图先抠出来做成一个带透明通道的服装PNG然后通过ComfyUI的图像合成节点把衣服粗略贴到模特身上再用局部重绘磨掉贴图的生硬边界。这个流程比纯换装多了一段「预合成」但好处是同一件衣服可以快速套用在十几个不同模特场景里。具体做法不复杂ImageOverlay节点负责贴图遮罩重绘负责融合IC-Light负责打光本质和前面说的链路一致只是输入源多了一条支线。6. 换装图能不能用用三道检查来判断出图之后不要急着发给运营先过自己这一关。我习惯把每张换装图放大到100%做一个「三查」一查边缘衣服和皮肤交界处有没有白边、锯齿或者模糊过渡二查纹理放大后衣服的面料细节是不是清晰、有没有塑料感三查光影衣服的明暗方向和背景环境是否一致倒影、反光有没有明显矛盾。这三细查过了再谈交付。如果这三查发现问题不要整张图推倒重来回到工作流里精准定位边缘问题查遮罩纹理问题查分辨率或LoRA光影问题查IC-Light链路。这一步熟练之后一张换装图的调优时间能压到正常出图时长的30%以内。电商换装和纯AI绘画最大的不同是它有一个「标准答案」——原图。所以整个工作流的每一个节点都是为了对抗失控而不是追求惊艳。我一开始也被可运行源码的「一键出图」迷惑过后来发现真正省时间的不是模型多强大而是把遮罩、denoise、补光这条链路的边界摸清楚。希望这套从链路到避坑再到批量化的做法能帮你在电商换装这条方向上少踩几个坑。本文还有配套的精品资源点击获取