Stable DiffusionのControlNet「Canny」の活用方法を徹底解説!

「Stable Diffusionでの画像生成が上手くいかない…」「ControlNetをどう活用すればいいの?」 そう感じる方も少なくないでしょう。

Stable Diffusionでは、ControlNetという拡張機能を使用することによって、イラストの色のみを変化させたり、ポーズを指定したりすることができます。 これによって思い通りの画像を生成できる可能性が高まります。

今回PROMPTYでは、Stable DiffusionのControlNet「Canny」の活用方法を徹底的に解説いたします。

Stable DiffusionのControlNetとは?

Stable Diffusionでは、プロンプトを使用して様々なイラスト生成することができます。

ただし、プロンプトやネガティブプロンプトのみを入力するだけでは、思い描いたポーズと異なるキャラクターが生成されることがあります。そこで必要となるのが、ControlNetの拡張機能です。これを利用すると、参照画像と同じポーズを持つキャラクターの生成が可能となります。

ControlNetは事前訓練されたモデルに新しい制約を与えて画像生成をより自由に制御する技術で、特にimg2imgで難易度が高かったポーズや構図の指定が容易になります。

今回ご紹介する「Canny」は、数あるControlNetのモデルの一つになります。

Cannyを導入する

Cannyを利用するには、Stable DiffusionのControlNetとCannyのモデルをインストールする必要があります。

ControlNetは、Stable Diffusion の「Extension」→「Install from URL」にある「URL from extension’s git repository」にURLを貼り付けることで導入することができます。

ControlNet:

https://github.com/lllyasviel/ControlNet

Cannyのモデルデータは、こちらのURLからインストールして、ControlNetのフォルダに入れましょう。

Cannyモデル:

https://huggingface.co/lllyasviel/sd-controlnet-canny

ControlNetの詳しい導入方法は、こちらの記事で詳しく解説しています。

関連記事

Stable Diffusionで画像生成を行う際に、思った通りの画像が出力されないことはないでしょうか。 Stable Diffusionで思い通りの画像を生成するためには、「ControlNet」という拡張機能を活用することが求[…]

実際にStable DiffusionでCannyを使って画像を生成する

Cannyの使い方

Cannyでは、参照画像の輪郭を抽出して、それを基に新しいイラストを生成することができます。

はじめに、Cannyの使い方をご紹介します。

①Web UIの画面でControlNetタブを開きます。

②”ここに画像をドロップまたはクリックしてアップロード”から、参照画像をアップロードします。

③モデルとプロセッサーを選択します。

今回の記事では、「control_v11p_sd15_canny_fp16」のモデルを使用します。その他輪郭を検出する際の閾値などを設定できますが、デフォルトモデルでも問題ありません。

④プロンプトとネガティブプロンプトを入力して画像を生成します。

Cannyの活用方法①:画像の色を自由に変える

Cannyを使用することで、人物の髪や目などの色を自由に変えることができます。これによって同じ顔の人物で様々なバリエーションの画像を生成することができます。

今回はこちらのアニメ風イラスト画像を参照して色を自由に変えていきます。

参照画像:

Cannyで画像を生成すると、検出した輪郭の画像が同時に生成されます。

プロンプト:

masterpiece,high quality,extremely detailed face,1 girl,smile,{その他の単語}

ネガティブプロンプト:

flat color, flat shading, nsfw,(worst quality, low quality:1.4), interlocked fingers, (zombie, sketch, comic),monotone,gray scale

その他の設定:

Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 3626438541, Size: 512×512, Model hash: 77b7dc4ef0, Model: meinamix_meinaV10, ControlNet 0: “Module: canny, Model: control_v11p_sd15_canny_fp16 [b18e0966], Weight: 1, Resize Mode: Crop and Resize, Low Vram: False, Processor Res: 512, Threshold A: 100, Threshold B: 200, Guidance Start: 0, Guidance End: 1, Pixel Perfect: False, Control Mode: Balanced”, Version: v1.6.0

{その他の単語}に様々な単語を入れて画像出力した結果がこちらです。

指定した箇所の色が正しく反映されています。ただし、black hairやblue hairの画像を見ると、髪の毛以外の部分も色が変わってしまうのが難点です。

このように、Cannyを使うことで同じ画像で自由に色を変えることができます。

Cannyの活用方法②:写真からイラストを生成する

Cannyの輪郭検出を活用することで、人物の写真からイラストを生成することができます。

今回はこちらのフリー写真をイラストに変換します。

元画像

プロンプト:

masterpiece,high quality,extremely detailed face,1 girl

ネガティブプロンプト:

flat color, flat shading, nsfw,(worst quality, low quality:1.4), interlocked fingers, (zombie, sketch, comic),monotone,gray scale

その他の設定:

Steps: 20, Sampler: Euler a, CFG scale: 7, Seed: 3626438541, Size: 512×512, Model hash: 77b7dc4ef0, Model: meinamix_meinaV10, ControlNet 0: “Module: canny, Model: control_v11p_sd15_canny_fp16 [b18e0966], Weight: 1, Resize Mode: Crop and Resize, Low Vram: False, Processor Res: 512, Threshold A: 100, Threshold B: 200, Guidance Start: 0, Guidance End: 1, Pixel Perfect: False, Control Mode: Balanced”, Version: v1.6.0

生成した画像:

写真から輪郭を検出してイラストを生成することができました。

ポーズや服装はかなり忠実に再現されています。プロンプトで色について詳しく指定することで、さらに元画像の色に従わせることできると思います。今回の設定では、背景の輪郭ははっきりと取れなかったためランダムに生成されています。

他のモデルとの比較

①画像の色を自由に変える

画像の色を変えることができるControlNetの他のモデルとして、次の2つが挙げられます。

lineart:線画を作成し、それを元に画像を生成する。
reference_only:モデルの指定なし。アップロードした画像を参照する。

生成画像の比較:

lineartは線画を抽出しているため、元の画像がきちんと再現できています。また、髪以外の部分の色が変わっていません。

reference_onlyでは構図やタッチが少し変わってしまいます。

完成度としては、lineart > canny >>reference_onlyといったところでしょうか。

写真からイラストを生成する

写真からイラストを生成できるControlNetの他のモデルとして、次の2つが挙げられます。

depth:深度情報を元に画像を生成する。
openpose:人物のポーズを検出し、それを元に棒人間を生成してポーズを制御する。

生成画像の比較:

depthを使用した場合

openposeを使用した場合

depthではcannyと同様に、服装やポーズが正しく再現されています。シード値がランダムなため、今回のシード値では元画像と違ってエレガントなタッチの画像が多くなってしまいました。

openposeでは、ポーズは良く再現されていますが、細かい部分は参照できないため、写真とは大きく異なる画像となってしまいました。

写真からイラストを生成する用途であれば、cannyやdepthが有効になります。

openposeはポーズの指定で大きく活躍します。openpose活用方法はこちらの記事で詳しく解説しています。

関連記事

Stable Diffusion ではプロンプトを元に様々な画像を生成することができますが、ポーズのプロンプトを組み込んでも必ずその通り生成されるわけではなく、複雑なポーズであれば尚更確率の低い作業になってきます。今回は「ControlN[…]

まとめ

今回PROMPTYでは、Stable DiffusionのControlNetのCannyモデルの活用方法を詳しく紹介しました。

Cannyでは、画像の色を自由に変えることができるほか、写真から輪郭を抽出してイラストを生成することができます。

皆様も、今回の記事を参考にして、ControlaNetを使ってStable Diffusionの活用範囲を広げてみてはいかがでしょうか。

PROMPTYでは、他のStable Diffusionに関する記事も豊富に扱っていますので、興味のある方は是非チェックしてみてください。

~Stable Diffusionで素早く画像生成するには~

Stable Diffusionの画像生成スピードや画像サイズは、グラフィックボード(GPU)の性能によって大きく変わります。 このため、より効率的かつ快適な画像生成を望むユーザーにとって、最適なグラフィックボードの選択が重要となります。 推論処理やLoRAなどの追加学習処理といった大量の計算を効率よく行うためには、12GB以上のVRAMを持つグラフィックボードを選ぶことを強くおすすめします。 2GBや4GBのVRAMを持つグラフィックボードでは、学習プロセスや高解像度の画像生成に支障が出る可能性が高いです。 コスパを重視する方は、RTX 3060を選ぶと良いでしょう。 このグラフィックボードを使えば、Stable Diffusionの画像生成機能を最大限に活用することが可能となります。