2020年01月01日

Faceswap で deepfake 動画を作ってみる

ツイッターで、とある人が deepfake についてつぶやいていた
気になって調べてみると、GPUパワーをガンガン使うようだ
もしや、余剰のマイニング用 GPUで商売できるか?と思ったが、レンタルGPUは難しそうだった。
マイニングと違って、CPUもRAMも必要。
でも、8GBあればギリギリなんとか。

まず、deepfake とはなんでしょう?という人は、こちらを参照ください

さて実際に使うツールは faceswap 。サイトはこちら


01.png
download タブから windows 用のインストーラのリンクをクリックして保存します
本体は github にあります

必要なパッケージ(Python, MiniConda3)は勝手にダウンロードしますが、faceswap とは別フォルダです
MiniConda3 は、c:\user\username\MiniConda3 に格納されます。

インストーラ実行後、デスクトップの faceswap というアイコンで起動します。

1.学習用画像の準備

1000個以上データが必要なので、動画から切り出すほうが楽です
変換元A,変換後B の二人分のデータを作成します。
02.png
Extract タブ

@ Data Input Dir
動画本体を指定するか、静止画が入っているフォルダを指定します。

A Output Dir
切り出した顔画像の格納フォルダを指定します。

B Alignments
顔の位置(align) を記憶するファイルの保存フォルダを指定します。(省略可)
デフォルトファイル名は、動画名_alignments.fsa です。

メモ:
変換(Convert)対象の顔は、動画からExtract で切り出したものです。
alignments に保存された顔だけが変換されます。
学習モデルと別の動画を使用するときは工夫が必要です。

CPlugins
検出、位置判定、顔のマスクなど、アルゴリズムを選べます。まずはデフォルトで。

03.png
DFace Processing
Min Size に顔画像の最小サイズを対角ピクセル数で指定できます。
学習用顔画像は 64x64 ぐらいを使うらしいので、ゴミ画像除去のため 100 ぐらいでいいかも?

EOutput
動画から切り出す顔画像の間引く数を指定します
動画の全フレームを検索するので、静止画が大量に作成されます。
Extract Every N に 100 と指定すれば、枚数が 1/100 になります

メモ:
ただし、この数値を元に alinments も作成するので、変換する動画の場合は、あきらめて1を指定します
(alinments ファイルなしの動画を convert するときは、自動で顔検出しながら実行する仕様だが、うまくいかないことが多い)


Generate をクリックするとコマンドラインを表示します(表示するだけ)
Extract をクリックすると実行します。終了を気長に待ちましょう。

終了するとAのフォルダに顔画像がたくさんできます。
顔じゃない画像や、向きがおかしい画像や、ターゲット以外の顔ファイルを削除します。

エクスプローラで、中アイコンぐらいで表示して、下の方から消しておくと効率がいいです。

(つづく)
posted by とーふ at 13:59| Comment(2) | PCソフト
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: