DreamBooth:个性化的文本到图像扩散模型

文章目录

  • 一、DreamBooth简介
  • 二、Dreambooth的思想
  • 三、DreamBooth的整体损失函数


一、DreamBooth简介

  1. DreamBooth是一种微调文生图扩散模型的方法,最大的特点是Subject-Driven,针对某一个特定的主体,生成在不同的场景、姿势和视角中的该主体上下文图像;
  2. DreamBooth的两个主要贡献是:
    • 一个新问题: 主题驱动生成。给定一些随意捕获的主题图像,目标是在不同的背景下合成主题的新颖再现,同时保持其关键视觉特征的高保真度。
    • 一种新技术: 用于在少量镜头设置中微调文本到图像的扩散模型,同时保留模型在主题类上的语义知识。

DreamBooth:个性化的文本到图像扩散模型_第1张图片

二、Dreambooth的思想

  1. 任务: 扩展模型的language-vision字典,使其将新词和用户想要生成的特定主体结合起来,一旦新的字典被嵌入到模型中,就可以用这些词合成这些主体图像,让模型能输出特定个体的一些图片;

  2. 一个自然的想法: 用少量的数据去 fine-tuning 整个模型

    • 会造成 overfitting模式坍塌 model-collapse,这会在 GAN 里面发生;
    • 比如模型可能会走捷径,并没有学会这个特定物体的分布是什么样子,也不可能让生成的物体具有多样性。
  3. 作者的方法: 用罕见的token标识符来代表一个给定的主体,并对一个预训练的、基于扩散的文本到图像框架进行微调,该框架分两个步骤操作:从文本生成低分辨率图像,随后应用超分辨率(SR)扩散模型。

输入是三五张图和对应类型名称,经过dreambooth微调之后返回一个能够识别唯一标识符的个性化的文本扩散模型,左边是预训练的,finetune之外的,右边是finetune之后的,推理时输入[V]就能识别之前那条狗,通过finetune把狗编码进了输出域中。

DreamBooth:个性化的文本到图像扩散模型_第2张图片

三、DreamBooth的整体损失函数

DreamBooth 实际上是 fine-tuning 所有层的所有参数的方法,甚至包括这个文本编码器。如果不做任何处理,就会导致:

  • 语言漂移问题: 当使用一个很小的图像文本对去 fine-tuning 生成模型时,对于你文本中提及的词汇,模型会慢慢地偏移到文本中指定的物体上去,可能会忘了它本身的含义。如果输入了一条特定的狗,模型会慢慢认为狗就只有你这一条狗,而忘了它其实还可以代表很多种类的狗,就是模型学了新的,忘了旧的。
  • 减少生成多样性: 如果 fine-tuning 一个模型不做任何处理,它很有可能会使这个输出域局限在你这个特定的物体,特定的这几张图片的这个分布上去,从而没有办法生成具有多样性的图片,无法生成全新的视角,全新的姿势或者结构的一些图片。这种现象通常为训练时间过长,模型发生过拟合。

为了克服上面提到两个问题,提出了autogenous class-specific prior preservation loss

在这里插入图片描述

  1. 第一项是一般的扩散模型的误差表示
    • 前半部分是松狮图的损失函数:x是原图, ( a t x + σ t ϵ ) (a_tx+\sigma_t\epsilon) (atx+σtϵ)是加噪后的图, x θ ^ \hat{x_\theta} xθ^是扩散模型的去噪方法,接受噪声图和文字,生成去噪后的图。通过L2像素损失对比x与 ( a t x + σ t ϵ ) (a_tx+\sigma_t\epsilon) (atx+σtϵ)的差异。
    • 训练过程中输入了下图左上角这些特定狗的图,在普通的训练过程中,就会有一个 reconstruction loss,让输入作为监督信号,让模型的生成去接近输入图片,这个时候输入的词是 “a [V] dog”,带有特定类别的 identifier 的 class。
  2. 第二项是 prior preservation loss
    • 后半部分是狗图的损失函数:结构与前者一致,通过加入 λ \lambda λ来控制影响权重。
    • 在开始训练之前,只用这个类别的词去生成一些系列图片,比如a dog,模型生成了很多狗的图片,它是各种各样不同的狗,在各种各样不同的环境中。当训练开始之后,虽然参数更新了,但是输入 a dog,模型需要依然能够生成这些和原本的狗,就是训练开始之前的狗一样的图片,而不是去生成特定的狗,表示模型在训练过程中对 dog 这个单词的认识并没有发生改变,也就是说模型没有发生语言漂移。
      DreamBooth:个性化的文本到图像扩散模型_第3张图片

DreamBooth是微调所有模型的参数,主要思想就是训练之前,先用模型a dog 大类生成很多的样本,训练的时候和微调的小类一起训练,然后共享参数,分别监督新类的重建损失,和原始生成样本的一致性损失,其实很像持续学习中的重放技术,也是克服灾难性以往的有效方法。

参考:
DreamBooth 论文精读+通俗理解
扩散模型微调:DreamBooth(CVPR2023)
dreambooth:fine-tuning text-to-image diffusion models for subject-driven generation
如何解读 DreamBooth AI 图像生成工具的工作原理?

你可能感兴趣的:(AIGC阅读学习,计算机视觉,人工智能,算法,AIGC)