TadaoYamaokaの開発日記

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

ControlNetを「いらすとや」で学習する

先日試したControlNetの学習を「いらすとや」のデータセットで学習させてみた。

データセット

以前にStable Diffusionの追加学習を試したときに収集したいらすとやの22891枚の画像を使用した。
いらすとやの画像説明文に加えて、wd-v1-4-vit-taggerを使用して、確率が0.5以上のタグを付与した。

スケッチ画像は、データローダでOpenCV2のCannyを使用して動的に生成した。

ベースモデル

ベースモデルには、Stable Diffusion 1.5と、Waifu Diffusion 1.3の2パターンを使用した。

Stable Diffusionベースの結果

Stable Diffusion 1.5をベースモデルとして学習した結果を示す。

データセットにある画像

スケッチ

プロンプト:a cat
生成例

データセットにある画像のスケッチの場合、いらすとや風に着色できている。

データセットにない画像

スケッチ

プロンプト:a cat
生成例

書き込みが細かいスケッチの場合、違う雰囲気になる。
生成例の左上はそれなりに自然に着色できているが、それ以外は破綻している。
足の爪の線はいらすとやの特徴がでていそうである。

人物

スケッチ

プロンプト:a girl
生成例

口の描き方や、生成例の左下の目の描き方は少し特徴が表れているが、全体的に破綻が目立つ。
手のあたりの着色は完全に誤っている。これは、いらすとやに手の塗り方の例がないためと思われる。
データセットから離れた画像に対する着色は難しいようである。

損失

なお、14エポック学習した際の損失は以下の通りであった。

Waifu Diffusionベースの結果

Waifu Diffusion 1.3をベースモデルとして学習した結果を示す。

データセットにある画像

スケッチ

プロンプト:a cat
生成例

Stable Diffusionベースの場合と同様に、いらすとや風に着色できている。
生成例によっては頭と胴体がちぐはぐなところはある。

データセットにない画像

スケッチ

プロンプト:a cat
生成例

Stable Diffusionベースより破綻が少なくなっている。

人物

スケッチ

プロンプト:a girl
生成例

Stable Diffusionベースよりクオリティは上がっているように見える。
元がアニメ調のイラストなので、Waifu Diffusionの方がうまくいくようだ。

DeepBooruタグ

プロンプトをInterrogate DeepBooruで生成した場合も試してみた。

プロンプト:1girl, bangs, bare_shoulders, black_hair, blush, bookshelf, brown_eyes, brown_hair, curtains, frills, from_side, hair_ribbon, holding, long_hair, looking_at_viewer, red_ribbon, ribbon, sleeveless, smile, solo, two_side_up, upper_body

ところどころ破綻しているが、塗り方は上手くなっているように思える。

損失

なお、12エポック学習した際の損失は以下の通りであった。

まとめ

ControlNetをいらすとやのデータセットで学習させてみた。
結果、いらすとやのスケッチに対しては、いらすとや風に着色することができた。
いらすとや以外については、着色の特徴は表れているが、いらすとやの画風から離れるほど破綻が目立つようになった。

ベースにするモデルをStable Diffusionにした場合とWaifu Diffusionにした場合では、比較的Waifu Diffusionをベースにした方が質が高くなった。
これは、Waifu Diffusionがイラストを多く学習しており、いらすとやの画像により近い特性があるためと思われる。
ControlNetを学習する際は、元のモデルが着色したい画像に近い画像を生成できるモデルをベースにした方が良いと言える。

次は、イラストのデータセットでイラストの着色モデルを学習してみたい。