FakeApp2.2.0

FakeApp2.2.0をいれてみた。ほとんどは

ならびにYouTube

FakeApp 2.2.0 Tutorial – Installation and Usage (How to put Nicholas Cage’s Face on Various people) – YouTube

を参考にしたが、加えて自分がやったことの注意点を記しておく

1.CUDAのバージョンを必ず9.0にそろえる。筆者の場合9.1も混在していたのでこれを削除 念のためNVIDIAから再度9.0を取ってきて再インストール

2. FakeAppのインストールはsetupをクリックするだけではない。同梱のcore内のファイル群を %user\AppData\Local\FakeApp\app-2.2.0\resources\apiの中にコピーする(デフォルトではffmpegしか入っていなかった)。またこれをコピーした後にさらにsetupを起動するとどうもこれが消えてしまうようだ。

3.1. 2.ができると、FakeAppの起動画面から注意書きが消えて動き出すようになる。TF1.5が必要と書いてあったが、これは明示的にやらなくてもよかった(すでにはいっていたのかもしれない)。最初Anacondaから入れようとしていたが結局全部削除した。

4. まずデータセットを入手する。Get DatasetでA側に顔を入れ替える側(体を使う側)の動画ファイルを入れる。FPSはファイルの詳細プロパティから読み取る。「dateset-XX」フォルダの中に動画の画像がpngで出力され、さらにその中の「extracted-XX」フォルダの中に顔画像が抽出されたjpgファイルが書きだされる。

注意:実は元は動画ではなく、Photoでも利用できる。しかしその際にはファイル形式がjpgではなくpngであることが必要。ここに注意。でないとextracted中になにも抽出されずプログラムがエラー吐いて終わる。jpgからpngへの変換には例えばXnConvertなどを利用するとよい。

5.次にB側に入れ替えたい顔が入っている動画ファイルを入れる。やりかたは4.と同様

6.動画ははじめは短めの方がよい。せいぜい2Mぐらいから10Mぐらいのを準備する。筆者はmp4の動画を準備した。顔を置き換える前の動画と置き換える対象の動画はそれぞれ構図の似た顔がそろっている方が望ましい。でないと学習さえしてくれない時があった。

7.UIはよくなく、ファイル名はパスも含め全部手打ちとなる。このためファイルはC:ドライブの直下とかに置いた方がよい。もちろん日本語名は避ける。

8.Aフォルダ->画像抽出、Bフォルダ->画像抽出が終わったらあとは学習(Training).Data A,Bには先ほど抽出したextractedフォルダを指定する。数時間から場合によっては1週間ぐらいかかるらしい。指標が0.02以下になれば良いようだ。コンテンツによっては、もうこれ以上改善しないとなると勝手に止まるようだ。ここでMODELというのは学習結果を入れるフォルダなので、自分で空フォルダを指定する。

9.最後にCREATEタブで入れ替え動画を作成する。Modelには先ほど指定したフォルダを、Videoで体の方の元動画とフレームレートを入れる(デフォルトが逆になっているので注意)。ここでWorkdir-xxxの下にmergedというフォルダがあり、ここにコマのFakeApp画像ができている。これをつなぐことでAフォルダ配下にswap-xxx.mp4が出来上がる。しかしながら、しばしば出力動画作成に失敗することがある。実は2,3度繰り返すとできることがあった。

10. もし9.でmergedフォルダにコマ画像ができていて、かつmp4画像作成に失敗するようであれば、ここまできたらffmpegコマンドでやってしまう手がある。https://ffmpeg.zeranoe.com/ からWindows binaryを持ってきて適当にインストールする(例えばc:\\Program Filesの下など). それでcygwinなどから、そこまで行って、

ffmpeg -i “c:\FakeApp\out%05d.jpg” -vcodec mjpeg -sameq out.avi
というコマンドを実行。

最初の-i “c:\FakeApp\out%05d.jpg”は入力画像ファイルを指定。%05dという部分は5桁で数字は調整されているという意味。1から開始させる必要がある。FlexRenamerなどを使ってうまく番号を調節する。

-vcodec mjpegは、Motion JPEGという映像コーデックを使うという意味。素材がJPEG画像の場合、mjpegを使うと変換速度が速くなる。-sameq は素材と同じ画質という意味。これでエラーがでることがあるので、その際はこのオプションを省く。
そして最後のout.aviが保存先(この項はhttp://opensourceaki.blogspot.com/2007/10/ffmpeg_19.htmlを参照した)

10.できた動画はやはり顔のみぼかしっぽく見えてしまう。例えばAbobe Premiereなどを用いて動画にBlur(Gauss)の効果を与えて全体をぼかした方が良いかもしれない。このとき併せてもとの音声も加えて編集すると良いだろう。

11.補足
PNGの画像からTrainを終わって最後にmergeしようとして何度か失敗した。これをGPU使用からCPU使用に変えたところうまくいった。理由は不明だがメモしておく。