いいかい?Stable Diffusion、これがオグリキャップだよ。 オグリチューニング

地方競馬から中央競馬に挑みそのレベル差を物ともせず並み居る強豪に勝利して大ブームを起こしたすごい馬なんだよ

 

というわけではなく

 

オグリキャップだ

 

新しいコンテンツで英語圏では未展開ということで当然Stable Diffusionは知らない*1オグリキャップというウマ

前回の記事で触れたいらすとやでのファインチューニングはStyle(画風)のファインチューニング

今回はsubject(主題)、Object(物体)のファインチューニングでそれそのものを学習させるのが意図

 

やり方ガイド

https://towardsdatascience.com/how-to-fine-tune-stable-diffusion-using-textual-inversion-b995d7ecc095

 

使ってるGoogleColabノート

https://colab.research.google.com/drive/1MggyUS5BWyNdoXpzGkroKgVoKlqJm7vI?usp=sharing

ここにもガイドを細かく書かれてるのでよく読む

ファインチューニングはVRAM20GB推奨ということでローカルでは動かない

Colabで割り当てられやすいGPUも20GBに満たないがそれ用の調整についてもノート内にかかれている

 

 

用意する画像の基準

  1. 512x512サイズ
  2. 文字やエフェクトなど学習対象のオグリキャップ以外のノイズになるものはなるべく入れない
  3. 縦を方向を合わせる
  4. 画像の枚数は3~5個
  5. Subjectは同じモチーフを別角度で描写したもの
  6. Styleは配色と画風が統一されたもの

基準は推奨ってことなんで守らずにいろんなパラメータにして遊べ

画像サイズはでかいと動かなくなるのでちゃんと合わせるのが最低限ぐらいで大丈夫

きれいに出力されるかは保証しない

 

好きな漫画家の漫画を学ばせて画風を再現した絵を書いてもらおうとか思っても俺には無理だった

コマ割りと吹き出しが学習には邪魔になる

元のモデルデータも透かし入り画像は学習させていない

AI学習禁止なんて言葉もTwitterにトレンド入りしたりしたが出来上がりの画像にサインを入れるって事は結構な抑止効果にはなる

 

学習させたデータはPinterestでオグリキャップで検索したら出てくる上記の絵に構図が似たものとか素行の悪いデータを使用

別の構図のも使ったしセリフありやデフォルメバージョンも使った

枚数も多ければ多いほうが学習として質が良くなるというわけでもないが推奨量の何倍も使ったりもした

 

チューニングベース

元となる学習データを自分で用意したデータを用いて尖らせていくのがファインチューニングなのでベースの違いで結果も当然違う

 

stable-diffusion-v-1-4-original

基本のやつ(以下SD14)とfull-ema2(以下fullema)種類がある

実際どう違うのかは今度調べる*2

 

trinart_stable_diffusion

TrinArtと呼ばれるアニメ漫画特化したファインチューニング済みモデル

 

今後もっとモデルのckptファイルは色々出てくると思うのでこの辺を色々変えてみたら面白くなる

 

 

パラメーター

よくわからんがガイド参照

v1-finetune.yamlをいじって色々変えてみるといい

 

every_n_train_steps: 5000

batch_frequency: 5000

学習したデータとそのデータで作成された画像の出力間隔 5000step

デフォルト500だが頻度が高すぎるのでこれ

推奨のstep数は5~6000で十分という話ではあったがとりあえずいっぱいステップ刻む

 

 

initializer_words: ["Oguri Cap","OguriCap","Uma Musume","UmaMusume","Subject"]

複数の語句を使って学習する場合の変更

色んな要素こうするといいらしいが、それによって何が変わるのかわからない

推奨は一つの語句

 

num_vectors_per_token: 8

何か知らないがこれを8にすると早くなるらしい

 

 

    batch_size: 1
    num_workers: 16

Google Colab Pro+でもVRAM20GB以上のGPUはなかなか割り当てられないのでバッチザイズは2から1に減らしてメモリー消費を抑える必要がある

 

 

結果

注意としては使う画像の枚数やチューナーのパラメーターとか正確に条件を揃えて学習させたわけではない

あくまでどれだけオグリキャップっぽいのが出てくるかという参考に崩れがひどくなくてオグリキャップ要素があると感じたものをより抜きで

 

 

SD14 176000 step

SD14 166000 step

SD14 24000 step

SD14 22000 step

SD14 4000 step

fullema 20000 step

fullema 50000 step


貴様はオグリキャップではない!

勝手に生み出しといてガンダム判定機の如くキレてる理不尽さ

が、自分の手で書こうとしてもここまでオグリキャップに寄せられるかは自信ない

 

 

人間にとっては単純な構造の母の形見*3の髪飾りはAIには解釈しにくいのかヘアスタイルと一体化してたり

トレセンの制服と勝負服両方を食わせた結果勝負服の色合いが変わったり

狙いど真ん中のセッティングはなかなか出ない

 

stepを見ると推奨通り回数を増やせばいい結果になるとは限らない

気に入ってるのがあればそのステップ数で作られたチェックポイントのptファイルを統合(マージ)して更に狙いを絞ることもできるみたいだ

まだ試してないからその認識で合ってるかは知らない

 

 

 

 

*1:laion-aesthetic-6pls: images: 12,096,835 rows SDはここで検索できる画像の0.5%を学習させている

*2:誰か教えてください

*3:バリバリ元気です。