人物一致性--LoRA训练(二)图像初级修复与多表情分割处理
基于本文方法训练的Lora模型示例:点击查看
资源整合包:点击跳转
视频教程:点击跳转
整体工作流如下所示,在这一阶段,图像放大不仅需要提升分辨率,更需要对原图中受损或缺失的部分进行有效重绘。因此,选用 Flux + Upscaler 的组合方式来完成高清修复处理。
该方法在放大的同时引入扩散过程,具备一定的图像修复能力,能够在提升图像质量的同时,对原始缺陷区域进行合理重构。同时,Flux 模型具备良好的美学表达能力,在整图扩散的过程中,还能实现对人物特征的全局一致性控制。
综合考虑修复效果、美感表达与人物一致性,Flux 搭配 Upscaler 是初步放大阶段的优选方案。
一、图像放大
1.1 Florence提示词反推
在进行图像高清修复时,由于该过程依赖扩散生成,因此需要提供合适的提示词以引导模型输出。若提示词能够准确还原原图内容,将显著提升扩散过程的稳定性与可控性。因此,引入提示词反推模型成为关键步骤,用于从图像中提取语义描述。
Flux 模型采用 CLIP-L + T5 作为文本编码模块,其训练过程中使用了自然语言对图像进行标注,因此更适配具备语言理解能力的反推方式。像 Prompt Styler 或 WD14 等以短词标签为主的反推模型,并不适用于 Flux 语义风格的提示词提取。
相比之下,诸如 Ollama、JoyCaption、Molmo 等具备 LLM 能力的模型,在处理自然语言提示词方面表现更为优秀,能够生成更贴合 Flux 风格的完整语义提示词。
需要注意的是,LLM 模型通常占用较高显存。为了避免影响后续使用 Flux + Upscaler 进行 1536×1536 分辨率大图生成的速度,提示词反推完成后最好及时释放资源。因此,在节点设置中需关闭 keep_model_loaded
参数,以确保反推模型在任务完成后自动卸载,释放显存资源。
1.2 Upscaler模型高清修复
Upscaler 模型的强度参数对最终图像的修复效果具有显著影响。当该强度设置过高时,模型在扩散过程中会更倾向于拟合输入图像本身,即对原始图像(包括其受损区域)保持过高的忠实度,从而抑制了必要的修复与重绘能力,导致修复效果不明显。
因此,在图像存在明显缺陷或结构错误的情况下,建议适当降低 Upscaler 的强度,以增强模型对损坏区域的重建能力,提升整体修复质量。
controlnet中strength=1.0
下图展示了在控制强度设为 1.0 时的出图效果。可以看到,模型在扩散过程中高度拟合原图,尤其是在图像中受损区域的处理上,几乎没有进行有效的重绘,导致整体修复幅度较低。这种现象在图中左下角的小尺寸人脸上尤为明显,由于原始区域面部特征缺失,而模型又强烈依赖输入图像,最终输出中未能重建出清晰的面部细节,出现面部结构缺失或模糊的情况。此类场景下,适当降低控制强度将有助于模型更主动地对受损区域进行修复与补全。
controlnet中strength=0.5
下图展示了在控制强度设置为 0.5 时的生成效果。可以明显看出,降低控制强度相当于增强了模型的重绘能力,使其在扩散过程中更加主动地对图像进行修复与细节补全。
最终生成结果中,人物的面部特征得到了有效修复,尤其是在图像中较小的人脸区域,模型依然能够准确描绘出清晰的五官结构,整体一致性与可辨识度显著提升。这表明在修复任务中,适当降低控制强度有助于提升模型的重构能力和图像质量。
controlnet中strength=0.5,end_percent=0.5
下图展示了在控制强度为 0.5、end_percent
同样设为 0.5 的生成效果。该设置仅作为一种参考参数组合,用户可根据自身需求灵活调整。
从对比结果来看,该配置与前述仅设置控制强度为 0.5 的效果大致相似。但在此设置中,通过将 end_percent
设为 0.5,为模型保留了更多自由生成的空间,使其在后半段扩散过程中有更大的发挥余地。此策略有助于在保持控制力的基础上,进一步释放模型的潜在表现力,获得更加自然且细节丰富的修复结果。
1.3 Color match色彩匹配(可选)
在使用 Upscaler 进行图像放大和修复时,通常会为模型留出一定的自由发挥空间,以提升图像的细节表现。然而,这种“自由”也可能带来一些副作用——其中之一就是对原图色彩信息的干扰。
如下图所示,当图像完成放大与修复后,原本为纯白的背景发生了色偏,整体趋于发灰。这种背景色变化会直接影响图像中主体与背景之间的对比关系。而这种对比变化在某些场景下可能会造成明显问题,例如在人物换装插件中,若上传的参考衣物背景不是纯白,最终换装图中的服饰颜色可能会出现明显色差。
因此,为了尽可能还原原始图像的色彩结构,做了一个 Color Match(色彩匹配)操作,用于调整修复后图像的色彩与原图保持一致。当然,这一处理是否有必要,还需根据具体使用场景判断,用户可自行权衡决定是否启用。
二、图像修复
在该模块中,使用了两个 FaceDetailer 节点对原图进行局部修复。通过配置不同的BBox 检测模型,可以实现对图像中不同区域的精细处理。例如,当上传的是手部检测模型时,节点将自动定位手部区域,并对其进行针对性的修复与细节增强,从而提升整体图像的完整性与质量。
在进行面部修复之前,加载了 Pulid 模型 用于增强人物面部的相似性。由于本阶段采用的是 局部区域重绘,不同于 Flux + Upscaler 模型所执行的全图重绘,因此更容易出现面部特征不一致的情况。
为了在局部修复过程中保持人物面部的一致性与辨识度,Pulid 模型在此阶段的引入显得尤为重要。当前在 Flux 模型体系下,面部特征迁移与相似度保持使用 Pulid 即可满足大多数需求,具有较高的适配性与实用性。
下方节点可以通过选择不同的模型去完成不同区域的重绘,所以大家需要根据自己的图像需要修复的区域去选择对应的模型。
三、多表情生成
该部分依然需要采用多个 FaceDetailer 节点对面部进行表情替换处理。为确保在表情变化的同时保持人物面部特征的一致性,仍需加载 Pulid 模型 进行面部特征迁移与对齐。
表情的变换主要通过调整提示词并适当增加重绘幅度来实现。由于使用的是 Flux 模型,具备较强的语义理解与局部控制能力,因此只需对正向提示词进行修改,即可实现面部表情的自然过渡与变化,无需额外的结构引导或复杂设置。
在测试过程中发现,仅通过提示词和 Pulid 模型并不能始终有效控制人物的眼睛颜色变化,这可能与当前设置下的重绘幅度较低有关。虽然适当提升重绘幅度有助于增强模型对局部特征的修改能力,但与此同时也会带来图像边缘融合度下降的问题,可能影响整体画面的自然性与一致性。
因此,在生成数据集时,建议根据具体需求权衡重绘幅度的设定,或通过多次抽卡尝试获取更符合预期的结果,以确保图像质量与细节控制之间的平衡。
四、图像区域分割与放大保存
该区域用于完成图像的裁剪操作。由于图像尺寸和坐标位置存在差异,裁剪效果可能因个别情况有所不同,因此建议根据实际图像内容自行调整相关参数,以获得理想的裁剪结果。
faceCrop
节点用于设置图像裁剪的宽度和高度,并指定裁剪区域的起始坐标。在 ComfyUI 中,大多数情况下图像坐标原点位于左上角(但需注意,不同插件可能存在实现差异)。如果在实际运行过程中发现裁剪结果与原图不符,可能是由于坐标设置与图像位置不匹配所致,此时建议手动调整相关参数,以确保裁剪区域与目标内容正确对齐。
在调整图像尺寸后,下一步是将图像保存用于后续训练。但在保存之前,需确保图像尺寸符合所使用模型架构的训练要求。
对于 SD1.5 模型,常规训练集尺寸为 512×512,而在 SDXL或 SD3 等大模型架构中,推荐的训练图像尺寸为 1024×1024。因此,为适配这些大模型的训练需求,必须将图像尺寸调整至接近 1024 的标准分辨率。
如下图所示的节点完成了以下两项处理:
- 将图像转换为 图像列表格式(List),以便后续批量处理;
- 对图像尺寸进行统一调整,确保图像达到训练所需的高分辨率标准,同时保持原图的清晰度与细节信息。
但需要注意,此阶段仅完成了尺寸调整,生成的图像仍可能存在噪点或局部瑕疵,因此在正式作为训练数据使用之前,仍需进行下一步的 去噪处理与进一步放大。
最后,数据集默认保存在output/tim
文件夹中。