こんばんは、スタジオ真榊です。前回は「Segmentation」を使った構図コントロールのやり方について紹介しましたが、今夜は「canny」や「depth」なども含め、最新のControlNetをフルに使うと何が可能になるのかについて、かなり長文で取り上げていきたいと思います。久々の大型記事ですね!
<★FANBOX用の記事ですが、ブログでは前半部分までを無料公開いたします。全文はこちらから★>
ControlNetをめぐっては、
「Controlnet徹底解説!プロンプト苦難の時代が終わる…」で紹介して以降も、日々精力的なアップデートが続いています。特に界隈で話題なのが
「Multi Controlnet」ですよね。これ、同時に複数の抽出機能を使ってイラストを生成できる技術なのですが、本当にヤバイ聖杯中の聖杯です。触ったばかりだと「何に使えるのか分からない」「何と何をどう組み合わせればいいのか分からない」状態に陥りますが、使い方さえわかればAIと一気に仲良しになれます!
短期間に異次元の進化を遂げたControlnetで、具体的にどんなことが可能になったのか。さっそく見ていきましょう~!
Multi controlNetの登場
2023年2月22日に追加された拡張機能「Multi ControlNet」は、複数のcontrolnet機能を同時に発動させて画像生成ができる革新的なアップデートです。text2imageだけでなく、image2imageの際も使うことができます。例えば、「Depth+Openpose」や、「segmentation+canny」、「canny+canny」といった組み合わせによって、複数のイラストからキャラクターを一つのイラストに呼び出したり、構図を完全に固定して各要素だけを入れ替えたり、キャラクタ-はそのままに背景だけを差し替えるようなことが可能になります。
起動方法
Multi controlnetを使えるようにするには、WebUIの設定タブのControlnetのタブを開き、「Multi ControlNet: Max models amount (requires restart)」のつまみを「2」以上にすればOK。t2iなど通常の生成画面に「Control model-0」「Control model-1」「Control model-2」…と、Controlnetの操作タブがその数だけ表示されるようになります。複数のControlnetを使用するときは、それぞれの操作画面の「Enable(有効)」をオンにすることを忘れないようにしてください。
設定画面につまみがない場合は、拡張機能のタブからControlnetを最新版にアップデートする必要があります。アップデート後は「UIの再読み込み」ではなく、WebUI自体を再起動しないと反映されないのでご注意ください。
▲設定画面のつまみ
と、ここでちょっと脱線。Multi Controlnetの説明に入る前に、アプデで追加されたり、これまで説明していなかったControlnet機能についてざっと紹介しておきます。ちなみに、以前は縦に「Control model-0」「Control model-1」...と操作画面が並んでいたのですが、アップデートでタブごとに分けられるようになりました。Ctrl+Vでの画像貼り付けがミスしにくくなったので大変ありがたい!
「preview annotator resultボタン」の実装
アップデートにより、controlnetの操作画面下部に「preview annotator result(抽出結果を見る)」「hide annotator result(抽出結果を非表示にする)」というボタンが追加されています。このボタンにより、いちいち画像生成の結果を待たなくても、参照画像からどのような情報が抽出されるのか事前に確かめることができるようになりました。
ココです
「Annotator resolution」などの値を動かしてもう一度「preview annotator result」を押すことで、白黒画像の抽出処理を調節することができるようになっています。表示された白黒画像を右クリックでダウンロードしたり、別のControlnet画面にそのままドラッグすることも可能。もちろんCanny以外の抽出機能でも同様のことができるので、いろんな設定を試してどんどん活用していきましょう。
抽出データ画像を保存しよう
controlnet機能で抽出したデータ画像はUI画面上には表示されるものの、Outputなどのフォルダには自動保存されません。生成結果から右クリック保存することもできますが、ついつい忘れてしまうことも多く、「あのとき抽出したボーンを保存しておけばよかったなあ」と思う場面もあったと思います。
そうした場合はWebUIの設定タブから「ControlNet」を開き、「Allow detectmap auto saving」にチェックを入れてみましょう。これ以降、controlnetのpreprocessor(前処理)で抽出されたボーン(棒人間)やCannyの輪郭、depth情報といった画像が自動保存されるようになります。保存先はデフォルト設定だと「stable-diffusion-webui\extensions\sd-webui-controlnet\detected_maps」。設定画面の「Directory for detected maps auto saving」の欄で自由に設定できます。
※画像生成終了時に保存されるので、「preview annotator result」で表示しただけではフォルダに残りません
プロンプトいらず?「Guessモード」
「Guess Mode(推測モード)」というボタンも追加されています。これは「非プロンプトモード」のような機能で、プロンプト欄に何も描き込まずとも、参照画像から抽出された情報に最大限注目して同様のものを自由に描くようAIに指示するモード。例えば、プロンプト欄がブランク(空白)の状態で観覧車の写真を「Canny」で読み込ませると、AIはその輪郭から「これは観覧車だろう」と自分で推測して、観覧車を描くことができます。逆に何が描かれているか特定できない輪郭やdepth状態を読み込ませると、AIはそこから連想できるさまざまなものを描き出します。
ただ、これはまだ実験中の機能のようで、期待通りに動かないことも多いです。どういうものなのかだけ理解しておけばOKというところでしょうか。ちなみに、Multi controlnetが発動している場合はどれか一つの画面でGuessモードがONになると、全てのControlnetにその効果が及ぶとのことです。
Guidance Start/Endで何ができる?
Guidance StartとGuidance Endという設定値も追加されました。これは、「Enable」にしたControlnetの影響が画像生成のどのステップから及ぶかを示すもの。基本は0でスタート、1でエンドということで、ノイズ状態から生成終了まで全ステップに影響しますが、例えばスタートを0.8にすることで、全体の80%に当たるステップ数から影響が出始めます。(画像生成の最後の20%だけ影響するという意味)
この機能は、例えば「画像の細部に対して強力にControlnetを影響させたいが、全体の絵作りにまで影響はさせたくないときに、生成途中から影響をStartさせる」ために使うことができます。例えば、手の形だけを描いたCannyを影響させて正しい手のイラストを生成したいけれど、最初からそのCannyを読みこませると「手しかないイラスト」ができてしまうようなときに、この機能を使って調整することになります。
Multi Controlnetで何ができるのか?
さて、本題に戻りましょう。「なんかすごそう!でも具体的に何ができるの?」と思ってしまうMulti controlnet機能ですが、実用性があると感じられたいくつかの活用法を紹介していきます。
何ができるかの前に、前提として説明したいのが、「何ができないのか」。例えば、次のような背景のみの画像とキャラクターのみの画像を用意して、いずれもCannyで輪郭を抜いて合成しようと試みたとします。何が起きるでしょうか?
生成結果はこちら。
背景に観覧車、手前にキャラクターが来てくれればよかったのですが、それぞれの輪郭が一つに溶け合ってしまって、AIが何を描けばいいのか混乱していることが分かります。
これはもちろん、観覧車の輪郭とキャラクターの輪郭両方が重ね合わされた状態で生成されてしまったからですね。つまり、AIとB別々の要素を同居させたい場合に特に注意しないといけないのが、「別々の被写体の抽出位置が重なると失敗する」ということです。
こちらはキャラクターの「Depth」と、さきほどの観覧車の「Canny」を重ねたもの。こちらはなぜ失敗したのかがより分かりやすいですね。キャラクターと観覧車の情報が溶け合ってしまい、完全に抽象画と化してしまっています。
では、Muliti controlnetが得意なことは何なのか。複数のControlnetを組み合わせて何ができるのか。いろいろと試して分かったのは、
【Ⅰ】A要素とB要素が同じものを「別の表現で」指示する場合
【Ⅱ】A要素とB要素が別のものだが、画面上で干渉しない場合
この2つの条件下でなら、Multi Controlnetは真価を発揮します。順番に見ていきましょう。
(残り3898文字/全6939文字)
- 関連記事
-