2021/08/09、記事の内容を一部訂正致しました
この記事は以下の記事の続きになります。


まずはじめに、Google Colaboratory(Colab)とは
Colaboratory(略称: Colab)は、ブラウザから Python を記述、実行できるサービスです。次の特長を備えています。
環境構築が不要、GPU への無料アクセス、簡単に共有(公式より抜粋)
魅力的なサービスですが、無料版ではGPUの性能が低い、RAM や ディスク容量に制限、時間制限がある(連続12時間まで、無操作の場合は90分まで)などいまいち使いづらさもあります。
Colab Pro(月額1,072円)に加入することで、高性能なGPUを優先的に使用可能、ハイメモリ設定が使用可能、時間制限の緩和と使い勝手を大幅に改善します。

ハイクオリティなディープフェイクを作成するにはGPUの性能が物を言うので、この記事ではColab Proの加入を前提とします。(加入は自己責任でお願いします。)




事前準備

グーグルドライブを開きます。
前回作成したworkspace.zipをマイドライブにアップロードします。
グーグルドライブは無料版でも保存容量が15GBあるので、容量は基本的に足りると思います。
しかし、別のファイルがあって容量が足りていないなど場合は、新規アカントを作成するか、有料版にアップグレードしてください。

次にDeepFaceLabのgithubを開いてください。
Releasesの項目にある、
Google Colab (github)を開きます。
更にOfficial Linksの項目にあるDFL-Colab Notebook: Link -- Works with latest DFL versionのリンクを開きます。
ColabでDeepFaceLabのノートブックが開かれます。
ファイルタブの中にあるドライブにコピーを保存をクリックします。
これで
DeepFaceLabのノートブックのコピーが自分のグーグルドライブに保存されるので、これからは自分のグーグルドライブからDeepFaceLabのノートブック(
DFL-Colab)を実行することができます。

Colab Proに登録します。
(念の為、一通りの作業ができることを確認してから
Colab Proに登録することをおすすめします。)
ツールのタブの中にある設定を開きます。
設定が開かれるので、
Colab Proのタブをクリックし、更に詳細をクリックします。
ページが開かれるので、今すぐアップグレードをクリックします。
クレジットカードの情報を記入し購入を押すと
Colab Proの登録が完了します。
現在ログインしているグーグルのアカウントがColab Proにアップグレードされるため、複数アカントをお持ちの場合はあらかじめアップグレードしたいアカントにログインしてください。
なお、Colab Proとグーグルドライブに使っているグーグルアカウントが別アカウントでも作業には問題ありませんのでご安心ください。

次にノートブックの設定を行います。
ランタイムのタブの中にあるランタイムタイプの変更を開きます。
ハードウェアアクセラレータをGPUに
ランタイムの使用をハイメモリ
(ColabProのみ)にして保存をクリックします。

ノートブックの設定


DFL-Colab Trainまでの作業

・Prevent random disconnectsを実行します。
実行するボタンは丸の中に三角が入っている形をしています。
この作業でランタイムが切断されるのを防ぎます。

実行ボタン


・Install or update DeepFaceLabを実行します。
DeepFaceLabをノートブックにインストールします。
Download_FFHQというチェックボックスがありますが、これはPreTrain用の画像をダウンロードするかの選択なのでチェックを入れなくて大丈夫です。

Manage workspaceのセルをクリックして非表示になっているセルを表示させます。

・Import from Driveを実行します。
modeをworkspaceと選択、Archive_nameをworkspace.zipと入力して実行してください。
Go to this URL in a browserという表示の横にURLが表示されるのでクリックして開きます。
アカウントの選択というページが開かれるので、workspace.zipをアップロードしたグーグルのアカウントを選択します。
Google アカウントへのアクセスをリクエストというページが開かれるので、許可というボタンをクリックします。
コードが表示されるのでこのコードをコピーします。

コード

Colab Proに戻り、Enter your authorization codeの下の入力欄にコピーしたコードを貼り付けてエンターキーを押します。

コードを入力


Mounted at /content/drive
/contentという表示が出て、少し待ちDone!と表示されたらworkspaceがノートとブックにインポートが成功しました。

エラーが起きる場合、
workspace.zipの名前があっているか
workspace.zipがworkspaceのフォルダのなかに更にworkspaceフォルダがある二重構造なっていないか
modeとArchive_nameが間違っていないか
指定したグーグルドライブのアカウントにworkspace.zipがアップロードされているか
workspace.zipの容量が大きすぎないか(自分は5GBに収まることを意識しています)
これらを確認してみてください。


DFL-Colab Train

Trainingのセルに行きます。

ModelはSAEHDにします。

Backup_every_hourにチェックを入れます。
Backup_every_hourにチェックを入れると、1時間ごとにworkspaceをグーグルドライブにエクスポートします。
エクスポートする時間を変更するには、セルをクリックしてコードを表示させます。
backup_time = str(数字)の箇所の(数字)に任意の秒数を入れるとその時間経過でworkspaceを保存します。

Silent_Startのチェックは外します。
Silent_Startのチェックを入れると、以前の設定を引き継いで自動的にTrainをはじめます。


Trainingを実行します。

Trainingを12時間程度実行し続けると、セッションの接続が切れてしまいます。
定期的にTrainingを停止し、ランタイムタブのランタイムの再更新を実行します。

各設定の以下の設定にします。
設定の詳細は、ざっくり単語解説等を参照してください。
左側の[]の中がデフォルトの設定値です。デフォルトの設定値でいい場合は、空欄でエンターキーを押すとその設定になります。

・Choose one or several GPU idxs
デフォルトの0でいいので空欄でエンターキーを押します。

・Press enter in 2 seconds to override model settings
表示されたら、すかさずエンターキーを押します。
2秒以上エンターキーを押さないと、以前の設定を引き継いで自動的にTrainが始まってしまいます。

・Autobackup every N hour ( 0..24 ?:help )
かならず0にします。

modelのバックアップを自動で作る設定ですが、DFL-Colabでこの設定を使うとworkspaceの容量が肥大化して作業ができなくなります。
バックアップはBackup_every_hourを活用します。

・Write preview history 
0にします。
プレビュー画像を保存するかの設定ですが、workspaceの容量の抑えたいので使用しません。

・Target iteration
0にします。
任意のitter数でTrainを止めたい場合はその数字を入力します。

・Flip SRC faces randomly
基本的にはnにします。
srcの顔が左右対称で、横顔の素材にばらつきがある場合はyにしてもいいかもしれません。

・Flip DST faces randomly 
yにします。yにすることでDSTの汎化が改善するようです。

・Batch_size
8にします。

・Masked training 
yにします。

・Eyes and mouth priority
nにします。

・Uniform yaw distribution of samples
yにします。

・Place models and optimizer on GPU 
yにします。

・Use AdaBelief optimizer? 
yにします。

・Use learning rate dropout
nにします。

・Enable random warp of samples
yにします。

・ GAN power、 True face' power、Face style power、Background style power
全て0にします。

・Color transfer for src faceset
none にします。

・Enable gradient clipping 
yにします。

・Enable pretraining mode
nにします。

初期設定


ファイルの読み込みが始まり、Trainが始まります。
エラーが起こる場合は、Batch_sizeを低くしてみてください。

プレビューをみる方法
左側のファイルタブをクリックします。
workspaceフォルダを探します。
workspaceがない場合は更新ボタンを押して表示させてください。
workspaceフォルダを開き、modelフォルダの中の
「(model名)_SAEHD_preview_SAEHD ~」というファイルをクリックすると
プレビューを見ることができます。
プレビューは100itterごとに更新されます。
プレビュー画面見かた



プレビューを見ながら設定を変更していきます。
これは私のやり方なので、他の方と異なることもあるかと思います。
色々試して自己流の設定を見つけてみてください。

プレビューの顔が目鼻口がある程度はっきりしてきたら(loss値だいたい0.6程度)
Batch_sizeを「6」に下げます。
Eyes and mouth priorityを「y」にします。
Enable random warp of samplesを「n」にします。

プレビューの歯がある程度はっきり見えるようになるか、loss値が下がらなくなってきたら
Batch_sizeを「4」に下げます。
Use learning rate dropoutを「y」にします。

loss値が下がらなくなってきたら
Batch_sizeを「6」にあげます。
Eyes and mouth priorityを「n」にします。

ここでloss値が下がらなくなってきたら、Trainを終了してもいいですが、任意でGANの設定をします。
GANは、prdの詳細度が上がるものの、扱いが難しいので使う場合はあらかじめmodelのバックアップをとってください。
GANを使う場合は、必ずEnable random warp of samplesとUse learning rate dropoutは「n」にします。(修正しました。GANを使う場合は、
Enable random warp of samplesのみ「n」にしてください)

Batch_sizeを「4」に下げます。
Use learning rate dropoutを「n」にします。
GAN power
を0.01~0.1くらいの間で0.01ずつ調整します。
itter数が3000経過したくらいからitter数が1000経過するごとにプレビューを確認します。
徐々にプレビューの詳細度が上がっていくので、任意のタイミングでTrainを停止いし完成とします。
プレビューがざらざらするように変化していった場合、Trainのしすぎなのでバックアップからやりなおします。
GAN powerの値を下げるか、Target iterationを使って学習回数を制限して調整してみてください。


重たい設定のmodelを使用している人へのアドバイスとしては、
Use AdaBelief optimizer、Eyes and mouth priority、Use learning rate dropout
この3つの設定を併用しないようにしてみてください。
Enable random warp of samplesを「n」にした後
Use AdaBelief optimizerのみでlossが下がらなくなるまでTrainして
同じ要領でEyes and mouth priorityのみUse learning rate dropoutのみというようにやるとBatch_sizeをなるべく下げずにTrainできると思います。


Trainが終了したら、Export to Driveでworkspaceをグーグルドライブにアップロードします。
残りのmerge作業はローカルで行います。
長くなったので次の記事に移ります。