Preprocessorとは?

ControlNetで使う棒人間や深度マップのような「制御用画像」を、どう用意するか?
Canny のような単純なエッジならまだしも、深度マップを毎回手で描くのは現実的ではありません。

そこで、参考画像から棒人間・深度マップ・線画・ノーマルマップなどを自動で作る処理を、ControlNet界隈では便宜上まとめて 「Preprocessor」 と呼んでいます。

これらをすべて行うひとつの技術があるわけではなく、ポーズ推定・深度推定・線画抽出など、それぞれに別々の技術があります。


制御画像の正体

手描きすると大変だと言いましたが、「手描きできる」ということは覚えておいてください。

制御用画像は特殊なデータ型ではなく、ただのRGB画像 です。
深度マップで邪魔な部分を黒で塗りつぶしたり、ポーズ画像の腕だけ描き直して姿勢を変えたりしても構いません。


必要なカスタムノード

基本的に、これだけあれば十分です。


よく使われるPreprocessor

ここでは実際に使う頻度が高い技術を紹介します。
性能的にはもっと良いものもありますが、手軽さ・軽量さ・使いやすさを重視して選んでいます。

ControlNetに使うくらいなら、そこまで極端な精度は必要ありません。

Canny

Canny-Canny_Edge.json
  • 🟩 Canny
  • 🟨 Canny Edgy

SoftEdge / HED

HED_Soft-Edge.json
  • 🟩 HED Soft-Edge

Lineart

Realistic-AnyLine_Lineart.json
  • 🟩 Realistic Lineart
  • 🟨 AnyLine Lineart

Depth

Depth_Anything_V2.json
  • 🟩 Depth Anything V2
    • 現在 V3 まで開発されていますが、ControlNet 用途であれば V2 で十分です。

Normal

DSINE.json
  • 🟩 DSINE

MLSD

M-LSD.json
  • 🟩 M-LSD Lines

Pose

OpenPose_DWPose.json
  • 🟩 OpenPose
  • 🟨 DWPose
    • OpenPose の上位互換として扱われることが多いですが、後ろ姿が苦手という明確な弱点があります。状況に応じて OpenPose と併用してください。

SDPose

SDPose.json

judian17/ComfyUI-SDPose-OOD

  • 🟩 SDPose
    • OpenPose は動物やアニメイラストに非常に弱いため、うまくいかなかったときはこちらを試してみてください。