ComfyUI人脸修图工作流,化妆磨皮吊打PS
大家好,今天我将介绍一个最新搭建的工作流,旨在使用AI对人像进行修图。通过这个工作流,你可以看到修图前后的显著对比:不仅给照片中的女性画了眼线和眼影,涂了口红,还使她的皮肤变得更加光滑,质感也非常真实。同时,她的面貌特征没有被改变,这才是真正意义上的AI修图。
如果你喜欢看视频教程,那么我非常欢迎你观看本文所对应的视频(B站同名帐号):
工作流简介
在导入工作流之前,我们需要下载一个关键的Checkpoint。这是整个工作流的核心,能够帮助我们用AI给人物进行“化妆”。当然,我们也可以使用Photoshop来实现类似的效果,但如果想要达到比较真实的质感,需要非常高的技术以及大量的时间。
下载Checkpoint
我们需要从HuggingFace上下载Checkpoint,下载地址:https://huggingface.co/stabilityai/cosxl/tree/main。
1️⃣ 注册并登录HuggingFace
确保你已经在HuggingFace上注册并登录。
2️⃣ 进入下载页面
我们要下载的Checkpoint是由开发Stable Diffusion的公司StabilityAI开发的。你需要提供一些个人信息并提交,才能进入到下载页面。
3️⃣ 下载Checkpoint
在下载页面中,只需下载下面的Checkpoint即可。
导入工作流
导入工作流后,可能会发现缺失一些节点。可以在ComfyUI管理器里安装这些节点。
也可以手动安装。
- ComfyUI-Custom-Scripts: https://github.com/pythongosssss/ComfyUI-Custom-Scripts
- rgthree’s Comfy Nodes: https://github.com/rgthree/rgthree-comfy
- ComfyUI Essentials: https://github.com/cubiq/ComfyUI_essentials
- KJNodes for ComfyUI: https://github.com/kijai/ComfyUI-KJNodes
- comfyui_face_parsing: https://github.com/Ryuukeisyou/comfyui_face_parsing
搭建基础工作流
1. 添加”Check加载器”
- 选择刚才下载的cosxl_edit Checkpoint。
- 添加”SAG自注意引导”节点,可以让Stable Diffusion在每次迭代生图过程中利用自注意引导提升图像质量。建议将缩放(Scale)数值设为1以下,模糊度(blur sigma)设为比Scale大的数值。
2. 加载图像并制作遮罩
- 添加”加载图像”节点,上传要修的图。
- 我们的第一轮目标是给图像添加一些金色的眼线。在眼线区域涂抹出一个遮罩,并添加”遮罩模糊”节点,模糊度设为2。
- 添加”遮罩到图像”节点,运行ComfyUI查看生成的遮罩效果。
3. 添加提示词和CFG引导
- 添加正负提示词,正面提示词输入”金色眼线”。
- 选择”高级自定义采样”采样器。
- 添加”随机噪波”节点,并将噪声种子部件转换为输入(convert the noise seed widget to input)。将其连接到”rgthree”开发的种子节点。
- 添加”双CFG引导”节点。配置正面CFG,将其值设为5,超过这个数值,生成的图可能会出现问题。配置负面CFG,建议范围为1.2-1.6,根据图片情况,可以调整此值。连接各个节点输入端。
4. InstructPixToPixConditioning
- 添加”InstructPixToPixConditioning”节点。它的作用是避免提示词大幅度改动其他区域,仅产生修图效果。将”InstructPixToPixConditioning”节点与”双CFG引导”连接。确保”InstructPixToPixConditioning”的负面条件(conditioning)输出端连接到”双CFG引导”第二个条件的输入端。双CFG引导”负面条件的输入端需要连接负面提示词。
- 从”高级自定义采样器”节点的”采样器”输入端拖出”K采样器选择”节点,选择后缀带有”ancestral”的采样器。
- 从”Sigmas”输入端拖出的”基础调度器”,选择”exponential”。
- 添加VAE解码器和”图像对比”节点。
image_a
端口连接修改后的图片(画了眼线)。image_b
端口连接原始图片。 - 确保所有节点正确连接,尤其是CLIP节点。
- 运行工作流,生成一张测试图片。
5. 添加 “图像遮罩复合” 节点
发现金色眼线扩散到了其他地方,遮罩未能有效限制。因cosxl_edit
Checkpoint的特殊性,我们不能用它来搭建局部重绘的工作流,但可以通过遮罩限定眼线区域。接下来,我们将添加一个节点来进一步控制修改区域,并在指定区域内涂抹眼影。
- 作用:实现类似于Photoshop中的蒙版操作。
- 连接:
- 原图像 (source):连接到刚才生成的图像。
- 目标图像 (destination):连接到最开始上传的图像。
这个节点的作用类似于在Photoshop中将原图像放在上层,将目标图像放在下层,然后通过蒙版将对图像的修改限定在指定区域。
然后再添加 “图像对比” 节点,它的作用是对比修改前后的图像。将image_a
端口连接到修改后的图像。将image_b
端口连接到原始图像。
完成这些步骤后,我们再生成一张图,确保眼线被涂在指定区域。
6. 添加眼影
接下来我们再给她涂个眼影吧。把这张图复制一下。然后回到最开始的”加载图像”的节点,把图像粘贴过来。然后再做一个遮罩。遮罩模糊度我们设高一些。然后改一下提示词。把”双CFG引导”这里的CFG改小一些。然后再跑一张图。
进阶工作流:皮肤遮罩
在前面的步骤中,我们已经完成了眼线和眼影的添加。接下来,我们将详细讲解如何进行皮肤磨皮,使皮肤更光滑并且保持质感。这个过程涉及到一些高级节点配置,以确保面部皮肤的处理效果最佳。
1. 磨皮的重要性
磨皮是人像修图的关键步骤之一,但不能简单地重复之前的步骤。直接通过提示词如”光滑的皮肤”可能会导致不理想的结果。此外,手动为面部皮肤制作遮罩比较费时费力,因此我们将使用ComfyUI中专门为面部做遮罩的节点——FaceParse
。
2. 添加 FaceParse 节点
- FaceParse:用于自动生成面部遮罩。
- 模型输入端:从模型输入端拖出一个FaceParse模型。
- 预处理器:需要连接一个预处理器。
3. 添加 ImageCropWithBBox 节点
- 作用:裁剪面部图像。
- BBox:即Bounding Box,用来识别面部区域并裁剪。
- 连接:
- bbox输入端:连接到
BBoxListItemSelect
节点,选择第几个bounding box(默认index值为0)。 - bbox_list输入端:连接到
FaceBBoxDetect
节点,控制bounding box的阈值和大小。选择nano版本的模型以减少资源消耗。
- bbox输入端:连接到
4. 连接预览图像节点
- 为
FaceParse
和ImageCropWithBBox
分别添加预览图像节点,确保正确处理。
5. 运行并检查结果
- 运行工作流,检查面部处理结果。如果出现错误,确保图像端口连接正确。
- 预期结果:
FaceParse
生成彩色面部分割图,ImageCropWithBBox
裁剪出面部图像。
6. 提取皮肤区域
- FaceParsingResultsParser:从
FaceParse
拖出,用于提取面部皮肤区域。 - 设置参数:仅打开”skin”开关,保持其他部位(如鼻子)关闭。
7. 平滑皮肤遮罩边缘
- 添加”遮罩模糊生长”节点:
- 设置扩展大小和模糊半径,使皮肤遮罩的边缘过渡更平滑。
- 预览遮罩效果:添加预览节点查看遮罩效果。
进阶工作流:局部重绘
1. 选择Checkpoint
- 选择DreamshapeXL的Lighting版本:该版本出图速度快,皮肤质感好。
- 下载链接:https://huggingface.co/Lykon/dreamshaper-xl-lightning/tree/main
- 另一个推荐:JuggernautXL的Lighting版本也很好,但Dreamshaper在皮肤质感上稍胜一筹。
2. 添加提示词
- 提示词:写上“光滑的皮肤”。
- K采样器:
- 采样步数:3步(Lighting版本的Checkpoint,速度极快)。
- CFG值:设置为2。
- 参考Checkpoint作者的推荐设置。
- 降噪强度:设为0.4。
3. 连接节点
- VAE编码:将要局部重绘的图进行VAE编码。
- 潜空间噪声遮罩:进行设置并连接。
- 输出图像节点:添加两个节点用于输出图像。
运行工作流,检查皮肤效果。我们会看到皮肤变得更细腻,显得年轻了10岁。
进阶工作流:改变嘴唇颜色
1. 添加ColorAdjust节点
- 作用:改变图像的对比度、明度、饱和度、色相。
- 调整色相:改变嘴唇颜色。
- 预览图像:添加预览节点查看效果。
- 问题:整个面部区域都变了,需要限定变化区域。
- 解决方案:像之前那样处理遮罩。
2. 复制之前的四个节点
- 面部遮罩区域:选择上嘴唇和下嘴唇。
- 调整遮罩大小和模糊度:因嘴唇面积小,需精确控制。
- 运行工作流:生成遮罩并查看效果。
3. 添加图像遮罩复合节点
- 作用:像之前的工作流一样,限定变化区域。
- 连接并运行:处理嘴唇颜色。
- 连接:
- 原图像(source):连接处理好的面部图像。
- 目标图像(destination):连接原始图像。
4. 将修图结果放回原图
在之前的步骤中,我们已经添加了局部重绘的工作流,并实现了嘴唇颜色的调整。现在,我们将通过添加一个强大的节点ImageInsertWithBBox
,将处理好的面部图像插入到原始图像中。最终,我们将整个工作流分为上下两部分,以便更灵活地进行调整。
- 添加ImageInsertWithBBox节点:用于将处理好的图像插入到原始图像中。
- bbox输入端口:连接到之前的
BBoxListItemSelect
节点。 - 图像源:连接到未被裁剪过的原始图片。
- 图像输入端:连接到处理过的图片。
- bbox输入端口:连接到之前的
- 添加图像对比节点:用于查看最终效果。
- image_a端口:连接到插入后的图像。
- image_b端口:连接到原始图像。
完善工作流
整个工作流分为上下两个部分。上面的部分用的是CosXL,可以帮人物化妆。
化妆的流程可能会进行很多次,所以最好是在跑上面的工作流的时候,暂时把下面的先冻结一下。我们给下面的工作流编一个组。
然后再加入一个节点。通过这个开关就可以切换这个组的状态。
先对人物进行化妆,效果满意了,再把下面的组打开,处理面部的细节,这样就比较方便了。
结论
通过这个工作流,你可以轻松地实现高质量的人像修图,并灵活地进行局部调整和细节处理。希望这些步骤能帮助你提升修图效率,创造出更加惊艳的作品。感谢你的阅读,期待你在修图过程中取得更好的成果!