ControlNetの使い方 生成の制御 導入と構図指定

ControlNetの使い方

ContorolNetは、StableDiffusionでのAI生成イラストを、指示画像を与えることでポーズや輪郭、奥行き情報などを指定できるテクノロジーだ。

StableDiffusionのデフォルトで使える「Img2Img」とも違って、渡した画像をAIが参考にするのではなく、ポーズや奥行き情報、輪郭を「まんま使う」という技術である。

上の例では、ポーズが完全再現しているほか、指の曲げ方向もちゃんと合っている。(Img2Imgだと、指が反対側に曲がるホラー絵が生成されることがあるのだ)

ControlNetの種類

私はControlNet=openposeの棒人間での指定だと思っていたが、ControlNetには種類がある。

  • canny 輪郭検出して、同じ輪郭で描画する
  • depth 深度情報を検出して、正しい奥行きで画像生成。指や腕の曲げ方向が正しくなる
  • hed ソフトな輪郭検出。元絵とは微妙にテイストが違う画像になる?
  • mlsd 直線の輪郭検出が得意。背景絵などの取り込みに良い?
  • normal 法線マップを検出。あらゆる方向のへこみ、でっぱりがリアルに。
  • openpose 人間のポーズを検出して、同じポーズで描画。棒人間での指定も可能。
  • scribble フリーハンドで描いた線をもとに画像生成する
  • seg 領域を検出して、画像生成

私個人としては、指定通りのポーズになるのはもちろん嬉しいけどもそれよりも「手がマトモに描画される」のが一番メリットだと思った。

ControlNetのインストール

ControlNetは、Automatic1111(ユーザインタフェース)のExtension(拡張機能)としてインストールする。Automatic1111の基本的なとこは以下の記事で。

関連)Stable DiffusionのWEBUI Automatic1111の使い方

Automatic1111の画面のtxt2imgの下の方に「ControlNet」っていうのが出てれば、ControlNetはすでにインストールされてる。

「ControlNet」が出てないぞ…というあなたは、Exteionsions→Available→Load fromをクリックして、一覧の中から「sd-webui-controlnet」を探し出し、右側のInstallボタンをクリックしよう。

さらに、各ControlNetのモデルをダウンロードする必要がある。

モデルっていうとピンとこないけど、モジュールとかパーツみたいなもんだと考えておくといいんじゃないだろうか。フツーに画像生成用のbasil mixモデルにcontrolnetのdepthモデルを組み合わせるみたいなことができる。

まあ全部入れてもいいんだけど、そこそこサイズが大きいので、まずは使いたいものを1つだけ入れるのがいいだろう。

webui/ControlNet-modules-safetensors at main (ControlNet用のモデルのダウンロードページ)

ファイルは、以下のフォルダにそのまま入れておけばOK。

Automatic1111のインストールフォルダの、sd.webui\webui\extensions\sd-webui-controlnet\models

controlnetをインストールしたら、Automatic1111を再起動しよう。(UIのリロードではなく、Automatic1111自体の再起動)

ControlNetの簡単な使い方

以下の画像をControlNetのdepthに渡してみよう。StableDiffusionが苦手な、手足が複雑に絡んだポーズだ。

Z Fierce Wrestling Couple Poses for Genesis 8 and 9 (DAZのレスリングのポーズ集)

結果はこちら。ところどころ変だけど、だいぶいいセン行っているんじゃないだろうか。

使い方は、こんな感じ。

  • ControlNetの欄に画像をドラッグ&ドロップ
  • 処理と対応するモデルを指定
  • 渡す画像のサイズを指定

上の画像では「Control model-0」と「Control model-1」というタブが出現しているが、設定によってControlnetを複数組み合わせることができるのだ。(ContronetのExtensionを最新版にする必要あり)

設定は、Settings→ControlNetをクリックして、「Multi ControlNet:Max models amount」を2以上にする。

「Apply settings」(設定を保存)をクリックして、Automatic1111を再起動する(Reload UIではダメ)

これで、ControlNetの「canny」と「depth」あたりを組み合わせると、輪郭と奥行き情報が正確に伝わるというわけだ。

何個も組み合わせるとその分メモリを食うので、せいぜい2つ程度にしておくのが無難かも。

Controlnetのscribbleの例

scribbleは「落書き」の意味。フリーハンドで描いたテキトー画像が、AIの手によって超絶イラストや実写画像に転生してしまうという恐ろしい技術である。

これがこうなる。

controlnetのscribbleの入力画像

controlnetのscribleの出力画像

モデルは、イラストに強いAbyss Orange Mix2を使用。

Automatic1111のControlnetの設定箇所で、以下のように設定する。落書き画像は、ウェブ上でも描けるけど、私はペイントソフトで描いたものをドラッグ&ドロップでアップロードした。

手直しの試行錯誤が楽だから。

  • Enableにチェック
  • 落書き画像をドラッグ&ドロップ
  • Preprocessorにscribble
  • modelにcontrol_scrible-fp16を指定
  • Weightを0.5くらいにする

Weightは、落書き画像をどのくらい尊重するか…というパラメータ。デフォの1だと「落書きが落書きのまま清書されてしまう」感じ。0.5くらいにするといい具合に描きなおしてくれるのだ。

なお、絵が上手い人は、1のままにしておくと、「絵柄が残る」

別の例。

棒人間レベルだと、人物の位置関係くらいしか指定できないかも。

プロンプトは以下の通り。

2girls,manga,sketch drawing, view from side,black and white,fight,line art

なんか効いてないワードとか入ってるけど、「view from side」なんかは「横から見た構図」の指定ができてると思う。

ControlNetのまとめ

  • ControlNetは、Automatic1111のextensionインストールで使えるようになる
  • ControlNet使用には、対応する「ControlNetのモデル」ダウンロードが必要。
  • 最新版のControlNetでは、2つ以上のControlnetを併用できる

 

タイトルとURLをコピーしました