概要
映画史に残る名作「カサブランカ」において、特に「ラ・マルセイエーズ」が歌われるシーンは極めて印象的な箇所です。本稿では、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等の音声変換モデルを併用することで、歌声や発話を置換先の人物のものに模倣させることが可能です。
倫理的・法的な注意点
深層学習技術を用いたコンテンツ生成は、著作権および肖像権に関する法的リスクを伴います。公開された動画素材や有名人の顔面データを無断で使用することは、地域によっては違法行為となる可能性があります。技術の実験および学習目的での利用に留め、公開する際には十分な権利処理を行うことが重要です。