search
  1. ソフト・サービス
  2. ComfyUI
  3. ComfyUIの画像の制御
  4. ComfyUIのPose ControlNet|添景の人物の姿勢

ComfyUI

ComfyUIのPose ControlNet|添景の人物の姿勢

編集部 読了 約20分

この記事では、写真の人物の姿勢を、組み込みのノードで動くモデル 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.52022年に公開された、文章から画像を作るモデル Stable Diffusion の 1.5 版
dreamshaper_8SD1.5 をもとに作られた、チェックポイントの1つ
プロンプト作りたい画像を英語などで書いた文。1つめのプロンプト(ポジティブ)に描きたい物を、2つめ(ネガティブ)に描かせたくない物を書く。1つめは、Kサンプラーの「ポジティブ」の点につながっている方
CLIPテキストエンコード(プロンプト)プロンプトを書き込み、条件付けに変えるノード
条件付けプロンプトの文を、モデルが読める形にしたもの
潜在画像になる前のデータ。「空の潜在画像」のノードで、作る画像の大きさを決める
Kサンプラーノイズを少しずつ取り除く処理(ステップ)を繰り返して、画像のもとになる潜在を作るノード
VAE潜在とふつうの画像を行き来させるモデル。「VAEデコード」は、潜在を画像に戻すノード
ControlNet画像を作るモデルに、形の手がかりになる画像を足して渡す仕組み
ControlNetモデルを読み込むControlNet のモデルのファイルを読むノード
ControlNetを適用プロンプトの条件付けに、手がかりの画像を足すノード
組み込みのノードComfyUI に初めから入っているノード
テンプレートComfyUI に入っている、すぐに開ける見本のワークフロー
サブグラフいくつかのノードを1つにまとめたもの

ノード検索から置いたノードは、ダブルクリックした場所に出ます。
右上の「実行する」を押せばワークフローが動き、画像は「画像を保存」に出て、ComfyUI/output のフォルダにも残ります。

SDPose のテンプレートを開くのは、画面の左の列の「テンプレート」です。

この記事では、次のモデルとワークフローを使います。

用意するもの置き場所・中身
SDPose のモデル sdpose_wholebody_fp16.safetensorsComfyUI/models/checkpoints
人を見つける検出器(写真の中の人を見つけて、四角で囲むモデル)rt_detr_v4-x-hgnet_fp16.safetensorsComfyUI/models/diffusion_models(複数の人を取るときだけ)
OpenPose の ControlNet(姿勢の画像を手がかりにする、SD1.5 用のモデル)control_v11p_sd15_openpose_fp16.safetensorsComfyUI/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」のカードを押します。
画像から姿勢を取るテンプレートが、キャンバスに開きます。

テンプレートの一覧。左端の「ポーズマップ: SDPose-OOD」のカードを赤い枠で囲んでいる
左から2つ目は、同じ題の動画のテンプレート

人の写った写真をアップロードする

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

画像を読み込むのノード。「アップロードするファイルを選択」のボタンを赤い枠で囲んでいる
人の写った写真を読み込んだところ。選んだ画像は PC の ComfyUI/input にコピーされる。ネットには送られない

「実行する」を押す

画面の右上の「実行する」を押します。
右の「画像を保存」に、姿勢の画像が出ます。

SDPose-OOD のテンプレートを実行したところ。「画像を読み込む」の「画像」の欄を赤い枠で囲んでいる
赤い枠は、読み込んだ写真の名前の欄。写真は SD1.5 で作った、歩く男性の画像で、姿勢の画像は長い辺が 1024 ピクセルになった

編集部の PC(NVIDIA GeForce RTX 4060)では、モデルの読み込みを入れて1回目が約40秒でした。
姿勢の画像は、ComfyUI/output のフォルダに保存されます。

ComfyUIのPose ControlNetの使い方|ワークフロー

姿勢の画像を「ControlNetを適用」に渡し、OpenPose のモデルを読みます。

テンプレートは新しいタブで開いているので、画面の上のタブを押して、ControlNet を足したワークフローのタブに切り替えてください。
タブが無いときは、画面の左の列の「ワークフロー」から、保存したワークフローを開きます。

そのワークフローの「画像を読み込む」で、SDPose で取った姿勢の画像を読みます。

姿勢の画像をアップロードする

「画像を読み込む」の「アップロードするファイルを選択」を押し、ComfyUI/output に保存された姿勢の画像を選びます。
ノードの下に、黒い地の姿勢の画像が出ます。

姿勢の画像を「ControlNetを適用」につなぐ

「画像を読み込む」の右にある「画像」の点を、「ControlNetを適用」の左の「画像」の点までドラッグします。
姿勢の画像が、ControlNet の手がかりになります。

OpenPose のモデルを選ぶ

「ControlNetモデルを読み込む」の「コントロールネット名」の欄(画面では「コント …」と縮めて出る)を押し、control_v11p_sd15_openpose_fp16.safetensors を押します。
欄にモデルの名前が入ります。

Pose ControlNet のワークフローの全体。左下の姿勢の画像と、ControlNetモデルを読み込むを赤い枠で囲んでいる
空の潜在画像は、次の手順で縦長の 512×768 にする

空の潜在画像を縦長にする

「空の潜在画像」の「幅」の欄を押して 512、「高さ」の欄を押して 768 と打ちます。
作る画像が、姿勢の画像と同じ縦長になります。

人物の姿をプロンプトに書く

1つめの「CLIPテキストエンコード(プロンプト)」の文の欄に、描きたい人物と場所を英語で書きます。
書いた文が欄に入ります。

「実行する」を押して結果を見る

右上の「実行する」を押します。
「画像を保存」に、姿勢の画像と同じ姿勢の人物が出ます。

姿勢の画像と、その姿勢で作ったコートの女性の画像
プロンプトは「full body photo of a woman in a beige coat standing in a modern building lobby, daylight」

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.50 にする

「潜在を拡大(指定サイズ)」の「スケールバイ」の欄で、左右の矢印のあいだの数を押し、1.5 と打って Enter を押します。
512×768 の潜在が、768×1152 に大きくなるようになります。

2つめの「Kサンプラー」を置く

「潜在を拡大(指定サイズ)」の右の「潜在」の点から接続線を引き出し、キャンバスの何も無い所で離します。
ノード検索で「Kサンプラー」と打ち、名前がちょうど「Kサンプラー」の行を押すと、「潜在画像」に接続線がつながった2つめのKサンプラーが置かれます。

モデルをつなぐ

「チェックポイントを読み込む」の右の「モデル」の点から、2つめのKサンプラーの左の「モデル」の点までドラッグします。
2つのノードが接続線でつながります。

2つのプロンプトをつなぐ

1つめのプロンプトの「条件付け」を2つめのKサンプラーの「ポジティブ」へ、2つめのプロンプトの「条件付け」を「ネガティブ」へドラッグします。
2回目は ControlNet を通さず、プロンプトだけで描き直す形になります。

ノイズ除去を決めて実行する

「ノイズ除去」を 0.50 にする

「ノイズ除去」は、2回目では、1回目の画像をどれだけ描き直すかの割合になります。

2つめのKサンプラーの「ノイズ除去」の欄で、左右の矢印のあいだの数を押し、0.5 と打って Enter を押してください。
欄が 0.50 になります。

この記事では、2つめのほかの欄を、シード 42・生成後の制御 fixed・ステップ 20・cfg 7.0 にしました。

「VAEデコード」につなぎ替える

2つめのKサンプラーの右の「潜在」の点から、「VAEデコード」の左の「サンプル」の点までドラッグします。
1つめのKサンプラーからの接続線が外れ、2回目の結果が画像になるようになります。

2パスのワークフロー。潜在を拡大(指定サイズ)と2つめのKサンプラーを赤い枠で囲んでいる
2つめのKサンプラーには ControlNet を通さず、プロンプトの条件付けをそのままつないだ

実行して確かめる

画面の右上の、青い「実行する」を押してください。
「画像を保存」に、768×1152 で描き直した人物が出ます。

2回目のノイズ除去は、0.4〜0.6 が目安です。
下げるほど1回目の形がそのまま残り、上げるほど細部が変わります。

1回目(前の節で作った画像)と2回目の画像の、人物の所を同じ範囲で切り出して比べました。

1回目と2回目の画像の、人物のまわりを同じ範囲で切り出して並べたもの
拡大はしていない。2回目は顔の目鼻と、コートのボタンやベルトがはっきりした

編集部の PC では、2パスで1枚が約9秒でした。
2パスの考え方は、ComfyUIの2パスとHires fix|段階的に大きくした描き直しで解説しています。

OpenPoseの複数人の姿勢を取る|SDPose Multi-Person

複数の人が写った写真からは、「ポーズ検出: SDPose Multi-Person」のテンプレートで、全員の姿勢を取れます。
RT-DETRv4 の検出器が人を四角(バウンディングボックス)で囲み、姿勢はその四角ごとに取られる仕組みです。

テンプレートの一覧を開く

画面の左の列の「テンプレート」(上から6つ目)を押します。
テンプレートの一覧が開きます。

左の列。「テンプレート」のボタンを赤い枠で囲んでいる
1人の写真のときと同じボタン

「SDPose」と打って、右から2つ目のカードを押す

右上の検索の欄に「SDPose」と打つと、4つのカードが並びます。
右から2つ目の「ポーズ検出: SDPose Multi-Person」を押すと、画像のテンプレートが開きます。

複数の人が写った写真をアップロードする

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

「max_detections」を人数にする

「Image to Pose Map (SDPose Multi-Person)」の「max_detections」(取る人数の上限)の欄で、左右の矢印のあいだの数を押します。
写っている人数(ここでは 4)を打って Enter を押すと、欄が 4 になります。

テンプレートの初めの値は 1 で、そのままでは1人だけが取られました。

実行して画像を出す

右上の青い「実行する」を押しましょう。
「画像を保存」に姿勢の画像が、右の「画像プレビュー」に、写真と姿勢とバウンディングボックスを重ねた画像が出ます。

SDPose Multi-Person のテンプレートを実行したところ。「max_detections」の欄を赤い枠で囲んでいる
max_detections を 4 にして、4人ともバウンディングボックスで囲まれた

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

4人が立つ写真と、4人の姿勢で作ったオフィスの画像
4人の立ち位置と向きが写真のとおりになった。服や顔はプロンプトで変わった

動画から姿勢を取るテンプレートは、「ComfyUIの動画生成とは|テキスト・画像から動画」(準備中)から始まる動画の記事で解説します。
姿勢と深度など、複数の ControlNet を重ねる使い方は、ComfyUIの複数のControlNetの併用|Union ControlNetで解説しています。

SDPoseのテンプレートの中のノード

1人用のテンプレート「ポーズマップ: SDPose-OOD」のタブに切り替えてから、中を見ましょう。
真ん中の「Image to Pose Map (SDPose-OOD)」は、いくつかのノードを1つにまとめたサブグラフです。

サブグラフを開くボタンを押す

「Image to Pose Map (SDPose-OOD)」の名前の右端の、四角と矢印の絵のボタンを押します。
サブグラフの中のノードが、キャンバスに出ます。

サブグラフの中。チェックポイントを読み込む・画像/マスクのリサイズ・SDPoseKeypointExtractor・SDPoseDrawKeypoints が並んでいる
SDPoseKeypointExtractor がキーポイントを取り、SDPoseDrawKeypoints が線で描く

元の画面に戻る

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

サブグラフの中の画面の上。ワークフローの名前と「Image to Pose Map (SDPose-OOD)」が並び、ワークフローの名前を赤い枠で囲んでいる
上のタブには、開いたテンプレートごとのタブが並ぶ

サブグラフの外に出ている欄のうち、姿勢の描き方を決める主な欄と、テンプレートの値です。

欄テンプレートの値働き
resize_target_longer_size1024姿勢を取る前に、画像の長い辺をこの大きさにする
draw_body・draw_hands・draw_face・draw_feettrue描く部分を選ぶ
stick_width・face_point_size4・2線の太さと、顔の点の大きさ
score_threshold0.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編集部が、建築の制作に関わる知識を実務目線で整理しています。内容は公開・更新日時点の情報にもとづきます。誤りや古い情報にお気づきの場合はお問い合わせよりご連絡ください。

あわせて読みたい