paper | AnyDoor: Zero-shot Object-level Image Customization |
---|---|
code | https://github.com/damo-vilab/AnyDoor |
Org | 香港大学,Alibaba Group |
date | 2023-07 |
过去我们用dreambooth,LORA,textual inversion等方法做定制目标生成。但这个方法每次定制新的目标都需要重新训练模型。这篇文章的核心目的是用一种zero-shot的方法做定制目标的定制场景图片生成。简单来说就是:给定目标图片和场景图片就能生成在该目标在该场景不同姿态(角度、光照)的图片。
架构组成 | 功能 | 是否更新参数 |
---|---|---|
Segmentor | 用于去背景 | ?? |
Detail Extractor | 类似ControlNet,用于特征注入 | 🔥 |
Unet | stable diffusion | ?? |
ID Extractor | 提取图片特征,注入unet | ??DINOV2 + 🔥投影层 |
pipeline如下:
输入:
STEP1:目标图片送入到segmentor
中进行去背景。然后兵分两路,记作分枝1和分枝2
Detail Extractor
中提取Detail map。(此处的网络结构类似controlnet
)ID Extractor
中提取ID-Token。STEP3: 将ID-Token和Detail map一起送入到Unet
中,用diffusion model的生成方式进行图片生成。
HF-MAP的计算公式如下
I h = ( I ? K h + I ? K v ) ⊙ I ⊙ M e r o d e , \mathbf {I} _ { h } = ( \mathbf {I} \otimes \mathbf {K} _ { h } + \mathbf {I} \otimes \mathbf {K} _ { v } ) \odot \mathbf {I} \odot \mathbf{M} _ { e r o d e } , Ih?=(I?Kh?+I?Kv?)⊙I⊙Merode?,
其中:
该公式的核心就是,提取图片中object的高频信息,随后将其与scene图片拼接。
作者之所以用高频信号进行拼接是因为:直接将物体 I ⊙ M e r o d e \mathbf {I} \odot \mathbf{M} _ { e r o d e } I⊙Merode?和scene拼接训练后生成的结果都非常单一,缺乏多样性。
作者也对HF-MAP的必要性进行了消融实验
从上面的描述中我们知道anydoor的训练目标是给定目标图片和场景生成该目标在该场景下不同姿态的图片。因此容易知道训练集是三元组组成的集合,即(输入目标图片,场景图片+位置,输出图片)。如何用一种cheap的方法得到同个目标在同场景不同姿态(视角、光照等)的图片对是一难点。
作者利用video数据集来构造图片对。整体的pipeline如下,简而言之就是利用同一个object在不同帧的图片来构造图片对。
训练的数据集如下:
ATS为自适应时间步采样策略(adaptive timestep sampling)
ID extractor的消融实验。
从论文给出的结果看,生成的效果都很不错。
作者给出了该技术的两个使用场景。感觉用来合成数据也很不错,后续尝试一下。