deepfaceのsrcのfacesetの選び方
srcのfacesetの選び方
単一ソースから
フルHD解像度でドアップ
様々な角度で
様々な表現で
1万枚以上取れれば安定する
色々なソースから取るとsrcのフェイスセットからできるモデルが収束しないで全てのソースが混ざったような顔になるため、本人感が減ることが多い
低解像度の画像を入れるとそれを含めてモデルを作るために肌の粒子感の再現が糞になる。のっぺりした顔になりがち
フルhdのドアップがベスト
解像度512 dims等も高め、ランダムワープやgan等を駆使したやつが
deepfacelabのgithubに表示されている
様々な角度や表情がないと再現が難しくいつまでたってもぼやけていたり
AIの再現が的外れなところがでてきていつまでも本当の顔に収束しない
30fpsで1万枚以上取れれば安定することが多い
ただ、この条件がそろったsrc(ソース)を探すのは大変だが用意できて
現状最高峰のsae hdでheadでx-segでマスクすれば100%本人が再現できる
faceswapとDeepfacelabの比較
結論
faceswap→90%本人まで作れる。肌の粒子まで95%似る 色々速い 簡単 バナナのマスク機能が貧弱
deepfacelab →髪型まで含め100%本人を作れる。肌の粒子まで100%似る 色々遅い 覚えること多い、バナナのマスク機能が充実
[faceswap]
とにかくDF256(DFAKERの256解像度)が簡単で優秀
DFLのように色々な設定を駆使しランダムワープgan等、dims等を使いこなさないといけないこともない
解像度の設定をし、ほぼ完成したらランダムワープをオフにするだけで肌の粒子レベルまでほぼ似る
勿論高解像度のドアップかつ様々な角度の似たソースが必要なのはDFLと同じ
(別人レベルで顔が変わっているのを混ぜると混ざった顔ができあがるので注意)
ただマスク機能が貧弱、HEADスワップ不可でかゆいところに手が届かない
障害物をマスクするVGG-Obstructedは貧弱
ヘッド全体のマスクのbisenetもしたところで調整もできない
GUIがあり色々な動作がdeepfacelabより速いため気軽に作れる
deepfacelabのフェイスセット抽出作業は非常に遅く(rtx3060で2/sec)だが
faceswapだと8~13/secとかでたりするので非常に快適
快適性はfaceswapが勝ってる
ただ更新が滞っている
[deepfacelab]
現時点で最高レベルのSAEHDの最新版が使えるのが利点
faceswapでもphazeAから使えるが色々設定ができないため似ない
Deepfacelabはheadトレーニングがあるため髪型まで100%本人をスワップできる
高機能かつ使いやすいマスクのX-SEGもあるため、バナナ食べるのもいける
また設定の解説も充実していてわかれば簡単
今回は↓の設定で行ったが100%近くの本人が高解像度で再現できた
RTX3060
抽出はhead 768
SAEHD LIAE UD
resolution 320
ae-dims 64
e-dims 64
d-dims 22
d-mask dims 22
公式によるとフルHD環境でのアップ等はresolutionが512あれば完璧らしいが
それは40XX代発売までミドル層の実現は厳しそう
一方でguiがないため操作がいちいち遅い
特にフェイスセット書き出し速度が異様に遅い、
いちいち止まったり、適宜パラを入力したり諸々含めるとfecaswapの10倍以上かかるのもざら、faceswapなら1ボタンでできることが無茶苦茶時間がかかる
学習対象のファイルを色々切り替えるのも何から何まで面倒くさい
まとめ
faceswapは簡単にほぼ本人まで簡単に作れる
特にdf256使ってsrc(ソース)を高解像度かつ色々な表情で1万枚以上用意できれば
ほぼお任せ設定でdstとsrcの相性が良ければほぼ本人まで作れる
ただ100%本人は難しい 髪型まで移行できれば・・
deepfacelabは髪型まで含めて100%本人を作れるが
headでの切り取り
x-segでのマスク
細かい基本設定の理解を含め
ramdomworpやgan等の正しい順序での使用等の細かいテクニックがいる
(95%本人までならgan等は使わなくても肌の粒子レベルまで似る)
色々不親切だが情報は出回っているため根気がある人なら作れる
faceswap モデル メモ
original (解像度64px)
練習用 ハーフなので顔の中心のみ変換
グラボをRTXシリーズでオプションのmixed precisionを有効にすることで相当早く完成する
解像度は256pxどころか128の1/4の64(*64)pxなので相当低いと思いきや
以下の設定をするとわりと見れるようになることがフォーラムで確認されている
リンク
https://forum.faceswap.dev/viewtopic.php?t=1430
setting
configire setting
train
で右側のface のcoverageの設定を72.5%
(モデル作成時のみ有効)
H128
originalの解像度2倍ver
DFaker
有名なDF
必要な角度と表情のfacesetを用意できれば小難しい設定を理解せずとも
解像度を256にするだけでがっつり本人に似る
おそらくfaceswapでは一番これが簡単で手軽に作れる
VRAM12GBでパッチ16でプレトレーニング(1~10万枚程度の数で自分自身の顔で自分自身の顔をトレーニング)で3日くらいやると唇の細かいつやまで再現できる
その後目的の顔をやると5分で大体完成
realface
villain
faceswapの高解像度モデルらしいが、上記のDF256で十分なため未確認
Phaze A
faceswapの最高モデル
自分で設定を作らないといけないというがそれは基本無理だと思われる
なので設定画面でプリ設定モデルをロードできるようになっている
DEEPFACELABで利用できるSAEHDモデルも用意されている
GAN値等は後でいじれないっぽいがおそらく初期値に組み込み済み?
要検証
faceswap tips
■モデルの設定
Setting
configire setting
train
model
ここから好きなモデルを選択できるが
色々といじるよりも、基本的にfaceswapの場合DFakerを256にしておくのが安定してうまくいく
またdeepfacelab等で使えるSAEHDの設定方法にある
ノーマルでは選べないが
Setting
configire setting
train
model
の後にPhaze Aを選ぶ
そして画面右上のフォルダのアイコンを押す
model_phaze_a_dfl-saehd-df_preset
↑
これを選ぶとSAEHDのDFをfaceswapでも使うことができる
model_phaze_a_dfl-saehd-liae_preset
↑
これを選ぶとSAEHDのLIAEを使うことができる
フォーラム見てる感じおそらくGAN値などは初期設定から動かせない様子(どっかで見た記憶がかすかにあるだけなので定かではない)
基本的にモデルの設定は新しく作成するときにしか適用されない
トレーニングの設定(バッチ数やno warp等)は適宜変更できる
DEEPFACE用のグラボは何が良いか
mixed precisionを利用でき
tensor coreも強力
そもそも開発者もNVIDIAモデルを優先的に作成するため結局NVIDIAのグラボ一択
1660super(メモリ6GB)でもできなくはないが最低限の画質しかできずぼやける
またDF128などが限界
SAEHDシリーズも高解像度や高dimがきつい
自然と2022年の現在の主流は3000シリーズを使用することになる
3060tiは処理力とコスパは最強だがVRAM8GBもDF256やSAEHDに高バッチにできずに結局処理能力が落ちる
また高解像度のためのVRAM消費オプションも使いづらい
そうするとVRAM3060がバランス的に最強になる
簡単にきれいにできるDF256や色々設定はあり難しく失敗も多いがうまくやればきれいにできるSAEHDを普通に回せるのは3060の12GBから
mixed precisionの設定やtensor coreの学習支援により
DF256やSAEHDも1日目でそれなりに2日目以降にしっかりと高画質に近づくくらいの速度でできる(プレトレーニング含む)
プレトレーニングなしだと時間が大幅に余計にかかるのはどのグラボを使っても一緒
勿論3080 12GBとかでもよいが高いし五月蠅いので普段使いにはメンドクサイ
(お金ある人はもちろん環境整えれば3080~が速いしいいのが作れるだろうけど)
そういう意味じゃ安くてVRAMが多く
バッチ多めでけるため結局早い
またいろいろなvramを使用する高画質のための設定を色々行う余裕があり
tensor core支援で高解像度でもしっかり学習が進む3060が安定
【FACE SWAP】 DEEPFACEにおけるプレトレーニングの活用法と応用法【DEEP FACE LAB】
DEEP FACE LABやFACESWAPを利用する際に色々大事なことはあるが
完成度を飛躍的に上げる・完成スピードを上げるのにプレトレーニングは必須だ
youtubeでdeep face lab のプレトレーニング実証動画が上がっているが、スクラッチ状態から(=0から)作り上げるのと比較し圧倒的に速度も完成度も高い
deep face labの場合標準でプレトレーニング用のデータ(=様々な人種の顔の表情と角度)が揃っている
DFLを使用する場合はこれをするだけでよいが、一方で手軽にかなり完成度の高いのを作れるfaceswapプレトレーニング用のデータが用意されていない
DF256(=DFAKAERのoutput256設定)だけで手軽に完成度の高い物を簡単に作るにはこのプレトレーニングが実はすごく重要だ
DFLのように多種多様なデータを用意してやってもよいが
本当はもっと良い方法がある
それは自分が作りたい顔の人物のありとあらゆる顔を10万枚ほどfaceswapに放り込むのだ
そして、プレトレーニングのデータどうしでtrainするだけでいい
そうすることで質の高いプレトレーニングになる
このプレトレーニングはDF256の設定だと大体数時間でで顔がしっかりしてくる
さらに12時間やると細かいところがはっきりしてきて再現力が上がってくる
完全に表現力をマスターするまでにどれだけかかるかわからないが暇なときはこうやってモデルの完成度を高めていく
30時間たった今もジョジョに完成度が上がりつつある(=本データで作る際の精細度が高まりつつある)
ある程度プレトレーニングが終わったら本来作りたい顔のfacesetが入った1万枚程度の少数精鋭のSRCに指定しなおす←超大事
これをしないと自分が作りたい表情がなかなか作れない
最初から少数精鋭でやると細かい角度が再現しきれないが、一度プレトレーニングをしていると色々再現できつつ、この少数精鋭のfacesetの表情に近づいていくのだ
また本当にこの時のこの感じで再現したいときは500枚程度の目標の顔のfacesetを指定するとぐんぐんその顔になる
まとめ
作りたい人の顔データが10万枚ほど入ったデータどうしでpretrainしてモデルの完成度を上げる
その後1万枚程度の自分のつくりたい綺麗な顔が入ったfacesetをSRCに指定して実際に作り始める
暇なときはまた10万枚のフェイスセットが入ったpretrainデータ動詞でtrainingしておく
こうすることでありとあらゆる表情を作れてかつ自分の思った通りの顔でdeepfakeを作ることができる