DeepFakeの先駆けとして、FaceSwap と並んで利用されてきたのが DeepFaceLab です。
FaceSwapのようなグラフィカルなユーザーインターフェースを持たず、バッチファイルを実行しながらステップを進めていくという使い方が悪かったのか、2022年7月23日以降の更新はされていません。
とはいえ、ZIPファイルを解凍するだけですぐに使えるようになること、チュートリアルの動画が同梱されていて、気軽に試せることなどから、いまだに根強い人気があります。
今回は、DeepFaceLab について、ダウンロード方法、インストール方法、使い方をスクリーンショット付きで解説します。
「【生成AI入門】ディープフェイクの作り方と有名アプリ一覧(パソコン編)」の記事において、その他の DeepFake アプリについて紹介していますので、興味のある方は是非ご覧ください。
DeepFaceLabとは
https://github.com/iperov/DeepFaceLab
DeepFaceLabは、顔の合成、交換、修正、それに関連する画像処理を行うためのツールです。
バッチファイルで用意された各種処理を実行しながら最終的に顔画を入れ替えますが、高度なマスク処理を行うためのUI画面も用意されており、顔の一部だけを入れ替えるような高度な処理も可能です。
主な特徴は次の通りです。
- 無料:無料で使用できます。
- オープンソース:誰でもソースコードを閲覧、編集、配布できます。
- 高品質:高品質なディープフェイク動画を作成できます。
- 顔の修正: 例えば、シワやシミを除去したり、肌のトーンを調整したりすることができます。
- 多機能:様々な機能が搭載されています。
- 活発なコミュニティ:活発なコミュニティがあり、情報交換やサポートを受けることができます。
- トレーニングデータ:入れ替える顔を学習させるため、 数百枚~数千枚の顔画像が必要となります。
- 学習時間:PCの性能やGPUの有無、動画にもよりますが、数時間~数週間のトレーニング時間が必要です。
- 学習済みモデル:学習済みモデルが用意されており、これを使うとトレーニングが格段に速くなります。
DeepFaceLab ガイド | DeepFaceLab の全体的な説明 |
DeepFaceLab チュートリアル | DeepFaceLabの操作説明 |
合成、後処理、ビデオ編集ガイド | 顔入れ替えのための編集に関する説明 |
DeepFaceLab2.0 モデル設定とパフォーマンス | CPU/GPU別の推奨パラメータ値 |
事前トレーニングモデル | トレーニング済みモデルのダウンロード |
DeepfakeVFX.com | DeepFaceLab公式サイト |
DeepFaceLab を動作させるための最小要件は次の通りです。
AVX および SSE 命令をサポートする最新の 4 コア CPU
16GB の RAM
8GB の VRAM を備えた最新の Nvidia または AMD GPU
DeepFaceLab のダウンロード方法
次のURLからダウンロードできます。お使いのPCの構成(GPUの種類)によってダウンロードするファイルが異なるのでご注意ください。
https://mega.nz/folder/Po0nGQrA#dbbttiNWojCt8jzD4xYaPw
インストール方法
私のPCは RTX-4070 を搭載しているので、次のファイルをダウンロードしました。
DeepFaceLab_NVIDIA_RTX3000_series_build_11_20_2021.exe
実行すると解凍先を求められます。任意のフォルダを指定してExtractをクリックします。
解凍が終わると次のフォルダ構成が展開されます。以上でインストールは完了です。
DeepFaceLab の使い方
前提条件
インストールが完了しると、フォルダは自動で作成されています。動画は決まった場所に決まった名前で置く必要があります。尚、動画の拡張子は mp4 以外(WMV、MOVなど)でも正しく処理してくれます。
data_dst.mp4 | 顔を置き換えたい動画。 data_dst\alignedフォルダにに顔画像が抽出される。 |
data.src.mp4 | 置き換え先の顔が含まれている動画。 data_src\alignedフォルダにに顔画像が抽出される。 |
バッチは次の順番で実行していきます。バッチ毎に様々なオプションを聞かれますが、すべてエンターキーを押すことで顔が入れ替わった動画が生成されます。
- 1) clear workspace.bat
- 2) extract images from video data_src.bat
- 3) extract images from video data_dst FULL FPS.bat
- 4) data_src faceset extract.bat
- 5) data_dst faceset extract.bat
- 6) train SAEHD.bat
- 7) merge SAEHD.bat
- 8) merged to mp4.bat
操作手順
順番にバッチを実行することで、顔を置き換えた動画が作成できます。
data_src,data_dst,model フォルダの中身を削除します。抽出した顔画像を再利用したい場合、あるいは学習済みモデルを再利用する場合は、これを実行せず手動で不要なファイルを削除してください。
置き換え先の顔が含まれる動画から静止画を抽出し、 data_src フォルダに保存します。
学習用途であるため、すべてのフレームから画像を取り出す必要はありません。
顔を置き換えたい動画から静止画を抽出し、 data_dst フォルダに保存します。最終的にこの画像の顔が置き換えられ、動画として結合されるため、すべてのフレームから画像が抽出されます。
data_src に保存された静止画から顔画像を抽出し、data_src/aligned フォルダに保存します。
data_dst に保存された静止画から顔画像を抽出し、data_dst/aligned フォルダに保存します。
トレーニングを行います。いくつかの種類が用意されていますが、SAEHDが一番品質が良いので通常はこれを使います。
トレーニングが進むと次の様な画面になります。トレーニングは自動で終了してくれないので停止させる必要があります。
顔が表示されているウィンドウをクリックし、エンターキーを押すとトレーニングが強制終了します。
コマンドプロンプトの一番下の右端の数値が0.1以下になることを目安にトレーニングを終了させます。
data_dst の静止画の顔に対して data_src\aligned の顔で置き換え、結果を data_src\merged に保存します。
バッチ起動時に多くの項目について質問がりますが、Use interactive merger? ( y/n ) : のみ n を入力し、それ以外はエンターキーを押すだけで構いません。
data_src\mergedフォルダに出力された静止画(顔の置き換え済み) と data_dst.mp4 の音声を結合させて動画を作成します。
処理が管理用すると、data_src.mp4と同じ場所に result.mp4 が出来上がります。
7) merge SAEHD.bat 起動時の入力例
このバッチを実行時、多くの入力を強いられますが、2点だけ注意すべき点があります。
1つは [y] Use interactive merger? ( y/n ) : です。エンターを押すと y が指定され、次の画像合成用の画面が立ち上がります。顔の大きさやマスク範囲を微調整できるようですが、使い方が難しいのと情報が少ないので割愛します。
ここは素直に n を入力してやり過ごしましょう。
次に、Color transfer to predicted face ( rct/lct/mkl/mkl-m/idt/idt-m/sot-m/mix-m ) : という問いに対しては、 rct,lct,mkl のいずれかが良いと思います。これは動画と顔の色合いを調整する方法をどれにするかというものです。
個人的には、バッチ起動後 エンター、n、エンター6回、lct、エンター6回 で入力項目を進めています。
顔の前にグラスや手が掛かる場合の対策(XSegによるマスク処理)
顔の前にグラスや手の一部が掛かるような動画では、グラスや手が正しく表示されず顔に隠れてしまいます。このような場合は XSeg という学習モデルを使って程度解決することができます。
通常は XSeg用のトレーニングデータを用意する必要がありますが、既に学習済みの輪郭モデルが用意されているので、これを使います。具体的には次のバッチを実行するだけです。
5.XSeg Generic) data_dst whole_face mask - apply.bat
どのようなマスクが適用されるかは、次のバッチを実行するとUI画面が表示されるので、そこで確認できます。
この画面では新しく輪郭を定義することも可能です。
5.XSeg) data_dst mask - edit.bat
以上でXSegのトレーニングデータの準備が整いました。これよりトレーニングを開始します。次のバッチを実行してください。
5.XSeg) train.bat
トレーニングにはある程度時間が掛かりますが、目安としてコマンドプロンプトの右端の数値(上記では 0.7318と0.0379の列)が0.1以下になるのを目安にすればよいでしょう。
トレーニングはエンターキーを押すことで終了します。
トレーニングが終わったら、次はマスクを使ったマージです。通常のマージと同じバッチ(下記)を実行しますが、Choose mask mode で 7を入力する必要があります。
7) merge SAEHD.bat
後は通常通りエンターキーを押して進めて下さい。これで顔に掛かったグラスや手などを切り抜きながら顔を置き換えてくれます。
ちなみに、上記の例は1分ちょっとの動画ファイルに対して数十分トレーニングした結果なのであまり品質は良くありません。DeepFaceLab の実力はもっと素晴らしいものなので、誤解なきようお願いいたします。
バッチファイルの一覧
DeepFaceLabのバッチファイルについてChatGptの翻訳結果を参考情報として載せておきます。
バッチファイル名 | 動作の概要 |
---|---|
1) clear workspace.bat | ワークスペースをクリアする |
2) extract images from video data_src.bat | ビデオから画像を抽出する(データソース用) |
3) cut video (drop video on me).bat | ビデオを切り取る(ビデオをこのバッチファイルにドロップ) |
3) extract images from video data_dst FULL FPS.bat | ビデオから画像を抽出する(データ宛先用、全フレームレート) |
3.optional) denoise data_dst images.bat | データ宛先の画像をノイズ除去する |
4) data_src faceset extract MANUAL.bat | データソースから顔画像を手動で抽出する |
4) data_src faceset extract.bat | データソースから顔画像を抽出する |
4.1) data_src view aligned result.bat | データソースの整列結果を表示する |
4.2) data_src sort.bat | data_srcをソートする |
4.2) data_src util add landmarks debug images.bat | data_srcのデバッグ画像にランドマークを追加する |
4.2) data_src util faceset enhance.bat | data_srcの顔画像を強化する |
4.2) data_src util faceset metadata restore.bat | data_srcの顔画像のメタデータを復元する |
4.2) data_src util faceset metadata save.bat | data_srcの顔画像のメタデータを保存する |
4.2) data_src util faceset pack.bat | data_srcの顔画像をパックする |
4.2) data_src util faceset resize.bat | data_srcの顔画像をリサイズする |
4.2) data_src util faceset unpack.bat | data_srcの顔画像をアンパックする |
4.2) data_src util recover original filename.bat | data_srcの元のファイル名を復元する |
5) data_dst faceset extract + manual fix.bat | data_dst から顔画像を抽出して手動修正する |
5) data_dst faceset extract MANUAL.bat | data_dst から顔画像を手動で抽出する |
5) data_dst faceset extract.bat | data_dst から顔画像を抽出する |
5) data_dst faceset MANUAL RE-EXTRACT DELETED ALIGNED_DEBUG.bat | data_dst の削除された整列デバッグ結果を手動で再抽出する |
5.1) data_dst view aligned results.bat | data_dst の整列結果を表示する |
5.1) data_dst view aligned_debug results.bat | data_dst の整列デバッグ結果を表示する |
5.2) data_dst sort.bat | data_dst をソートする |
5.2) data_dst util faceset pack.bat | data_dst の顔画像をパックする |
5.2) data_dst util faceset resize.bat | data_dst の顔画像をリサイズする |
5.2) data_dst util faceset unpack.bat | data_dst の顔画像をアンパックする |
5.2) data_dst util recover original filename.bat | data_dst の元のファイル名を復元する |
5.XSeg Generic) data_dst whole_face mask - apply.bat | data_dst の全顔マスクを適用する |
5.XSeg Generic) data_src whole_face mask - apply.bat | data_src の全顔マスクを適用する |
5.XSeg) data_dst mask - edit.bat | data_dstのマスクを編集する |
5.XSeg) data_dst mask - fetch.bat | data_dstのマスクを取得する |
5.XSeg) data_dst mask - remove.bat | data_dstのマスクを削除する |
5.XSeg) data_dst trained mask - apply.bat | data_dstのトレーニング済みマスクを適用する |
5.XSeg) data_dst trained mask - remove.bat | data_dstのトレーニング済みマスクを削除する |
5.XSeg) data_src mask - edit.bat | data_srcのマスクを編集する |
5.XSeg) data_src mask - fetch.bat | data_srcのマスクを取得する |
5.XSeg) data_src mask - remove.bat | data_srcのマスクを削除する |
5.XSeg) data_src trained mask - apply.bat | data_srcのトレーニング済みマスクを適用する |
5.XSeg) data_src trained mask - remove.bat | data_srcのトレーニング済みマスクを削除する |
5.XSeg) train.bat | トレーニングを実行する |
6) export AMP as dfm.bat | AMPをDFM形式でエクスポートする |
6) export SAEHD as dfm.bat | SAEHDをDFM形式 |
まとめ
今回は FaceSwap と並んで有名な DeepFaceLab について、ダウンロード方法、インストール方法、使い方について紹介しました。
2022年7月以降の更新は無いものの、その完成度と品質の高さから、今でも愛用されています。マスク処理も充実しているので、かなり細かい部分まで完成度を高めることが可能です。
その一方、FaceSwapと同じく数百枚~数千枚規模のトレーニングデータが必要であること、GPUを使っても数時間~数週間のトレーニング時間が必要なことから、手軽さの点では Rope、roop-unleashed、facefusionに軍配が上がります。
とはいえ、時間をかければ完成度の高い仕上がりを見せてくれる点は大きな魅力です。
細部までこだわりたい、映画のような作品が作りたい、そういう方に DeepFaceLab はお勧めです。
コメント