generated at
🦊ControlNet


拡散モデルはAIにノイズと画像に関係性を見つけ出し、ノイズから画像を生成できるようにするものでした。
この"ノイズ"の他にもなにか概念も加えられたらどうでしょう?
例えば" イラストの線画 "と" 塗り終わった画像 "の関係性を見つけさせたら、線画を渡せば色を塗ってくれるものが
" 人の写真 "と" 棒人間 "の関係性を見つけさせたら、棒人間を渡すだけで同じポーズをした人の画像を作ってくれるものができそうです
ControlNetはこれを実現する技術のひとつです


🦊ComfyUIでやってみる
まずは落書きをもとに絵を描くscribbleを試しましょう
ControlNetモデルのダウンロード
ComfyUI Managerから install Models → 検索欄にControlNetを入力してscribbleを Install
結局使うので全部インストールしてしまってもよいですね
🟦positive側のCLIPTextEncodeとKSamplerの間にControlNetApplyノードを挟み、ControlNetモデルと適当に描いた落書きをつなぎます

KSamplerAdvancedノードと同じようにControlNetを有効にするタイミングを指定できます
タイミングを調整する場面は多いため、基本的にこちらを使います


📚種類いろいろControlNet
画像と対応させられる概念はアイデアの数だけ存在します
openpose(棒人間)や深度マップはみたことがある方も多いと思いますが、他にもいろんな物が開発されています
その他主なControlNet
scribble : 落書き
lineart/anime : 線画
inpaint : inpainting
QR Code Monster : 白黒画像
次のControlNetの開発者はあなたかもしれない……
モデル一覧
ControlNet Unionという複数のControlNetを一つのモデルにまとめたものをあります


🧩ControlNetへの入力する画像の下処理について
scribbleくらいであれば、ペイントソフトを立ち上げて自分で描けばよいですが、openposeや深度マップともなるとそもそもこれらを用意するのが大変です
(まぁ描いてもいいんですが…手書き深度マップで敗北したnomadoor)
これらを用意するためのカスタムノードがComfyUIにはたくさんあるので、見ていきましょう

一枚の画像を素に、線画や棒人間に変換するノードがいろいろあります

上のカスタムノードではZoeDepthという方法で深度マップを生成しましたが、こちらはより性能の高いMarigoldという手法を使います
処理が重いのでControlNetに使うには少し過剰戦力かもしれません
今ならControlNet auxで実装されているDepth Anything V2が性能と処理の軽さのバランスが良いでしょうか

棒人間の3Dモデルを操作してopenposeを出力
画像を読み込んで、自動でそのポーズに変換する機能もある
手と足のみ深度マップ、ノーマルマップも出力できる