この記事について(広告・アフィリエイトリンクはありません)
紹介しているノードとモデルは、すべて無料で入手できます。この記事の人物の画像は AI で生成しました。リンカーンの画像はリポジトリの作例で、元の写真はパブリックドメインです。
SameFace は、画像編集で顔の形がどれだけ動いたかを数値にして、元の位置に戻す ComfyUI のカスタムノードです。
作者の例の数値は、手元でもほぼ同じ値になりました。わざと作ったずれもよく戻せました。背景や服だけの編集では、ずれはほとんど検出されません。戻す必要があるかどうかを確かめる道具としても使えます。 ただし、意図して変えた表情まで戻そうとして、顔が崩れることがありました。
背景や服だけの編集なら、顔の形はほぼ動かない(今回のテスト条件で)
| 測ったペア | 編集のずれ | 修正後 |
|---|---|---|
| 作者の作例(リンカーン) | 0.354% | 0.011% |
| 合成で顔を局所的に動かす(強) | 0.389% | 0.006% |
| 合成で顔を局所的に動かす(弱) | 0.061% | 0.006% |
| 背景や服だけの編集(P-H3-Image、20 ペア) | 0.002〜0.009% | 0.002〜0.008% |
| 「笑う」編集(4 シード) | 2.2〜4.4% | 0.04〜0.09% |
| 「目を大きく」編集(4 シード) | 0.004〜0.006% | 0.003〜0.005% |
| 縮小して戻しただけ(本来ずれなし) | 0.003% | 0.002% |
値は SameFace Simple の中央値で、顔の大きさに対する%です。作者は測定の限界を 0.01% としています。
- 背景や服だけの編集は、全部 0.01% 未満でした。この範囲の数字の差に、意味はありません。
- 修正は、意図した変更も戻そうとします。 笑顔を「修正」すると、口元が崩れました。
- 見た目で明らかに大きくなった目は、数字に出ません。作者の説明どおりです。
1回は約8秒、VRAM の増加は約2.4〜3.0GiB でした(多くの回は約2.4GiB、作者の例のリンカーンだけ約3.0GiB)。測るのは形で、肌の質感や表情の印象は測りません。

試した環境
| 項目 | 内容 |
|---|---|
| GPU | RTX 5090(32GB) |
| ComfyUI | v0.44.0 2c75dc1b。入れたカスタムノードはこれだけ |
| ノード | comfyui-sameface d608d61(2026-10-30) |
| 入力 | 作者の作例、P-H3-Image の編集結果、合成のずれ |
| 検証日 | 2026年11月4日 |
話題性としては、確認時点で GitHub のスターは 9、フォークは 4 です。2026年10月に作られた小さなプロジェクトで、今後の保守は分かりません。
custom_nodes に入れるだけ、モデルは初回に自動で入る
カスタムノードの入れ方はこちらにまとめています。
cd ComfyUI/custom_nodes
git clone https://github.com/fixed-42/comfyui-sameface
pip install -r comfyui-sameface/requirements.txt
今回の環境には必要なパッケージがすでに入っていたので、pip は実行していません。
モデルは初回に自動でダウンロードされます。合計は約1.8GB で、今回は最初の実行が全部で約64秒でした。回線で変わります。場所は Hugging Face のキャッシュです。
| モデル | 用途 | サイズ(作者の値) | ライセンス |
|---|---|---|---|
| Grounding DINO base | 顔を見つける | 0.9GB | Apache-2.0 |
| SAM 2.1 Hiera large | 輪郭を切り抜く | 0.9GB | Apache-2.0 |
| RAFT(torchvision) | 点の動きを追う | 21MB | BSD-3-Clause |
ノードと SAM 2.1、Grounding DINO は配布ページの Apache-2.0 を、RAFT は torchvision と元のリポジトリの BSD 3-Clause を確かめました。ノードは Apache-2.0 です。
下の JSON は、SameFace Simple に編集前と編集後をつなぐだけの構成です。
- sameface_simple_workflow.jsonComfyUI にドラッグして読み込みます(SameFace Simple。編集前と編集後の画像を選び直してください)

画面から実行して、成功を確かめました。
どの出力を見ればいい?
SameFace Simple に編集前と編集後をつなぐと、次の出力が得られます。
| 出力 | 内容 |
|---|---|
median | 編集のずれ(顔の大きさに対する%) |
repaired_median | 修正後のずれ |
repaired | 修正した画像 |
shift_map | 顔のどこがずれたかの地図 |
before_view、after_view | 測った点と、10倍の長さの矢印 |
作者の説明では、修正は顔の測った点を元の位置に動かすだけで、絵の残りは編集のままです。
作者の値はほぼ再現した
| 項目 | 作者の値 | 今回 |
|---|---|---|
| Simple の編集のずれ | 約0.35% | 0.354% |
| Simple の修正後 | 0.009% | 0.011% |
| VRAM ピーク | 約3.2GiB(README の VRAM peak) | 開始時からの増加 約3.0GiB(3,096MiB)。ピークは別のソフトの約1.7GB を含めて約4.7GiB |
ほぼ再現しました。README の冒頭の 0.83%→0.010% は、頭全体を測った別の設定です。Simple の値とは比べられません。
さらに作者は、修正後の 0.010% という値は実際より低く出ると書いています。既知のずれで確かめた見積もりでは、実際に残るのは約0.03% だそうです。修正の数字は「効いた」ことの確認に使い、残りの量の正確な値とは読まないほうが安全です。私はこの見積もりを自分では確かめていません。
P-H3-Image の編集で顔はどれだけ動く?
P-H3-Image の編集結果を、編集前の画像と比べました。
顔を変えない編集のずれは 0.01% 未満
| 編集(顔は変えないよう依頼) | ペア数 | 編集のずれ |
|---|---|---|
| 背景を海辺に | 5 | 0.005〜0.009% |
| エプロンを赤に | 6 | 0.004〜0.007% |
| 帽子をかぶせる | 3 | 0.004〜0.007% |
| 背景を図書館に(正面、横顔) | 6 | 0.002〜0.005% |
どれも作者の測定の限界の 0.01% より小さい値です。 今回の編集では、顔の形はほとんど動いていません。修正も必要ありませんでした。
顔を変える編集は、値と見た目が一致しない
同じ人物の画像に、顔を変える依頼をしました。
| 依頼 | 4 シードの編集のずれ | 修正後 | 見た目 |
|---|---|---|---|
| 笑う | 2.2〜4.4% | 0.04〜0.09% | どれも口を開けて笑った |
| 頬を細く | 0.30〜0.60% | 0.004〜0.006% | わずかな変化 |
| 30歳老ける | 0.004〜1.23% | 0.004〜0.018% | シードで差。はっきりしわが出たのは1枚 |
| 目を大きく | 0.004〜0.006% | 0.003〜0.005% | 4枚とも大きくなった |

見て分かったことが3つあります。
- 笑顔を戻すと崩れます。 口元は閉じきらず、不自然な形になりました。数字は 0.086% まで下がっても、良い画像とは限りません。
- 大きくした目は測れません。 作者の説明のとおり、描き直された部分は追跡できず、測定から外れます。ずれが小さいから変化がない、とは言えません。
- しわは残ります。 修正は形を戻すだけなので、老けた肌の質感はそのままでした。
「笑う」の依頼なのに変化しなかった画像を測っても、当然ずれは出ません。 編集の成否を先に目で確かめてください。
決まった量のずれを作ると、値は量に応じて増えた
実際の編集には正解がありません。そこで、顔の一部を決まった量だけ動かす画像を自分で作りました。
| 動かした量(2048×2048、一番動く所) | 編集のずれ | 修正後 |
|---|---|---|
| 4ピクセル | 0.061% | 0.006% |
| 16ピクセル | 0.389% | 0.006% |
| 動かさない(縮小して戻すだけ) | 0.003% | 0.002% |
量に応じて値が増え、修正で下がりました。動かさない場合は限界より小さい値でした。作者の説明どおり、修正は意図した変更と意図しない変更を区別しません。残したい変更がある画像には使わないでください。
中央値なので、局所的に動かすと値は小さめに出ます。動かしたピクセルの割合とは直接比べられません。
2人の写真は信頼度を下げる、正面と横顔の比較は測れない
| 場面 | 結果 |
|---|---|
| 2人の写真、Simple | 動くが、1人しか測らない(作者の説明どおり) |
| 2人の写真、Face Mask + Measure | 既定の信頼度 0.5 では「顔が見つからない」。0.25 に下げると、2人とも測れた |
| 横顔どうし(向きを変えない編集) | 測れた(0.005%) |
| 正面の写真と横顔の写真 | エラー(no point on the face passed the flow's round-trip check) |
複数人では、Face Mask の index で人を選びます。今回は左の人が中央値 0.004%、右の人が 0.009% でした。
正面と横顔は、別々に生成した2枚の比較です。編集で首の向きが少しだけ変わる場合は、作者の説明では向きの変化がずれとして読まれます。この場合の数字は参考になりません。 そこは試せていません。
つまずいたところ
- Measure の出力は、最初が
drift、2番目がreportです。文字で読むならreportをつなぎます。最初に順番を間違えました。 - 2人の写真で顔が見つからず、最初は失敗かと思いました。
confidenceを下げると解決しました。 - 最初の編集を1シードだけで試し、「顔を変える依頼が効かない」と思い込みました。別のシードでは効きました。編集の比較はシードを変えて確かめてください。
公式の作例のスライダーは、ComfyUI の Nodes 2.0 をオンにすると表示されると作者が書いています。今回は画像を保存して見たので、スライダーは試していません。
RTX 5090 以外の人へ
今回はこの GPU でしか測っていません。VRAM の増加は約2.4〜3.0GiB で、大きなモデルを同時に載せないなら、少ない VRAM でも余地はありそうです。ただし実際の 8GB・12GB 搭載 GPU での動作は確かめていません。 VRAM 不足の対処はこちらにまとめています。
よくある質問(FAQ)
Q. 顔が似ているかを判定しますか?
しません。作者の説明でも、測るのは形で、似ているかどうかではありません。
Q. 何秒かかりますか?
今回は 1 ペア約8秒でした。初回はモデルの取得で長くなります。
Q. 数値がいくつなら問題ですか?
作者の測定の限界は 0.01% です。それより小さければ差はほぼ読めません。それより大きい値をどこから問題にするかは、編集の目的で決めてください。今回の「笑う」編集は 2.2〜4.4% で、どれも口を開けて笑いました。
Q. 修正で画質は落ちますか?
今回は比べていません。顔の点を動かす処理なので、ごく細かい変形が入ります。
Q. キャラクターのイラストにも使えますか?
今回は写真風の画像だけです。イラストは試していません。
まとめ
- 作者の例はほぼ再現し、合成のずれもよく戻りました。
- 背景や服だけの編集では、形のずれはほぼ検出されませんでした。
- 意図した変更も戻そうとするので、修正の結果は目で確かめてください。
検証メモ
- 数値:SameFace Simple の中央値です。Simple は相似と affine の小さいほうを表示します。頭全体を測る設定の値とは比べられません。
- 合成のずれ:私が作ったガウス状の上下の移動で、顔の中央付近に当てました。作者の既知のずれのテストとは別のものです。
- 時間:モデルが読み込まれた後の値です。別のモデルと入れ替わると延びます。
- サンプル数:同じ人物の入力からの編集が多く、一般化はできません。
- 編集の依頼:「顔を変える編集」は 4 シードです。seed 101 では依頼が効かず肌の質感だけが変わったので、表から外しました。その場合の値は 0.003〜0.004% でした。
- 未確認のこと:頭全体の測定、Repair ノード単体、作者の
tools、首の向きがわずかに変わる編集、イラスト、実際の 8GB・12GB GPU、Manager からの導入。 - VRAM の増加:開始時からの増加です。P-H3-Image の編集を測った回の多くは 2,403〜2,595MiB(中央値 2,494MiB)、リンカーンの例は 3,096MiB でした。1,149MiB と 2,048MiB の回が1回ずつあり、理由は確かめていません。

