🦊ControlNet
🏠/🦊雑に学ぶComfyUI
前/🦊outpainting
次/🦊IP-Adapter
https://gyazo.com/374d9112c26cc1098d9e7e11b5ca49fa
拡散モデルはAIにノイズと画像に関係性を見つけ出し、ノイズから画像を生成できるようにするものでした。
この"ノイズ"の他にもなにか概念も加えられたらどうでしょう?
例えば" イラストの線画 "と" 塗り終わった画像 "の関係性を見つけさせたら、線画を渡せば色を塗ってくれるものが
" 人の写真 "と" 棒人間 "の関係性を見つけさせたら、棒人間を渡すだけで同じポーズをした人の画像を作ってくれるものができそうです
ControlNetはこれを実現する技術のひとつです
🦊ComfyUIでやってみる
まずは落書きをもとに絵を描くscribbleを試しましょう
ControlNetモデルのダウンロード
ComfyUI Managerからinstall Models → 検索欄にControlNetを入力してscribbleをInstall
https://gyazo.com/c4eb225f08ac8282c46d6bcf5ad21b02
結局使うので全部インストールしてしまってもよいですね
https://gyazo.com/d64f40298ebc5853d25b01090900cfcf
https://gyazo.com/beead55d50334c56762156fec9ccac44
ControlNet_scribble.json
🟦positive側のCLIPTextEncodeとKSamplerの間にControlNetApplyノードを挟み、ControlNetモデルと適当に描いた落書きをつなぎます
🪸ControlNetApplyAdvancedノード
https://gyazo.com/0583906f56ae509a8650ab6481fdec57
ControlNet_Advanced.json
KSamplerAdvancedノードと同じようにControlNetを有効にするタイミングを指定できます
タイミングを調整する場面は多いため、基本的にこちらを使います
📚種類いろいろControlNet
画像と対応させられる概念はアイデアの数だけ存在します
openpose(棒人間)や深度マップはみたことがある方も多いと思いますが、他にもいろんな物が開発されています
その他主なControlNet
scribble : 落書き
lineart/anime : 線画
inpaint : inpainting
QR Code Monster : 白黒画像
次のControlNetの開発者はあなたかもしれない……
モデル一覧
→ ControlNetモデル
ControlNet Unionという複数のControlNetを一つのモデルにまとめたものをあります
🧩ControlNetへの入力する画像の下処理について
scribbleくらいであれば、ペイントソフトを立ち上げて自分で描けばよいですが、openposeや深度マップともなるとそもそもこれらを用意するのが大変です
(まぁ描いてもいいんですが…手書き深度マップで敗北したnomadoor.icon)
これらを用意するためのカスタムノードがComfyUIにはたくさんあるので、見ていきましょう
comfyui_controlnet_aux
https://gyazo.com/45a394e0b73f40d99775f8d4c1746cbc
preprocessor.json
一枚の画像を素に、線画や棒人間に変換するノードがいろいろあります
ComfyUI-Marigold
https://gyazo.com/12437869dc01560c0b95a9daa2de6ed4
marigold.json
上のカスタムノードではZoeDepthという方法で深度マップを生成しましたが、こちらはより性能の高いMarigoldという手法を使います
処理が重いのでControlNetに使うには少し過剰戦力かもしれません
今ならControlNet auxで実装されているDepth Anything V2が性能と処理の軽さのバランスが良いでしょうか
ComfyUI 3D Pose Editor
https://gyazo.com/ffefadf2e29d8e4dc660bc5876fd3138
棒人間の3Dモデルを操作してopenposeを出力
画像を読み込んで、自動でそのポーズに変換する機能もある
手と足のみ深度マップ、ノーマルマップも出力できる