【Diffusers】DreamBoothとLoRA(Low-Rank Adaptation)って共存できるの?

はじめに

前回DreamBoothとLoRA(Low-Rank Adaptation)を別々に実行しました。
touch-sp.hatenablog.com
現在、Diffusersではtext encoderのファインチューニングができるLoRAは実装されていません。
github.com
そこでDreamBoothでtext encoderのファインチューニングをした後にLoRAを実行したら良いのではと考え、実際にやってみました。

方法

自前のロボット写真は44枚用意しました。

正則化画像としてロボット写真を800枚用意しました。

結果

砂浜がちゃんと描画されているのが成功している結果と思います。

砂浜がちゃんと描画されていないのは過学習と考えられます。

とくに斜め線が入っているのはフローリングにロボットを立たせて写真を撮ったためです。そのフローリングが描画されています。

DreamBoothでの事前学習なし

LoRA 800steps


LoRA 1200steps


LoRA 1600steps


LoRA 2000steps


DreamBoothで400stepsの事前学習

LoRA 800steps


LoRA 1200steps


LoRA 1600steps(今回これが一番ベストかな?)


LoRA 2000steps


DreamBoothで800stepsの事前学習

LoRA 800steps


LoRA 1200steps


LoRA 1600steps


LoRA 2000steps


DreamBoothで1200stepsの事前学習

LoRA 800steps


LoRA 1200steps


LoRA 1600steps


LoRA 2000steps


結論(というより個人的感想)

DreamBooth単独の結果はこちらです。LoRAを追加すると結果は良くなる印象です。


DreamBoothによるtext encoderの事前学習はLoRA単独より結果は良くなる印象です。


ただし事前学習もやり過ぎ注意です。


今回の場合はDreamBooth 400steps、LoRA 1600stepsあたりがベストでした。