「Lineart」を使ってAIでキャラの色だけ変える方法

「Lineart」を使ってAIでキャラの色だけ変える方法 AI/Stable Diffusion

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以下で様子を見てから、もっと影などを付けたい場合に上げていくと良いかもしれません。

1.0

1.5

2.0

ControlWeightを変更した時

Starting Control Stepを0.1~1に変更した時の出力結果を確認してみます。

このプロンプトでは、値を大きくすると絵が元の画像から離れていきました。

また髪の量が増えるなど、線画にない部分の書き足しなども見られました。

そのため元の絵と同じ構図で出力する場合は、0.2以下の値にすると良いでしょう。

また値を0.35以上にすると構図が大きく変化してしまいました。

逆に似たキャラで様々な構図を確認したい場合は有用かもしれません。

※なぜかTシャツの中のキャラも鮮明になっています。

0.1

0.2

0.3

0.4の場合

髪の量や服の面積が増えました。

元のキャラに近いまま、手を挙げたポーズになっています。

横を向こうとしてるのでしょうか…

ControlWeightを変更した時

Starting Control Stepを1~0.1に変更した時の出力結果を確認してみます。

こちらの値は先ほどとは違い小さくすると、元の画像から離れていきました。

先ほど同様、髪の量が増えるなど、線画にない部分の書き足しなども見られました。

そのため元の絵と同じ構図で出力する場合は、0.3以上の値にすると良いでしょう。

また値を0.2以下にすると構図が大きく変化してしまいました。

値を小さくした時に、構図の変化に対してキャラの崩壊が少ないと思います。

1

0.5

0.25

0.1の場合

少しアップした画像となりました。

見下ろすような顔の向きと、口が笑顔になりました。

横を向いた状態の画像となりました。

Preprocessor Resolutionを変更した時

Preprocessor Resolutionを 512に変更した時の出力結果を確認してみます。

プリプロセッサ(前処理)を行って生成する下処理画像の解像度であり、基本的には正方形になります。

「Enable」横の「Pixel Perfect」にチェックを入れることで入力を省略することができるため、正方形以外はチェックしておいた方が良いと思われます。

Preprocessor Resolutionの値は、「Pixel Perfect」のチェックを外すと値を入力できるようになりますので、チェックを外して手動で変更させてください。

元のサイズに対して2倍程度までは綺麗になっていくが、それ以降はそこまで大きく影響はありませんでした。

そのため、プロンプトとの兼ね合いを見て2倍程度までの数字を入れるか、チェックを入れておいた方が良い画像になります。

512

1024

2048

「Pixel Perfect」にチェックを入れた場合(Preprocessor Resolution値は512)

チェック無し(値:512)

チェック有り

元々の画像が512×640であるため、大きい変化はありませんでした。

そのため、作成する画像サイズが良く変わる場合は、サイズに合わせるのを忘れないようにチェックを入れておいた方が良いでしょう。

まとめ

今回は『Lineart』を使用して、絵を変更しないまま、色を変更する方法について紹介しました。

改めて3行でまとめると…

・キャラの構成を変えずに、色だけ変えることが可能

・パラメータによっては線画になっていない部分なども影響を受ける

・キャラクターそのまま構図を変えたものも出力できる

StableDiffusionでは線画として見た時は良いのに、彩色して絵にすると思った通りにならない。ということは良くあります。

此の時に色味に関しては様々なパラメータで調整するしかないのですが、同時に線画も変わってしまい結局1からやり直しになる。なんてことも…

そんな時に今回紹介したLineartを使用することで、線画を変えずに彩色だけ変更することが出来ます。

もしかしたらあなたのキャラも少し色味を変えるだけで全然イメージが変わってくるかも!?

是非色々試して良いキャラ作成の参考にしてください。

また今回のLineartは次回以降で紹介する「自分で描いた絵の彩色」や「写真から絵を作成」などでも活用していきますので、是非次回の記事をお楽しみに♪

コメント

タイトルとURLをコピーしました