前言
你听说过任意门吗? 通过任意门可以将一个物体转送到另一个空间中。其实在图像中,可以通过PS技术来实现这种效果,但是PS需要精细复杂的调整,最新提出的Anydoor算法能够无脑实现这种操作。它可以完成零样本图像自定义相关任务,诸如换装,移动物体等操作。
论文:https://arxiv.org/pdf/2307.09481
github:https://github.com/ali-vilab/AnyDoor
demo:https://huggingface.co/spaces/xichenhku/AnyDoor-online
一、介绍
随着扩散模型的兴起,图像生成领域出现了多种玩法,对于图像编辑来说,ControlNet已经能够根据mask和prompt在原图像的某些区域进行生图,但是这种生图只能针对不在训练数据内的新图象,泛化性较差。
Anydoor能够做到将目标对象无缝地放置在图像的期望位置,简单来说,Anydoor会在场景图像被框中的局部区域重新生成目标对象,能够有效应用于图像合成、海报制作、虚拟试穿等任务。
二、方法细节
1.整体pipeline
1)首先采用分割器(Segmentor)从对象中去除背景,然后使用ID提取器(ID Extractor)获取其身份信息(ID Tokens)。
2)将高通滤波器应(High-pass Filtes)用于分割后的目标,去除低频分量来突出图像中的细节和边缘,将生成的高频图(HF map)与所需位置的场景缝合(Stitch)。
3)最后,将ID标记和细节图注入预训练的扩散模型中,以产生最终合成,其中目标物体与其周围环境良好融合,具有良好的局部变化。
火焰和雪花分别指可学习和冻结的参数。
2.身份特征提取**
作者采用了预训练的视觉编码器来提取目标对象的身份信息。由于 CLIP 的训练数据是粗略描述的文本图像对,只能嵌入语义级别的信息,而难以保留有区分度的对象身份表示。为了克服这一挑战,作者在目标图像输入 ID 提取器之前,作者做了以下工作:
————fig1中下方pipeline:
1)使用分割器以去除背景,并将对象对齐到图像中心。此操作有助于提取更简洁和更有辨别性的特征。
2)作者选择了 DINO-V2 (一种用于在大型图像数据集上自监督预训练图像编码器,以获得具有语义的视觉特征)作为 ID 提取器的底座(自监督模型显示出较强的能力来保留更多的判别特征),使用单个线性层将 ID 提取器的 token 对齐到预训练的文本到图像的 UNet 中。
3.细节特征提取**
由于 ID token 会失去空间分辨率,很难保持目标对象的精细细节。作者尝试将移除过背景的对象直接拼接到场景图像的给定位置。生成的结果与给定的目标过于相似,缺乏多样性。为此,作者设计了一个表示对象的高频图,它可以保持精细的细节,同时允许灵活的局部变体,如手势、照明、方向等。
————fig1中上方pipeline:
1)使用高通滤波获得高频信息,具体操作如下:
2)将高频map送入细节提取器(一个ControlNet-Style的Unet编码器),DINO-V2产生的tokens更多地关注整体结构,很难对精细细节进行编码。相比之下,高频图可以作为补充来帮助处理这些细节。
3.特征注入
在获得 ID token 和细节图后,将它们注入一个预先训练好的文本到图像扩散模型中来指导生成。作者选择了 Stable Diffusion作为生成模型。
4.训练策略
对于训练数据,作者创新性的从视频中采样训练数据,首先对两个帧进行采样,并获取每个帧中的实例分割map。然后,从一帧中选择一个实例作为目标对象,并将另一帧上的同一实例作为训练监督(即,所需的模型输出)。
5.实验与相关结论
研究选择 Stable Diffusion V2.1 作为基础生成器。fig5展示了与基于参考的图像生成方法的对比结果。Paint-by-Example 和 Graphit 支持与本文相同的输入格式,它们以目标图像作为输入来编辑场景图像的局部区域,而无需参数调整。此外,本文还与 Stable Diffusion 进行了比较。
fig6表明:
AnyDoor 兼具基于参考和基于调整的方法的优点,无需进行参数调整即可生成多主题合成的高保真结果。具体而言,Paint-by-Example 对于经过训练的类别(如狗和猫)(第 3 行)表现良好,但对于新概念(第 1-2 行)表现不佳。
DreamBooth、Custom Diffusion 和 Cones 为新概念提供了更好的保真度,但仍然存在多主体混淆的问题。
总结
Anydoor是一项很棒的工作,其中的ID token的获取,以及用高频map来保证生图的多变性是很具有创造性的工作,其pieline感觉会启发后续很多图像生成编辑相关任务的研发!