万能换背景工作流,产品人像通用,改变光效保留细节#AI产品图#AI绘图#AI背景更换

hello, 大家好,我是veto。非常感谢大家过去一年对这个频道的支持,尤其是给我发电的朋友们,今年我将再接再厉,为大家创造更多高质量的内容。在过去的几个月里,我先后发布了几个用于换背景的康复u i工作流。其中一些版本使用了i c light来帮助你要处理的对象更自然的融入背景。如果没有i light,人物可能看起来像是粘贴在新场景上,而不是自然的融入其中。另外这些旧版本的工作流依赖基于flex的c t r l net,所以跑起来速度很慢。今天我给大家介绍一个全新的版本,它不仅跑起来很快,而且还能实现一些意想不到的效果。比如我们来给这个美女和摩托车换一个背景,我们可以先用这个工作流移除背景。

然后把它们重新定位在我们自定义大小的画布上。由于新背景是一个沙漠,为了让效果更加自然,我们可以把一部分的轮胎和支架删掉,让它们融入沙子。接下来使用lightning版本的s d x l模型,经过十个采样步骤就可以改变它们的光影,并且融入新的背景。在这个过程中他们的大部分细节得以保留,并且只需要大约六g b的显存。以上结果是这个工作流的前七个节点组生成的,剩下的三个节点组用量化版本的flux配合同样的s d x l模型来进一步增强效果。不过在这里我错误的选择了开的模型,不过效果还不错,就是图像质量要比其他g g u f的flux模型差了一点。这个过程大概需要额外的十三个采样步骤和二季的显存,效率还是挺高的。最后三个节点组才是这个工作流的精华。

比如说我通过遮罩的操作删掉了摩托车的脚撑,这样美女看上去真的在骑摩托车,而不是坐在上面。还有就是我重绘了轮胎和沙子的接触面,这样看起来。更真实。在这个例子里面,因为摩托车也是一种产品,所以大家也可以看出来这个工作流也可以用于产品换背景。我们再看一个例子,这是上传的工作流的图像,我删除了背景和罐子的某些部分,因为我希望这些部分在新背景中看起来像是埋在冰里面。我重新定位了这个罐子,让它平躺着,然后仅仅用s t x l模型就改变了它的光影。这还没完,最后三个组里我用flex模型让效果更加出色。我们再来看一些这个工作流跑出来的图。

ok现在我来实操一下这个工作流任务,就是给这个美女和摩托车换一个背景。这个任务挺有挑战性的,因为有很多细节和边缘需要处理,还要确保这些边缘和新背景之间没有接缝。如果这个任务都能出色完成的话,其他几手的情况都可以举一反三了。ok我们开始吧。第一个节点组用来加载各种模型并输入提示词。我先来跑一下工作流,把模型先加载起来。这里我用了一个lightning版本的railways excel模型,你也可以尝试其他s d x l模型,只要确保它们与control net兼容。这里的提示词非常重要,要尽可能详细地描述人物,尤其是它们的颜色。

在这个提示词里,我包含了金发、黑色皮裤和白色摩托车。对于flux模型,我选择了flux realistic的g g u f版本,它只有六点八个g但对于生成背景来说差不多够了。如果你的显存够大的话,还可以使用f p八甚至f杠一六版本的checkpoint,比如pixel wave,不过要确保使用load。model节点来加载它们。这里我还搭配了两个laura模型,一个用来加速跑图,另一个用来消除背景模糊。右上角这里是一个加载s d excel control net模型的节点,我选择了最新版本的多合一模型,并且在下面的节点里我设置了control t类型。接下来我们来到第二个节点组,我先运行一下工作流再进行讲解。这里可以上传要换背景的图片,右侧的节点用来限制图像的尺寸,避免给移除背景的节点造成很大的显存压力。

我把skill to side缩放至边参数设置为longest,意思是用最长的边来限制尺寸。scale to land缩放到长度参数,用来设置输出图像的最大长度。比如说根据下面两个image size图像尺寸节点可以看到原始图片的大小为三六零零乘二四零零,缩放后的大小为一四零零乘九三六。图像缩放完毕以后,就可以使用by ref net节点移除背景了。我们可以通过这个节点。点在最新的by ref net模型和r m b g二点零模型之间切换,看看哪一个效果更好。因为图片里有凌乱的头发,所以我把process detail处理细节选项设置为true。如果要处理的对象没有复杂的边缘,可以设置为false,这样可以减少处理的时间。

我还在这里降低了曝光,因为新背景的光线要稍微弱一些。我们可以使用image compare图像对比节点来查看移除背景的效果。我们看到大部分头发都处理得很好。另外我们还可以通过低调e road细节消融和低调dilley细节膨胀这两个参数来微调细节,再看看把低调delete细节膨胀设置为二十会发生什么?我们看到细节过度膨胀了让我们把它调整为四,然后再次运行工作流。如果我们想要完善边缘,可以使用preview bridge桥接预览节点进一步细化。让我们打开遮罩编辑器,然后开始涂抹。目前的画布很难看清边缘,我们把mask layer遮罩层切换为白色吧,这里再降低一下硬度,让画笔更柔软,再减小画笔的厚度,然后开始涂抹。我们先处理一下零散的头发。

然后可以沿着边缘涂抹。有很多细节需要处理,只能慢慢来。ok, 终于搞定了,保存一下,然后再运行一下工作流。ok检查一下效果。看起来还不错。另外这里的grow扩张参数可以暂时设为零,如果之后发现边缘有问题,可以回过头再调整一下。ok再看下一个节点组,这里我们可以定义一个画布,设置一个尺寸,然后把要处理的对象放在上面,分辨率在这里设置,大小不够的话还可以调整up skill by参数来放大画布。定义好画布以后,输入image blend节点里的background image背景图像端口。

ok跑一下工作流看看结果。这张灰色背景的图像显示了要处理的对象在最终图像中的位置。灰色是由color image纯色图像这个节点来定义的。滑动这三个滑块可以调节主体的位置,通过它们你可以调整水平位置、垂直位置和大小。这个节点还可以通过layer mass端口接入一个遮罩来控制主体在黑色背景上显示的区域。这个遮罩来自于第二个组里面mask girl遮罩扩张节点的输出。ok再进入下一个组。在上一个组获得人过图以后,我们可以使用s d x l control net生成新的背景。

先跑一下工作流。注意latin版本的railways,excel模型推荐的采样器是d p m plus plus s d e。我们来看一下跑出来的图。背景看起来还不错,但主体有很多细节错误。不过这张图还是有用的,因为我们可以在保留光影效果的基础上恢复细节,这是下一个节点组的任务。来到下一个节点组。先跑一下工作流恢复细节最主要会用到image detail transfer图像细节迁移节点目标图像需要输入到target目标图像端口,source原图像端口输入拥有细节的图像,也就是第三组里面灰色背景的图像。不过我们不希望把灰色背景也包含在细节里,所以需要使用遮罩把细节限定在要处理的对象上。

这个遮罩需要导入mask端口。那这个target目标图像端口具体需要导入哪个图像呢?我们可以使用上个节点组跑出来的图。但有一个小问题,即使我们使用candy control net来确保生成的主体和原来的主体具有相同的轮廓,但control t也不是绝对精确的。轮廓的外面总会有一些额外的东西需要修掉,那么我们如何修呢?可以想象一下,拿着一把剪刀,首先要做的是把主体和背景分离,可以用big拉玛removal节点来移除背景,之后可以使用image composite mask图像遮罩复合节点修掉边缘之外的多余像素,然后把主体粘贴到背景上,边缘以外的像素就是这个主体遮罩以外的像素。修掉边缘以外的多余像素,我们就可以把它用作恢复细节的目标。图像image detail transfer图像细节迁移节点中常用的模式是add相加,over let覆盖soft柔光,不同的模式带来不同的光影效果。我们还可以通过。ma参数调整恢复细节的程度。

不过恢复细节的过程多多少少都会丢失一些细节。因为高光和阴影改变了右边的图像,展示了另一种不同的恢复细节的方法。通过使用image composite mask图像遮罩复合节点,我们可以把原始图像上的主体直接粘贴到新背景上。这个方法保留了所有细节,但不会改变主体的光影。有了这两个版本以后,我们就可以使用image input switch图像切换节点,选择我们喜欢的那一个。然后我们可以用auto adjust自动调色节点调整图像的颜色、亮度和对比度。这样我们就把主题融入了新的背景,同时保留了大部分的细节。我知道这个工作流一开始可能看起来很复杂,但是仅仅使用s d excel和一些自定义节点,我们就已经基本实现了效果。

到目前为止,我们已经使用了五个节点组,这只是节点组总数的一半。虽然我们只用了一半的节点组就基本实现了想要的效果,但剩下的。的节点组可以实现一些更有创意的效果,并且可以处理一些更棘手的任务。所以我们再接再厉进行下一个组。在下一个组里我们可以重绘要处理的对象,帮助他们更自然地融入背景。为了这个目的,我们需要使用这个节点稍微扩展一下主体的遮罩,这样可以确保边缘更自然地融入周围的环境。这里还是用了canny control net控制轮廓,并为下一步恢复细节做准备。虽然依靠control net cani能够控制一下轮廓,但重绘的过程会破坏一些细节。

不过别担心,我们可以在下一个组中恢复这些细节。恢复细节的方法在第五个节点组里已经展示过了。我们已经使用了s d x l生成的背景,但我们还没有充分利用flux的能力。这个探索我们在下一个组来进行吧,我先跑一下工作流。这个组使用我们在第一个组中设置的基于flux的checkpoint来重绘背景。通过image input switch图像切换节点,我们可以选择一个底图来开始重绘这个过程。图像一来自第五个节点组跑出来的图。而图像二来自上一个组跑出来的图。

选择了底图以后,接下来需要定义重绘的区域。从第三组获得了主体的遮罩以后,对它进行反转,就得到了用于重绘的遮罩。但是我们需要稍微扩展主体遮罩,确保重绘区域不会覆盖到主体上。我们可以使用mask fix遮罩修复节点来执行这个操作。通过调整e rode by late消融膨胀参数,我们可以扩展主体遮罩,也就是缩小重绘区域。用这个节点可以预览修改后的遮罩,顾名思义,它显示了要保护的区域,也就是不会被重绘的区域。要进一步修改这个区域的话,可以调整这个节点中的其他参数,再进行任何调整。之前,先把fast by passer节点里的开关切换为no冻结k采样器,让我们把few holes填充缺口,参数设置为零,看看会发生什么。

我们看到保护区域里面有一个缺口,我们再把它改为十。这时候缺口消失了。我还把模糊值设置得相当高,这样可以确保重绘区域和周围有平滑的过渡。通过preview bridge image桥接预览图像节点,我们可以进一步优化遮罩。如果这个节点有时候没有接收到遮罩,可以把restore mass选项设置为always,总是让我们再跑一遍工作流,确保这个选项发挥作用。现在打开遮罩编辑器,然后开始涂抹。首先涂抹头发的外部区域,它们需要被重绘。遇到不想被重绘的区域,可以在远离这些区域的地方涂抹。

接下来涂抹轮胎的底部,他们需要被重绘,达到与地面自然贴合的效果。我要把脚粘的一部分给涂抹掉,给人一种美女正在骑摩托车,而不是仅仅坐在上面的错觉。最后我涂抹画布的外部区域,确保没有遗漏其他应该被涂抹的区域。ok现在遮罩图好了,保存一下。接下来我们激活k采样器,然后跑一遍工作流。看下效果。看起来还不错,但是还没有实现轮胎底部陷入沙子里面的效果。要实现这个效果,需要修改之前的主体遮罩。

改好以后,再整体跑一遍工作流。ok, 我们看到轮胎与沙子的接触更加真实。接下来,我们需要重绘之前受保护的区域,让他们更自然地融入新的背景。我们仍然会使用s d x l,因为它的c t r l e t比flux更加可控。但是由于我们修改了原来的主体,所以得用新的图片来生成线稿图。我们有两个版本的重绘遮罩可以选择,我把它设置为true。这样重绘的遮罩匹配的是修改主体之后的新主体的遮罩。如果没有在preview bridge桥接预览节点里修改过遮罩的话,就把布尔值设置为false。

我还扩展并模糊了遮罩,这样可以在边缘创建平滑的过渡,让主体和新背景自然的融合。接下来是最后一个节点组,这个组恢复细节的方式和第五个节点组类似,不同的是这里可以选择把哪个图像用作恢复细节的目标图像。三来自第八组。而图像是来自第九组,通常我们把图像是作为目标图像。我还添加了image blend图像混合节点来帮助恢复颜色。恢复颜色的区域受到导入layer mask端口的遮罩的限制,我们用修改后的主体遮罩作为基础遮罩,然后稍微模糊一下,这样可以在恢复的颜色和背景之间创建平滑的过渡。不透明度应该保持在一百,因为降低它可能会导致这个节点出现问题。由于我们有可能过度恢复颜色,所以这里用了image blend图像混合节点混合恢复色彩后的图像和原始图像,通过调整blind person混合系数来控制最终结果更倾向于哪一张图。

ok以上就是这个有点复杂的工作流的讲解,希望能有所帮助。如果它对你来说过于复杂的话,别怪我哦,我已经尽力简化了这个工作流。我很期待今年会推出的新模型,这样我们可以更简单的达到想要的效果。如果对这个工作流有任何改进意见或问题的话,欢迎在评论。区留言,我们下期再见。