見出し画像

NovelAIの追加学習でウマ娘の勝負服再現を目指す。v1-2

 ちょっと前にウマ娘のイラストをいっぱい学習させましたが、いろいろ工夫してもう一回やってみます。

変更点

あすぺくとれちおばけっちんぐと解像度引き上げ

 前回は全てのイラストを512×512になるようリサイズ・黒背景でパディングしていました。今回はいくつかのアスペクト比(bucket)を利用する手法を使いました。また解像度も768×768に引き上げています。これにより、総ピクセル数が正方形の画像では2.25倍、多分一番多い3:4くらいの画像だったら3倍くらい上がっています(黒背景を除けば)。

この手法を使ったNovelAIによる説明記事。

aesthetic scoreによる学習用画像厳選

 Waifu diffusion v1.4でおそらく使われるaesthetic scoreによる厳選を行っています。

 でもこのスコア、人間の目でみたらちょっと微妙じゃないかあ?という感じがします。アニメイラストに特化して学習したとありますが、良い絵が低い点数になることも全然あります。逆に背景とかがすごいキレイだけどキャラクターの特徴を学ばせるには向いてなさそうな絵が上位にきたりします。グレースケールの画像を取り除くといった効果はありそうですが、検索タグを工夫すればできる話な気がします。
 スコアは0から1で表します。二値分類として学習してるっぽいので、真ん中に谷ができるような分布になります。今回は42000枚をbucketに合うようresizeしてから採点しました。閾値を0.9としたら15600枚になりました。

 Waifu diffusion v1.4では1回厳選せずに学習して、そのあと厳選したデータセットで再学習する予定みたいですね。

latentの事前計算

 前回の記事でやった、画像をあらかじめVAEのエンコーダーで潜在変数にしておくやつです。学習時間の節約と、学習用データセットの容量削減にもなります。Danbooruから画像を引っ張って、bucketに合うようリサイズして、aestheticで厳選して、latentにするという流れを同時に行っています。画像はキャッシュに保存されるだけで、ディスクに保存されるのはlatentなので、倫理的な問題がいくらかましになる・・?まあVAEデコーダーを使えばほとんど元通りになるみたいですが、こういう場合でも違法ダウンロードになるのでしょうかね?私が使っているPaperspaceというサービスでは50GBの容量制限があるので、データセットの容量削減も助かります。15600枚では2.1GBくらいになります。

CLIP最終層のスキップ

 今まで特に意識してなかったのですが、NovelAIはこうしてるので、ファインチューニングするときもこれに合わせた方がよさそうです。これで何でよくなるのか分かりませんが。

追記:Unconditional Generation

 Waifu diffusion v1.4で使われる新手法で、学習中に一定確率で画像の説明文を空文にすることで、短いプロンプトでもよい結果がでるようにすることのようです。実はこの設定は切るつもりだったのですが、忘れていました。

 https://gist.github.com/harubaru/313eec09026bb4090f4939d01f79a7e7

学習概要

 約15600枚を20エポックやりました。学習時間はA6000で18時間くらいでした。前回ウマ娘の画像を学習したときは、40000枚を10エポックやってA100で14時間くらいだったみたいですね。おそらくA100でやれば同じくらいの学習時間でできそうなので、かかるコストは変わらなそうですかね。学習用画像の厳選、アスペクト比の調整や解像度上昇と、工夫点のほとんどは学習用画像の質を上げる方向ですね。質vs量の戦いといってもよさそうです。

学習結果

 前回のプロンプトを参考にやってみます。ネガティブプロンプトはNAIのデフォルトのやつにgrayscaleとかtracen school uniformとかそこら辺適宜入れてます。とりあえず前回もやったキャラから。画像はうまくいった1枚しかあげないですが、複数枚作成して感じた傾向を書いていきます。

サイレンススズカ

silence suzuka,umamusume,solo,running,sailor coller,skirt,bowtie,gloves,pantyhose,puffy sleeves

  え?すごいな。衣装についてはほとんど突っ込みどころがないんじゃないでしょうか。ただこうなるのは何十枚に一度くらいです。色違いスズカさんみたいのがいっぱいでてきます。

ダイワスカーレット

daiwa scarlet,umamusume,solo,hand on hip,horse tail,juliet sleeves,layered skirt,white footwear,thigh boots,twintails,zettai ryoiki

 まあ前回のモデルよりはいい感じです。スカートの白い部分が難易度高すぎです。

トウカイテイオー

tokai teio,solo,standing,ponytail,cape,gloves,two-tone jacket,white skirt,epaulettes

 前回のモデルよりははるかにマシですが、難しいです。袖が青くなっちゃいますね。あとなぜかニーソ履くことが多い。ネガティブプロンプトにいれてるんですが。

マヤノトップガン

mayano top gun,umamusume,salute,solo,open jacket,white shorts,navel,zettai ryouiki,one eye closed

 8枚作っただけで終わりました。前回も結構できてましたが、エンブレムに目をつぶればかなり簡単です。衣装が特徴的(他と似てない)ということと、勝負服の投稿割合が多い(統計はとってないけど)ことが要因だと思います。この勝負服いいですよね。

ミホノブルボン

 前回よりうまくいかないので画像なしですT q T。ただし髪型や表情はかなり改善していました。理由はよくわかりませんが、勝負服がaesthetic scoreで低く評価されがちになってるとか・・・?

アグネスタキオン

agnes tachyon ,solo,labcoat,yellow sweater,pantyhose,necktie

 前回もかなり再現できていたので勝負服に関しては特になにもないです。ただ表情は明らかにタキオンっぽくなりました。まあ前回みたいなコテコテの萌えキャラタキオンも好きですけどね。

 ここからは前回無理だったキャラとかをやっていきます。

セイウンスカイ(制服)

seiun sky,umamusume,solo,short hair,horse tail,tracen school uniform

 一番好きなキャラなのですが、勝負服は無理そうなので制服で妥協しました(二回目)。ただし今回は表情や髪型はかなり再現できてます。というか空がきれいですね。

セイウンスカイ(チアネイチャ)

seiun sky,umamusume,solo,roar yell! tracen academy cheerleading squad, blue jacket,red bow

 勝負服を再現したいのに勝負服だけのデータセットを用意しないのは、こういうこともできるモデルにしたいからです。まあちょっと再現度は微妙ですけどね。この衣装に関しては、前回モデルの方が画像数を確保できてた分再現度が高いです。

スペシャルウィーク

 前回から変わらずだめです。他のキャラクターの特徴ばっかりでてきます。マックイーンとかグラスが多いですね。前回は名前のせいにしましたが、主人公補正により他のキャラと混じるイラストが多いことが原因かも・・?soloタグで検索するべきなのかなあ。プロンプトで髪型やらなにやらを指定してあげれば、そこそこうまくいくと思いますけど、私がやりたいのはそういうことではないので。

ナイスネイチャ

nice nature, umamusume, solo, collared shirt,white sleeves, horse tail,black dress, horse girl, striped bow,red hair,simple background,striped bowtie, twintails, multicolored hair

 前回オチ担当にしましたが、上で話した通りプロンプトをがんばればそこそこ再現はできます。今回は学習中のimage logでたまたまナイスネイチャの画像があったのを見て、そのプロンプトを参考にやってみました。ただ髪色とか髪型とかそういうのを指定しなくてもいいようにしたいですよね。

umamusume,solo

umamusume,solo

 前回もやった実験。前回みたいな面白画像集にはなってないですね。なんか真っ黒な画像もありますが、セーフティチェッカーはないはずなんですけど。
追記:後から気づきましたが、前回よりいい感じなのはうんこんでぃしょなる生成のおかげかもしれないですね。

まとめ

 前回より表情、髪型は大きく改善されました。勝負服も一部のキャラを除いて再現しやすくなったと思います。ただし学習データ量の問題で再現できないキャラや、名前そのものに意味が強すぎて再現しづらい問題は解決してません。まあ解決策を講じてないので当然ですが。