コンテンツにスキップ
ControlNet

ControlNet

Updated: 2026-05

1. このページで学ぶこと

これまで触ったプロンプトは「何を描くか(What)」を指示する手段だった。ControlNet は「どう描くか(How / Where)」を別画像で指定する仕組み。

  • プロンプトで「中世の騎士」を指定
  • ControlNet の Pose で「ジャンプしているポーズ」を指定
  • 結果: 指定したポーズで中世の騎士が描かれる

プロンプトだけでは難しい「精密な構図・姿勢・遠近の制御」が可能になる。

2. ControlNet の種類

Comfy Cloud には20種類以上のプリインストール ControlNet がある。よく使うもの:

種類 入力に使う画像 用途
OpenPose 棒人間の骨格 人物のポーズ指定
Depth 深度マップ 奥行き構造の指定
Canny エッジ検出した線画 形状の輪郭指定
Scribble 手書きラフスケッチ 大まかな形指定
Lineart 線画 漫画的なアウトライン指定
Normal ノーマルマップ 3D 表面の凹凸指定
Tile 同じ画像 高解像度化、細部追加

学生が最初に触りやすいのは OpenPoseDepthScribble

3. 仕組み(直感)

通常のワークフローでは:

プロンプト → CLIP → 拡散プロセス → 画像

ControlNet が入ると:

プロンプト → CLIP ─┐
                   ├→ 拡散プロセス → 画像
制御画像 → ControlNet ┘

ControlNet ノードは制御画像(ポーズ画像、深度画像など)を解析して、拡散プロセスに「この通りの構造にしろ」という追加指示を送る。プロンプトは内容を、ControlNet は構造を担当する。

4. Comfy Cloud の ControlNet テンプレート

Comfy Cloud のテンプレート > はじめに には 「2.2 クリエイター - 拡散ガイダンス」 という ControlNet 入門ワークフローが組み込まれている。Z Image Turbo + ControlNet の構成で、教材として最初に触るのに適している。

Popular カテゴリの Qwen Image Edit 2509 にも ControlNet が統合されている。

5. 基本ワークフロー(OpenPose の例)

img2img の発展形。最小ワークフローからの差分:

  1. 画像を読み込む ノードを追加(ポーズ画像 用)
  2. OpenPose プリプロセッサ ノードを追加(写真からポーズ抽出。すでに棒人間画像を持っているなら不要)
  3. ControlNet を読み込む ノードを追加(OpenPose 用モデルを選択)
  4. ControlNet 適用 ノードを追加
  5. K-Sampler の positive 入力に ControlNet 適用の出力を繋ぐ

ControlNet 適用ノードに重要なパラメータ:

  • strength: 制御の強さ(0.0〜1.5、通常 0.7〜1.0)
  • start_percent / end_percent: 拡散プロセスの何%〜何%で ControlNet を効かせるか(通常 0.0〜1.0 で全体)

6. ポーズ抽出の流れ

実写の人物写真を入力にして、自動的にポーズを抽出する場合。

  1. 任意の人物写真をロード(自撮りでも、フリー素材でも)
  2. OpenPose プリプロセッサ ノードに通す
  3. 結果として棒人間画像が出る(顔・手・足のキーポイントが線で繋がっている)
  4. その棒人間画像を ControlNet 適用ノードに送る
  5. プロンプトで「描きたい人物像」を指定して実行

これで「自分のポーズで別の人物を描く」ができる。

7. Depth の使いどころ

OpenPose は人物専用に近い。風景や物体 で構造を指定するなら Depth が便利。

  1. 任意の写真(建築物、室内、風景など)をロード
  2. Depth プリプロセッサ(MiDaS 等)に通す
  3. 深度マップが出る(手前は白、奥は黒のグレースケール)
  4. その深度マップを ControlNet で適用
  5. プロンプトで「同じ奥行き構造で、別の世界観」を指定

「同じ部屋のレイアウトで、北欧風 → ジャパニーズ伝統建築風」のような変換ができる。

8. 複数 ControlNet を重ねる

ControlNet 適用ノードは数珠つなぎにできる。

例: OpenPose(人物のポーズ) + Depth(背景の奥行き) を同時にかける

  • プロンプト: 「中世の市場で剣を構える戦士」
  • ControlNet 1: OpenPose(誰かのポーズ写真から抽出)
  • ControlNet 2: Depth(中世市場っぽい風景写真から抽出)

両方の制約を満たす画像が出力される。strength のバランスで影響度を調整。

9. クレジット消費の目安

ControlNet を1つ重ねるごとに、計算量が増える。実測値ではないが推定:

  • 標準 T2I: 0.3〜0.5 cr
  • ControlNet 1つ: 1〜3 cr/枚
  • ControlNet 2つ: 2〜5 cr/枚

授業中の試行は枚数を絞る。気に入った設定で本番生成、を意識する。

10. 演習(授業向け)

演習A: OpenPose で姿勢制御

  • 自撮り写真を1枚用意(または有名なポーズ写真)
  • OpenPose プリプロセッサで棒人間化
  • プロンプト: 「a samurai warrior in traditional armor」
  • 自分のポーズで侍になる

演習B: Scribble で雑なラフから生成

  • iPad / 紙にラフスケッチを描く(建物のシルエット、キャラクターの輪郭など)
  • スマホで撮ってロード
  • Scribble プリプロセッサ → ControlNet
  • プロンプトでスケッチを「具現化」する

演習C: 同じポーズで複数キャラ

  • 1つのポーズ画像から、5〜6回プロンプトを変えて生成
  • 「忍者」「宇宙飛行士」「中世の騎士」「現代のサラリーマン」など
  • 同じ姿勢で別人格が出てくる感覚を体感

11. 注意点

  • 学習元のスタイルが残る: ControlNet は学習データの傾向を引き継ぐので、極端な構図だと崩れる
  • strength を上げすぎない: 1.0 を超えると、プロンプトが効かず制御画像そのまま出てくる
  • モデルとの相性: SD 1.5 用と SDXL 用、Flux 用は別モデル。ノードで選択するモデルが現在使っているチェックポイントと合っているか確認

12. このあと

  • LoRA — 画風や特定のキャラを学習させた追加層
  • Image to Video — 静止画を動画に変える
  • Algorithm Exposure — CFG 極端化や潜在空間補間など、内部を覗く実験