生成イラスト自体を線画にすることはプロンプトやLoRAなどで簡単に出来ますが、今回紹介するのは完成されたカラーイラストを線画へ変換するやり方です。
線画に着色するなら分かるけど、完成されたイラストを線画に戻すなんて意味あるの?と思うかもしれませんが、どんな事にでも必要としている人はいます。
なのできっとこのやり方も必要としている方がいるはずです。
また、この記事ではやり方とComfyUI用のワークフローの配布まで行います。
線画に自動で着彩するやり方を記事にしました。
【イラスト】AIを使って線画を自動で着色する方法【Stable Diffusion】
必要なツールのインストール
まずは、必要な拡張機能やモデルを紹介します。
・web-ui用 拡張機能
sd-webui-controlnet
stable-diffusion-webui-wd14-tagger
・ComfyUI用 カスタムノード
comfyui_controlnet_aux
ComfyUI-KJNodes
ComfyUI-WD14-Tagger
was-node-suite-comfyui
rgthree-comfy
・共通 controlnet用モデル
control-lora-canny-rank256
一部を除き無くても出来ますが、あると格段に効率が良くなります。お好みで導入してください。使用するチェックポイント(モデル)は自由です。
また、web-ui用のcontrolnetはA1111版では必須、Forge系であればデフォルトで入っているので要りません。
それではやり方です。
スポンサーリンク
線画化のやり方
まずはweb-uiでのやり方です。
最初は「img2img」タブを開きimg2img用の画像を読み込みます。

ここでは白紙の画像を読み込ませましょう。線画にしたいオリジナルイラストではないので注意してください。

白紙画像を読み込ませたら、上のような状態になります。
次は生成時の設定です。

基本的にお好みの設定ですが、Denoising strengthは1かそれに近い値にしてください。
次はControlNetの設定です。

Enableとpixel Perfect、Upload independent control imageにチェックを入れます。
読み込む画像は線画にしたいオリジナルイラストを選択してください。
Preprocessorはcannyを選択し、Modelにはcontrol-lora-canny-rank256を選択します。
Low Threshold、High Thresholdは120と240にしていますが、ここは変更しても問題ないのでお好みで指定してください。
最後にプロンプトですが、以下のタグを頭に付けるようにしてください。
monochrome,lineart,white background
他のタグは、オリジナルイラストを生成したプロンプトから色に関するタグを除いたものを使用してください。もしオリジナルイラストが生成AI品ではないものや、生成時のプロンプトが不明な場合はTaggeを使用しタグ解析を行ってください。
1girl, blonde hair, solo, hat, jacket, short hair, pants, leather, leather jacket, outdoors, denim, smile, jeans, red headwear, black jacket, looking at viewer, shirt, green eyes, forest, nature, white shirt, beret, blue pants, standing, open jacket, hand in pocket, tree, open clothes
↓
1girl,solo, hat, jacket, short hair, pants, leather, leather jacket, outdoors, denim, smile, jeans, black jacket, looking at viewer, shirt, forest, nature, beret, standing, open jacket, hand in pocket, tree, open clothes
上記のように色に関するタグをそのまま消しても良いですが、「white shirt」を「shirt」のように変更しても良いです。極端に変更しなければタグ自体を消してしまっても機能するのでどちらのやり方でも構いません。
また、少し手間になりますが、controlnetで出したcanny画像をTaggerで解析しても良いです。その場合は以下のタグが表示されることが多いので除外してください。
monochrome,greyscale,lineart,jaggy lines,black background
上記の手順を行い、最終的にプロンプトは以下のようになるようにしてください。
monochrome,lineart,white background,1girl,solo, hat, jacket, short hair, pants, leather, leather jacket, outdoors, denim, smile, jeans, black jacket, looking at viewer, shirt, forest, nature, beret, standing, open jacket, hand in pocket, tree, open clothes
これで生成すると、以下のような線画が生成されます。

ちなみに、色に関するタグを除外しなかった場合、以下のように生成されます。

以上がweb-uiでの線画化のやり方になります。
スポンサーリンク
ComfyUIワークフローの配布

上記の画像はワークフローの配布用画像となっているので、拡大し保存してComfyUIに読み込ませれば上記のワークフローが読み込まれます。
このまま使うも良し、これを参考に自分のワークフローに組み込むも良し。ご自由にどうぞ。
もし.jsonファイルで欲しい方がいれば下記からダウンロードできます。
また、上記ワークフローでは冒頭に紹介したカスタムノードを使用しているので、このワークフローを使用する場合はインストールするようにしてください。もし、このワークフローを読み込んで足りないノードが出るようならお手数ですが各自でカスタムノードをインストールしてください。
それでは使い方の説明をしていきますが、さすがに全てのノードの説明をすると長くなってしまうので、各自で変更する箇所のみ説明していきます。
各自で変更する箇所はノードを赤くしてあります。
・Load Checkpoint
このノードでは使用するチェックポイント(モデル)を選択します。任意のものを選択しましょう。
・Load VAE
このノードでは使用するVAEを選択します。任意のVAEを選択しましょう。
・Load Image
このノードには線画化したいオリジナルイラストを読み込ませます。
・Power Lora Loader (rgthree) (LoRA選択)
LoRAを使用する場合は、Add Loraをクリックして追加していきましょう。
・Load ControlNet Model (初回のみ)
control-lora-canny-rank256.safetensorsを選択しましょう。他に良いcannyモデルがあれば変更しても良いですが、基本的には初回のみ設定すれば大丈夫です。
・Load Image (白紙画像) (初回のみ)
白紙の画像を読み込ませます。ここはずっと白紙から変わらないので初回のみで大丈夫です。
1つだけ注意ですが、配布したワークフローを読み込ませた場合、各モデルのフォルダパスが私の環境のものになっていると思うので、初回のみ全てのモデルを各自の環境に合わせて選択してください。
余談ですが、オリジナルイラストを読み込ませるLoad Imageのノードを、以下のようにtxt2img用ワークフローのVAE Decodeと繋げば、カラーイラストと線画を同時に用意することが出来ます。

おまけ
以下のようにPreprocessorをNone、Modelをanytestにしても出来ます。お好きな方でどうぞ。

最後に
線画LoRAを使用すると精度が上がるかもしれません。線画LoRAを持っている方は試してみてください。
それでは!
コメント