Deepfacelabの使い方を日本語解説 CPUバージョン編

f:id:cambox:20190202172615g:plain

Apinkのナウンちゃんの顔同士でトレーニング中の風景

Deepfacelabの最大の特徴はCPUでもディープフェイクを作成できるCPUバージョンが存在するということです。

私のノートPCの環境だとGTX 1050Tiのおよそ8分の1の速度で学習が可能です。

(i5-2450M 4GB GT540M)

制限付きではありますが、とりあえずディープフェイクを作ってみたい方にオススメです。

 

先にCPUバージョンを作るうえで苦労するだろう点を「制限」として一覧にしておきます。

気になる方はこちらを参考にパソコンの新調を検討してください。

cambox.hatenablog.com

 

 

【制限一覧】

  • 動画から顔画像を抽出するのにAさん分とBさん分各1000枚ずつ抽出するのに、5間以上かかる。
  • レーニングできるモデルが実質最低画質のH64モデルのみ。
  • レーニングにかかる時間がディープフェイクを作るにあたり最低クラスのGPUであるGTX1050Tiの約8倍かかる。
  • 24時間かけても1作品もできない。
  • 48時間かけても雰囲気と顔がマッチしていなくて違和感がひどい可能性が8割。

 

という制限があり、根性がなければ作品レベルのものにできません。

ですので現状CPUバージョンで納得いく作品を作るのは8割方不可能と思ってよいでしょう。

 

それでも良い方だけ、作り始めてください。

 

【Deepfacelab CPUバージョンをダウンロードする】

f:id:cambox:20190202210312g:plain

zipファイルをダウンロードする

まずDeepfacelabのCPUバージョンをダウンロードします。

スタンドアロンになっているのでzipファイルを解凍するだけで使うことができます。

 

こちらのリンクの最後の方にある「Prebuilt windows app」からダウンロードしてください。

torrentのマグネットリンクから取得したほうが早いですので、すぐほしい方はμtorrentなどをインストールしておいてください。

MEGAの方から通常のダウンロード可能です。

github.com

 

【その1:workspaceの中の準備】

f:id:cambox:20190202211447g:plain

workspaceフォルダを開く

zipファイルを解凍するとこんな感じだと思います。

まず準備が必要なのが「workplace」フォルダの中ですので、workplaceフォルダを開いてください。

 

f:id:cambox:20190202211848g:plain

workplaceフォルダの中身

開くとこんな感じです。

 

まず自前の「data_dst.mp4」と「data_src.mp4」を用意する必要があります。

 

ちなみに

dst=destination=目的地=体側の映像。

src=source=源=顔側の映像。

 

以前ロシア語のマニュアルを読んでいた時はmp4以外にもaviとmkvにも対応していたと思います。

この後の操作で上手くいかなかったときはmp4形式に変換してから使ってみてください。

 

約3分くらいの動画(mp4かaviかmkv)を体側と顔側で用意して、そのファイルの名前を「data_dst」(体側)と「data_src」(顔側)に変更してください。

ただ興味本位で試したい方は元々workspace内に用意されているものを使ってください。

 

【その2:動画を写真にする】

f:id:cambox:20190202211447g:plain

batファイルを実行する

一旦先ほどのファイルがたくさんあった場所まで戻ります。

 

※batファイルを実行できないように設定してあるようならbatファイルを実行できるようにしておいてください。

(もし実行できない環境でWindows10なら設定画面に行けます。)

必要に応じて管理者権限で実行してください。

 

ファイルの左側に数字がついていますが、基本的にこの数字の通りにファイルを実行していけば、ディープフェイクのトレーニングが始まります。

ただし手動のほうがよかったり飛ばせるステップもありますので、今回は最短で作る方法を紹介いたします。

 

まず「2) extract PNG from video data_src FULL FPS」を実行します。

このbatファイルを実行することで、動画を完全に写真で分割します。

他にも10fpsや5fpsなども入っていると思います。

30分など動画が長い場合は少ない数字の物を選択してください。

使えないものは消していくので大体2000~3000枚は最低でも必要になります。

 

動画の時間にもよりますが、数分から数十分作業にかかります。

終了すると、workspace内にあったdata_srcフォルダに写真ファイルが大量に置いてあるはずです。

 

f:id:cambox:20190202213743g:plain

tiktokから拾ってきた動画を分割

Apinkのナウンちゃんの顔画像を抽出する際に、前に分割しておいたデータを使ったため、tiktokから適当に動画を拾い抽出しました。

 

src側が終わったら「3.2) extract PNG from video data_dst FULL FPS」も実行してdst側も同様の処理をかけておいてください。

 

 

【その3:顔部分だけを抽出する】

f:id:cambox:20190202214115g:plain

顔だけの画像が何千枚とできます

 

動画を写真に変換することができたら、そこから顔画像だけを抽出することになります。

「4) data_src extract faces MT CPU」を実行し「5) data_dst extract faces MT CPU 」も実行してください。

順番はどちらでもかまいません。

 

大体片側に2~3時間ほどかかると思いますがじっくり待ちましょう。

1度目の処理が終わった後、2度目の処理がかかるのですがすごく遅いです。

 

終了すると、workplaceフォルダ内の「data_src」「data_dst」フォルダの中に「aligned」フォルダがあるはずです。

その中に大量の顔画像があればきちんと処理が実行されています。

 

【追記】

CPUバージョンで抽出した顔データはGPUバージョンでも使用可能です。

 

【その4:トレーニングを実行する】

f:id:cambox:20190202215928g:plain

6時間ほどトレーニングした結果

※記事を書きながら6時間ほどトレーニングしたのが上記の画像です。

GTX1080tiでトレーニングしていると、6時間の時点で動画を合成できます。

そして様々な人物を試してフィット具合を確かめることができます。

 

さて、いよいよ待ちに待った学習モデルのトレーニングです。

「6) train H64 CPU」を実行してください。

 

オプションなどの選択を求められますが、わからないところは全てEnterキーを押せばとりあえず問題はありません。

 

GPUバージョンを紹介する際に各種オプションについても解説しますので、そちらが完成次第、こちらにもオプションの意味を解説する文章を挿入いたします。

 

レーニングが始まると、顔画像のプレビューが表示されます。

(最初は真っ暗で、学習が進むにつれてぼんやりと顔が浮かび上がってきます。)

 

キーボードの「s」で学習をセーブして「Enter」キーを押すと、学習を中断することができます。

「p」と「space」キーを押すと、プレビュー画面を更新することができます。

 

ここから48時間トレーニングすることになります。

朝か昼か夜、いつでもいいので、学習をいったん中断して「workplace」フォルダ内にある「model」フォルダの中身のバックアップを取っておきましょう。

何かの間違いで急にモデルデータが破損することはよくあることなので、バックアップは必須になります。

 

【その5:顔と体を合成し、動画にする】

f:id:cambox:20190129191855j:plain

このレベルまで来たら合成可能。画像は公式サイトより。

 

画像のようなレベルまで仕上がったら、まずは顔と体を合成した合成写真をつくります。

「7) convert H64 CPU」を実行すると、「data_dst」ファイルの中にあった大量の写真に学習した顔画像を貼り付けします。

成功すると「data_dst」フォルダ内に「merged」フォルダが作成され、中に合成写真が入っています。

 

その後「8) converted to mp4」を実行すると動画になります。

実行するのはmp4でなくてもmovでもlosslessでも構いません。

 

動画が満足いくものだったなら完成です。

 

異様に肩幅の広い体の武田玲奈ちゃんだったら見たくないと思います。

そういう時は失敗なので、新しい体動画を見つけてきて、今までの作業を繰り返します。

 

【SAEってなに?】

フォルダ内にSAEという文字が入ったbatファイルがありますが、StyledAutoEncoderの略です。

f:id:cambox:20190202222018g:plain

こういう処理が楽にできるらしい

この画像の様に、マスクや帽子、メガネをつけた動画でも合成できるようになるトレーニング方法です。

ただしきちんとやらないとうまくモデルが収束しないらしいので、別人ぽさが増すらしいです。

まだ試していませんので、今後試す機会があれば記事にしたいと思います。