前半部分是松狮图的损失函数:x是原图,
(
a
t
x
+
σ
t
?
)
(a_tx+\sigma_t\epsilon)
(at?x+σt??)是加噪后的图,
x
θ
^
\hat{x_\theta}
xθ?^?是扩散模型的去噪方法,接受噪声图和文字,生成去噪后的图。通过L2像素损失对比x与
(
a
t
x
+
σ
t
?
)
(a_tx+\sigma_t\epsilon)
(at?x+σt??)的差异。
在开始训练之前,只用这个类别的词去生成一些系列图片,比如a dog,模型生成了很多狗的图片,它是各种各样不同的狗,在各种各样不同的环境中。当训练开始之后,虽然参数更新了,但是输入 a dog,模型需要依然能够生成这些和原本的狗,就是训练开始之前的狗一样的图片,而不是去生成特定的狗,表示模型在训练过程中对 dog 这个单词的认识并没有发生改变,也就是说模型没有发生语言漂移。
DreamBooth是微调所有模型的参数,主要思想就是训练之前,先用模型a dog 大类生成很多的样本,训练的时候和微调的小类一起训练,然后共享参数,分别监督新类的重建损失,和原始生成样本的一致性损失,其实很像持续学习中的重放技术,也是克服灾难性以往的有效方法。