论文解读:Inpaint Anything: Segment Anything Meets Image Inpainting

2023-10-27

 论文:https://arxiv.org/pdf/2304.06790.pdf

 代码:https://github.com/geekyutao/Inpaint-Anything

 图1:Inpaint Anything示意图。用户可以通过点击图像中的任何对象来选择它。借助强大的视觉模型,例如SAM[7]、LaMa [13]和稳定扩散(SD)[11],Inpaint Anything能够平滑地移除对象(即,移除任何物体)。此外,通过输入文本提示,用户可以填充任何所需内容以填充对象(即,填充任何内容),或者任意替换其背景(即,替换任何背景)。

1 摘要

      现代图像修复系统在掩膜选择和填充孔洞方面经常遇到困难。基于Segment-Anything模型(SAM),我们首次尝试了无需掩膜的图像修复,并提出了一种名为"Inpaint Anything(IA)"的新范式,即"点击和填充"。

        IA的核心思想是结合不同模型的优势,构建一个非常强大且用户友好的流程来解决修复相关的问题。IA支持三个主要功能:

     (i)移除任何物体:用户可以点击一个物体,IA将移除它并用上下文平滑填补"空洞";

    (ii)填充任何内容:在移除某些物体后,用户可以提供基于文本的提示给IA,然后它将通过驱动稳定扩散(Stable Diffusion)[11]等AIGC模型来填充空洞与相应的生成内容;

    (iii)替换任何背景:借助IA,用户可以选择保留点击选择的物体并用新生成的场景替换其余背景。

2 动机和贡献

2.1 为什么我们需要Inpaint Anything?

• 最先进的图像修复方法,如LaMa [13]、Repaint [10]、MAT [8]、ZITS [4]等,在修复大区域和处理复杂重复结构方面取得了巨大进展。它们可以成功地对高分辨率图像进行修复,并且通常可以很好地推广到其他图像。然而,它们通常需要每个掩膜的精细注释,这对于训练和推断是必不可少的。

• Segment Anything Model (SAM) [7]是一个强大的分割基础模型,可以根据输入提示(如点或框)生成高质量的对象遮罩,并且可以为图像中的所有对象生成全面准确的遮罩。然而,它们的遮罩分割预测尚未充分探索。

• 此外,现有的修复方法只能使用上下文来填充已移除的区域。AIGC模型为创作开辟了新的机会,这有潜力满足大量需求,并帮助人们生成所需的内容。

• 因此,通过结合SAM [7]、最先进的图像修复器LaMa[13]和AI生成的内容(AIGC)模型[11]的优势,我们提供了一个强大且用户友好的流程,用于解决更多通用的与修复相关的问题,例如对象移除、新内容填充和背景替换。

2.2 Inpaint Anything的功能是什么?

• 使用SAM + SOTA修复器移除任意对象: 通过IA,用户可以通过简单地点击对象来轻松地从界面中删除特定对象。此外,IA还提供了一个选项,让用户可以使用上下文数据填充生成的"空洞"。针对此需求,我们结合了SAM和一些最先进的修复器(如LaMa)的优势。通过腐蚀和膨胀的手动细化,由SAM生成的掩膜预测作为修复模型的输入,为要擦除和填充的对象区域提供清晰的指示。

• 使用SAM + AIGC模型填充或替换任意内容:

(1) 在移除对象后,IA提供了两种选项来填充生成的"空洞",即使用上下文数据或"新内容"。具体而言,我们利用类似Stable Diffusion [11]的强大AI生成内容(AIGC)模型通过文本提示来生成新对象。例如,用户可以使用"dog"这个词或者"一只可爱的狗,坐在长凳上"这样的句子来生成一只新的狗来填充空洞。

(2) 此外,用户还可以选择在保留点击选择的对象的同时,用新生成的场景替换剩余的背景。IA支持多种方式来提示AIGC模型,例如使用不同的图像作为视觉提示或使用简短的标题作为文本提示。例如,用户可以保留图像中的狗,但将原来的室内背景替换为室外背景。

3 方法

3.1. 初步工作 Segment Anything模型(SAM)

Segment Anything [7]是一种基于大型视觉语料库(SA-1B)训练的基于ViT的CV模型。SAM在各种场景中展示了有前景的分割能力,以及基础模型在计算机视觉领域的巨大潜力。这是通往视觉人工通用智能的开创性一步,SAM曾被誉为"CV版ChatGPT"

SOTA修复器。 图像修复作为一个不适定的逆问题,在计算机视觉和图像处理领域得到了广泛的研究。其目标是用具有视觉合理结构和纹理的内容替换损坏图像的缺失区域。在Inpaint Anything(IA)中,

我们调研了一种简单的单阶段方法LaMa [13]用于基于掩膜的修复,该方法通过结合快速傅立叶卷积(FFC)[1]、感知损失[6]和激进的训练掩膜生成策略,在生成重复性视觉结构方面表现出色。 

AIGC模型ChatGPT 1和其他生成AI(GAI)技术都属于人工智能生成内容(AIGC)的范畴,涉及通过AI模型创建数字内容,例如图像、音乐和自然语言。它被视为一种新型的内容创作方式,并在各种内容生成方面展现了最先进的性能[11, 12]。在我们的IA工作中,我们直接使用强大的AIGC模型Stable Diffusion [11],基于文本提示来在空洞中生成所需的内容。

3. 2 Inpaint Anything

我们提出的Inpaint Anything (IA)的原理是将现成的基础模型组合起来,以解决广泛的图像修复问题。通过组合各种基础模型的优势,IA能够生成高质量的修复图像。具体而言,我们的IA包括三种方案,即Remove Anything、Fill Anything和Replace Anything,分别用于移除、填充和替换任意内容。

3.2.1 移除任何物体

Remove Anything专注于通过允许用户从图像中消除任何物体来解决物体移除问题[2, 3, 5],同时确保生成的图像在视觉上仍然合理。

Remove Anything由三个步骤组成:点击、分割和移除,如图1所示。

在第一步中,用户通过点击选择他们想要从图像中移除的物体。

接下来,使用基础分割模型,如Segment Anything [7],根据点击位置自动分割物体并创建遮罩。

最后,使用先进的修复模型,如LaMa [13],使用遮罩来填补被移除物体留下的空洞。

由于图像中不再存在该物体,修复模型会用背景信息填充空洞。

需要注意的是,在整个过程中,用户只需要点击他们想要从图像中移除的物体。

3.2.2 填充任意内容

Fill Anything允许用户将图像中的任何物体填充为他们想要的任何内容。

该工具包括四个步骤:点击、分割、文本提示和生成

Fill Anything的前两个步骤与Remove Anything相同。

在第三步中,用户输入指示他们想要用什么内容填充物体空洞的文本提示

最后,采用强大的AIGC模型,如Stable Diffusion [11],基于文本提示修复模型在空洞中生成所需的内容。

3.2.3 替换任意内容

Replace Anything能够将任何物体替换为任何背景。Replace Anything的过程与Fill Anything类似,但在这种情况下,提示AIGC模型生成与指定物体外部相一致的背景。

3.2.4 实践

将基础模型组合解决任务可能会遇到不兼容或不适合的问题。我们应该考虑中间处理,以实现模型和任务之间更好的协调。在本研究中,针对图像修复场景,我们总结了一些良好的组合实践如下:

• 膨胀操作的重要性。

我们观察到SAM的分割结果(即物体遮罩)可能包含不连续和非平滑的边界,或者物体区域内部存在空洞。这些问题对于有效地移除或填充物体构成了挑战。因此,我们使用膨胀操作来优化遮罩。此外,对于填充物体,大遮罩为AIGC模型提供更大的创作空间,有利于与用户意图的"对齐"。因此,在Fill Anything中采用了大的膨胀操作。

• 保真度的重要性。

大多数最先进的AIGC模型(如Stable Diffusion)需要图像具有固定的分辨率,通常为512×512。简单地将图像调整到这个分辨率可能会导致保真度的降低,从而对最终的修复结果产生不利影响。因此,采取保留原始图像质量的措施是必要的,例如使用裁剪技术或在调整大小时保持图像的宽高比。

• 提示的重要性。

我们的研究表明,文本提示对AIGC模型有重要影响。然而,我们观察到在文本提示修复场景中,简单的提示(例如"长凳上的玩具熊"或"墙上的毕加索画作")通常能产生满意的结果。相比之下,更长、更复杂的提示可能会产生令人印象深刻的结果,但它们往往不太用户友好。

4 实验

        我们在Inpaint Anything中对Remove Anything、Fill Anything和Replace Anything进行了评估,分别在移除对象、填充对象和替换背景的三种情况下进行。我们从COCO数据集[9]、LaMa测试集[13]和我们手机拍摄的照片中收集了测试图像。结果如图2、图3和图4所示。实验结果表明,所提出的Inpaint Anything具有通用性和鲁棒性,能够有效地对具有多样内容、分辨率和宽高比的图像进行修复。

 

5 结论 

Inpaint Anything (IA)是一款多功能工具,结合了Remove Anything、Fill Anything和Replace Anything的功能。

基于分割模型、SOTA修复模型和AIGC模型,IA能够实现无需遮罩的图像修复,并支持用户友好的操作方式,即“点击删除,提示填充”。

此外,IA可以处理各种不同的高质量输入图像,包括任意宽高比和2K分辨率。我们构建了这个有趣的项目,展示了充分利用现有的大规模AI模型的强大能力,并展示了“可组合AI”的潜力。

我们也非常愿意帮助每个人分享和推广基于我们的Inpaint Anything (IA)的新项目。在未来,我们将进一步开发Inpaint Anything (IA),以支持更多的实用功能,如细粒度图像抠像、编辑等,并将其应用于更多现实应用中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

论文解读:Inpaint Anything: Segment Anything Meets Image Inpainting 的相关文章

随机推荐

  • C++中vector的删除

    在vector中有三种涉及删除的方法 第一种是vector clear 第二种是vector erase 第三种是vector pop back clear用来清空整个vector 同时将size变成0 无返回值 erase通过传入迭代器进
  • 小程序点击导航栏返回顶部小例子

  • Java提高性能的50个优化,记得收藏

    在JAVA程序中 性能问题的大部分原因并不在于JAVA语言 而是程序本身 养成良好的编码习惯非常重要 能够显著地提升程序性能 1 尽量在合适的场合使用单例 使用单例可以减轻加载的负担 缩短加载的时间 提高加载的效率 但并不是所有地方都适用于
  • unity3d中利用代码脚本控制按钮的开关

    1 软件环境 unity2019 4 12f1 Visual Studio2019 2 unity工程设置 右键在UI中添加Button组件 接下来添加C 脚本 将此脚本挂在Button的父物体上 后面会用到transfrom来查找到But
  • Axure中后台管理信息系统通用原型方案 v1

    点此下载原型模板 本作品是一套通用型的中后台管理系统原型设计方案 可以帮助你快速输出标准和美观的中后台产品原型方案 极大的节省协作成本和提升工作效率 这套方案提供了12套不同类型的登录界面和系统框架 并涵盖了大量的常用组件和常用页面模板 可
  • 组件开发概述——vue组件开发(一)

    前言 组件化是WEB前端开发中的一个非常重要概念 体现面向对象编程主要特征之一 封装性 组件化开发的目的和意图是提高了软件的可维护性 实现前端代码复用性 组件是扩展 HTML 元素 其使用方式和HTML5提供的组件使用方式一致 它补充HTM
  • Java实现根据当前时间获取本周(工作日)日期(周一~周五或周天)

    import java text ParseException import java text SimpleDateFormat import java util Date import java util Calendar public
  • 【100%通过率 】【华为OD机试 c++】基站维护工程师【 2023 Q1

    华为OD机试 题目列表 2023Q1 点这里 2023华为OD机试 刷题指南 点这里 题目描述 基站维护工程师 小王是一名基站维护工程师 负责某区域的基站维护 某地方有 n 个基站 1 lt n lt 10 已知各基站之间的距离 s 0 l
  • linux脚本实现scp命令自动输入密码和yes/no等确认信息

    实现方式 通过expect工具实现 bin bash yum y install expect expect c spawn scp r root 192 168 10 106 root qumf Agoly txt root qumf e
  • mysql 查询 投影_sql--查询(基本,条件,投影,排序)

    要查询数据库表的数据 我们使用如下的SQL语句 SELECT FROM 使用SELECT FROM students时 SELECT是关键字 表示将要执行一个查询 表示 所有列 FROM表示将要从哪个表查询 该SQL将查询出students
  • 位域(bit fields)简介

    1 简介 位域是指信息在存储时 并不需要占用一个完整的字节 而只需占几个或一个二进制位 例如在存放一个开关量时 只有0和1 两种状态 用一位二进位即可 为了节省存储空间 并使处理简便 C语言又提供了一种数据结构 称为 位域 或 位段 所谓
  • 信息学奥赛-逻辑运算

    学习内容 1 逻辑运算概念介绍 非 not 与 and 或 or 异或 xor 2 运算规则 AVB 两个命题中至少有一个真命题时 其复合命题为真 A B 两个命题必须全为真命题 其复合命题才是真命题 A 将原命题取反 A B 两个命题一真
  • 【深度学习】tensorflow各个版本下载地址

    tensorflow与CUDA对应表如下 需要装低版本的tensorflow 下载地址 http mirrors aliyun com pypi simple tensorflow gpu
  • 吴晓波:2020年怎么看,怎么办?

    origin https 36kr com p 5274524 快公司 时代已经过去了 编者按 本文来自微信公众号 正和岛 ID zhenghedao 口述 吴晓波 财经作家 890新商学创始人 采写 曹雨欣 36氪经授权发布 再次见到吴晓
  • C++笔记-用指定字符串替换目标字符串中的字串-find-substr-replace

    功能是 用字符串zhangsan lisi wangwu替换目标字符串names 1 2 3 中的 1 2 3 结果是 names zhangsan lisi wangwu 1 使用std string的replace方法 std stri
  • three.js 创建文本的几种方式

    精灵贴图文本 text width 128px height 128px font size 16px text align center color ffffff background ff0000 div class text 精灵贴图
  • 基于javaweb+mysql的二手交易平台二手商城二手物品(前台、后台)

    基于javaweb mysql的二手交易平台二手商城二手物品 前台 后台 运行环境 Java 8 MySQL 5 7 Tomcat 8 开发工具 eclipse idea myeclipse sts等均可配置运行 适用 课程设计 大作业 毕
  • [题解]-整理药名

    题目 医生在书写药品名的时候经常不注意大小写 格式比较混乱 现要求你写一个程序将医生书写混乱的药品名整理成统一规范的格式 即药品名的第一个字符如果是字母要大写 其他字母小写 如将 ASPIRIN aspirin 整理成 Aspirin 输入
  • MySQL数据库之DML(数据操纵语言)

    1 DML 数据操纵语言 在进行数据库操作时 首先就是要使用DML 数据操纵语言 数据操纵语言主要由插入数据 insert 更新数据 update 以及删除数据 delete 组成 这些操作主要是针对 数据表中的数据 2 插入数据 INSE
  • 论文解读:Inpaint Anything: Segment Anything Meets Image Inpainting

    论文 https arxiv org pdf 2304 06790 pdf 代码 https github com geekyutao Inpaint Anything 图1 Inpaint Anything示意图 用户可以通过点击图像中的