ComfyUIで顔合成が貼り付けたようになる原因と改善方法|Face Swap・InstantID・IP-Adapter・インペイントの違い

画像処理、制作

ComfyUIで人物の顔を別の生成画像へ合成すると、顔だけを切り抜いて貼り付けたようになったり、肌の色・輪郭・光の方向が合わず不自然になったりすることがあります。これは必ずしも設定ミスではなく、使用している顔交換モデルの役割と、期待している処理に違いがあることが主な原因です。

特にinswapper_128.onnxを使ったFace Swapと、顔の特徴を参考にして画像そのものを生成する方法は別物です。自然な仕上がりを目指すなら、顔交換だけで完成させるのではなく、生成・インペイント・顔の特徴を維持する仕組みを目的に応じて組み合わせることが重要です。

ここではSDXLを使うケースを中心に、ComfyUI初心者でも判断できるよう、顔合成が不自然になる理由とワークフローの考え方を整理します。なお、顔写真を扱う場合は本人の同意がある素材を使用し、公開・商用利用ではモデルやカスタムノードのライセンスも確認してください。

inswapper_128.onnxは「顔を自然に再生成するモデル」とは役割が違う

inswapper_128.onnxを利用するFace Swap系の処理は、参照人物の顔の特徴をターゲット画像へ移すことを主目的としています。そのため、「元の人物らしさを維持しながら、生成された身体の照明・肌・顔の向きに合わせてSDXLが顔全体を描き直してくれる」と期待すると、結果に違和感が出ることがあります。

例えば、参照写真が正面から強い照明を受けた顔で、生成画像が斜め向きかつ暗い室内という条件では、顔交換だけでは境界、肌色、陰影などの差が目立つ場合があります。顔の解像感と身体の解像感が違う場合も「貼り付け感」の原因になります。

顔を交換する処理と、人物の特徴を条件として新しい顔を生成する処理は区別して考えると、ComfyUIのワークフローを理解しやすくなります。

SDXL Baseとinswapperだけでは期待した結果にならないことがある

sd_xl_base_1.0.safetensorsはStable Diffusion XLのベースモデルです。幅広い画像生成に利用できますが、Face Swap専用モデルではありません。また、チェックポイントとVAE、Face Swap用ONNXモデルにはそれぞれ異なる役割があります。

VAEは大まかにいえば、画像とStable Diffusionが処理する潜在表現との変換を担当します。したがって、別のVAEへ変更するだけで「貼り付けた顔を自然に身体へ馴染ませる」機能が追加されるわけではありません。

また、異なるモデル系統向けのVAEを名前だけで選ぶのは避けた方が安全です。SDXLを使用するなら、そのチェックポイントが推奨するVAEや互換性のあるVAEを使用するのが基本です。チェックポイントにVAEが含まれている場合もあるため、配布元の説明を確認します。

自然な顔合成には3つの方法を使い分ける

ComfyUIで人物の顔を自然に扱う方法は、大きく「Face Swap」「参照画像による生成」「インペイント」に分けて考えると分かりやすくなります。それぞれ得意分野が違うため、万能な一つのモデルを探すより、目的から選択する方が近道です。

方法 主な目的 特徴
Face Swap 完成画像の顔を交換 手軽だが条件差によって貼り付け感が出ることがある
InstantID・IP-Adapter系 参照人物の特徴を利用して生成 生成段階から顔を画像へ馴染ませやすい
Inpainting 顔や境界部分を部分的に再生成 肌、輪郭、髪との境界などを修正しやすい

「顔写真をそのまま移植した感じではなく、本人らしさを残しながら新しい身体やシーンに馴染む顔を生成したい」という目的なら、Face Swapだけではなく、InstantIDやIP-Adapterなど参照画像を生成条件として利用する方式を検討する価値があります。

InstantIDやIP-Adapterを使う考え方

InstantIDは、人物のID情報などを条件として顔の特徴を保ちながら画像生成を行うための手法です。ComfyUIでは対応するカスタムノードやモデルを組み合わせたワークフローが利用されています。Face Swap後の画像を修正するというより、生成プロセス側から人物の特徴を反映させる発想です。

IP-Adapterも参照画像の特徴を画像生成へ反映するために利用されます。ただし、IP-Adapterには複数のモデルや用途があり、単に導入すれば本人の顔が完全に固定されるわけではありません。顔の類似性を重視する用途では、顔向けの仕組みや適切なモデルを選択する必要があります。

また、SDXLを使うならSDXL対応のモデル・ControlNet・IP-Adapter等を揃えることが重要です。SD1.5向けとSDXL向けのファイルを混在させると、正常に接続できなかったり、意図した効果を得られなかったりします。

「顔は維持して周囲だけ馴染ませたい」ならインペイントが有効

Face Swapで人物の同一性は十分に出ているものの、首との境界や肌色だけが不自然という場合は、顔全体を別方式で作り直す必要がないこともあります。この場合はインペイントで問題のある範囲を再生成する方法があります。

例えば顔の中心部分をなるべく保持しつつ、頬の外側、顎、首、髪との境界などを含むマスクを作り、低めのdenoiseから調整して周辺を再生成します。こうすると生成モデルが身体側の光や色を考慮して境界を描き直せる場合があります。

ただしdenoiseを強くすると顔そのものが変化しやすく、弱すぎると貼り付け感が残ります。最適値は画像やモデルによって異なるため、小さく変更しながら比較するのが基本です。

顔の向き・照明・画角を合わせるだけでも結果は大きく変わる

モデルを変更する前に確認したいのが参照写真です。Face SwapやID保持系の処理でも、参照画像の品質によって結果は大きく変わります。顔が小さい写真、強く圧縮された画像、極端な表情、顔の一部が隠れている画像などは難易度が上がります。

例えば生成する人物が斜め45度を向いているなら、正面写真しか用意しない場合より、近い角度から撮影した鮮明な参照画像を用意した方が扱いやすいことがあります。照明条件も近いほど自然な結果を得やすくなります。

「モデルが悪い」と判断する前に、顔の角度、光源方向、色温度、表情、画質、生成画像における顔のサイズを確認すると改善点を見つけやすくなります。

初心者向けのワークフローは段階を分けると分かりやすい

最初から多数のカスタムノードを組み合わせると、失敗したときに原因を特定できなくなります。まずSDXLで身体を含む人物画像を正常に生成できる最小構成を作り、その後に顔関連の処理を追加する方法がおすすめです。

一例として「SDXLでベース画像を生成 → Face SwapまたはID保持系処理 → 必要部分をインペイント → 必要に応じてディテール修正」という段階に分けます。この構成なら、どの工程で不自然になったのかを比較できます。

例えばベース画像では顔と首の照明が自然なのにFace Swap直後から境界が目立つのであれば、Face Swap以降に原因があると判断できます。逆にベース画像の時点で頭部と身体のバランスがおかしければ、顔交換モデルを変更する前にプロンプトや生成条件を修正する必要があります。

FaceDetailerは万能な顔交換機能ではない

ComfyUIではFaceDetailerなどの顔検出と再描画を組み合わせるワークフローもよく利用されます。小さく生成されて崩れた顔を検出して描き直す用途では便利ですが、FaceDetailerそのものが特定人物の顔を完全に維持するFace Swapモデルというわけではありません。

通常の再生成だけを行えば、顔はきれいになっても元人物との類似性が低下することがあります。そのため、本人らしさを重要視する場合には、Face Swap、InstantID、IP-Adapterなどとの役割分担を考える必要があります。

「顔をきれいにする」「本人らしさを維持する」「身体へ自然に馴染ませる」は似ているようで別の課題です。この3点を分離してワークフローを設計すると、必要なノードやモデルを選びやすくなります。

モデルを追加する前にバージョンと互換性を確認する

ComfyUIは本体だけでなく、多数のカスタムノードや外部モデルを利用できる反面、古い解説記事や動画のワークフローが現在の環境ではそのまま動かないことがあります。カスタムノード更新による入出力の変更や、必要モデルの違いにも注意が必要です。

また、モデルファイルは信頼できる配布元から入手し、ライセンスと用途を確認します。特に顔認識・顔交換関連モデルには、商用利用などについて独自の条件が設定されている場合があります。

初心者の場合は、最初から複数方式を混ぜず、「SDXLだけで生成」「Face Swapを追加」「インペイントを追加」のように一段階ずつ保存しておくと、問題が発生した際に元へ戻しやすくなります。

まとめ|顔交換と「顔を馴染ませて再生成する処理」は別に考える

ComfyUIでFace Swapした顔が切り抜きを貼ったように見える場合、単純に「もっと高性能なチェックポイントへ変更すれば解決する」とは限りません。Face Swapモデル、SDXL、VAE、InstantIDやIP-Adapter、インペイントにはそれぞれ異なる役割があります。

完成画像の顔を置き換えたいならFace Swap、人物らしさを保ちながら生成段階から馴染ませたいならInstantIDやIP-Adapter系、交換後の肌や輪郭の境界を修正したいならインペイント、というように目的を分けると理解しやすくなります。

初心者ほど「SDXLでベース生成 → 顔の特徴を反映 → 必要部分だけ再生成」という段階的なワークフローから始めるのがポイントです。モデルを大量に追加するより、各工程の出力を確認しながら一つずつ調整する方が、不自然になっている原因を特定しやすく、自然な人物合成へ近づけます。

コメント

タイトルとURLをコピーしました