ツイッターで、とある人が deepfake についてつぶやいていた
気になって調べてみると、GPUパワーをガンガン使うようだ
もしや、余剰のマイニング用 GPUで商売できるか?と思ったが、レンタルGPUは難しそうだった。
マイニングと違って、CPUもRAMも必要。
でも、8GBあればギリギリなんとか。
まず、deepfake とはなんでしょう?という人は、こちらを参照ください
さて実際に使うツールは faceswap 。サイトはこちら
download タブから windows 用のインストーラのリンクをクリックして保存します
本体は github にあります
必要なパッケージ(Python, MiniConda3)は勝手にダウンロードしますが、faceswap とは別フォルダです
MiniConda3 は、c:\user\username\MiniConda3 に格納されます。
インストーラ実行後、デスクトップの faceswap というアイコンで起動します。
1.学習用画像の準備
1000個以上データが必要なので、動画から切り出すほうが楽です
変換元A,変換後B の二人分のデータを作成します。
Extract タブ
@ Data Input Dir
動画本体を指定するか、静止画が入っているフォルダを指定します。
A Output Dir
切り出した顔画像の格納フォルダを指定します。
B Alignments
顔の位置(align) を記憶するファイルの保存フォルダを指定します。(省略可)
デフォルトファイル名は、動画名_alignments.fsa です。
メモ:
変換(Convert)対象の顔は、動画からExtract で切り出したものです。
alignments に保存された顔だけが変換されます。
学習モデルと別の動画を使用するときは工夫が必要です。
CPlugins
検出、位置判定、顔のマスクなど、アルゴリズムを選べます。まずはデフォルトで。
DFace Processing
Min Size に顔画像の最小サイズを対角ピクセル数で指定できます。
学習用顔画像は 64x64 ぐらいを使うらしいので、ゴミ画像除去のため 100 ぐらいでいいかも?
EOutput
動画から切り出す顔画像の間引く数を指定します
動画の全フレームを検索するので、静止画が大量に作成されます。
Extract Every N に 100 と指定すれば、枚数が 1/100 になります
メモ:
ただし、この数値を元に alinments も作成するので、変換する動画の場合は、あきらめて1を指定します
(alinments ファイルなしの動画を convert するときは、自動で顔検出しながら実行する仕様だが、うまくいかないことが多い)
Generate をクリックするとコマンドラインを表示します(表示するだけ)
Extract をクリックすると実行します。終了を気長に待ちましょう。
終了するとAのフォルダに顔画像がたくさんできます。
顔じゃない画像や、向きがおかしい画像や、ターゲット以外の顔ファイルを削除します。
エクスプローラで、中アイコンぐらいで表示して、下の方から消しておくと効率がいいです。
(つづく)