论文:https://arxiv.org/abs/2304.03246
code:http://instinpaint.abyildirim.com/
文章目录
- Abstract
- Introduction
- Related Work
- Dataset Generation
- Method
- PS
Abstract
图像修复任务是指从图像中擦除不需要的像素,并以语义一致且逼真的方式填充它们。传统上,希望被擦除的像素由二值化掩码定义。从应用的角度来看,用户需要为他们想要去除的对象生成这些掩码,这可能耗时且容易出错。在这项工作中,我们对一种图像修复算法感兴趣,它可以根据自然语言输入来估计要移除的对象,并且同时移除它。为此,首先,我们构建了一个名为GQA-Inpaint的数据集,用于这个任务,该数据集即将发布。其次,我们提出了一种新颖的修复框架,名为Inst-Inpaint,它可以根据以文本提示形式给出的指令从图像中去除对象。我们设定了各种基于GAN和扩散的基准模型,并在合成和真实图像数据集上进行实验。我们使用不同的评估指标来衡量模型的质量和准确性,并展示了显著的定量和定性改进。项目的网页链接:http://instinpaint.abyildirim.com/
该论文主要实现了以下工作:
-
提出了一项新的任务——指令式图像修复:研究了通过文本指令来执行图像修复任务,而无需使用传统的二值掩码。
-
构建了一个新的图像修复数据集——GQA-Inpaint:该数据集包含复杂的真实图像,而不需要任何人工标注,使用了GQA数据集的场景图信息。
-
开发了一种新颖的条件扩散模型——Inst-Inpaint:该模型可以在给定图像和文本指令的情况下执行图像修复,并将图像修复问题转化为条件扩散模型的训练任务。
-
使用U-Net架构:在模型中采用U-Net架构用于特征提取和图像修复。
-
使用交叉注意机制:为了实现文本条件的修复任务,使用了交叉注意机制将文本指令与模型的特征进行关联。
-
实现细节:详细描述了模型的实现和训练细节,包括对CLEVR和GQA-Inpaint数据集上的模型进行训练。
这篇论文提出了一种新的指令式图像修复任务,并开发了一种新颖的条件扩散模型,以在给定图像和文本指令的情况下执行图像修复。通过构建新的数据集并进行实验证明了该方法的有效性。
Introduction
图像修复指的是从图像中移除不需要的对象和/或填补图像中缺失的区域。这被认为是极具挑战性的,因为修复后的图像中的被修复区域应该与其他部分和谐一致。在进行像素填充时,修复方法应该考虑全局图像内容。传统的研究方法使用二值掩码来标示缺失区域。近期的图像修复方法利用深度学习框架,配备生成先验,并将修复任务构建为一个监督学习问题。训练数据包括作为源数据和目标数据的输入和被擦除图像对,并且模型通常使用基于重建的目标进行训练。尽管过去几年来图像修复方法在性能上不断改进,但这些方法仍然需要在推断时提供用户指定的掩码。这些掩码可以以细或厚的刷笔涂抹或方框的形式提供,但绘制这些掩码通常很繁琐且容易出错。
近期,基于文本的图像生成和编辑引起了广泛关注。特别是在训练时使用大规模的图像-文本数据,像DALL·E2、Stable Diffusion、Imagen和Parti等模型展示了卓越的生成能力,并有效地捕捉了图像的组成结构。此外,使用文本可以更自然和用户友好地控制图像。研究人员还表明这些方法可以通过额外条件化模型的方式轻松地用于图像修复,只需在模型上附加二值掩码,并告诉模型如何在掩码内填充内容。然而,这种方法更适合于操作对象的属性或添加新的场景元素,但可能不太适合于移除对象。例如,请参见Blended Latent Diffusion模型。
在本工作中,我们引入了一项称为"指令式图像修复"的新任务,其中只通过文本指令来指定要移除的不需要的对象,无需使用二值掩码(见图1)。为了解决这个问题,我们首先使用GQA数据集构建数据生成流程,创建一个新的基准数据集,称为GQA-Inpaint。其次,我们设计了一种单阶段深度修复网络,称为Inst-Inpaint,它可以使用文本指令从图像中移除对象。与现有的修复方法相比,我们的模型不需要掩码,也不需要明确地预测掩码。总体而言,我们的贡献如下:
-
我们提出了一种端到端的图像修复框架,Inst-Inpaint,它可以仅基于文本指令对给定图像中的对象进行移除。我们的方法的一些示例输出如图1所示。
-
我们生成了一个真实图像数据集,GQA-Inpaint,用于训练和评估所提出的指令式图像修复任务的模型。在这里,我们使用了最初用于视觉推理的GQA数据集,并利用提供的场景图使用了最先进的实例分割和修复方法生成配对的训练数据。
-
我们进行了大量实验,展示了我们框架的有效性。为了比较结果,我们使用了多种指标来评估各种基准模型,其中包括一种基于CLIP的新型修复评分。我们在基于文本的图像修复方法方面取得了显著的改进,超越了现有的最先进方法。
Related Work
基于扩散的生成模型。在配备大规模文本-图像配对数据集的情况下,扩散模型在图像合成方面取得了令人印象深刻的结果。这些模型的图像合成能力已扩展到视频生成和图像编辑任务。我们的工作解决了基于文本指令的修复任务,并与编辑任务更相关。SDEdit是首批使用文本提示和扩散模型对真实图像进行编辑的作品。它对输入图像应用噪声,然后根据文本提示对其进行去噪。鉴于加噪-去噪的过程,内容保留并没有严格实现。Prompt-to-prompt editing展示了通过对注意力机制应用操作,可以使用文本提示对生成的图像进行编辑。InstructPix2Pix通过Prompt-to-prompt生成数据集,并微调扩散模型以使用配对数据编辑图像。
图像修复。图像修复任务的常见设置包括使用二值掩码来定义被修复的像素。原始图像像素被去除,新的像素根据这些掩码来生成。此领域以前主要由生成对抗网络(GANs)主导。基于GAN的模型大多输出确定性结果,因为这些模型还通过重建损失进行训练以提高稳定性。最近也有使用GAN实现多样性的方法,但它们是在单个对象数据集(如面部数据)上训练的。它们并未扩展到修复多样的场景,因为GAN训练非常困难。
最近,扩散模型也进入了图像修复领域,并取得了令人期待的结果。已经证明,预训练的无条件扩散模型可以通过Repaint模型对图像进行修复。Repaint修改去噪过程,以使生成过程依赖于未被擦除的图像内容。
与我们工作同时进行的是X-Decoder,它可以同时处理输入图像和文本,用于指导分割。X-Decoder可以根据提示对图像进行分割,并在与扩散模型结合时,可以擦除分割的对象。
Dataset Generation
我们的目标是构建一个真实图像数据集,用于训练和评估基于指令的图像修复模型。
目前存在一些可以用于此任务的数据集,例如CoDraw和CLEVR数据集。然而,这些数据集中的图像都是由几何对象或剪贴艺术品组成的合成场景。虽然这些相对简单的图像可以被视为构建模型的很好工具,但在它们上面训练的模型并不直接适用于真实图像的编辑。
为了缓解现有数据集的这一缺点,在本工作中,我们提议构建一个新的图像修复数据集,其中包含复杂的真实图像,并且不使用任何人工标注。我们将这个数据集称为GQA-Inpaint,因为我们选择在GQA数据集的基础上构建它。
具体而言,GQA数据集包含85,000个真实世界图像及其对应的场景图。场景图通过以对象、属性和关系来表示图像的简化表示。场景图中的每个节点表示一个对象,并且其位置和大小由边界框指定。此外,每个对象都与一些属性相关联,编码了它的颜色、形状或材质。连接节点和对象的边通常表示这些对象之间的空间关系。
我们为所提议的数据集设计的数据生成流程如图2所示,严重依赖于场景图的表示。具体而言,在修复任务中,我们从场景图的节点中选择目标对象。虽然GQA数据集中已经提供了对象的边界框,但我们观察到直接将它们用作修复的掩码会导致不理想的结果。因此,为了获得更高质量的目标图像,我们提取每个对象的分割掩码,并将其用于从图像中移除对象。此外,我们从提供的场景图生成用作指令的文本提示。以下是所有这些步骤的简要描述。更多细节可以在补充材料中找到。
从场景图中选择对象。具体而言,在选择目标对象时,我们通常考虑数据集中最常见的对象,并忽略边界框太小或太大的对象。
提取分割掩码。我们使用Detectron2和Detic框架获得对象的分割掩码。为了涵盖广泛的对象类别,我们使用在COCO和LVIS数据集上训练的多个实例分割模型对对象进行分割。
我们选择最准确的分割结果。为了衡量准确性,我们利用数据集提供的边界框真值。我们比较IoU分数并选择较大的值。
从图像中移除对象。在这一步中,我们的目标是从图像中移除对象。为此,我们使用最先进的图像修复方法CRFill,因为它具有计算效率高和高质量结果的特点。
在进行修复之前,我们首先使用CascadePSP对预测的掩码进行优化,然后使用11×11像素的形态学膨胀来扩展边缘的分割掩码,以使掩码更好地捕捉对象。
生成文本提示。GQA数据集中包含对象之间的关系表示,如图2所示。如果所选择的对象是其类别的单个实例,我们不使用任何关系,简单地创建提示为“移除[对象]”。如果图像中存在多个相同对象类别的实例,我们根据场景图中的关系构建提示,以指定特定的实例。
Method
为了解决提出的指令式图像修复任务,我们开发了一种新颖的条件扩散模型,命名为Inst-Inpaint,它接受图像和文本指令作为输入。训练这个模型需要一个配对数据集,其中包括源图像和目标图像以及相应的文本提示。我们基于潜在扩散模型构建我们的模型,因为它具有计算效率高的优点。具体而言,潜在扩散模型包括一个编码器E和一个解码器D,分别用于将图像投影到较低的潜在维度并对图像进行重构。这是一个变分自编码器,并作为第一步进行单独训练。
如上所述,我们用于指令式图像修复的模型可以解释为条件扩散模型。也就是说,我们用两个额外的条件来训练我们的模型;源图像和文本提示。在训练过程中,目标图像通过编码器得到z0,如图2所示。源图像s也使用第一阶段的相同预训练编码器进行编码。编码特征E(s)在每个时间步骤与zt进行拼接。对于文本条件,我们使用交叉注意机制。基于指令的对象去除的目标如下:
实现和训练细节。Inst-Inpaint将从前向扩散过程中获得的目标图像潜在编码zt在时间步骤t上与源图像特征E(s)进行拼接,以预测上一个时间步骤zt−1的潜在编码。对于文本条件的修复任务,Inst-Inpaint使用BERT tokenizer对文本进行分词,并通过使用这些标记作为输入,从头开始学习一个Transformer模型来获取指令嵌入。这些嵌入在特定U-Net层的交叉注意机制中使用。
我们在CLEVR和GQA-Inpaint数据集上分别训练了两个Inst-Inpaint模型。CLEVR模型的第一阶段模型是一个变分自编码器,从头开始训练,使用数据集中所有指令的源图像和目标图像的组合进行训练。与CLEVR模型不同,GQA-Inpaint模型使用预训练的VQGAN模型1,在Open Images数据集上进行训练,并具有16384个码书条目。
在CLEVR模型的第二阶段模型中,我们定义了一个包含八层的Transformer,用于获得指令嵌入,并使用四个注意头的交叉注意机制来学习指令嵌入和用于修复过程的激活层之间的关系。GQA-Inpaint模型的架构比CLEVR模型更复杂,由十六层Transformer和八个注意头的交叉注意机制组成。更多的训练细节可以在补充材料中找到。
PS
这篇论文的实现效果肯定不容易实现,读读有一定启发就好。论文后面的内容这里不再翻译。