TadaoYamaokaの開発日記

個人開発しているスマホアプリや将棋AIの開発ネタを中心に書いていきます。

Stable Diffusionにdanbooruデータセットを追加学習する その2

前回danbooruデータセットを使用してStable Diffusionに追加学習を行う手順について記載した。

今回は、追加学習したモデルで、生成する画像がどう変わるか確認する。

追加学習の結果

98エポックまで学習を行った。

エポック数とステップ数

エポック数とステップ数の関係は以下の通り。
訓練データは、9685枚の画像で、バッチサイズ4で、4GPUで学習しており、1エポック=605ステップである。

元のStable Diffusionのモデルが6エポック(470kステップ)学習済みのため、6エポックから始まっている。

訓練損失


評価損失

評価損失は安定しておらず、8、14、68エポックで最小を更新している。

生成画像確認

8、14、68エポック目のモデルで、promptを「cat」として猫の画像を生成してみた。

元のStable Diffusion


epoch=8


epoch=14


epoch=68


※職場での閲覧に不適切な画像も生成される場合もある

Waifu Diffusion

8エポックのモデルでは、スタイルがイラスト調に変わっているが、猫=4本足でしっぽがある動物という概念は残っている。
14エポックのモデルでは、よくわからない画像が生成されるようになっている。
68エポックのモデルでは、猫=動物の概念を忘れてしまい、猫=猫耳になってしまった。
Waifu Diffusionのモデルは、写真ぽさが残っている。


今度は、訓練画像に含まれていそうな人物の画像を生成してみた。
プロンプト:「short hair girl reading with glasses」

元のStable Diffusion


epoch=8


epoch=14


epoch=68


Waifu Diffusion

8エポックのモデルでは、イラスト調でそれなりの質の画像が生成されている。
14エポックと68エポックのモデルでは、読書の概念を忘れかけており、生成画像の質も良くない。
Waifu Diffusionのモデルは、写真とイラストの中間くらいになっている。

考察

追加学習は、学習しすぎると、元のモデルにあった概念を忘れてしまう傾向が確認できた。
Waifu Diffusionのモデルと比べると、8エポックのモデルでも追加学習の特徴が強く現れている。

Waifu Diffusionは、Danbooruの画像を56000枚使用して、学習率5.0e-6で、4エポック学習している。
また、画像は、CLIP Aesthetic Scoringが6以上のものを使用している。
CLIP Aesthetic Scoringは、画像の審美を予測するモデルであり、Stable Diffusionでも使用されている。

今回行った学習をWaifu Diffusionと比較すると、画像枚数が17%くらいしかなく、CLIP Aesthetic Scoringも使用していないため、生成される画像の質が高くないことが要因となったと考える。
また、学習率はデフォルトの1.0e-4で学習していた。これも、過学習の原因になったと考えられる。

まとめ

danbooruデータセットで追加学習したモデルで、生成した画像がどのように変化するかを確認した。
追加学習により生成される画像が変化することが確認できた。
また、学習しすぎると、元の概念を忘れてしまう傾向があることが確認できた。

Waifu Diffusionと比べると、追加学習の特徴が反映され過ぎてしまった。
追加学習する際は、学習率を小さくして少ないエポック数で学習する必要がある。

Waifu DiffusionではCLIP Aesthetic Scoringを使用しているが、今回の学習では使用していなかったため、使用した場合にどう変化するかも別途検証したい。