Stable Diffusion教程-使用Stable Diffusion inpainting移除多余肢体
使用Stable Diffusion inpainting移除多余肢体
在Stable Diffusion AI图像中,常见的问题是肢体可能生成得不够准确。有时候一个人可能会多出一只手臂,另一次可能会缺少一条腿。最终,我们得到了4条肢体,但解剖结构不完全正确。在本文中,我将向你展示如何使用inpainting修复具有问题肢体的图像。
软件
在本教程中,我将使用AUTOMATIC1111 GUI。你可以使用"Quick Start Guide"中的Colab笔记本一键运行此GUI。
我们将需要v1.5的inpainting模型。在"Quick Start Guide"中启动Colab笔记本时,请确保勾选inpainting模型。
按照说明安装inpainting模型,如果你在本地运行AUTOMATIC1111。
我将使用Photoshop在第二个示例中涂鸦特定区域。你可以使用任何其他图片编辑软件。
提示和负面提示
需要修复的两个图像是使用以下提示生成的。
full-body portrait of beautiful female wearing running outfit, highlights in hair, sitting outside restaurant, brown eyes, wearing a dress, side light
负面提示是
disfigured, ugly, bad, immature, two heads
我们将在inpainting示例中使用相同的提示。
inpainting修复肢体
我们将修复以下具有畸形肢体的图像。
发送图像到inpainting
显然,腿部是最有问题的。这个图像是在AUTOMATIC1111的"txt2img"标签中生成的。我们将仅使用inpainting修复此图像。在图像下方使用方便的"Send to Inpaint"按钮,发送一个新生成的图像到inpainting。
或者,如果你使用的是下载的图像,转到"img2img"标签,并选择"Inpaint"子标签。在相应的输入框中填写提示和负面提示。通过拖放图像到图像画布上上传图像。
无论你使用哪种方法,现在你的GUI设置应如下所示。
inpainting参数
以下是我的inpainting设置的屏幕截图。
有很多设置。重要的设置有:
提示和负面提示:选择"As original"。
Sample step:设置为相当高的值,如25。
Inpaint area:选择"Whole picture"可以生成与整个图像连贯的图像。选择"Only masked"只绘制遮罩区域,但分辨率较高。对于绘制面部等细节很有用。
Batch size:设置为合理的数字,如4,以便你可以挑选最佳的图像。
Denoising strength是一个非常重要的参数。0.75是一个很好的起点。如果你想要更多变化,可以增加它。如果你想要更少的变化,可以减小它。
Masked content:保持为Original。
Seed:-1表示随机。这很重要,因为你希望在每次试验中生成不同的东西。
选择Stable Diffusion v1.5的inpainting模型。
修复肢体
现在,我们准备使用inpainting来修复肢体。让我们先修复腿部,因为它们是最有问题的。在inpainting画布旁边使用画笔工具,创建一个围绕腿部的遮罩。覆盖你想要重生成的部分。
让我们使用0.75的denoising strength。点击"Generate"按钮。我们可以看到生成了4张图像。
你可以看到新生成的图像的效果有所不同。所以生成多张图像并选择最佳的一张是很重要的。尽管不完美,我们选择左上角的图像,因为它朝着正确的方向移动。如果你看不到改进,可以重新生成另一组4张图像(确保seed设置为-1)。
这是我们的第一次迭代:
要在下一轮使用图像,你需要在右侧画布中选择图像,并使用图像下方的"Send to inpaint"按钮将其发送到inpainting画布。
按下按钮后,你可能会想知道为什么似乎什么都没有改变。原因是所有的变化都在被黑色涂料覆盖的遮罩区域下。如果你去除遮罩,你会看到变化。但因为我们想要重复使用同一遮罩,所以我们不会这样做。
使用相同的遮罩和相同的参数,点击"Generate"按钮以获得另外4张图像。这4张图像基于上面改进的图像生成。
右下角的图像是最好的。让我们继续使用它。
修复运动鞋
当使用inpainting修复肢体或其他任何东西时,你应该从较大的区域开始,逐渐转移到较小的区域。假设我们想要更换她穿的运动鞋。
我们将遵循类似的步骤:选择右下角的图像,并使用下方的"Send to Inpaint"按钮将其发送到左侧的inpaint画布。
同样,在inpaint画布上,你会发现没有发生任何变化。
你需要使用右上方的"undo"按钮完全删除遮罩。重新绘制遮罩,但只覆盖运动鞋部分。
使用相同的设置(denoising strength 0.75,原始内容),并在生成约16张图像后,我选择了以下图像:
修复脸部
她的脸有点混乱。这是inpainting非常适合修复的东西。将新图像发送到inpainting,并在她的脸上创建一个遮罩。
现在我们需要使用新的设置:
Denoising strength:0.2。我们需要较低的值,因为脸部情况并不太糟糕。眼睛、鼻子和嘴巴已经在正确的位置上。所以我们希望做出非常小的改变。
Inpaint area:选择"Only masked"。该选项将遮罩区域扩大,执行inpainting,并将其缩小。由于我们正在绘制一个具有许多细节的小区域,这个选项有助于提高质量。
点击"Generate"按钮,生成4张具有新面部的新图像。下面是我选择的图像。
修复肩膀
最后,她的肩膀看起来有点不自然。让我们也修复它。
使用0.5的denoising strength,并将inpaint area保持为只有遮罩区域,我们得到以下图像。
最后,使用类似的方法修复她的手。
比较和总结
让我们比较一下修复前后的图像。
你可以使用inpainting继续修复不完美的小细节。但我希望这是一个很好的例子,演示如何仅使用inpainting修复肢体。
总结一下,这项技术的基本思想是:
- 重复使用相同的提示和负面提示。
- 将"Masked Content"保持为"Original",并通过调整"denoising strength"来控制我们想要做多少改变(0表示没有改变,1表示完全不基于原始内容进行改变)。这样,你就不需要对其他"Masked Content"设置进行调整,同时实现类似的控制。
- 在绘制较大区域时选择"inpaint whole picture",在修复较小区域时选择"masked area only"。
- 从大的缺陷开始,如肢体,逐渐转移到较小的区域。