LoginSignup
8
8

More than 3 years have passed since last update.

Google Colab で DeepFaceLab を動かせる DFL-Colab

Posted at

参考文献

DFL-Colab

iperov/DeepFaceLab の Releases 中にリンクがあった、DeepFaceLab を Google Colab で動かせる chervonij/DFL-Colab を試します。chervonij/DFL-ColabWorks with latest DFL version から Google Colab を開いて実行していきます。(Works with latest DFL version のソースはこちら)

グラボが無いけど学習したい時や、あっても Google Colab より遅い時、とりあえずどんなもんか試したいだけなどの場合に有用そうです。

1. データの準備

DFL-Colab 用の入力動画 2 つ(顔入れ替え元・顔入れ替え先)を zip で固めて、Google Drive に置いておきます。アーカイブ名は Google Colab 上のフォームで指定することもできますが、デフォルトで入力されている以下のファイル名・ディレクトリ名で固めておいた方が面倒が無さそうです。

  • workspace.zip
    • workspace/
      • data_src.mp4 (入力動画、顔入れ替え元)
      • data_dst.mp4 (入力動画、顔入れ替え先)

ディレクトリが1個挟まっています。
後述しますが、この Google Drive 上の workspace.zipExport to Drive の時やバックアップの度に上書かれ、前処理後のデータが入る data_src data_dst ディレクトリや、学習中モデルが入った model など全部入りの zip になります。

2. DFL-Colab の実行

2020/09/21 時点の最新版では、以下の章があります。「すべてのセルを実行」などで上から順に実行すれば OK … という構成にはなっていないので注意が必要です。

  • Prevent random disconnects
  • Check GPU
  • Install or update DeepFaceLab
  • Manage workspace
  • Extract, sorting and faceset tools
  • Train model
  • Merge frames

以下メモです。

2.1. Prevent random disconnects

Google Colab の接続が切れないようにするだけです。ただ実行します。

2.2. Check GPU

GPU を表示するだけです。ただ実行します。

GPU が出てこない時は、Google Colab のランタイム>ランタイムのタイプの変更で GPU を選択します。

2.3. Install or update DeepFaceLab

環境をロードするだけです。ただ実行します。

2.4. Manage workspace

ここは必要な時に、自分で実行する形になります。

この章の Import from DriveExport to Drive が、それぞれ Google Drive のロード・セーブになっています。自分はこの 2 つぐらいしか使いませんでした。最初はそのまま Import from Drive して workspace.zip を展開します。

2.5. Extract, sorting and faceset tools

学習の前処理です。実行中のコンソールに、パラメータのユーザ入力を求めるところが出てきます。その際はそのまま Enter することで [] 内にあるデフォルト値が勝手に使われますが、たまに [] が無いものが出てくるので適宜入力します。(チューニング等は自分も詳しくありませんので参考文献等を参照ください。)

[0] Enter FPS ( ?:help ) : 
0
[png] Output image format ( png/jpg ?:help ) : 
png

この章の処理はターゲットがデフォルトで data_src になっていますが、data_dst 側にも実行します。なので計 2 回実行することになります。

そこそこ時間がかかるので、適宜 Export to Drive でバックアップ推奨です。

2.6. Train model

この処理もユーザ入力をたくさん求められますが、だいたいデフォルト [] が設定されています。パラメータの入力後、data_src data_dst 両方の前処理が問題なければ、学習が開始します (前処理が足りないと ValueError('No training data provided.') などが出ます)。Backup_every_hour にチェックがついていれば、バックアップタイミングで Google Drive 上の workspace.zip に上書き保存されます(チェックがなくても 11 時間後にはバックアップされるようですが、不安なのでチェックをつけずに試したことはないです)。ちなみに長い時間実行していると定期的に出力される進捗表示がバッファの最大に達して出力が止まることがありますが、グルグルしてれば Google Colab の実行自体は続いています(学習は行われていて、workspace.zip のバックアップも問題なく行われる)。

Google Colab の起動時間の制限に達して途中で終わってしまったら、再度 Install or update DeepFaceLab で環境をインストール → Import from Drive でバックアップされた workspace.zip を復元して、Train model から実行することになります (前回の途中から継続される)。復元後 2 秒間の間に、コンソールのユーザ入力で Enter を押すと、そのタイミングからパラメータを更新して学習を進めることもできます。

Target iteration のデフォルト 0 では学習は無期限に実行されるため、ある程度 loss が収束してきたと思ったタイミングで、自分で学習を停止する必要があります (workspace/model の *_preview_SAEHD.jpg 出力などを参考にする)。その後、以下のマージ処理で動画を出力します。

2.7. Merge frames

こちらもユーザ入力がいろいろありますが、MergeGet result video と進めれば result.mp4 を Google Drive に保存できます。

マージ処理は各種パラメータを修正して確認してを繰り返す作業なので、Google Colab 上がキツければ iperov/DeepFaceLab からネイティブクライアントを落として workspace.zip を展開し、7) merge SAEHD.bat を実行すると、インタラクティブにパラメータ反映後のフレームが確認できて便利です。

8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8