【Stable Diffusion】Multi ControlNetを使って複数のモデルを組み合わせ、複雑な画像の構図を制御するやり方!

こんにちは!悠です!

 

「Stable Diffusion」で生成できるAIイラストのポーズや構図を指定できる拡張機能「ControlNet」では、デフォルトでは1つのモデル(canny、depth、openposeなど)を適用することしかできません。

しかし、「Multi ControlNet」という機能を有効化することで、一度に複数のモデルを組み合わせることが可能になります。

今回の記事では「Multi ControlNet」の使い方を説明した後、実際に複数のモデルを組み合わせて「手ハート(heart hands)」を生成していきたいと思います!

 

アイキャッチ画像は「FaceBombMix」で生成しています!
スポンサーリンク
スポンサーリンク

「Multi ControlNet」の使い方

実は「Multi ControlNet」は、拡張機能「ControlNet」を導入していれば簡単に有効化することができます。

ControlNetのバージョンが古すぎると使えないかもしれないので、その場合は下記の方法でアップデートしておいてください。

【Stable Diffusion】Extension(拡張機能)を更新する方法についてまとめていく!【アップデート】
「Stable Diffusion WebUI」で、Extensions(拡張機能)をアップデートする方法についてまとめた記事です。Colab版では更新する必要がないので、基本的にローカル版の方向けの方法になります。

 

有効化するには、まず「Stable Diffusion WebUI」を起動してSettingsタブの中にあるControlNetを選択し、Multi ControlNetの数字を2以上にします。おすすめは3です。

 

あとはWebUIを再起動すれば、ControlNetの項目に複数のUnitが追加されています。

 

例えばですが、Unit 0でcannyを、Unit 1でopenposeを指定すれば、2つのモデルを同時に使うことができます。

なお、当然ですが複数のモデルを同時に使うとVRAMの消費量が増えるので注意してください。

 

【実践】Multi ControlNetで「手ハート」を作る!

手ハート(heart hands)にはいろんな種類があるようですが、今回は下のような構図の再現を目指します。個人的に超かわいいと思います(*’ω’*)

ハート ハートポーズイラスト
オリジナルのフリー素材『ハート ハートポーズイラスト』

 

【準備】素材集め

では実際に手ハートを作る素材を集めていきます。ちなみにプロンプトだけで出すのはまず無理だと思われます。

必要になってくるのは、身体の構図を指定するopenposeの棒人間と、手ハートを作った手の部分だけを上手く切り抜いたcannyの線画もしくはdepthの深度マップです。

 

まず実際に手ハートを作っている人物の画像をインターネット上から探し、ControlNetのプリプロセッサ(openpose)で抽出します。(参考記事

この画像で手の領域を除いた体の構図を指定します。

こんな感じになります

 

次に一番重要な手の部分を集めていきます。

私が思いついた方法は2つです。まず1つ目は、openposeで処理した画像と同じものをcannyで前処理し、抽出した線画の手の部分以外をWindowsのペイントソフトを使って黒く塗りつぶします。

手の部分以外をペイントで黒く塗りつぶしたもの

 

depthの前処理で抽出した深度マップを黒く塗りつぶすと、塗りつぶした部分にも変な処理が入って画像全体が妙にぼやけた感じになってしまうので注意してください。

 

もう一つが拡張機能「Depth map library and poser」を使う方法です。

【Stable Diffusion】手や指を修正できるControlNetの拡張機能「Depth map library and poser」の使い方を紹介!
「Stable Diffusion」で、生成したAIイラストの手や指を簡単に修復できる拡張機能「Depth map library and poser」の使い方について紹介した記事です。

 

プリセットにある手の深度マップを組み合わせることで、下のような手ハートを作ることができます。

openposeの棒人間の手の部分に、深度マップが重なるように位置を調節してください。

「Depth map library and poser」による手ハートの深度マップ

 

ちなみにCivitaiで1人だけ手ハートの深度マップを配布している方がいらっしゃったんですが(heart handsで検索)、私のやり方ではどうしても上手くいきませんでした。

どうでもいいですがお〇〇いハートっていうLoRAもありました。かなり人気が高かったですw

 

他に手の深度マップもしくは線画を配布しているサイトをご存知でしたら、ぜひコメント欄で教えてください!



Multi ControlNetでモデルを組み合わせる方法!

今回は例としてUnit 0でopenpose、Unit 1でcannyまたはdepthを使っていきます。

なお各Unitで使用するモデルの種類に指定はないので、気分で決めてOKです。

 

Unit 0の方にopenposeで抽出した棒人間の画像をドラッグアンドドロップした後、Enableにチェックを入れ、Preprocessorをnone、Modelをopenposeにします。

 

同様に、Unit 1の方にはcannyまたはdepthで抽出した線画・深度マップの画像をドラッグアンドドロップした後、Enableにチェックを入れ、Preprocessorをnone、Modelをcannyまたはdepthにします。

 

これでGenerateボタンを押せば、2つのControlNetのモデルを適用しつつ、画像を生成することができます。

 

なお、上で紹介したcannyの線画で生成した画像は次のようになりました。モデルにはFaceBombMixを使用しています。

 

depthの深度マップを使った方はこちらです。モデルは同じFaceBombMixです。

 

かなり試行回数を重ねたんですが、100点の出来を作るのは難しかったです!また挑戦しなければ!!

 

低VRAMGPUでもMulti ControlNetを使う方法

「T2I-Adapter」というモデルデータを使って、GTX1660Ti(VRAM6GB)程度の低スペックGPUでも、Multi ControlNetを利用する方法について下の記事で詳しく紹介しています。

【Stable Diffusion】「T2I-Adapter」を使って低VRAMGPU(VRAM6GB)でもMulti ControlNetを使う方法!
「Stable Diffusion」で、GTX1660Ti(VRAM6GB)等の低VRAMGPUでも、Multi ControlNetを使うことができる「T2I-Adapter」について紹介した記事です。

 

まとめ

以上が、「Stable Diffusion」の拡張機能「ControlNet」で、一度に複数のモデルを組み合わせることができる「Multi ControlNet」の使い方でした。

openposeとcannyまたはdepthを組み合わせることで、生成されるAIイラストの構図をかなり細かく指定することができるのでぜひ試してみてくださいね!

 

なおMulti ControlNetは他にも様々な応用例があり、例えば動画から動画に変換するmov2movもこの機能を応用しているそうです。

こちらもいつか試してみたいです!

 

では、ここまで読んでいただきありがとうございました。

コメント

  1. Y より:

    困ってたので、とても助かりました。
    ありがとうございます。