- ソフト・サービス
- ComfyUI
- ComfyUIの画像の制御
- ComfyUIのPose ControlNet|添景の人物の姿勢
ComfyUI
ComfyUIのPose ControlNet|添景の人物の姿勢

ComfyUIのPose ControlNet|添景の人物の姿勢
この記事では、写真の人物の姿勢を、組み込みのノードで動くモデル SDPose で取り出し、その姿勢のまま別の人物を Pose ControlNet(姿勢の画像を手がかりにする ControlNet)で描きます。
顔までくっきり描き直す組み方と、複数の人物の姿勢の取り方も扱います。
画面:ComfyUI v0.37.0 ポータブル版(Windows・2026年9月)ComfyUIのPose ControlNetとは|OpenPoseの姿勢の画像
姿勢の画像は、人の関節の位置(キーポイント)を点で打ち、色の付いた線でつないだ画像です。
黒い地に、骨組みのような人の形が描かれます。
この形の元は、カーネギーメロン大学の OpenPose です。
1枚の画像から複数の人を見つけ、次のキーポイントを取り出します。
| 部分 | キーポイントの数 |
|---|---|
| 体(頭・肩・ひじ・手首・腰・ひざ・足首など) | 18 |
| 顔 | 70 |
| 手(片手ごと) | 21 |
| 足(両足で) | 6 |
Pose ControlNet は、この姿勢の画像を手がかりに、同じ姿勢の人物を描く ControlNet(形の手がかりの画像を、画像を作るモデルに足す仕組み)です。
建築のパースでは、建物のまわりに置く人物(添景)の姿勢を決めるのに使えます。
この記事で使う SDPose が出す姿勢の画像も、この OpenPose の形です。
そのため、SDPose で取った姿勢の画像を、OpenPose の ControlNet にそのまま渡せます。
SD1.5(文章から画像を作るモデル Stable Diffusion の 1.5 版)は、人の手足や体をゆがめて描くことがあります。
姿勢の画像を手がかりにすると、手足の向きや体のねじれを決めたまま描けるでしょう。
Pose ControlNetを使う前に|ComfyUIの言葉と用意するもの
姿勢を取る手順と ControlNet の手順に出る言葉を、表にしました。
| 言葉 | 意味 |
|---|---|
| ポータブル版 | Python ごと1つのフォルダに入った、Windows 向けの ComfyUI。NVIDIA の GPU の PC では、展開したフォルダの中の run_nvidia_gpu.bat をダブルクリックして起動する。入れ方はComfyUI ポータブル版|Windowsで解説している |
| ノード | 画像を読み込む・画像を作るなど、処理を1つずつ受け持つ四角い部品 |
| キャンバス | ノードを並べてつなぐ、画面の広い作業の場 |
| 接続線 | ノードの出力の点と、別のノードの入力の点を結ぶ線。ドラッグで引く |
| ノード検索 | キャンバスの何も無い所をダブルクリックすると開く、ノードを名前で探す画面 |
| ワークフロー | ノードを接続線でつないだ、画像を作るまでの処理の流れ |
| モデル | 学習した結果を収めたファイル。画像を作る本体のモデルのほかに、ControlNet などが使う補助のモデルもある |
| チェックポイント | 画像を作るモデル・CLIP(プロンプトを読むモデル)・VAE をまとめた1つのファイル。「チェックポイントを読み込む」のノードで読むと、「モデル」「CLIP」「VAE」の3つが出る |
| SD1.5 | 2022年に公開された、文章から画像を作るモデル Stable Diffusion の 1.5 版 |
| dreamshaper_8 | SD1.5 をもとに作られた、チェックポイントの1つ |
| プロンプト | 作りたい画像を英語などで書いた文。1つめのプロンプト(ポジティブ)に描きたい物を、2つめ(ネガティブ)に描かせたくない物を書く。1つめは、Kサンプラーの「ポジティブ」の点につながっている方 |
| CLIPテキストエンコード(プロンプト) | プロンプトを書き込み、条件付けに変えるノード |
| 条件付け | プロンプトの文を、モデルが読める形にしたもの |
| 潜在 | 画像になる前のデータ。「空の潜在画像」のノードで、作る画像の大きさを決める |
| Kサンプラー | ノイズを少しずつ取り除く処理(ステップ)を繰り返して、画像のもとになる潜在を作るノード |
| VAE | 潜在とふつうの画像を行き来させるモデル。「VAEデコード」は、潜在を画像に戻すノード |
| ControlNet | 画像を作るモデルに、形の手がかりになる画像を足して渡す仕組み |
| ControlNetモデルを読み込む | ControlNet のモデルのファイルを読むノード |
| ControlNetを適用 | プロンプトの条件付けに、手がかりの画像を足すノード |
| 組み込みのノード | ComfyUI に初めから入っているノード |
| テンプレート | ComfyUI に入っている、すぐに開ける見本のワークフロー |
| サブグラフ | いくつかのノードを1つにまとめたもの |
ノード検索から置いたノードは、ダブルクリックした場所に出ます。
右上の「実行する」を押せばワークフローが動き、画像は「画像を保存」に出て、ComfyUI/output のフォルダにも残ります。
SDPose のテンプレートを開くのは、画面の左の列の「テンプレート」です。
この記事では、次のモデルとワークフローを使います。
| 用意するもの | 置き場所・中身 |
|---|---|
SDPose のモデル sdpose_wholebody_fp16.safetensors | ComfyUI/models/checkpoints |
人を見つける検出器(写真の中の人を見つけて、四角で囲むモデル)rt_detr_v4-x-hgnet_fp16.safetensors | ComfyUI/models/diffusion_models(複数の人を取るときだけ) |
OpenPose の ControlNet(姿勢の画像を手がかりにする、SD1.5 用のモデル)control_v11p_sd15_openpose_fp16.safetensors | ComfyUI/models/controlnet。配布元は、下の ControlNet の基本の記事 |
| ControlNet を足したワークフロー | 文章から画像を作るワークフローに、「ControlNetモデルを読み込む」と「ControlNetを適用」を足したもの |
SDPose のテンプレートを開いたときにモデルが入っていなければ、足りないモデルの一覧の画面が出るでしょう。
テンプレートから足りないモデルを取る方法は、ComfyUIのモデルのダウンロードと置き場所|テンプレートからの取得・別のフォルダの指定で解説しています。
ControlNet のノードの足し方は、ComfyUIのControlNetの基本|Load ControlNet Model・Apply ControlNet・強さと効く範囲を見てください。
SDPose のテンプレートやノードの名前も、日本語の表示で書いています。
画面が英語のときは、左下の歯車で設定を開き、検索の欄に Language と打って日本語にしてください。
SDPose のモデルを置く ComfyUI/models/checkpoints などは、ポータブル版では ComfyUI_windows_portable の中にある ComfyUI のフォルダの下です。
作例の画像は、次の設定で作りました。
1人の作例の1つめのプロンプトには、「full body photo of a woman in a beige coat standing in a modern building lobby, daylight」と書きました。
| ノード | 欄と値 |
|---|---|
| チェックポイントを読み込む | dreamshaper_8(Civitai〈画像のモデルを配るサイト〉の DreamShaper 8 のページの dreamshaper_8.safetensors を落とし、ComfyUI/models/checkpoints に置く) |
| 2つめの「CLIPテキストエンコード(プロンプト)」(ネガティブ) | text, watermark, blurry, lowres, deformed, bad anatomy |
| 空の潜在画像 | 幅 512・高さ 768(1人の縦長の作例)。4人の作例は幅 768・高さ 512 |
| Kサンプラー | シード 42・生成後の制御 fixed・ステップ 25・cfg 7.0・サンプラー名 euler・スケジューラ normal・ノイズ除去 1.00 |
表の値を、実行する前に、それぞれのノードの欄へ入れておいてください。
記事と同じ条件で作れます。
人の写った写真は、手元にあるものを使いましょう。
元の画像が変われば、同じ設定でも結果は変わります。
画像からOpenPoseの姿勢を抽出する方法|SDPose
SDPose は、体・手・顔・足のキーポイントを1つのモデルで取る、姿勢の検出のモデルです。
v0.37.0 の組み込みのノードで動き、テンプレートもあります。
ライセンスは MIT(Comfy-Org/SDPose)です。
テンプレートは4つあります。
| テンプレート | 入力 | 出る物 |
|---|---|---|
| ポーズマップ: SDPose-OOD(画像) | 1枚の画像 | 姿勢の画像(画面の「ポーズ」は、この記事の「姿勢」と同じ意味) |
| ポーズマップ: SDPose-OOD(動画) | 動画 | フレームごとの姿勢の画像 |
| ポーズ検出: SDPose Multi-Person(画像) | 複数の人が写った画像 | 写っている人を見つけて取った、全員の姿勢の画像と、人を囲む四角(バウンディングボックス) |
| ポーズ検出: SDPose Multi-Person(動画) | 動画 | フレームごとの姿勢の画像とバウンディングボックス |
画像と動画のテンプレートは、同じ題で並んでいます。
開いたあとのノードの名前(Image to〜・Video to〜)で見分けてください。
1人の写真から姿勢を取る
「テンプレート」
画面の左の列の、ComfyUI のマークの下から数えて6つ目の「テンプレート」を押します。
テンプレートの一覧の画面が開きます。

「SDPose」
一覧の画面の右上の検索の欄に、「SDPose」と打ちます。
SDPose の4つのカードが並びます。
左端の
左端の「ポーズマップ: SDPose-OOD」のカードを押します。
画像から姿勢を取るテンプレートが、キャンバスに開きます。

人の
左の「画像を読み込む」の「アップロードするファイルを選択」を押し、人の写った写真を選びます。
ノードの下に、選んだ写真が出ます。

ComfyUI/input にコピーされる。ネットには送られない「実行する」
画面の右上の「実行する」を押します。
右の「画像を保存」に、姿勢の画像が出ます。

編集部の PC(NVIDIA GeForce RTX 4060)では、モデルの読み込みを入れて1回目が約40秒でした。
姿勢の画像は、ComfyUI/output のフォルダに保存されます。
ComfyUIのPose ControlNetの使い方|ワークフロー
姿勢の画像を「ControlNetを適用」に渡し、OpenPose のモデルを読みます。
テンプレートは新しいタブで開いているので、画面の上のタブを押して、ControlNet を足したワークフローのタブに切り替えてください。
タブが無いときは、画面の左の列の「ワークフロー」から、保存したワークフローを開きます。
そのワークフローの「画像を読み込む」で、SDPose で取った姿勢の画像を読みます。
姿勢の
「画像を読み込む」の「アップロードするファイルを選択」を押し、ComfyUI/output に保存された姿勢の画像を選びます。
ノードの下に、黒い地の姿勢の画像が出ます。
姿勢の
「画像を読み込む」の右にある「画像」の点を、「ControlNetを適用」の左の「画像」の点までドラッグします。
姿勢の画像が、ControlNet の手がかりになります。
OpenPose の
「ControlNetモデルを読み込む」の「コントロールネット名」の欄(画面では「コント …」と縮めて出る)を押し、control_v11p_sd15_openpose_fp16.safetensors を押します。
欄にモデルの名前が入ります。

空の
「空の潜在画像」の「幅」の欄を押して 512、「高さ」の欄を押して 768 と打ちます。
作る画像が、姿勢の画像と同じ縦長になります。
人物の
1つめの「CLIPテキストエンコード(プロンプト)」の文の欄に、描きたい人物と場所を英語で書きます。
書いた文が欄に入ります。
「実行する」
右上の「実行する」を押します。
「画像を保存」に、姿勢の画像と同じ姿勢の人物が出ます。

Pose ControlNetの2パス|顔と細部を描き直す
SD1.5 で 512×768 の画像を作ると、人の顔が小さくつぶれがちです。
2パスは、1回目で姿勢と形を決め、2回目で大きくして細部を描き直す組み方です。
| 回数 | すること |
|---|---|
| 1回目 | Pose ControlNet で、姿勢どおりの人物を作る |
| 2回目 | 1回目の潜在を大きくし、Kサンプラーの「ノイズ除去」を小さくして描き直し、顔や服の細部を足す |
公式ドキュメントの例は、2回目に別のチェックポイントを使って画風を変えています。
この記事では、2回とも同じ dreamshaper_8 にしました。
2つめのKサンプラーを置く
「潜在を
1つめの「Kサンプラー」の右の「潜在」の点から接続線を引き出し、キャンバスの何も無い所で離します。
ノード検索で「Upscale Latent By」と打って「潜在を拡大(指定サイズ)」を押すと、接続線でつながったノードが置かれます。
「スケールバイ」
「潜在を拡大(指定サイズ)」の「スケールバイ」の欄で、左右の矢印のあいだの数を押し、1.5 と打って Enter を押します。
512×768 の潜在が、768×1152 に大きくなるようになります。
2つめの
「潜在を拡大(指定サイズ)」の右の「潜在」の点から接続線を引き出し、キャンバスの何も無い所で離します。
ノード検索で「Kサンプラー」と打ち、名前がちょうど「Kサンプラー」の行を押すと、「潜在画像」に接続線がつながった2つめのKサンプラーが置かれます。
モデルをつなぐ
「チェックポイントを読み込む」の右の「モデル」の点から、2つめのKサンプラーの左の「モデル」の点までドラッグします。
2つのノードが接続線でつながります。
2つの
1つめのプロンプトの「条件付け」を2つめのKサンプラーの「ポジティブ」へ、2つめのプロンプトの「条件付け」を「ネガティブ」へドラッグします。
2回目は ControlNet を通さず、プロンプトだけで描き直す形になります。
ノイズ除去を決めて実行する
「ノイズ除去」
「ノイズ除去」は、2回目では、1回目の画像をどれだけ描き直すかの割合になります。
2つめのKサンプラーの「ノイズ除去」の欄で、左右の矢印のあいだの数を押し、0.5 と打って Enter を押してください。
欄が 0.50 になります。
この記事では、2つめのほかの欄を、シード 42・生成後の制御 fixed・ステップ 20・cfg 7.0 にしました。
「VAEデコード」
2つめのKサンプラーの右の「潜在」の点から、「VAEデコード」の左の「サンプル」の点までドラッグします。
1つめのKサンプラーからの接続線が外れ、2回目の結果が画像になるようになります。

実行して確かめる
画面の右上の、青い「実行する」を押してください。
「画像を保存」に、768×1152 で描き直した人物が出ます。
2回目のノイズ除去は、0.4〜0.6 が目安です。
下げるほど1回目の形がそのまま残り、上げるほど細部が変わります。
1回目(前の節で作った画像)と2回目の画像の、人物の所を同じ範囲で切り出して比べました。

編集部の PC では、2パスで1枚が約9秒でした。
2パスの考え方は、ComfyUIの2パスとHires fix|段階的に大きくした描き直しで解説しています。
OpenPoseの複数人の姿勢を取る|SDPose Multi-Person
複数の人が写った写真からは、「ポーズ検出: SDPose Multi-Person」のテンプレートで、全員の姿勢を取れます。
RT-DETRv4 の検出器が人を四角(バウンディングボックス)で囲み、姿勢はその四角ごとに取られる仕組みです。
テンプレートの
画面の左の列の「テンプレート」(上から6つ目)を押します。
テンプレートの一覧が開きます。

「SDPose」
右上の検索の欄に「SDPose」と打つと、4つのカードが並びます。
右から2つ目の「ポーズ検出: SDPose Multi-Person」を押すと、画像のテンプレートが開きます。
複数の
左の「画像を読み込む」の「アップロードするファイルを選択」を押し、複数の人が写った写真を選びます。
選んだ写真が、ノードの下に出ます。
「max_detections」
「Image to Pose Map (SDPose Multi-Person)」の「max_detections」(取る人数の上限)の欄で、左右の矢印のあいだの数を押します。
写っている人数(ここでは 4)を打って Enter を押すと、欄が 4 になります。
テンプレートの初めの値は 1 で、そのままでは1人だけが取られました。
実行して画像を
右上の青い「実行する」を押しましょう。
「画像を保存」に姿勢の画像が、右の「画像プレビュー」に、写真と姿勢とバウンディングボックスを重ねた画像が出ます。

取った4人の姿勢の画像を、Pose ControlNet に渡して作りました。
手順は1人のとき(2パスにする前のワークフロー)と同じで、「画像を読み込む」で4人の姿勢の画像を選び、空の潜在画像を幅 768・高さ 512 にし、プロンプトを「photo of four people standing and talking in a bright architecture office, business casual, daylight」にしました。

動画から姿勢を取るテンプレートは、「ComfyUIの動画生成とは|テキスト・画像から動画」(準備中)から始まる動画の記事で解説します。
姿勢と深度など、複数の ControlNet を重ねる使い方は、ComfyUIの複数のControlNetの併用|Union ControlNetで解説しています。
SDPoseのテンプレートの中のノード
1人用のテンプレート「ポーズマップ: SDPose-OOD」のタブに切り替えてから、中を見ましょう。
真ん中の「Image to Pose Map (SDPose-OOD)」は、いくつかのノードを1つにまとめたサブグラフです。
サブグラフを
「Image to Pose Map (SDPose-OOD)」の名前の右端の、四角と矢印の絵のボタンを押します。
サブグラフの中のノードが、キャンバスに出ます。

元の
サブグラフの中では、画面の上にワークフローの名前とサブグラフの名前が「/」で並びます。
左のワークフローの名前を押すと、サブグラフの外の元の画面に戻ります。

サブグラフの外に出ている欄のうち、姿勢の描き方を決める主な欄と、テンプレートの値です。
| 欄 | テンプレートの値 | 働き |
|---|---|---|
| resize_target_longer_size | 1024 | 姿勢を取る前に、画像の長い辺をこの大きさにする |
| draw_body・draw_hands・draw_face・draw_feet | true | 描く部分を選ぶ |
| stick_width・face_point_size | 4・2 | 線の太さと、顔の点の大きさ |
| score_threshold | 0.50 | この確からしさより低いキーポイントは描かない。下げると、確かでないキーポイントまで描かれる |
体が隠れていたり、人がとても小さかったりすると、取れるキーポイントが少なくなります。
OpenPoseの姿勢が取れないとき・脚が崩れるとき
| 起きること | 直し方 |
|---|---|
| テンプレートを開くと、足りないモデルの一覧の画面が出る | SDPose のモデル(と、複数の人なら検出器)が入っていません。「Pose ControlNetを使う前に」の節の表の場所に置いてください |
| 複数の人が写っているのに、1人しか取られない | 「max_detections」の初めの値は 1 です。写っている人数にしましょう |
| 腰や脚の線が抜ける | score_threshold(0.50)より確からしさの低いキーポイントは描かれません。抜けた所は、描かれる人物の脚の形がゆれやすくなります。score_threshold を下げると、確からしさの低いキーポイントも描かれます |
| 作った人物の顔がつぶれる | 2パスで、大きくしてから描き直します |
| 接続線を離したときに、ノード検索でなくメニューが出る | 前の版から使い続けている ComfyUI では、離したときの動きが逆になっていることがあります。Shift を押しながら離すと、ノード検索が開きます |
参考にしたのは、ComfyUI の公式ドキュメントのPose ControlNet 2パス・SDPose での姿勢の検出のページと公式のテンプレートです(2026年9月29日に確認)。
会員登録(無料)
記事やテーマのお気に入り・学習履歴・フォローが使えます。
この記事について
PERSC編集部が、建築の制作に関わる知識を実務目線で整理しています。内容は公開・更新日時点の情報にもとづきます。誤りや古い情報にお気づきの場合はお問い合わせよりご連絡ください。

