deepfaceで簡単に本人を再現する方法まとめ

■使用アプリはDFL一択

現在アプリはDFL(DeepFaceLab)とFS(FaceSwap)の二択だがDFL一択

 

FSはUIが優秀かつ変換やFACESET作成がDFLより何倍も高速でDFaker256が簡単に顔はそっくりにできるが開発がほぼ止まっており髪型までは変換できないため全体として完璧に似きらない(一応髪までマスクできるBisenet等あるが実質使えない)

 

DFLは現在最高クラスに似るモデルSAEHDが使える。髪型までスワップできるので完璧に本人にできる(マスク機能が優秀=X-segが最強)

 

 

ということでほぼ本人にしたいなら髪まで変換できるDFLが良い

 

変換をhead(頭)にすると髪型まで追加して変換できるがマスクが面倒すぎる

変換をWF(wholeface)(顔全体)にするとDSTの髪があるところまで変換できるので

DSTの髪型がSRCと似てるのを用意してこれを使えば簡単に本人にできる

 

 

 

ということでやりかたを簡単に解説

 

 

 

2022/2/22現在使用グラボは一般人はVRAM12GのRTX3060一択

プロは3090~を使う

 

 

 

DFLのモデルはSAEHDのliae-udtで十分似る

解像度は320でae-dims,a-dims,e-dims,d-mask-dimsはデフォルトから少しだけ上げる程度でhd程度ならok

(3090ならフォーラムによると無茶苦茶設定を上げてフルHDのドアップまでいける)

 

 

顔のサイズはheadで髪まで変換できるようにする

抽出サイズは768~。ここを上げると最終的な結果もよりよくなる様子。後々のことやトレインの際には頭部分を切り抜いて実質少し小さくなることを考えるとここのサイズは大きいほうがいいとのこと)

 

 

 

DST(ターゲット)はSRC(ソース・源)と髪型や顔の大きさが似ているほど似る

本当はスタイル・首の長さや肩幅まで似ている方が良い

 

 

SRCは数万枚~で多種多様な表情と照明の顔があれば色変換まで自動で完璧に行ってくれる

数が少ないと表情の追尾性が下がる

(数が多いのでpackしておくと読み込みが速い)

(完璧にフェイスセット整理できるなら少なくても良いかも)

 

 

 

フェイスセットを作成したらx-segで"頭"の範囲をマスクする

X-segのeditでsrcとdstの髪型と顔の外側のラインを5枚程度なぞる(首はなぞらない)

X-segのtrainでそれを全部の顔にあてはめるよう30秒~1分トレインする

X-segのapplyでトレインデータをsrcとdstフェイスセットに適応

WholeFaceならこの程度でほぼ綺麗にマスクできる

 

 

 

 

次はモデルのトレイン

ランダムワープは常時ONでOK 似る速度が速くなる

 

本当は後半ランダムワープはフィットさせるためにOFF

learning rate dropoutをonにしてやらGAN等も0.1にしたらより似る

 

 

後は普通にトレインして変換する際にマスクをX-segやらに設定すれば

"髪"まで変換するため元の"髪型"が本人に似てればほぼそっくりになる

 

本当は表情も本人そっくりだと完璧に似る