ControlNet 1.1のCanny、色塗り、線画から高品質な画像生成

ControlNetは機能が多すぎて、どれを使って良いかわからないですよね。そんな人の悩みを解決するためにControlNetの実用例を解説しています。今回、取り上げるのはControlNet Cannyです。本記事を読むことで次のような疑問が解消されるでしょう。

  • ControlNet Cannyって何?
  • ControlNetの具体的な実用例は?
  • ControlNet Lineart, SoftEdge, Scribbleなどの類似手法との違いを知りたい。

ControlNet Cannyとは?

ControlNet Cannyは、ControlNetのモデルの一つで、Canny edge detectionというアルゴリズムに基づいて抽出された線画情報を扱います。Cannyによって抽出された他の抽出抽出方法とくらべると細かいのが特徴です。元画像の構図と詳細なデティールを保ったまま新しい画像を生成したい場合に有効な手法です。

呪文(プロンプト)から画像を生成する場合との違い

呪文(プロンプト)から画像を生成する場合は、テキスト入力に基づいて画像が生成されます。

一方、ControlNet Cannyを使用する場合は、元画像の線画情報を抽出し、その線画に色を塗るように、イラストを生成するので輪郭を保ったまま画像が生成されます。

そのため顔や手の輪郭が正確に描写されるため高品質な画像生成が可能となります。ControlNetを使う手間が若干ありますが、試行錯誤せずに済むのでトータルで考えると便利な機能です。

ControlNet Cannyでできること

  • 質感やテクスチャ、色の変更
  • 実写画像のイラスト化、イラストの実写化
  • 線画の色塗り

質感やテクスチャ、色の変更

左が参照画像、右がそれをCannyを使ってテクスチャを変更した画像です。肌を日焼けされるプロンプトを指定しました。

実写画像のイラスト化、イラストの実写化

左が参照画像、右がそれをCannyを使ってイラスト化した画像です。

左が参照画像、右がそれをCannyを使って実写化した画像です。

線画の色塗り

左が線画で、右がそれをCannyを使って色塗りした結果です。

ControlNet Cannyの利用方法

ControlNet Cannyの事前準備

ControlNet CannyはStable Diffusion Web UIの拡張機能、ControlNetの機能の1つです。 そのため、ControlNet Cannyを利用するためには、ControlNetがインストールされている必要があります。 もし、インストールしていない場合は以下の記事を参考にControlNetをインストールしましょう。

ControlNet Cannyのインストール方法

ControlNet Cannyの利用にはControlNet Modelが必要となります。以下のリンクから次の2つのファイルをダウンロードしてstable-diffusion-webui/models/ControlNetへ配置してください。

  • control_v11p_sd15_canny.pth
  • control_v11p_sd15_canny.yaml
lllyasviel/ControlNet-v1-1 at main
We’re on a journey to advance and democratize artificial intelligence through open source and open science.

ControlNet Cannyの基本的な使い方

ControlNetのメニューを次の手順にしたがって設定します。

  1. プロンプトを入力
  2. 「▼」をクリックしてControlNetのメニューを開きます。
  3. 画像をControlNetのメニュー画面にセットします。
  4. “Enable”にチェックを入れます。
  5. Control Typeで”Canny”を選択します。
  6. 特徴抽出ボタン「💥」をクリックして特徴抽出。
  7. “Generate”をクリックして画像を生成します。

具体的な手順

質感やテクスチャ、色の変更

ControlNet Cannyを使うことで質感やテクスチャの変更ができます。例えば肌の質感を変更することができます。生成した画像で肌が汚いケースでは美肌に修正したり、肌の色を変えてみたり、汗をかかせたりすることができます。

今回は肌を日焼けさせてみます。

ControlNetのメニュー画面に次のような設定を入力します。

  1. 画像をControlNetのメニュー画面にドラッグ&ドロップします。
  2. “Enable”にチェックを入れます。
  3. Control Typeの”Canny”を選択
  4. 特徴抽出ボタン「💥」をクリックして特徴抽出。

後は生成する画像の呪文(プロンプト)を入力します。

プロンプト: (brown skin, tanned skin: 2), 1girl, a 20 years old pretty Japanese girl in classroom.school uniform,blackboard

もし画像サイズなど他にも画像生成の設定したい事項があれば変更してください。

以下は生成した画像です。日焼けしていることがわかります。

実写画像のイラスト化、イラストの実写化

実写画像をイラストへ変換する。

次に実写画像をイラストにしてみます。ControlNetの設定は先ほどと同じです。

  1. まずは今回はイラスト化なので、モデルをイラスト系モデルに切り替えます。
  2. 生成する画像の呪文(プロンプト)を入力します。
  3. 画像を生成します。

モデル: AnythingV5Ink_ink.safetensors [a1535d0a42]

プロンプト: 1girl, a 20 years old pretty Japanese girl in classroom.school uniform,blackboard

もし画像サイズなど他にも画像生成の設定したい事項があれば変更してください。

生成した画像は次の通りです。

イラストを実写画像に変換する。

次はイラストを実写化してみます。ControlNetのメニューですが今までと設定値が違うので注意してください。以下のとおりにControlNetで設定と特徴抽出を行います。

  1. 画像をControlNetのメニュー画面にドラッグ&ドロップします。
  2. “Enable”にチェックを入れます。
  3. Control Typeの”Canny”を選択
  4. 特徴抽出ボタン「💥」をクリックして特徴抽出。
  5. Control ModeでMy Prompt is more importantを選択。これは線画に忠実に画像を生成すると、目の大きさが大きくなりすぎたりするので、プロンプトに重きを置くように設定するためです。

次に画像生成の設定を行います。

  1. 実写画像なので、モデルを実写画像系モデルに切り替えます。
  2. 生成する画像の呪文(プロンプト)を入力します。
  3. 画像を生成します。

モデル: beautifulRealistic_brav5.safetensors [ac68270450]

プロンプト: 1girl, a 20 years old pretty Japanese girl in classroom.school uniform,blackboard

もし画像サイズなど他にも画像生成の設定したい事項があれば変更してください。

生成した画像は次の通りです。

線画の色塗り

次は線画の色塗りについて紹介します。線画(白と黒)を塗る際にはPreprocessorとして”invert(from white bg & black line)”を利用することができます。これは線画の白黒を反転させるだけの前処理です。ただし、白と黒の判定は厳しく、人の目には真っ黒に見えててもわずかに明るかったりしたら線画が認識されないので注意が必要です。

  1. 画像をControlNetのメニュー画面にドラッグ&ドロップします。
  2. “Enable”にチェックを入れます。
  3. Control Typeの”Canny”を選択
  4. Preprocessorを”invert(from white bg & black line)”に設定。
  5. 特徴抽出ボタン「💥」をクリックして特徴抽出。

次に画像生成の方の設定を調整します。

  1. モデルをイラスト系モデルに切り替えます。
  2. 生成する画像の呪文(プロンプト)を入力します。
  3. 画像を生成します。

モデル: AnythingV5Ink_ink.safetensors [a1535d0a42]

プロンプト: 1girl, suits, question

もし画像サイズなど他にも画像生成の設定したい事項があれば変更してください。

結果は次の通りです。

ControlNet Cannyに似た手法について

ControlNet Canny以外にもControlNetには次のような類似する手法があります。

  • ControlNet Lineart: ControlNet Lineartは、ControlNetのモデルの一つで、画像から線画を抽出することができます。線画は、ある程度強い線以外は無視されるため、重要な線を取捨選択して抽出できます。
  • ControlNet SoftEdge: ControlNet SoftEdgeは、ControlNetのモデルの一つで、ソフトな輪郭を使って画像を生成することができます。ディテールを維持するのが得意で、色変更などに活用するとよいとされています。
  • ControlNet Scribble: ControlNet Scribbleは、ControlNetのモデルの一部で、ラフなスケッチやざっくりしたイラストから、より完成度の高いイラストレーションを生成することができます。粗いイラストや棒人間からもモデルに合わせたイラストを制作してくれます。

どれも線を抽出する手法ですが線の細かさに差があります。Canny, Lineart, SoftEdge, Scribbleの順で線が細かいです。以下は先ほどの実写画像をCanny, Lineart, SoftEdge, Scribbleの順で抽出した線です。

画像の線のどこを意識したいかによって使い分けると良いでしょう。ただし、Lineartに関してはディープラーニングモデルを利用しているということもあり、重要な線を取捨選択して抽出できることが多いので便利です。迷ったらLineartを使うのをおすすめします。

コメント