Python3.10 環境における Deepfake 技術の実践:映画「カサブランカ」のシーン再現

概要

映画史に残る名作「カサブランカ」において、特に「ラ・マルセイエーズ」が歌われるシーンは極めて印象的な箇所です。本稿では、faceswapおよびso-vitsライブラリを活用し、人工知能技術を用いて当該シーンの人物顔面および音声を別個のキャラクターに置換するプロセスについて解説します。

DeepFakes 環境の構築

顔面交換技術において、deepfakesプロジェクトは業界標準の一つとして広く認知されています。その中核となるfaceswapライブラリは、動画編集および二次創作において高い有効性を示します。

まずは公式リポジトリからソースコードを取得します。

git clone git@github.com:deepfakes/faceswap.git workspace_ai
cd workspace_ai

開発環境として Python 3.10 がインストールされていることを確認してください。プロジェクトのルートディレクトリにて、セットアップスクリプトを実行します。

python3.10 -m pip install -e .

依存パッケージのインストールは、使用するハードウェア構成に応じて選択します。

# NVIDIA GPU 環境の場合
pip install -r ./requirements/requirements_nvidia.txt

# AMD GPU 環境の場合
pip install -r ./requirements/requirements_amd.txt

# CPU のみの環境の場合
pip install -r ./requirements/requirements_cpu.txt

推論および学習プロセスにおいて、CPU のみでの実行は処理速度の観点から現実的ではありません。最新の高性能プロセッサであっても、GPU 加速と比較すると著しく時間を要します。深度学习タスクを実行するには、NVIDIA 製 GPU の搭載が強く推奨されます。エントリークラスの RTX 4050 や 4060 でも十分な性能が発揮できます。

学習データセットの準備

本プロジェクトの目的は、映画内の特定人物の顔面を別の人物に置換することです。そのため、元動画内の対象者の顔面データと、置換先の人物の顔面データの 2 種類を収集する必要があります。

元動画素材は映画本編ですが、必要なシーンのみ切り出す必要があります。動画編集ツールとしてffmpegを利用します。

winget install ffmpeg

インストール後、実行ファイルのパスを環境変数に追加します。

setx PATH "%PATH%;C:\Users\%USERNAME%\AppData\Local\Microsoft\WinGet\Packages\Gyan.FFmpeg_Microsoft.Winget.Source_8wekyb3d8bbwe\ffmpeg-6.0-full_build\bin"

以下のコマンドで、対象の時間帯を抽出して保存します。

set START_TIME=01:34:00
set END_TIME=01:55:00
ffmpeg -ss %START_TIME% -i casablanca_master.mp4 -to %END_TIME% -c copy target_scene_cut.mp4

次に、faceswapの抽出機能を用いて、動画から顔面画像の集合を生成します。

python3.10 faceswap.py extract -i ./workspace_ai/input/target_scene_cut.mp4 -o ./workspace_ai/data/source_faces

この処理により、動画フレームから顔面領域のみが切り出され、学習用データセットとして保存されます。置換先の人物についても同様の手順でデータセットを構築します。

モデルの学習プロセス

データセットが準備できれば、機械学習モデルのトレーニングを開始します。これは、既知のデータを用いてモデルのパラメータを最適化し、未知のデータに対する予測精度を高める工程です。

学習コマンドは以下の通りです。

python3.10 faceswap.py train -A ./workspace_ai/data/source_faces -B ./workspace_ai/data/target_faces -m ./workspace_ai/models/custom_model -p

パラメータ-Aおよび-Bはそれぞれ元人物と置換人物のデータパスを指定し、-mはモデル出力ディレクトリ、-pは学習中のプレビュー表示を有効にします。

学習の進行状況は損失関数(Loss)の数値で確認できます。通常、損失値が 0.01 付近で安定すればモデルの収束が見込めます。学習時間は GPU の性能やデータ量に依存しますが、RTX 4060 環境で概ね 5 時間程度を要します。中断後の再開もサポートされており、前回のモデル状態から継続して学習可能です。

推論と顔面交換の実行

学習が完了したモデルは、特定のデータセットに対して最適化されています。そのため、汎用モデルとは異なり、学習に使用した素材と同様の条件で推論を行う必要があります。

以下のコマンドで換顔処理を実行します。

python3.10 faceswap.py convert -i ./workspace_ai/data/source_faces -o ./workspace_ai/output/result -m ./workspace_ai/models/custom_model

これにより、元動画内の人物顔面が学習済みのモデルに基づき置換されます。同様の手法を用いれば、他の登場人物の顔面を別のキャラクターに置換することも可能です。

音声部分については、so-vits-svc等の音声変換モデルを併用することで、歌声や発話を置換先の人物のものに模倣させることが可能です。

倫理的・法的な注意点

深層学習技術を用いたコンテンツ生成は、著作権および肖像権に関する法的リスクを伴います。公開された動画素材や有名人の顔面データを無断で使用することは、地域によっては違法行為となる可能性があります。技術の実験および学習目的での利用に留め、公開する際には十分な権利処理を行うことが重要です。

タグ: Deepfake faceswap python3.10 FFmpeg machine-learning

10月22日 02:56 投稿