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のっぺり顔問題 メモ

メモ

DEEPFACEのモデルの解像度が高いほどのっぺり顔状態が減っていく

またトレーニング回数が増えるほど細部の表現が細かくなっていきのっぺり度が減ってくる

 

DF256(=Dfaker256)の場合

10万枚のフェイスセット同士のプレトレーニングでバッチ16で30万回ほどした時点でのっぺり度はほぼなくなった

唇の細かい表現なども大分できてきた

 

 

またVEAI等で解像度を上げる際にリアルさを上げるために粒子を追加するという項目があるがこれでものっぺり感を減らせる

 

 

 

DEEPFACE用のグラボは何が良いか

基本的にNVIDIAのグラボが機械学習に優れている

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を作ることができる