Object Eraser图像对象橡皮擦

在这个博客中,我们将介绍设置和使用对象橡皮擦的过程,以便根据文本提示生成图像并随后删除特定对象。

Object Eraser图像对象橡皮擦

是否曾经想过操纵 AI 生成的图像并轻松删除特定对象?使用对象橡皮擦,你现在可以使用稳定扩散模型的注意力图有选择地从图像中删除不需要的元素。

在此博客中,我们将介绍设置和使用对象橡皮擦的过程,以便根据文本提示生成图像并随后删除特定对象。我们将演示扩散模型中的注意力控制如何实现无缝编辑。

1、项目设置:运行Object Eraser

让我们从在本地机器或 Google Colab 上运行对象橡皮擦开始。你需要以下依赖项来运行该项目。

克隆存储库:

!git clone https://github.com/manavisrani07/ObjectEraserSD

安装所需的软件包:

%cd /content/ObjectEraserSD/ObjectEraser
!pip install -r requirements.txt

安装其他依赖项。安装 PyTorch 和 Hugging Face 软件包:

!pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
!pip install diffusers transformers accelerate
!pip install "jax[cuda12_pip]==0.4.23" -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html

运行项目。使用以下命令根据文本提示生成图像:

!python run.py -p “A squirrel plays with a ball” -s 42 -i 6 -t 1 50

这将根据提示“一只松鼠玩球”创建一个图像,球将从最终图像中删除。

让我们再举一个例子,我们将生成一只松鼠拿着樱桃的图像,然后我们将樱桃移除。

推断生成图像的命令:

!python run.py -p "A squirrel and a cherry" -s 42 -i 5 -t 1 50

如你所见,樱桃已从图像中擦除,其余内容保持不变。

3、Object Eraser的工作原理:注意力编辑

对象擦除器的核心在于稳定扩散模型中的注意力控制。使用改进的注意力机制,我们可以精确定位和修改文本提示中特定单词的注意力图。

  • 注意力控制

主要逻辑在 AttentiveEraserAttentionControlEdit 类中实现,该类继承自 AttentionControl。它在图像生成过程中将注意力编辑应用于文本提示中的特定单词。

  • 基于梯度的编辑

基于梯度的编辑使我们能够更有效地保留空间细节。在推理过程中,梯度暂时启用,我们根据此信息计算损失并更新潜在表示。

  • 幕后:了解关键组件

该项目使用注意力图根据文本提示识别图像中的特定对象。提取与对象(例如“球”或“樱桃”)相对应的注意力图,并应用掩码技术从模型的注意力层中移除对象。

以下是代码的细分:

    def forward(self, attn, is_cross: bool, place_in_unet: str, CrossAttnEditIndex: list, CrossAttnEditWord:list, ...):
        # Extract and manipulate attention maps for specific layers and objects.
        attn[h // 2 :] = self.forward(
            attn[h // 2 :],
            is_cross,
            place_in_unet,
            CrossAttnEditIndex,
            CrossAttnEditWord,
        )
        return attn

我们利用交叉注意力图来控制从生成的图像中删除哪个单词/对象。与对象相对应的注意力图在推理过程中被屏蔽,从而有效地将其从最终结果中删除。

4、快速入门和示例

你可以使用简单的命令行界面探索各种提示并删除对象。例如:

!python run.py -p “A squirrel and a cherry” -s 42 -i 5 -t 1 50

上述命令从生成的图像中删除樱桃。你可以通过调整索引和步骤参数来进一步探索,以针对不同图像中的不同对象。

5、结束语

对象橡皮擦展示了扩散模型中注意力控制的强大功能。它允许我们根据文本描述来处理图像,有选择地删除对象,同时保留整体视觉质量。

这种方法为图像编辑开辟了新的可能性,特别是在手动编辑具有挑战性或耗时的情况下。


原文链接:Mastering Image Editing with AI: Object Eraser through Attention Control in Stable Diffusion

汇智网翻译整理,转载请标明出处