0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Direct Inversion:三行代码提升基于扩散的图像编辑效果

CVer 来源:CVer公众号 2023-10-10 17:18 次阅读

导读

本文介绍了由香港中文大学和粤港澳大湾区数字经济院联合提出的基于 Diffusion 的 Inversion 方法 Direct Inversion,可以在现有编辑算法上即插即用,无痛提点。

现有主流编辑算法大多为双分支结构,一个分支主要负责编辑,另一个分支则负责重要信息保留,Direct Inversion 可以完成(1)对两分支解耦(2)使两分支分别发挥最大效能,因此可以大幅提升现有算法的编辑效果。

同时,为了更加公平公正的进行基于 text 的编辑效果对比,这篇文章提出了 PIE-Bench,一个包含 700 张图片和 10 个编辑类别的“图片-编辑指令-编辑区域”数据集,并提供一系列包含结构保留性、背景保留性、编辑结果与编辑指令一致性、编辑时间四个方面的评测指标。

数值结果和可视化结果共同展示了Direct Inversion的优越性。

15664526-6744-11ee-939d-92fbcf53809c.png

主页:https://idea-research.github.io/DirectInversion/

代码:https://arxiv.org/abs/2310.01506

论文:https://github.com/cure-lab/DirectInversion

这篇论文是如何发现过往方法问题,并找到新解决方案的呢?

基于 Diffusion 的编辑在近两年来一直是文生图领域的研究重点,也有无数文章从各个角度(比如效果较好的在Stable Diffusion的Attention Map上特征融合)对其进行研究,作者在文章中进行了一个比较全面的相关方法review,并把这些方法从“重要信息保留”和“编辑信息添加”两个方面分别进行了四分类,具体可以参见原文,此处不再赘述。

这里提到了一个编辑的重点,也就是“重要信息保留”和“编辑信息添加”。事实上,这两个要点正是编辑所需要完成的两个任务,比如把图1的猫变成狗,那红色的背景和猫的位置需要保留,这就是“重要信息保留”;同时编辑要完成“变成狗”的任务,这就是“编辑信息添加”。

为了完成这两个任务,最为直觉,也是使用最多的方式就是:使用两个分支来完成这两件事,一个用来保留信息,一个用来添加信息。之前的编辑算法大多可以划分出这两个分支,但可能隐含在模型中或者没有显式割离,也正是在这篇文章中,作者将两个概念划分清楚并给出了过往方法的分类。

到现在为止,已经弄清楚了编辑的两个分支及其各自作用,但编辑不仅仅只需要这两个分支,还需要重要的一步,也就是Inversion。

156eb3aa-6744-11ee-939d-92fbcf53809c.jpg

图1 基于 Diffusion 的编辑算法总结

我们都知道,Diffusion是一个把噪声映射到有用信息(比如图片)的过程,但 Diffusion 到噪声的过程是单向的,它并不可逆,不能直接像VAE一样直接把有用信息再映射回到隐空间,即,可以根据一个噪声得到图片,但不能根据一张图片得到“可以得到这张图片的噪声”,但这个噪声又在编辑中非常重要,因为它是双分支的起点。

所以大部分人就采用了一种近似的方法,即 DDIM Inversion,它能够将图片映射到噪声,但从这个噪声得到的新图片就会稍微偏离原图片一点(如图DDIM Inversion上标注的distance),其实如果不给模型文本控制条件,偏离还不太严重,但当文本的控制加强时,偏离就会逐渐不可接受。

因此,一系列的 Inversion 方法被提出用来修正这一偏差,比如著名的基于优化的 Null-Text Inversion,而在无数方法进行尝试和探索之后,大家似乎得到了一个 common sense:好的偏离修正必须要包含优化过程。所以这篇文章就更加深入的探索了一下基于优化的inversion(或者说修正)到底在做什么。

这些方法在优化什么?优化真的必要吗?

基于优化的Inversion方法通常使用一个模型输入变量(如Null Text)存储刚刚提到的偏差,而这一偏差则作为优化过程中的loss,通过梯度下降来拟合变量。因此优化的过程本质上就是把一个高精度的偏差存储在了一个低精度的变量中(该变量的数值精度相对 noise latent 更不敏感)。

但这种做法是存在问题的:(1)优化相当于在推导过程中训练,非常消耗时间,比如Null-Text Inversion通常需要两三分钟编辑一张图片;(2)优化存在误差,因此不能完全消除“偏差”,如图2 Null-Text Inversion/StyleDiffusion中画出的,保留分支与原始inversion分支之间的偏差只是被缩小并没有被消除,这就使得重要信息的保护没有发挥到最大限度;(3)优化得到的变量其实在Diffusion模型训练过程中并未出现过,因此相当于进行了强制赋值,会影响模型输入和模型参数之间数据分布的协调。

回到上文提到的双分支编辑,之前的方法训练好优化的变量之后,就会将其同时送入到编辑分支和保留分支(其实不仅仅是基于优化的方法,非基于优化的方法也没有将两分支解耦),根据上面的分析,其实可以发现一个很简单的改进策略:将可编辑分支和保留分支解耦,使两个分支充分发挥各自效能。

157971aa-6744-11ee-939d-92fbcf53809c.jpg

图2 各类 Inversion 方法对比

Direct Inversion

这篇文章通过解耦编辑分支和保留分支,仅用三行代码就能够大幅提升现有编辑算法效果(如图3中伪代码),具体做法非常简单,即:将保留分支加回到原始DDIM Inversion路径,而保持编辑分支不被影响。

15812a1c-6744-11ee-939d-92fbcf53809c.jpg

图3 伪代码

PIE-Bench

尽管基于 Diffusion 的编辑在近几年引起了广泛关注,但各类编辑方法的评估主要依赖于主观且不确定性的可视化。因此这篇文章为了系统验证所提出的Direct Inversion,并对比过往Inversion方法,以及弥补编辑领域的性能标准缺失,构建了一个基准数据集,名为PIE-Bench(Prompt-based Image Editing Benchmark)。

PIE-Bench包括700张图像,涵盖了10种不同的编辑类型。这些图像均匀分布在自然和人工场景(例如绘画作品)中,分为四个类别:动物、人物、室内和室外。PIE-Bench中的每张图像都包括五个注释:源图像提示语句、目标图像提示语句、编辑指令、主要编辑部分和编辑掩码。值得注意的是,编辑掩码注释(即使用一个mask指示预期的编辑区域)在准确的指标计算中至关重要,因为期望编辑仅发生在指定的区域内。

158f3080-6744-11ee-939d-92fbcf53809c.jpg

图4 PIE-Bench

实验效果

数值结果

在各个编辑算法上对比不同Inversion和Direct Inversion 算法效果

159b49ce-6744-11ee-939d-92fbcf53809c.jpg

Direct Inversion 在多种编辑方法上对比其他 inversion 方法的效果。编辑方法:Prompt-to-Prompt (P2P), MasaCtrl, Pix2Pix-Zero (P2P-Zero), Plug-and-Play (PnP), Inversion方法:DDIM Inversion (DDIM), Null-Text Inversion (NT), Negative-Prompt Inversion (NP), StyleDiffusion (SD)

各类 Inversion 算法运行时间对比

15acca1e-6744-11ee-939d-92fbcf53809c.jpg

运行时间对比

可视化对比

15bcf0f6-6744-11ee-939d-92fbcf53809c.jpg

图5 Direct Inversion 与四种基于 Diffusion 的编辑方法结合后在各种编辑类别(从上到下依次为:风格转移、物体替换和颜色变更)上的性能提升,每组结果第一列为未加 Direct Inversion,第二列为添加 Direct Inversion

15c0c5f0-6744-11ee-939d-92fbcf53809c.jpg

图6 不同 inversion 和编辑技术的可视化结果

更多可视化和消融实验结果可以参考原论文。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 算法
    +关注

    关注

    23

    文章

    4484

    浏览量

    91339
  • 代码
    +关注

    关注

    30

    文章

    4603

    浏览量

    67386
  • 数据集
    +关注

    关注

    4

    文章

    1190

    浏览量

    24470

原文标题:简单有效!Direct Inversion:三行代码提升基于扩散的图像编辑效果

文章出处:【微信号:CVer,微信公众号:CVer】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    急求教:能显示三行字符的液晶有哪些

    能显示三行字符(可以不是汉字)的液晶有哪些????
    发表于 05-31 10:02

    请问前三行是什么意思?

    create_page_table @ 设置页表 bl mmu_init @ 启动MMU ldr sp, =0xB4000000 @ 重设栈指针,指向SDRAM顶端(使用虚拟地址) ldr pc, =0xB0004000 @ 跳到SDRAM中继续执行第二部分代码halt_loop: b halt_loop请问其中
    发表于 06-13 22:56

    请问这三行代码是固定这样写的吗?

    u8 IPRADDR=NVIC_Channel/4;//每组只能存4个,得到组地址 u8 IPROFFSET=NVIC_Channel%4;//在组内的偏移 IPROFFSET=IPROFFSET*8+4; //得到偏移的确切位置这三行代码是固定这样写的吗???????
    发表于 10-24 21:34

    三行搞定独立按键

    最近自己在做单片机的东西,准备参加比赛,偶然发现了独立按键的神助攻——三行搞定独立按键,看到网上很多描述的不清晰,自己又花时间整理了一下,话不多说先上代码:void Key_Read(void
    发表于 12-07 11:05

    STM32之三行按键宏定义

    STM32之三行按键按键宏定义unsigned char ucTrg= 0;unsigned char ucCont = 0;unsigned char uckey_times = 0
    发表于 03-02 06:52

    什么是三行按键?有什么用

    三行按键从出生到现在已经很多个年头了,经过几代优化,现在有两个版本,今天分析一下,也在本论坛扩充一下资源。我在本论坛搜索三行按键,并没有相关的帖子。首先说明一下什么是三行按键,有什么用,什么好处,以及...
    发表于 03-02 06:16

    EditGAN图像编辑框架将影响未来几代GAN的发展

      此外, EditGAN 框架可能会影响未来几代 GAN 的发展。虽然当前版本的 EditGAN 侧重于图像编辑,但类似的方法也可能用于编辑 3D 形状和对象,这在为游戏、电影或 metaverse 创建虚拟 3D 内容时非常有用。
    的头像 发表于 04-06 16:29 1437次阅读
    EditGAN<b class='flag-5'>图像编辑</b>框架将影响未来几代GAN的发展

    谷歌新作Dreamix:视频扩散模型是通用视频编辑器,效果惊艳!

    可以看到,视频编辑图像编辑更加具有挑战性,它需要合成新的动作,而不仅仅是修改视觉外观。此外还需要保持时间上的一致性。因此,将 SDEdit、Prompt-to-Prompt 等图像级别的编辑
    的头像 发表于 02-09 11:21 1307次阅读

    AI图像编辑技术DragGAN开源,拖动鼠标即可改变人物笑容

    DragGAN是一个直观的图像编辑工具PM系统(www.multiable.com.cn),用户只需要控制图像中的像素点和方向,就可以快速调整照片主体的位置、姿态、表情、大小和角度等。
    的头像 发表于 06-29 10:34 717次阅读

    生成式 AI 研究通过引导式图像结构控制为创作者赋能

    新的研究正在通过一个文本引导的图像编辑工具来提升生成式 AI 的创造性潜能。这项创新性的研究提出了一个使用即插即用扩散特征(PnP DFs)的框架,可引导实现逼真而精确的图像生成。通过
    的头像 发表于 07-24 19:30 426次阅读

    伯克利AI实验室开源图像编辑模型InstructPix2Pix,简化生成图像编辑并提供一致结果

    之前的 AI 图像编辑能力通常是进行风格转换,流行的文本到图像生成模型(如 DALL-E 和 Stable Diffusion)也支持图像图像风格转换操作。然而,使用这些模型进行有针
    的头像 发表于 08-28 15:45 616次阅读
    伯克利AI实验室开源<b class='flag-5'>图像编辑</b>模型InstructPix2Pix,简化生成<b class='flag-5'>图像编辑</b>并提供一致结果

    Sweetviz让你三行代码实现探索性数据分析

    Sweetviz是一个开源Python库,它只需三行代码就可以生成漂亮的高精度可视化效果来启动EDA(探索性数据分析)。输出一个HTML。 如上图所示,它不仅能根据性别、年龄等不同栏目纵向分析数据
    的头像 发表于 10-17 10:59 310次阅读
    Sweetviz让你<b class='flag-5'>三行</b><b class='flag-5'>代码</b>实现探索性数据分析

    来看看他们用代码写的“三行诗”

    往期精选 原文标题:来看看他们用代码写的“三行诗” 文章出处:【微信公众号:宏景智驾】欢迎添加关注!文章转载请注明出处。
    的头像 发表于 10-25 15:55 213次阅读
    来看看他们用<b class='flag-5'>代码</b>写的“<b class='flag-5'>三行</b>诗”

    Sweetviz: 让你三行代码实现探索性数据分析

    Sweetviz是一个开源Python库,它只需三行代码就可以生成漂亮的高精度可视化效果来启动EDA(探索性数据分析)。输出一个HTML。 它不仅能根据性别、年龄等不同栏目纵向分析数据,还能对每个
    的头像 发表于 10-31 10:28 744次阅读
    Sweetviz: 让你<b class='flag-5'>三行</b><b class='flag-5'>代码</b>实现探索性数据分析

    放下你的PhotoShop!无限图像编辑已开源!

    我们知道扩散模型生成图像是通过反转采样来进行的,重点是识别噪声。LEDITS++从DDPM反演中提取特征,并提出一种有效的反演方法,大大减少所需的步骤,同时降低重建误差。当将反向扩散过程公式化为SDE时
    的头像 发表于 12-10 10:09 603次阅读
    放下你的PhotoShop!无限<b class='flag-5'>图像编辑</b>已开源!