Stable Diffusionのファインチューニングで最近主流になりつつあるのが、LoRA(Low-rank Adaptation)である。ハイパーネットワークと同様にベースのモデルに追加のネットワークをくっつける仕組みであり、モデルのサイズが小さいながらDreamBoothに匹敵する再現性を持っているとまで言われている。複数の実装があるが、今回はKohya氏の実装を使用する。
Windows上で環境構築を行うことが前提となっているが、あいにくVRAMが4GBしかないのでGolabにPython 3.10を無理矢理入れて動かすことにした。(デフォルトの3.8だとエラーが出てしまった)
学習方法は2通りあるのだが、今回はタグ付けが不要なDreamBooth手法を採用した。
学習データはこの6枚。
400ステップほど学習を回したが、数分で完了した。どの程度学習させるのがベストなのかはまだ知見不足だが、学習速度はかなり速いと感じた。
Anything v3.0にLoRAを適用して生成してみた結果がこちら。
10次元のLoRAモデルで23MB程度のサイズとなったが、ちゃんと特徴を捉えることができていた。
Stable Diffusionのモデルだけで100GBくらいHDDの容量を食っているので、どんどん普及してほしいなぁ。
Colabのノートブックとモデルは公開しておくので自己責任でご自由にどうぞ。