DreamBooth: Fine Tuning Text-to-Image Diffusion Models for Subject-Driven Generation
やりたいこと
拡散モデルにて、主題を固定してそいつに関する新しい絵を描画させたい場合の方法を提案。主題に関する画像が何枚か手に入るとする。
手法
- 基本的なアイディアは、それらの画像でfinetuneする、というだけ。
- 'sks' や 'djv' みたいな、全然使われてない単語を、その主題を指す新しい単語ということで使って覚えさせる。つまり、例えば "a photo of sks man" みたいなプロンプトでfinetuneする。
- 破壊的忘却を抑止するために、 prior-preservation lossというのを使う。"a photo of a man"で元モデルが生成した画像を、"a photo of a man"で生成させるよう、そいつも学習データに使う。
簡単だね。
後続研究
LoRAとかが今よく使われてる印象だけど、計算時間や生成物がデカくてもいいならDreamBoothの方が品質が良いという説もある?要出典
OSS実装
色々あるが、huggingface/diffusersのexampleのやつが、メモリ節約方法などのオプションが色々実装されていて一番良さそうだった。