このシリーズの記事一覧 (クリックで開閉)
【 ComfyUI基礎シリーズ 】
2024/01/22:読みやすいよう微調整
ControlNetはAI画像生成を使う上で必須と言っても過言ではない拡張機能。
しかしながらComfyUIではそもそもControlNet用のノードを組む方法がややこしいため、これをシンプルに解説する。
ComfyUI基礎シリーズでは有るがAI画像生成基礎ではないため、次は理解している前提で可能な限り省略する。
とはいったものの詳しい使い方までは知る必要はなく、使いながら覚えていけば良い。
過去記事にてwebUI版のControlNetについて解説しているので、全く知らなければそちらをザックリ読んでもらえば良いと思う。
ControlNet(v1.1)の詳しい解説!輪郭やポーズから思い通りの絵を書かせる【Stable Diffusion】 | 謎の技術研究部
コントロールネットを利用するにはComfyUI標準ノードだけでは不可能なので、これをインストールしていく。
過去の記事でComfyUI Managerを使った記事を書いたので、こちらを使ってControlNetに必要なものを最小限の労力でインストールしていく。
Preprocessor
用のカスタムノードを追加するComfyUI's ControlNet Auxiliary Preprocessors
を検索してインストール
念のため解説するとPreprocessor
とは、例えばLineart
であれば次のような画像を生成する前の中間素材(Detectmap)を作るノードだ。
コントロールネットの機能それぞれに対応したモデルが必要。
こちらも知らない人が多そうだが、実はコレもComfyUI Manager
からインストールできる。
Install Models
のパネルを出して対象のモデルを検索すれば良い。
次はtile
を検索した例。
コントロールネットは機能一つずつ別々のモデルが必要だ。
ここはこの記事の範疇ではないので省略するが、必要に応じたモデルをダウンロードしよう。
検索すると似通った名前のモデルが複数出てくる。どれをDLすればよいのか。
こちら実はちょっと複雑で次のリンク先から名前からバージョンの内容がわかるようになっている(英語)
GitHub - lllyasviel/ControlNet-v1-1-nightly: Nightly release of ControlNet 1.1
ただ、現時点で頻繁に更新や追加が行われているものではないので、1度名前のリンクに飛んでみて日付の新しい方を入れておけば良い。
未検証だがComfyUI ManagerのIDが大きい方が日付があたらしい?
また、モデルを手動でインストールしたい場合は次のディレクトリに保存する。
ComfyUI_windows_portable\ComfyUI\models\controlnet
基本としては3つのノードを組み合わせて使うものなのでこちらから解説
先程DLしたモデルをここで指定し、読み込む。
本当にそれだけのノード。使いたい機能に合わせて読み込むものを変えよう。
今回はOpenpose
を利用した。
2番は1で読み込んだモデルに対応したものを入れる。
このノードが元画像からDetectmapを生成する。
今回はopenposeで検索しOpenposePrerprocessor
を入れる。
これらのノード名はモデルごと別々の名前がついているので、詳しい対応表は公式GitHubを参照する。
GitHub - Fannovel16/comfyui_controlnet_aux: ComfyUI's ControlNet Auxiliary Preprocessors
ほとんど全部同じ名前+Preprocessor
がついているはずなので検索もさほど困らないかと思う(tileならtileで検索すれば出る)
これらは右クリック > Add Node > ControlNet Proprocessors
の項目から一覧が見られるので使ってみるのも良い。
最後にこれらを適用するノードが必要。
このノードを見て分かるのコントロールネットはpositive,negative
のプロンプトに注入されて送り出されるというところ。
ここではAdvanced
かそうでないかの2種あるが、それほど大きな違いもないのでAdvanced
を読み込んで使えば良いと思う。
最後に一番重要なのがつなぎ方。画像で分かるなら次だけ見ればOK。
Preprocessor
は画像をDetectmapに変換するものなので、そもそも元絵がないと意味がない。
したがってLoad Image
などから出た画像をここに入れた後、Apply ControlNet
につなぐ。
つまりは1度AI生成したものをImageに変換して再度こちらに入れるという手法もある。
読み込んだらそのままApply Controlnet
のcontrol_net
に繋げば良い。
Clip Txt Encode
から出ているポジティブとネガティブをApply Controlnet
につなぎ、そのまま出たピンをKSampler
に繋げば良い。
Advanced
なしの場合は黄色ピンが一つなのでポジティブにだけ繋げば動作する。
このあとはおさらいなので画像だけ
入力(openpose) | 出力 |
---|---|
この組み合わせtでQueue Prompt
を実行しても何も生成されないことがある。
私も原因がわかってないのだがKsampler
のpositive,negative
をつなぎ直すと動いたりする。
それでも治らない場合はadvanced
なしのApply ControlNet
を使ってみると良いと思う。
コントロールネットは何かと使うことになると思うので先にノードの組み方だけ解説してみた。
内容まで解説していないので、あまりコントロールネット自体に詳しくない場合は一旦スキップしても構わないと思う。
いずれ必要になり次第で良い。