はじめに
CVPR2023から以下のdiffusionモデルをfine-tuningする系論文
[0] N. Ruiz, et. al. "DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation"
のまとめ。
備忘録的に概要とロジックのみまとめる。
CVF open access
github
再学習の実装例
localでRTX3090入ったUbuntuパソコンにて再学習させる例を以下に書きました。
https://qiita.com/masataka46/items/8da204a401dfe747b893
概要
- text-to-imageのDiffusionモデルをfine-tuneする仕組みの1つ
- 対象物の数枚の画像とそれに対応する識別子を用いて学習させるだけで、その対象物の画像が様々なシーンで出力される
- これを実現させるため、対象物の再構築誤差とともに、その対象物を含む分野のclass-specific prior preservation lossを用いる
手法
下図が概要。
reconstruction loss
まず、上側は通常のdiffusion modelのfine-tune部分。新たなチベタンマスティフ画像を用意し、それをpromptとともに学習させることでチベタンマスティグのpromptの場合にその画像を生成させるよう学習させる。
\mathbb{E}_{{\rm \bf x, c, \epsilon}, t} \left[ w_t \| \hat{\rm \bf x}_{\theta} (\alpha_t {\rm \bf x} + \sigma_t {\rm \bf \epsilon}, {\rm \bf c}) - {\rm \bf x} \right \|^2_2 ] \tag{1}
記号の意味は一般的なDDPM論文等と同じであるため略。
fine-tuningの問題点
筆者によると、diffusion modelのfine-tuningには主に以下2つの問題点がある
- language drift。fine-tuneとともにpromptの構文的理解、意味的理解が損なわれ、diffusion modelで生み出すべきクラスを忘れてしまう現象
- fine-tuneとともに多様性が失われる現象
class-specific prior preservation loss
上記2つの問題に対応するため、このlossを用いる。具体的には対象物を含む分野(上図の例では「犬クラス」)における生成画像が学習前と後で変わらないようにlossを設定する。
-
完全なノイズ ${\rm \bf z}_{t_1} \sim \mathcal{N}({\rm \bf 0}, {\rm \bf I})$ とcondition ${\rm \bf c}_{\rm pr}$ から学習前のモデルを用いて画像 ${\rm \bf x}_{\rm pr} = \hat{\rm \bf x} ({\rm \bf z}_{t_1}, {\rm \bf c}_{\rm pr})$ を生成させる
-
この画像にノイズを加えて diffusion model の学習を行う
\mathbb{E}_{{\rm \bf x, c, \epsilon}', t} \left[ w_{t'} \| \hat{\rm \bf x}_{\theta} (\alpha_{t'} {\rm \bf x}_{\rm pr} + \sigma_{t'} {\rm \bf \epsilon}', {\rm \bf c_{\rm pr}}) - {\rm \bf x}_{\rm pr} \right \|^2_2 ] \tag{1.5}
上手に書き込むとこんな感じ。
結果
以下は textual inversionと比較した例。
1行目は input image。3行目はstable diffusionを本手法 DreamBoothでfine-tuneしたもの。4行目は同じくstable diffusionだが、textual inversionでfine-tuneしたもの。
推論時のpromptは左列から prompt “a [V] vase in the snow”, “a [V] vase on the beach”, “a [V] vase in the jungle”, “a [V] vase with the Eiffel Tower in the background”。
textual inversionで再学習させたモデルは多様性がなくなり(or 意味的理解が弱まり)、promptの指定に関わらずいずれも秋っぽい画像になっている。
一方、DreamBoothで再学習させたものは多様性、意味的理解が失われてなく、promptに対して忠実である。