見出し画像

【アプリ開発日記58週目】自分の絵柄で様々なキャラ絵を作ることはできるか?〈SD中編〉

 描きっぱなしにしていたイラストを、前回作成した StableDifusion+DreamArtist に放り込んでいきます。

 先週、自宅PCにstable diffusionを組み込んで自分のイラストを機械学習させていたのですが、読み返していて……

「あれ、これ途中からimg2imgと同じ事やってない?」

 そう、本来の目的は「自分がもう1人いて絵を描いている」であって、「同じキャラを描く」ではありませんでした。

 普通のimg2imgではプロンプトだけで自分の画風を安定して維持させるのは難しそうなので、その点はやはりDreamArtist、あるいはembeddingは必要だったと思います。

 嬉しさのあまりしばらくして気付きましたが後の祭り。同じキャラであればimg2imgを使えば普通に出来ていたのです。そこで改めて「自分の絵柄を保ちながら別のキャラを描いて欲しい」をやってみます!

※2023/3/9追記:57~59週目の内容を、備忘録としてまとめました。「自分の絵を学習させたい!」の結論が気になる方は、以下の記事をご覧ください!

1,複数の絵を学習させる

 前回は1枚のイラストをベースにしていました。今回はより絵柄を似せるため、以下の8枚の自分で描いたイラストとanything_v4をもとに学習モデルを作成してみます。特徴的なプロンプトはgirlのみにして画像を生成すると……

CFG 5.0 × 10000step

 少なくとも画風はほとんど反映されませんでした! いろいろな時期の作品や背景の有無関係なく学習させたからでしょうか。それでも、私の絵の特徴の一つであるロリ要素や露出控えめは例外なく貫いてくれたので、少なくともある程度は反映されてそうです。画風、絵の雰囲気自体も方向性は整っています。この方向性を、もっと自分のイラストに近づけたい。

 おそらく、前半5枚と後半3枚で線の細さや塗り方などが変わったので、出力された絵も前半期の細い線に引っ張られていたのかもしれません。

 ということで、後半期の3枚に絞って同じ条件で学習モデルを再作成してみると……

最近の3枚。絵柄も近い
学習中。最後まで「絵柄近づいてくれー!」と祈り続ける!笑

画像生成。果たして……

キャラが正面にいて背景シンプルなところ安定してる。目は絶対ヴエコの影響強く受けてる!
たぶん手もヴエコの影響受けてる
何を学んだ??

 全然絵柄似てないです!笑 厚塗り調なのはいいんですが、全体的に落ち着いたトーンになっています。目のコントラストもこの絵には合っていますが、元の絵が反映されているかといえばそうとも言い難い感じです。

 さて、ここまでの2つ+1つの学習モデルを作成し終えた時点で、朝6時過ぎから始めた作業も正午を回っていました。その間よくわからない用語などについて調べていたところ、今まで気づかなかった改善点があったのでメモしておきます。そして、そこにカギはありました。

2,調整・修正

1,日本語にする

このサイトに沿って進めました。

お!

2,VAEを変更してみる

この変更が一番大きかったです。これはtrain時ではなくtxt2imgで画像生成するときに関係してきます。さらには、元のイラストに合わせてVAEも変更することが再現性を高める重要なポイントな気がします。

VAEとは何ぞや?という感じだったのですが、要は

vae
出力される絵の塗り、明るさに影響する
・好きなモデルとvaeを組み合わせることができる
・界隈でよく使われてるのはwaifu-diffusionのvae。発色が良いため
 https://huggingface.co/hakurei/waifu-diffusion-v1-4/blob/main/vae/kl-f8-anime2.ckpt

https://qiita.com/peka2/items/fdef492bcae84580edf4

とのこと。同サイトの「webuiの設定を変える」に書かれていた方法に沿ってさっそく変更してみます。

この写真のように、vaeフォルダの中にckptファイルが入っています。拡張子が同じckptでも、vae用のものでないとコンソールでエラーが表示されるので要確認
無事「kl-f8-anime2.ckpt」を設定できました!

3,.ckpt→.safetensorsファイルに変更

もともと.safetensorsを使う予定だったのですが、web uiを起動しようとすると「ckptファイルがないから起動できないよ!」とエラーになっていました。この解決策は意外とシンプルで、safetensorsだけにせずckptファイルも入れておけば、無事両方使えるようになります。

両方読み込まれた! もしあれば、セキュリティ的にsafetensorsを使いたい

4,左右反転・回転

 これはこの記事を書き終えた後に気づいたので、今回は反映されていませんが…「画風を近づける」という意味では参考になるかと思ったので、HyperNetworkという別の場合ですが載せておきます。詳細は次回。

Hypernetwork training #2284
学習に使う画像は 20 枚前後で、早ければ 3,000 ステップ、遅くても 10,000 ステップ未満で学習が終わる。
画風を学習させる場合は左右反転や回転を使うと学習画像を水増しできる。

http://dskjal.com/deeplearning/hypernetwork.html

3,調整の結果

 改めて1時間と少し学習させて、上記の修正の成果を確かめてみます。今回は絵柄を優先的に反映させたいため、読み込ませる画像も一枚に絞りなおしました。

 その結果……

読み込み画像:

おおーー!!! ついに本格的に絵柄が近づき始めた!!

他にも

かなりの高率(50-75%くらい)でこれくらいのクオリティが次々と出てきます。これまでネックだった線の太さと鮮やかさ、特に髪の塗りは格段に良くなっています。横に並べて比較すると

 うんうん、いい感じですね。例えば髪ひとつとっても、描くときにこだわっていた全体グラデーション、奥の髪の薄い水色、後頭部や手前の髪に反射光(光源とは反対側の光っているところ)、なにより光が当たっているところと影の境界に置いている濃いオレンジ色のアクセント(気づくでしょうか…?笑)などが見事に反映されてます。なんなら塗り方はそろえながら一層細かく描写されてる…笑

 実はこの絵、キャラを描いて満足してしまい、背景どうしようと思いながらずっと放っていた作品なんです。去年の3月から何も変わってない…笑

 ですが、思わぬ形で背景との融合を果たしました!

 しかもこの方法だといろいろなパターンをキャラのカメラアングルに合わせて生成できるので、かなり汎用性は高いです。今まで背景から逃げ続けてきた私のような絵が趣味の人にとってはかなり衝撃的、革新的なツールになります!!

 試しに背景を自然にできるか試してみると……

一発目からすごいの出てきた! プロンプトにBackground rich in nature based on greenを加えただけです。

masterpiece, best quality, test10, girl, semi short hairstyle, Background rich in nature based on green
neg-prompt : test10-neg, lowers, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry

さらに「daytime, autumn leaves」(昼間、紅葉)を追加してみると

これも一発目。ちゃんと秋になってます! noteで表示すると顔のあたりのグラデーション部分ががたがた表示されてしまっているかもしれませんが、このあたりもきれいに出力されています。

 もうこれを表現できる語彙を持ってません、、、笑

めちゃくちゃいい。紅葉もってる!

 この時気づいた重要なポイントもメモしておきます。今日暴走に暴走を重ねているヴエコを同じ設定で生成してみると

これはこれでありですが…
まゆしぃが混じってる!

で、VAEの設定をデフォルトにもどすと

VAEでこんなに変わってたんですね、雰囲気! 元のイラストによってVAEも変更してあげるとよさそうです!

さきほどの画像をデフォルトのVAEで生成してみた結果。髪のハイライトなどは反映させつつ、全体的に落ち着いたトーンになってますね


4,絵柄を保ちつつ、他のキャラを生成する

 続いて、プロンプトでキャラの特徴を指定してみます。さきほどのイラストをベースに、新しいキャラを作ってみようという感じです。

 目指すは、以下のキャラデザラフの右の子。いつか描こうかなと思っている漫画の登場人物です(完成する気もさせる気もまるでありませんが笑)。

右側のオリキャラを再現したい。配色はまだ決まっていません

ヘッドホンしてる、活動的で明るい性格、クール、凛とした目、ツインテール、低身長、18歳、ウインドブレーカーを着てる

masterpiece, best quality, test10, girl, Wearing headphones, active and bright personality, cool, dignified eyes, twin tail, short stature, 18 years old, wearing a windbreaker, Window side of a room in a building with a nice view
neg-prompt : test10-neg, lowers, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry

としてみます。デザインの幅を持たせるため、あえて色指定などは入れていません。これで自分の画風を保ちながら新しいキャラが生まれれば成功ですね。

 さっそく生成してみると…

…ちょっと幼すぎました笑 低身長が予想以上に響いたようです。ベクトルを小さくするのもありですが、ここでは思い切って「old sister」(お姉さん)を代わりに入れてみます。すると

まだだいぶ幼いけど…笑

右下あたりが狙っているイメージに近づいてきました! ただ、もう少しスポーツやってそうで、目も少しだけ鋭い感じにしてみたいと思います。

なかなかいいの出ませんね、ツインテールだとどうしても幼いイラストが多いからでしょうか。ただ、この時「黒と青の組み合わせクールになりそう」と思ったので、髪の色暫定は決まりました。

しかし、その後も迷走し続け…

ひたすら溜まっていく
近いイメージができたものに手書きで修正を重ねていく
一度生成された画像に書き加え、img2imgで近づけていく

終いには上の写真のように手書きで修正を加えるなどしてラフのキャラを目指しましたが、納得のいかないままタイムアップ。

 最後の一か八かで真っ白のラフをそのまま放り込みましたが、髪型など特徴的な部分の再現には至りませんでした。

着色はされるっぽい! 髪型は、寄せているのは伝わるけどまだ届かない

代わりにいろいろな髪の色のキャラが出てくるので、キャラのメインカラーを決めるのにはありなのかもしれません。

一応プロンプトも反映されるみたいですね。目で分かります笑 逆にいろいろな学習モデルを作っておけば、塗りに限らず雰囲気とかの方向性も変えられそう。あと右上の髪型、今のキャラデザのよりありかも、前髪が軽い感じ

結論

  • 塗り方は維持できるが、型を外れた個性的なキャラの再現はまだ難しい

  • キャラのイメージを膨らませる場合は有効。想像にとどまらず、高速でいろいろなバージョンや配色を試せる

  • ヴエコの目が想像以上に影響力大きい

リベンジマッチ

 不完全燃焼なので、最後に多少ありきたりにデザイン覚悟のうえで「同じ塗り方でモデルとは別の新しいキャラを作る」を試してみます。服装あたりをいじればそれだけでも多少個性は出るはず…!

 ファンタジーに出てくるような緑のマントを羽織って、緑と相性のいい桜の花びらが舞う春を舞台にしてみると……

masterpiece, best quality, test10, girl looking back, brown hair, semi short hairstyle, wearing a hairpin, green cloak, smile, magnificent, Background rich in nature, spring, cherry blossom petals
neg-prompt : test10-neg, lowers, bad anatomy, bad hands, text, error, missing fingers, extra digit, fewer digits, cropped, worst quality, low quality, normal quality, jpeg artifacts, signature, watermark, username, blurry
塗り方を維持しつつモデルとは別の新しいキャラが誕生してる! 手前の花びらがもう少しぼかされていたらもっとよさそう
振り返りの動きと風になびくマントの組み合わせ(右下)めちゃくちゃ好き

いい感じに別のキャラが生まれました!

おまけ ~ポーズを指定したい~

 ここ数日話題になっている「ControlNet」も掛け合わせてみました。マウスで簡単に動かせる3Dモデルを上記の設定に加えると、ポーズ指定できるという優れもの。

 これで構図ガチャから抜け出せます!!

 他にもControlNetのさらに上位互換?的なT2I-Adapterなどまだまだ試したいものは山積みですが、今度こそ本当にタイムアップ。今後もこのテーマで日記を書くかもしれないので、その時またどんな変化が起きているか楽しみですね。

ほんとに一緒!
もちろん別の絵柄でも。このテイスト好き
複数人もできるけど、ちょっと絵崩れるかも
身体をひねった画像も! 漫画などにも応用できそうですね
以前雑に描いた髪の表現を模索するのにも役立ちそう。そしてカッコいい
もはや別絵だけど、好みの画風で好きな動き・表情をさせたいときには重宝するかも
何が起きた??

 ちなみに、ControlNetの「Preprocesser(前処理)」は「普通のイラストを棒人間に変換する」という処理なので、もともと棒人間の絵を参照したうえで「openpose」などを指定すると、むしろ全然違ったポーズが出てきます。(普通の絵でもnoneにしたほうがうまくいく場合もありますが、、、)参照の絵を棒人間にするときは「none」にしてください!

複数も対応!

おわりに

 前回、こんなことを書きました。

不思議なことに、こうやって自分のイラストを学習させて新たな絵を作っていると、久しぶりにガッツリとした手書き(PC)の絵も描きたくなってきます。AIでも何でも使って、もっとすごい作品作ってやろうと。

 AI画像生成を始めたときはもうコードの世界に行ったきりになるとばかり思っていましたが、意外とアートへの興味が再燃してくるってあるんですね。

https://note.com/churin_1116/n/n62b5edcc5eed

 それがまさに、今回一段と高まってきたように感じます。いよいよ現実的になってきたというか。本当に自分の絵柄を学習させることができた時はめちゃくちゃ感動しました。公開こそできないものの好きな絵師さんのイラストで学習データを作るとさらに上のクオリティが出来上がったので、まだまだ可能性たくさんあるなと痛感します。いつかそんな絵師さんと一緒に何か作ってみたい、きっと知らないすごい世界がある。

 自分で絵を描きながら、AIでそれをさらに何段も引き上げる。自分の絵だから(完全にというわけではないながらも)著作権を気にしなくて済むという気楽さや、絵師ではないという楽観的な側面もあるのかもしれませんが、次々と想像以上を超えた新しいインスピレーションに出会えます。「自分のキャラにはこういう背景も合ってたんだ、こんな服にするとめっちゃかわいいじゃん」などなど。

 ああ、著作権も何も、今回のイラストは二次創作でした笑笑

 今回の絵はともかく、絵を描いている人あるあるだと思うんですが、自分で創作したマイキャラたちって非常に愛着わくんですよね。この子にこれ持たせてみようとか、こんな世界歩かせてみようとか、こんな生き物と空を飛んでいたらとか、それを考えるだけでワクワクしてきます。絵を描く大きな醍醐味といっても過言ではないかもしれません。

 そこに、新たな世界が拓けた気がします。今までは描くのが難しくて持たせられなかったアイテムも、息を呑むような美しい世界も、キャラのすぐ隣のところまで。これは、もう本当にうれしいことです。

 絵を描いてきて、本当に良かった。

 ではでは!

この記事が気に入ったらサポートをしてみませんか?