Stable Diffusion AI 图像中的一个常见问题是肢体可能无法正确生成。有时一个人可能多了一只手臂,而有时他的一条腿可能会缺失。或者,我们得到了 4 个肢体,但结构不太正确。
在这篇文章中,我将向您展示如何使用img2img inpaint来修复这两个有问题肢体的图像。
软件
我们将使用 AUTOMATIC1111 Stable Diffusion GUI 。您可以在Windows、 Mac或 Google Colab上使用此 GUI 。
我们需要v1.5 修复模型。确保启动 Colab Notebook 时选中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
我们将在修复示例中使用相同的提示词
示例 1:修复肢体
我们将修复以下四肢扭曲的图像。
如果您想学习本教程,可以使用下面的按钮下载此图像。
将图像发送到inpainting
显然,腿是最有问题的。该图像是使用AUTOMATIC1111 中的txt2img选项卡生成的。我们将仅通过修复来修复此图像。使用图像下方方便的“发送到Inpaint”按钮将新生成的图像发送到Inpaint。
或者,如果您使用下载的图像,请转到img2img选项卡并选择Inpaint子选项卡。将提示词和反向提示 词写在相应的输入框中。通过拖放到图像画布来上传图像。
无论您使用哪种方法,现在您应该已经设置了 GUI,如下所示。
Inpainting参数
下面是我的设置的屏幕截图。
有很多设置。重要的是:
- 提示词和反向提示词:同原文。
- 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来修复四肢。让我们先修复腿部,因为它们是最有问题的。使用画布旁边的画笔工具在腿部周围创建遮罩。覆盖你想要重绘的部分。
我们使用 0.75 的去噪强度denoising strength。按生成。我们看到生成的 4 张图像。
您可以看到新生成的图像取得了不同程度的成功。因此,生成多张图像并选择最好的一张非常重要。尽管并不完美,我们选择左上角的图,它相对正确。如果您没有看到任何改进,您可以重新生成另一组 4 个。(确保种子设置为 -1)
这是我们的第一次迭代:
要在下一轮中使用图像,请在右侧画布中选择图像,然后使用图像下方的发送到Inpaint按钮将其发送到Inpaint画布。
使用相同的遮罩和相同的参数,点击“生成”按钮得到另一个 4。新的 4 是根据上面改进的图像生成的。
右下角是明显的赢家。让我们继续前进吧。
修复运动鞋
当修复四肢或其他东西时,您应该从大区域开始,然后逐渐转向较小的区域。假设我们想更换她穿的运动鞋。
我们将遵循类似的步骤:选择右下角的图像并使用“发送到Inpaint”按钮将其发送到左侧的inpaint画布。
同样,在inpaint画布上,您会发现没有任何变化。
您需要使用右上角的撤消按钮来完全删除蒙版。重新绘制面具,但仅覆盖运动鞋。
使用相同的设置(denoising strength 0.75, original content),生成大约16张图像后,我选择了以下图像
修复脸部
她的脸有点乱。这是Inpaint非常适合修复的东西。将新图像发送到Inpaint并在她的脸上创建一个蒙版。
现在我们需要使用新的设置:
- 去噪强度Denoising strength:0.2。我们需要较低的价值,因为脸还不错。我们已经把眼睛、鼻子和嘴巴放在了正确的位置。所以我们想要非常小的改变。
- 重绘区域Inpaint area:仅蒙版Only masked。此选项将重绘区域缩放到更大,执行Inpaint,然后将其缩小。由于我们正在绘制包含大量细节的小区域,因此此选项有助于提高质量。
按“生成”可生成 4 张带有新面孔的新图像。下面是我选的。
修复肩部
最后,她的肩膀看起来有点不自然。让我们也修复它。
使用 0.5 的降噪强度并保持Inpaint区域为masked only,我们得到以下图像。
最后用类似的方法修复她的手。
比较与总结
让我们比较一下之前和之后。
您可以使用Inpainting来继续修复不完美的小细节。但我希望这是一个很好的例子来演示如何单独使用inpaint来修复肢体。
综上所述,该技术的基本思想是
- 重复使用相同的提示词和反向提示词。
- 保持蒙版内容(Masked Content)为原始(original),并调整去噪强度(denoising strength)以控制我们想要进行的更改量。(0表示不改变。1表示完全不基于原始内容进行改变)。这样,您就不需要在实现类似的控件的同时扰乱其他遮罩内容设置。
- 绘制大区域时选择重绘整个图片(inpaint whole picture),修复小区域时仅遮罩区域(masked area only)。
- 首先从大的缺陷(例如四肢)开始,然后逐渐转向较小的区域。
示例 2:inpaint修复更糟糕的图
让我们看一下这个更具挑战性的示例,即删除两个额外的肢体并在下图中添加回一个。在实践中,您不应该尝试修复这样的图像,因为生成缺陷较少的新图像会更容易。但这是一张很好的图片来展示这种技术
您可以在此处下载此图像。
去除两条腿
首先,我使用 Photoshop 在两个额外的肢体上绘画,同时匹配台阶的颜色。它不需要完美匹配,足够接近就可以了,因为我们将使用inpaint来修复它。
如果您有 Apple Pencil 和 iPad 等绘图设备,此步骤会更容易,但使用鼠标完全可以完成。如果您无法访问 Photoshop,则可以使用Gimp(本地运行)或Photopea(在线)。他们是免费的。在任何绘图软件中,您都可以使用颜色滴管工具选取附近石材表面的颜色,并在多余的腿上涂上相同的颜色。
如果上述选项不适合您,您可以尝试使用AUTOMATIC1111 中的Inpaint 草图工具Inpaint sketch tool。
下面是我涂完后的图像。
使用与示例 1类似的设置。但由于我们已经把石头壁架涂上了颜色,并且希望Stable Diffusion使用我们涂的颜色,所以我们应该将去噪强度(denoising strength)设置为较低的值 0.2 – 0.5并使用原始(original)内容。
- 模型:v1.5 Inpainting模型 (sd-v1-5-inpainting.ckpt)
- 提示词:(同示例1)
- 反向提示词:(同例1)
- 遮罩内容Masked content:原始original
- 重绘区域Inpainted area:全图Whole picture
- 采样步数Sampling step:25
- 去噪强度Denoising strength:0.5
我生成了 4 张图像。
和以前一样,第一次结果不需要是完美的。它只需要变得更好,因为我们将一遍又一遍地迭代修复。我选的是右上角的。虽然不完美,但至少石头表面基本固定了。
加回一条腿
现在,返回 Photoshop 并添加缺失的腿。加上短裤、腿,并刷掉其他一些小缺陷。再次,使用颜色滴管工具来匹配颜色。下面是我用Photoshop画出来的效果。
将图片上传回Inpaint画布。将去噪强度降低到 0.2,我得到了这 4 张图像。
让我们选择左下角的图像继续。使用 0.5 的去噪强度进行另一轮生成。我们得到了下面的图像,它接近我们想要的。
修复手、运动鞋和脸部
是时候修复她的手了。在她的手周围创建一个蒙版。
仅修复蒙版区域并将去噪强度设置为0.75,手部被恢复。
其余的都是多个区域的小修复,一次一个:运动鞋、衬衫和脸部。我保持参数与上一步相同,但根据需要调整去噪强度。
下面是所有修复后的最终图像。
比较与总结
让我们将之前和之后的照片放在一起,看看我们完成了什么。
在第二个示例中,我们使用外部照片编辑工具在某些区域上进行绘制以指导修复生成。这使您可以在一定程度上控制颜色和构图。
希望您已经弄清楚如何在这两个示例中使用Inpaint来修复四肢。正如您所看到的,如果您有耐心,您确实可以解决任何问题。
进一步阅读
如果您不熟悉此技术,请阅读inpaint工作流程的基础知识。您不仅可以修复缺陷,还可以创建新对象。
inpaint实际上是图像生产图像的一种特殊情况。您可以在此处阅读有关其在模型中如何工作的更多信息。
《如何通过Stable Diffusion inpainting(局部重绘)去除多余的肢体》有1条评论