StableDiffusionでキャラを描いていると、 顔や髪の長さはちょうどいいのに、 髪の色だけ気に食わない!と言うように、 色だけ変えたいときは良くありますよね。
でも、プロンプトで髪の色を追加したり、 強調すると顔も変わってしまうことも…
Inpaintなどで髪を塗りつぶすのも面倒だし・・・
そんな時のために今回は「Lineart」という機能を使って、 絵の造形を変えることなく色を変更する方法を紹介します。
結果
・キャラの構成を変えずに、色だけ変えることが可能
・パラメータによっては線画になっていない部分なども影響を受ける
・キャラクターそのまま構図を変えたものも出力できる
この記事を読むと
線画はそのまま、色だけ変えることが出来るようになります。
※記事内に広告が含まれています。
線画はそのままで色を変更する方法
今回使用する方法はControlNetの機能である「Lineart」を使用した方法で、色の変更を行います。
これはtxt2imgを使用して画像を生成していきます。
内容は一度線画にして、改めてそこに彩色して絵を作成していきます。「絵(カラー)⇒線画(白黒)⇒絵(カラー)」という手順になります。
そのため、元の画像から大きく絵を変えずに色を変更することが出来ます。
実はControlNetの機能には、「Lineart」の他にも「canny」や「scribble」といった似た機能があります。
しかし確認してみたところ、個人的には一度Stable Diffusionで描いたキャラクターの色を変えるならば、「Lineart」が一番精度が高いです。
そのため今回は「Lineart」のみを使用して、色を変更しています。
ただし「canny」や「scribble」も水彩画など、絵によっては「Lineart」よりも優秀な場合もありました。
そのため、悩んだときは全て使ってみて、より自分に合う物を使ってください。
微妙な差なので、自分の感性にあう方を使用した方が良い作品ができると思います。
人間の感性って大事…
今回は色を変えるだけですが、髪を短くしたいなどの形状ごと変えたいのであれば、Inpaintを使用するとより好みの画像が出力されるので、気になる方はこちらも覗いてみてください。
「Lineart」のインストール
ControlNetがインストールされていれば、その中にすでに含まれています。
ただしControlNetをインストールしただけでは使えず、専用のモデルをダウンロードする必要があります。
ここでいうモデルは絵の学習モデルではなく、Lineart用のモデルになります。
以下のHuggingFaceから、ダウンロードできます。
対象のモデルは「.pth」のモデルになります。
https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main
今回は「Canny」を使いたいのでモデルの後ろにその名前がある「control_v11p_sd15_canny.pth」
「Lineart」用に「control_v11p_sd15_lineart.pth」「control_v11p_sd15s2_lineart_anime.pth」をダウンロードします。
これらのモデルは、ControlNetの下の部分で選択するモデルになります。
ダウンロードしたファイルは自身がインストールしたフォルダから、「stable-diffusion-webui > extensions > sd-webui-controlnet > models」のフォルダに保存します。
これで準備は完了です。
【検証】実際にLineartを使用して、色を変えてみた
今回は女の子キャラに対して、色を変えていきたいと思います。
基準画像の生成
わかりやすく下記のような女の子の画像を出力して、変化を確認してみます。
今回の設定としては下記になります。
部位 | 設定 |
髪 | 黒髪 |
ロングヘアー | |
服 | Tシャツ |
白い服 |
使用するプロンプトはこちらを使用しました。
プロンプト
masterpiece, front shot, beautifully painted, girl, young,20 years old, medium long hair, straight hair
,beautiful black hair
,white t-shirts
,shiny hair, (detailed cute anime face)+++, light smile, white skin
,(white background:1.3)
,create a blank space above the head
ネガティブプロンプト
flat color, flat shading, nsfw, retro style, poor quality, bad face, bad fingers, bad anatomy, missing fingers, low res
下記のような女の子が生成されましたので、ここから調整していきます。
準備
ControlNetの中で、下記の画像の通りに設定していきます。
1.「Enable」にチェックを入れる。
2.「Pixel Perfect」にチェックを入れる。 ←忘れがちなので注意
3.「image」に元となる絵をドラック&ドロップで挿入する。
4.「ControlType」を「Lineart」にチェックを入れる。
5.「Preprocessor」がLineartになっていることを確認する⇒アニメキャラであれば初期は「lineart_anime」が個人的にはオススメです。
6.「Model」がLineartになっていることを確認する
7.各パラメータを設定する(以降の記事を参考にしてみてください)
出力結果
下記の通り、服の色と髪の色を3パターン変更して確認します。
プロンプトも下記に合わせて、Gold hairやBlack T-shirtsなどに変更して実行します。
デフォルト | 1パターン目 | 2パターン目 | 3パターン目 | |
髪 | 黒髪 | 金髪 | ピンク髪 | 水色の髪 |
ロングヘアー | ロングヘアー | ロングヘアー | ロングヘアー | |
服 | Tシャツ | Tシャツ | Tシャツ | Tシャツ |
白い服 | 青い服 | 黒い服 | 緑の服 |
パターン1 金髪、青い服
パターン2 ピンク髪、黒い服
パターン3 水色髪、緑の服
絵の構成は変わらないまま、髪と服の色が変わりました。
ただ瞳の色に関してはプロンプトに含めていなかったため、髪の色などに合わせて学習モデルから設定されました。
また洋服についても下記の通り、Lineartで抽出した線画を見ると、胸元には何の線もないため絵柄が様々なものに変化したと推測できます。
もし柄を付けたくなければ無地であることをプロンプトに入れると良いでしょう。
また今回の線画を見ると鼻の部分が描かれておりません。
正面から見た時の鼻は、キャラの要素としては弱いですが、口や眉など、キャラクターの個性を作るうえで重要なパーツが消えていたら、自身で書き足す方が生成誤差が少なくなります。
パラメータを変更した時の出力結果
ControlWeightを変更した時
ControlWeightを1~2に変更したした時の出力結果を確認してみます。
値を大きくするとちょっとした線画部分の影響を強く受けて、最終的な彩色にも影響しています。
特に前髪など、光の当たり加減程度の部分に対して黒髪に変化しています。
また首や鎖骨周りの影の感じも変化しています。
値としては1以下で様子を見てから、もっと影などを付けたい場合に上げていくと良いかもしれません。
ControlWeightを変更した時
Starting Control Stepを0.1~1に変更した時の出力結果を確認してみます。
このプロンプトでは、値を大きくすると絵が元の画像から離れていきました。
また髪の量が増えるなど、線画にない部分の書き足しなども見られました。
そのため元の絵と同じ構図で出力する場合は、0.2以下の値にすると良いでしょう。
また値を0.35以上にすると構図が大きく変化してしまいました。
逆に似たキャラで様々な構図を確認したい場合は有用かもしれません。
※なぜかTシャツの中のキャラも鮮明になっています。
0.4の場合
ControlWeightを変更した時
Starting Control Stepを1~0.1に変更した時の出力結果を確認してみます。
こちらの値は先ほどとは違い小さくすると、元の画像から離れていきました。
先ほど同様、髪の量が増えるなど、線画にない部分の書き足しなども見られました。
そのため元の絵と同じ構図で出力する場合は、0.3以上の値にすると良いでしょう。
また値を0.2以下にすると構図が大きく変化してしまいました。
値を小さくした時に、構図の変化に対してキャラの崩壊が少ないと思います。
0.1の場合
Preprocessor Resolutionを変更した時
Preprocessor Resolutionを 512に変更した時の出力結果を確認してみます。
プリプロセッサ(前処理)を行って生成する下処理画像の解像度であり、基本的には正方形になります。
「Enable」横の「Pixel Perfect」にチェックを入れることで入力を省略することができるため、正方形以外はチェックしておいた方が良いと思われます。
Preprocessor Resolutionの値は、「Pixel Perfect」のチェックを外すと値を入力できるようになりますので、チェックを外して手動で変更させてください。
元のサイズに対して2倍程度までは綺麗になっていくが、それ以降はそこまで大きく影響はありませんでした。
そのため、プロンプトとの兼ね合いを見て2倍程度までの数字を入れるか、チェックを入れておいた方が良い画像になります。
「Pixel Perfect」にチェックを入れた場合(Preprocessor Resolution値は512)
元々の画像が512×640であるため、大きい変化はありませんでした。
そのため、作成する画像サイズが良く変わる場合は、サイズに合わせるのを忘れないようにチェックを入れておいた方が良いでしょう。
まとめ
今回は『Lineart』を使用して、絵を変更しないまま、色を変更する方法について紹介しました。
改めて3行でまとめると…
・キャラの構成を変えずに、色だけ変えることが可能
・パラメータによっては線画になっていない部分なども影響を受ける
・キャラクターそのまま構図を変えたものも出力できる
StableDiffusionでは線画として見た時は良いのに、彩色して絵にすると思った通りにならない。ということは良くあります。
此の時に色味に関しては様々なパラメータで調整するしかないのですが、同時に線画も変わってしまい結局1からやり直しになる。なんてことも…
そんな時に今回紹介したLineartを使用することで、線画を変えずに彩色だけ変更することが出来ます。
もしかしたらあなたのキャラも少し色味を変えるだけで全然イメージが変わってくるかも!?
是非色々試して良いキャラ作成の参考にしてください。
また今回のLineartは次回以降で紹介する「自分で描いた絵の彩色」や「写真から絵を作成」などでも活用していきますので、是非次回の記事をお楽しみに♪
StableDiffusionにお勧めのグラボ
ここまでの記事を読んでStableDiffusionを始めてみたいと思ったけど、どれを買ったか良いか分からない人向けに私の使っているグラボを紹介します。
私が使用しているグラボはNVIDIA GeForce RTX3060 搭載 グラフィックボード GDDR6 12GBになります。
StableDiffusionで絵を生成するときは、PCのCPUやメモリよりもグラボの性能が重要です。
StableDiffusionではVRAMが12GB以上であることが推奨されていますが、普通のゲーム用のグラボでは8GBのものが多いです。
経験上、一回のプロンプトで一発で望みの絵が出ることは少なく、10枚ぐらい出力してそこから近づけていく作業をします。
しかしVRAMが低いと1枚を生成する時間が長くなってしまいます(完全にVRAM依存ではないですが)
1枚の生成する時間が長いと、最終的なゴールまでの時間も多くかかってしまうので、推奨要領である12GBのグラボを買うことをお勧めします。
VRAMが低い=一度に計算できる数が少ない=生成速度が遅い
そのため解像度の高い絵を生成するのに時間がかかるだけでなく、生成できない可能性もあります(2GBや4GBなど)
Controlnet等、拡張機能を複数使用する場合やLora等の学習を行う場合は、より顕著にVRAMの差が出ます。
そのため単純にAIで出力してみたい。というだけでなく、その一歩先で色々やってみたい方は是非12GB以上を購入してみてください。
ちょっと試すだけなら、下記のような無料AI画像生成サービスを使うのも良いです。
コメント