高品質モデルデータ作成のロードマップ【deepfacelab】
具体的なパラメータを掲載しながら、高品質なモデルを作るまでの手順をまとめました。
deepfacelab の扱いに慣れていない方でも、このページを参考に作業を進めることで、高品質なモデルを作成することが可能です。
前提
まず前提として、通常の手順に沿って以下のデータは作成済みであることを前提とします。
- data_src のフェイスセット
- data_dst の動画とフェイスセット
それぞれを作成するためのバッチファイルは以下の通りです。
# data_src
2) extract images from video data_src.bat
4) data_src faceset extract.bat
# data_dst
3) extract images from video data_dst FULL FPS
5) data_dst faceset extract.bat
data_dst は全てのフレームを抽出する必要がありますが、data_src はその限りではありません。
フレームが細かすぎても学習素材として活用しきれないため、切り出すフレームは動画の動きに合わせて 3~6 フレームで切り出すのが良いかと思います。
動きの少ない動画: 6 フレーム毎 動きの多い動画: 3 フレーム毎
ステップ 1 不要な画像の削除
学習を始める前に、src、dst それぞれのフェイスセットを整理しましょう。
誤って顔と判断された顔でない画像は、学習においてゴミにしかなりません。
フェイスセットのソート機能などを活用しながら、不要な画像を手動で削除していきます。
削除の手順は以下をご参照ください。
ステップ 2 ジェネリック XSeg の作成
顔に重なる障害物を取り除いたり、高度な学習設定をするためには XSeg モデルが必須です。
XSeg モデルを作るにあたって、標準で用意されている様々なフェイスセットを使って汎用的な XSeg モデルを作成することで、実際のモデル学習の効率が上がり、手動でセグメントを定義する手間を抑えられます。
5.XSeg) train.bat
を実行し、以下のオプションを有効にして学習を行います。
バッチサイズは PC の性能が許す限り高い数値を指定してください。
batch_size: 16 # 可能な限り高く(上限は16)
pretrain: y
XSeg モデルの詳細については以下をご参照ください。
ステップ 3 XSeg のマスクを手動で定義
ジェネリック XSeg を定義しておけば、ある程度の障害物は自動的に取り除かれます。ただ、それだけでは取り除けない障害物や、障害物として誤検出されてしまうケースも少なからずあります。
用意されているツールを使って、手動で数件のマスクデータを作成します。
5.XSeg) data_src mask - edit.bat
5.XSeg) data_dst mask - edit.bat
ツールの使い方などはこちらをご参照ください。
ステップ 4 XSeg モデルの学習
実際のフェイスセットを使って、XSeg モデルの品質を上げていきます。
5.XSeg) train.bat
を起動し、前述したジェネリック XSeg モデルを使って pretrain モードをn
に変更して学習を開始します。
ステップ 5 XSeg モデルの反映
十分に学習させた後、XSeg モデルを実際のフェイスセットに反映させます。
data_src、data_dst それぞれ、以下のバッチファイルを実行します。
5.XSeg) data_src trained mask - apply.bat
5.XSeg) data_dst trained mask - apply.bat
この手順を行わないと、学習させた XSeg モデルが活用されません。
XSeg モデルデータを更新した場合は、必ずこの手順を再度実行してください。