動画で複数人の顔交換をローカルで行う方法
複数人が映る動画では課題が二つになります。誰にどの顔を割り当てるかを決めること、そして人物が交差したりフレームから外れたりしてもその割り当てを保ち続けることです。

結論: ローカルのデスクトップアプリで複数人の動画を扱う方法は二つです。検出されたすべての顔に同じソース顔を適用するか、人物ごとに別々のソース写真を割り当てるかです。一般に「複数人の顔交換」と呼ばれるのは後者で、書き出しの前に割り当てを確認する工程が必須になります。
顔が1つだけの映像は比較的寛容です。探す顔は1つ、追跡する人物も1人、調整するブレンドも1組で済みます。複数人が映ると、その3つすべてが変わります。検出器は1フレームから複数の顔を返し、アプリはどの顔がどの人物に対応するかを判断し、その判断が遮蔽・横向き・カット切り替えを越えて維持されなければなりません。
そのため実際に多い不満は「合成が汚い」ではなく、「数フレームだけ別人の顔になった」というものです。
同意は人数分必要です
複数人が映るクリップでは、撮影者や中心人物だけでなく、識別できるすべての人から許可が必要です。加工済みであることをどう表示するかを事前に決め、なりすまし、詐欺、本人確認の回避、嫌がらせ、同意のない性的表現には使用しないでください。責任ある利用をご確認ください。
1.「複数人の顔交換」と呼ばれる二つの別物
設定に触れる前に、どちらの結果が欲しいのかをはっきりさせてください。Deep Face Cam では Advanced options → Faces に別々の項目として用意されており、設計上どちらか一方しか使えません。
| 項目 | 実際の動作 | 適した場面 |
|---|---|---|
| Swap all faces | 検出されたすべての顔を、同一のデフォルトソース顔で処理します。 | 1つの顔を全員に当てたい場合、または精度を問わない試し処理。 |
| Map faces manually | 検出された各ターゲット顔に、それぞれのソース顔を割り当てます。生成前に割り当て画面が開き、Swap all faces は自動的に無効になります。 | 2人以上にそれぞれ別の顔を当てたい、本来の複数人ケース。 |
最も多い設定ミスがここです。「swap all faces」を有効にしたまま人物ごとの結果を期待してしまうケースです。このモードのソース顔は1つだけで、それを全員に適用します。A さんとB さんに別の顔を当てたいなら、手動割り当てが必要です。
2. 人物ごとにソース写真を1枚ずつ用意する
割り当てる人物ごとに専用のソース画像が必要で、いずれも単独の顔交換と同じ基準を満たす必要があります。鮮明で、光が均一で、なるべく正面向き。サングラス、髪による遮蔽、強い美肌フィルターは最初のテストでは避けてください。質の低いソース写真は集団の中で目立たなくなるわけではなく、その1人だけが他より粗く見える結果になります。
ソース写真同士は見た目がはっきり違うものを選ぶと安全です。構図・トリミング・光の条件が似ていると、割り当てを間違えても書き出し確認の段階で気づきにくくなります。
ターゲットは完成尺ではなく短いテスト区間を選びます。良いテスト区間には、人物が重なる場面、各人の横向き、そしてカット切り替えが最低1回ずつ含まれます。
3. レンダリング前に割り当てを確認する
手動割り当てを有効にすると、アプリはターゲットを解析し、生成開始前に割り当て工程を表示します。ここが最も時間を節約できるチェックポイントです。必要なターゲット顔すべてにソースが設定され、その組み合わせが意図どおりであることを確認してください。「顔が表示されている」ことの確認では足りません。
画像と動画のターゲットでは、割り当てはターゲット素材から見つかった顔をもとに構築され、動画ではどの顔がどのフレームに属するかも保持されます。だからこそ、代表的な区間で割り当てを確認する価値があります。割り当ての精度は、検出の精度を超えられません。
ライブカメラは事情が異なります。事前に解析できるファイルがないため、ライブセッションでは顔の埋め込み表現を使ってフレームごとに照合し、割り当て済みの人物ごとに最も近い候補を選びます。これは連続的な類似度判定であり、ライブでの複数人割り当てがマップ済み動画より不安定になる理由もそこにあります。人物ごとの結果を確実にしたい場合はファイル処理を使い、ライブはプレビューとして扱ってください。詳細はリアルタイム顔交換ガイドにまとめています。
4. 顔が入れ替わる理由
複数人処理で最も報告が多い失敗は、数フレームだけ別人に顔が乗ってしまう現象です。これはランダムではありません。割り当ては検出と類似度に依存するため、次のような場面で予測どおりに弱くなります。
- 交差:2人が重なって片方の顔が部分的に隠れ、検出される顔が一時的に減ったりずれたりする。
- 横向き:正面から大きく外れた顔は、隣の人物より照合スコアが弱くなる。
- 再入場:一度フレームから出た人が戻ったとき、以前と同じ割り当てになる保証はない。
- 似た人物:年齢、髪型、眼鏡、照明が近いと、2人の識別差が小さくなる。
- カット:シーンが切り替わると、新しいショットは独立して照合される。
- 距離:背景の小さな顔は、手前のクローズアップより照合材料が圧倒的に少ない。
実際に効く対策を順に挙げます。カット境界でクリップを分割してショットごとに処理する。実際には交換不要な背景の顔は割り当てない。人物が再入場したら割り当てを確認し直す。そして、見た目のはっきり違うソース写真を使い、間違いがすぐ目に入る状態にすることです。
5. 複数人の処理時間はおおむね顔の数に比例します
4人分を割り当てたフレームは、1人のフレームと同じ処理量ではありません。ソースとターゲットの各ペアは個別にスワップモデルを通り、順番にフレームへ合成されます。したがって1フレームあたりの処理時間は、そのフレームで交換する顔の数に応じて増えます。解像度だけで決まるわけではありません。
顔補正を有効にすると、この影響がさらに重なります。補正も顔ごとに実行されるためです。4人が映るショットで HD repair を有効にすると、4回のスワップに加えて1フレームあたり4回の補正処理が走ります。複数人のレンダリングが想定外に遅いときは、スワップよりも先に補正の設定を確認してください。
| 要因 | 複数人レンダリングへの影響 | 対応 |
|---|---|---|
| 1フレームあたりの顔数 | スワップ処理量はほぼ線形に増加します。 | 本当に交換が必要な人物だけを割り当てる。 |
| 顔補正 | スワップに加えて顔ごとに1回実行されます。 | まず補正なしで試し、その後で戻す。 |
| Execution provider | CPU が最も遅く、GPU バックエンドはプラットフォームごとに異なります。 | マシンに合ったビルドを選ぶ。顔補正ガイドを参照。 |
| クリップの長さ | 気づくのが遅いミスは、レンダリング全体を無駄にします。 | 必ず短い区間で先に検証する。 |
| 一時フレーム | 動画処理はディスク上に展開したフレームを経由します。 | 空き容量を確保し、専用の出力フォルダーを使う。 |
人数によるレンダリングコスト
検出は1フレームにつき1回、交換と補正は顔ごとに1回ずつ実行されます。計算は単純で、複数人のレンダリング時間の大半は解像度ではなくこの計算で説明できます。
| フレーム内の割り当て顔数 | 検出 | 交換回数 | 補正回数(有効時) | 1フレームあたり推論回数 | 交換+補正の作業量 |
|---|---|---|---|---|---|
| 1 | 1× | 1 | 1 | 3 | 1.0× |
| 2 | 1× | 2 | 2 | 5 | 2.0× |
| 3 | 1× | 3 | 3 | 7 | 3.0× |
| 4 | 1× | 4 | 4 | 9 | 4.0× |
| 6 | 1× | 6 | 6 | 13 | 6.0× |
最終列は交換と補正のみを数えています。検出は顔単位ではなくフレーム単位で発生するためです。実時間はこれに加えて execution provider、取得または素材の解像度、選択した補正モデルに左右されます。
6. 書き出しは「品質」ではなく「割り当て」を見る
1人の確認は「見た目は正しいか」を問います。複数人の確認は「すべてのショットで、正しい顔が正しい人物に乗っているか」を問います。これは別の観点であり、別のパスとして行う必要があります。
書き出し結果は、人物が交差する瞬間、各カット切り替え、そして誰かが出入りする箇所を狙って確認します。まず通常速度で再生してください。1秒程度の入れ替わりはコマ送りでは見落としやすく、通常再生ではすぐ分かります。ブレンド品質の確認はその後で構いません。
テスト書き出し、使用した割り当て、アプリのバージョン、モデルのバージョンをプロジェクトのメモに残してください。後で修正が必要になったとき、その記録があれば推測ではなく再現になります。
複数人処理でよくある失敗
- 人物ごとに別のソースが必要なのに「swap all faces」を使ってしまう。
- テスト区間で割り当てを確認する前に、フル尺をレンダリングする。
- 交換の必要がない背景の人物まで、検出された顔をすべて割り当てる。
- ほぼ同じ構図のソース写真を2枚使い、割り当てミスが見えなくなる。
- 複数カットの編集素材を、ショット単位ではなく1ファイルとして処理する。
- コマ送りだけで確認し、短い入れ替わりを見落とす。
- 集団のうち1人の同意を、全員分の同意とみなす。
よくある質問
1本の動画で2人分の顔を別々に交換できますか?
できます。それが手動割り当ての役割です。検出された各ターゲット顔に個別のソース写真を割り当てるため、同じショットに映る2人へ別々の顔を適用できます。「swap all faces」は単一のデフォルトソースを全員に適用するので、この用途には使えません。
同時に何人まで交換できますか?
割り当てはターゲットで検出された顔から構築されるため、実用上の上限は固定の人数ではなく検出精度と処理時間で決まります。小さく写った顔、遠い顔、大きく隠れた顔から順に不安定になります。
なぜ別人に顔が乗ってしまうのですか?
割り当てが検出と類似度に依存しており、交差・横向き・再入場・カットのいずれでもその精度が下がるためです。ショット単位に分割し、割り当てる顔を減らし、見た目の違うソース写真を使ってください。
複数人の顔交換に GPU は必要ですか?
CPU でも動作しますが、処理量が顔の数だけ倍増するため、差が最も出るのがこの用途です。実際のハードウェアに合わせてビルドと execution provider を選んでください。
ライブカメラでも複数人の顔交換はできますか?
ライブでも複数人に対応しますが、事前解析したファイルではなく毎フレームの類似度で照合するため、マップ済み動画より割り当てが不安定です。プレビュー用途として扱ってください。
集合ショットは、レンダリング前に割り当てを固める
短い区間でソースとターゲットの組み合わせをすべて確認し、素材は自分の端末に置いたまま、交差やカットを越えて割り当てが保たれてから書き出してください。