【深度学习】Inst-Inpaint: Instructing to Remove Objects with Diffusion Models,指令式图像修复

这篇具有很好参考价值的文章主要介绍了【深度学习】Inst-Inpaint: Instructing to Remove Objects with Diffusion Models,指令式图像修复。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

论文:https://arxiv.org/abs/2304.03246
code:http://instinpaint.abyildirim.com/

Abstract

图像修复任务是指从图像中擦除不需要的像素,并以语义一致且逼真的方式填充它们。传统上,希望被擦除的像素由二值化掩码定义。从应用的角度来看,用户需要为他们想要去除的对象生成这些掩码,这可能耗时且容易出错。在这项工作中,我们对一种图像修复算法感兴趣,它可以根据自然语言输入来估计要移除的对象,并且同时移除它。为此,首先,我们构建了一个名为GQA-Inpaint的数据集,用于这个任务,该数据集即将发布。其次,我们提出了一种新颖的修复框架,名为Inst-Inpaint,它可以根据以文本提示形式给出的指令从图像中去除对象。我们设定了各种基于GAN和扩散的基准模型,并在合成和真实图像数据集上进行实验。我们使用不同的评估指标来衡量模型的质量和准确性,并展示了显著的定量和定性改进。项目的网页链接:http://instinpaint.abyildirim.com/

该论文主要实现了以下工作:

  1. 提出了一项新的任务——指令式图像修复:研究了通过文本指令来执行图像修复任务,而无需使用传统的二值掩码。

  2. 构建了一个新的图像修复数据集——GQA-Inpaint:该数据集包含复杂的真实图像,而不需要任何人工标注,使用了GQA数据集的场景图信息。

  3. 开发了一种新颖的条件扩散模型——Inst-Inpaint:该模型可以在给定图像和文本指令的情况下执行图像修复,并将图像修复问题转化为条件扩散模型的训练任务。

  4. 使用U-Net架构:在模型中采用U-Net架构用于特征提取和图像修复。

  5. 使用交叉注意机制:为了实现文本条件的修复任务,使用了交叉注意机制将文本指令与模型的特征进行关联。

  6. 实现细节:详细描述了模型的实现和训练细节,包括对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所示。如果所选择的对象是其类别的单个实例,我们不使用任何关系,简单地创建提示为“移除[对象]”。如果图像中存在多个相同对象类别的实例,我们根据场景图中的关系构建提示,以指定特定的实例。

【深度学习】Inst-Inpaint: Instructing to Remove Objects with Diffusion Models,指令式图像修复,深度学习机器学习,深度学习,人工智能,GAN,指令式图像修复

Method

为了解决提出的指令式图像修复任务,我们开发了一种新颖的条件扩散模型,命名为Inst-Inpaint,它接受图像和文本指令作为输入。训练这个模型需要一个配对数据集,其中包括源图像和目标图像以及相应的文本提示。我们基于潜在扩散模型构建我们的模型,因为它具有计算效率高的优点。具体而言,潜在扩散模型包括一个编码器E和一个解码器D,分别用于将图像投影到较低的潜在维度并对图像进行重构。这是一个变分自编码器,并作为第一步进行单独训练。

【深度学习】Inst-Inpaint: Instructing to Remove Objects with Diffusion Models,指令式图像修复,深度学习机器学习,深度学习,人工智能,GAN,指令式图像修复

如上所述,我们用于指令式图像修复的模型可以解释为条件扩散模型。也就是说,我们用两个额外的条件来训练我们的模型;源图像和文本提示。在训练过程中,目标图像通过编码器得到z0,如图2所示。源图像s也使用第一阶段的相同预训练编码器进行编码。编码特征E(s)在每个时间步骤与zt进行拼接。对于文本条件,我们使用交叉注意机制。基于指令的对象去除的目标如下:

【深度学习】Inst-Inpaint: Instructing to Remove Objects with Diffusion Models,指令式图像修复,深度学习机器学习,深度学习,人工智能,GAN,指令式图像修复

实现和训练细节。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

这篇论文的实现效果肯定不容易实现,读读有一定启发就好。论文后面的内容这里不再翻译。文章来源地址https://www.toymoban.com/news/detail-621856.html

到了这里,关于【深度学习】Inst-Inpaint: Instructing to Remove Objects with Diffusion Models,指令式图像修复的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 装完系统开机电脑显示 Remove disks or other media Press any key to restart 怎么解决!

    装完系统开机电脑显示 Remove disks or other media Press any key to restart 怎么解决!

    Press any key to restart ) 此情况出现原因有 1、电脑BIOS启动项有问题 2、光驱或者硬盘出现损坏 3、电脑上有外接设备,例如U盘(也就相当于去修改BIOS启动项了) Remove disks or other media Press any key to restart 关机重启进入BIOS/Setup界面,按F1或者esc或者F2,每个电脑进入BIOS的方式或许不同

    2024年02月04日
    浏览(103)
  • 深度学习笔记(kaggle课程《Intro to Deep Learning》)

    深度学习笔记(kaggle课程《Intro to Deep Learning》)

    深度学习是一种机器学习方法,通过构建和训练深层神经网络来处理和理解数据。它模仿人脑神经系统的工作方式,通过多层次的神经网络结构来学习和提取数据的特征。深度学习在图像识别、语音识别、自然语言处理等领域取得了重大突破,并被广泛应用于人工智能技术中

    2024年02月13日
    浏览(12)
  • 深度学习中端到端(end-to-end)简要理解

    深度学习中端到端(end-to-end)简要理解

    端到端指的是输入是原始数据,输出是最后的结果。而原来的输入端不是直接的原始数据(raw data),而是在原始数据中提取的特征(features)。这一点在图像问题上尤为突出,因为图像像素数太多,数据维度高,会产生维度灾难,所以原来一个思路是手工提取(hand-crafted f

    2024年02月09日
    浏览(10)
  • 深入理解深度学习——BERT派生模型:T5(Text to Text Transfer Transformer)

    深入理解深度学习——BERT派生模型:T5(Text to Text Transfer Transformer)

    分类目录:《深入理解深度学习》总目录 T5的全称为Text to Text Transfer Transformer,是谷歌提出的预训练语言模型领域的通用模型,该模型将所有自然语言问题都转化成文本到文本的形式,并用一个统一的模型解决。为了得到大一统的高质量预训练语言模型,T5不可避免地走上了

    2024年02月10日
    浏览(14)
  • 深度学习目标检测数据VisDrone2019(to yolo / voc / coco)---MMDetection数据篇

    深度学习目标检测数据VisDrone2019(to yolo / voc / coco)---MMDetection数据篇

    配备摄像头的无人机(或通用无人机)已被快速部署到广泛的应用领域,包括农业、航空摄影、快速交付和监视。因此,从这些平台上收集的视觉数据的自动理解要求越来越高,这使得计算机视觉与无人机的关系越来越密切。我们很高兴为各种重要的计算机视觉任务展示一个大

    2024年02月04日
    浏览(47)
  • 基于深度学习的目标检测的介绍(Introduction to object detection with deep learning)

    基于深度学习的目标检测的介绍(Introduction to object detection with deep learning)

    物体检测的应用已经深入到我们的日常生活中,包括安全、自动车辆系统等。对象检测模型输入视觉效果(图像或视频),并在每个相应对象周围输出带有标记的版本。这说起来容易做起来难,因为目标检测模型需要考虑复杂的算法和数据集,这些算法和数据集在我们说话的时

    2024年02月11日
    浏览(11)
  • 深度学习神经网络学习笔记-多模态方向-11-Deep Voice: Real-time Neural Text-to-Speech

    深度学习神经网络学习笔记-多模态方向-11-Deep Voice: Real-time Neural Text-to-Speech

    本文提出Deep Voice,一种完全由深度神经网络构建的生产质量文本到语音系统。Deep Voice为真正的端到端神经语音合成奠定了基础。该系统由五个主要的构建模块组成:用于定位音素边界的分割模型、字素到音素的转换模型、音素时长预测模型、基频预测模型和音频合成模型。对

    2024年02月06日
    浏览(16)
  • Quartus17.1调用IP核生成inst.v文件调用

    Quartus17.1调用IP核生成inst.v文件调用

    使用Quartus17.1时,难免会需要调用ip核,目前我会使用的有2种方法,一是通过platform生成qsys文件调用,二是IP Catalog生成inst.v文件调用,第一种方法的使用请(戳我【后续会写】),下面详细记录第二种方法的使用(以PLL为例,这是一个分频、倍频的ip核)。 打开IP Catalog面板

    2024年02月16日
    浏览(19)
  • 深度学习解决Unable to allocate 33.6 GiB for an array with shape (60000, 224, 224, 3) and data type float32

    深度学习解决Unable to allocate 33.6 GiB for an array with shape (60000, 224, 224, 3) and data type float32

    深度学习时,常常要处理超大文件。因此,常常引起电脑故障。当电脑的内存16G,虚拟内存16G,读入34G的数组,发生错误:Unable to allocate 33.6 GiB for an array with shape (60000, 224, 224, 3) and data type float32。解决办法: 在win10设置-查找-高级设置-性能选项-虚拟内存-选自定义大小-按C盘

    2024年02月12日
    浏览(15)
  • [深度学习]OSError: CUDA_HOME environment variable is not set. Please set it to your CUDA install root.

    Solution to above issue! As cuda installed through anaconda is not the entire package. Please install cuda drivers manually from Nvidia Website [ https://developer.nvidia.com/cuda-downloads ] After installation of drivers, pytorch would be able to access the cuda path. You can test the cuda path using below sample code. Problem resolved!!! CHECK INSTALLATION

    2024年02月16日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包