MAIN使い方(詳しく)

①入力エリア

・体側:タイトル → カットのときにつけたdstのタイトル。※カットが成功すると0)Workapaceに同名フォルダができているはずです。
・フォルダ名: face(A~Z) → 例えば、カットしたシーンが多くて、二回に分けて学習する場合等に詳細設定ボタンを使って適宜スキップし、前半をA、後半をBにするような感じで使います。

・詳細設定 → ボタンを押すと詳細な設定ができます。

・All-Skip → ボタン押すとSkipの全てのところにチェックが入ります。
・Revert-Skip → Skipのチェックが反転します。
・Re-Build → 別名タイトルでやり直したいときに使います。0)Workapaceに別名のフォルダを作成して、元のタイトルフォルダからcut_detail.jsonをコピー。体側:タイトルで新しいタイトルを選択→詳細設定→Re-Build
・Save → 詳細設定の変更を保存します。

・Shape → 左が完成動画のサイズ、真ん中が元の動画のサイズ、右の分母を弄ると完成動画のサイズを変更できます。
・※Shapeの下のパスは動画を参照している場所です。動画やソフトの場所を変えてしまうと参照できなくなってしまうのでお気を付けください。
・Skip → チェックが入っているシーンはすべてのプロセスで飛ばされます。
・Framerate → データセットのときに何フレームに1枚使うかです。ただし現在はデフォルトでモーション(動き)に応じて決められるようになっているのであまり出番がないかもしれません。@=スワップしないシーン(顔のないシーン)def=(可変フレームレートを使わない場合)datasetのところのフレームレートがデフォルト値になります。
・Direct → Extractの回転オプションの基準です。-1=自動反転、0=上が基準、90=右回転が基準、180=上下反転が基準、270=左回転が基準

・キャッシュファイルの削除 → 作成が終わったときにこのボタンを押すとそのタイトルの不要ファイルを削除できます。
・顔側:カテゴリ → SRCの顔セットのカテゴリー名を選択してください。
・顔セット → SRCの名前を選択してください。
・モデル → モデルフォルダを選択、新規の場合は名前を入力し右のnew-modelで解凍してください。詳しくはこちらも参照。

・Load-Def → デフォルト設定の読み込み
・Back → 最初の画面に戻る
・Save-WS → 設定を0)Workspaceのタイトルの中のnew_config(_wf).iniに保存します。

 そのプロジェクトにnew_config(_wf).iniがあるとタイトルを選んだ時にポップアップが出ます。

・Save-Sys → 設定をシステム(起動時に最初に読み込まれる)に保存します。

MAIN(詳細)の基本的な使い方

 入力エリアの選択が終わったら、それぞれの処理の深緑のボタンを押すと右下のところに命令文が作成されます。例えば、Extract→Dataset→Trainの順にボタンを押して、Commandを押すとExtraxtが終わったらデータセットを作成し、Trainを実行というように、処理を連続して実行できます。もしくは、左下のカスタムのところで実行したい処理にチェックを入れてボタンを押すとまとめて命令文を作成できます。

②Extract

 動画の中から顔を見つけ、フレームごとに情報を記録するプロセスです。

 処理は二段階(Extractなら顔の検知、顔の整列)のプロセスになっていることがあります。その場合、オプションの文字が太字になっていて、チェックが入っている命令文が作成されます。

顔の検知 → フレームごとに顔があるエリアを検索します。フレームごとに複数の顔をみつけ、その顔ごとの場所や特徴量を取得するのでバッチサイズはありません。
・指定(顔の識別) → 基本的にうちのExtractはメインの人物一人に焦点を当てて撮影されていることが前提に対象を一人に絞っています。顔の特徴や見つかった場所の座標を追跡して解析し、連続している人物にIDを与え、連続性や画面の中心などを考慮してメインぽく映っている人から順に0,1,2…と若い番号になります。つまり、デフォルトの0は一番メインぽい人に絞るという意味になります。
・回転 → 顔が見つからなければ回転して顔を見つけていくオプションです。詳しくはこちら

顔の整列 → 顔の検知を基に顔が見つかったエリアから68個のランドマークを見つけるプロセスです。顔の検知がオフの場合でも、顔の検知の情報がない場合は先に顔の検知が実行されます。
・バッチサイズ → 顔の検知とプロセスを分けているのでまとめて推論できます。バッチサイズをあげると処理速度があがりますが、VRAMが足らないとエラー出るので注意です。

・デバッグ → ランドマークとIDを描画した動画を作成できます。※現在detectorの結果のほうがバグっています。

③修正

 ExtractのID間違いや自動で削除されてしまったランドマーク情報を修正する機能です。

①moveフォルダを確認し、復活したいものとjsonファイルはキープし、残りは消して下さい。

②また、alignAの中で誤って検出されているものがあれば消して下さい。

③確認後に”修正”コマンドを実行するとalignments情報が修正されます。

・別の顔 → alignAな中身がターゲットと別の人物の場合は、”別の顔”にチェックをいれると、”じゃない方の顔”を検出しanotherフォルダに保存されます。anotherフォルダを確認し、エラーを消して下さい。 anotherフォルダとその中にjsonファイルがある状態で、もう一度”別の顔”にチェックしたまま”修正”を実行するとanotherフォルダにある顔に更新されます。
・指定 → 先ほど別の顔のところで、じゃない方の顔を見つけると説明しましたが、0の場合、IDが”0″じゃない顔を検出するという意味になります。
・ave_num → alignments情報はないが、前後の情報はある場合には前後の平均からalignmentsを算定します。その時に何枚までのフレームを平均で埋めるかです。

④Dataset

 最適な学習をするために最適な学習セットを作ります。また、ここで作られた顔セットに学習用のマスク(foregroundのセグマスク)を埋め込みます。


DST(まとめる) → DSTの顔セットを作成します。
・size → 顔セットのサイズです。trainの学習サイズより大きくしてもリサイズされるだけなので事前学習モデルの学習サイズに合わせるといいと思います。

・可変フレームレート → 動きが少ないシーンの顔は少なく、動きが大きいシーンの顔は多くなるように取得するレートを調整します。オフの場合は右のフレームレートがデフォルトで、また、緑の詳細設定のシーンごとのフレームレートが優先して使われます。


・dstのリマスク → foregroundのセグマスクを埋め込みなおします。segマスクを学習しなおした時に顔セットを作り直すのがもったいないので、この機能を使って埋め込みなおしてください。

SRC(専用) → DSTの顔セットを基に環境や角度の近いそのDST専用のSRCの顔セットを作成します。faceA(~Z)(wf)フォルダの中にSRCの名前で作成されます。
・更新 → 例えば、SRCの顔セットを追加した場合、追加分の情報だけ取得し、セグマスクを埋め込みます。
・リスキャン → 更新に対してすべての顔セットの情報を取得し、セグマスクを埋め込みなおします。facesetのところのリスキャンと同等です。更新にもチェックが入っている場合はリスキャンが優先されます。

・増強 → チェックが入っているとレアな角度のみフリップします。
・グラフ表示 → プロットを出力しますがプロセスが止まってしまうので連続して実行したい場合は使わないでください。
・GPEN_RATE → 超解像した顔セットを元の顔セットと同じ層において(例えばfugafuga_superresフォルダ)、srcをfugaに選択してdatasetを実行すると超解像した顔セットが追加されます。数値が0.5の場合、元のが1:超解像したものが0.5で、総数が1.5倍の顔セットになります。

⑤Train

 Trainは設定を変えて学習できるようにテンプレートが3つあります。全て実行するときはtrain1→Train→train2→Train→train3→Trainのように押していきます。

DatasetとTrainの注意点

 Trainのsrcのところは必須なの注意してください。Datasetのボタンを押したときにSRCの名前を自動で挿入するようになっているので、途中からやるときに選択し忘れやすいです。また設定をセーブした段階では反映されていないことが多いです。正しく選択されているか確認してから実行してください。

・iter+ → DFLのiterは目標値ですが、FACEjAPPでは今から何回廻すかです。チェックが入っていないとプレビュー画面でenterを押して手動で止めるまで学習します。
・バッチ → 一度に学習する画像の枚数です。大きい方が効率が良くなりますが、大きくしすぎてVRAMが足らないとエラーで止まります。
・色 → SRCをDSTの色に近づけるためのオプションです。

・ランダムワープ → 入力画像を歪ませます。汎用性をあげるために使いますが、より高精細にするために途中でオフにするのがセオリーです。
・マスク範囲の学習 → マスクの範囲(顔の範囲)だけ学習します。
・model_on_gpu → オフにするとモデルの重みをRAMに載せるので、VRAMを節約できますが割と遅くなるのでおすすめしません。バッチサイズを下げても動かないときにやむを得ず使う感じです。
・gan_power → より高精細になりますが処理は重くなります。
・true_face_power → dfアーキのみ有効。より似ますし、処理速度の影響も少ないですが、馴染ませるのが難しくなります。
・drop out → deep learningのテクニックの一つです。詳しく知りたい方はググってください。
・optimimizer → オプティマイザーは最適な学習をするための仕組みです。やや重くなりますがadabeliefの方がいいと思います。
・eyes_mouth_prio → 目と口の精度をあげるということだと思いますが、あまり効果を実感できないので自分は使ってません。

⑥Convert

 convertはswapした顔やマスクを推論し、元の動画に合成するプロセスです。

・顔の変換 → swapした顔、学習したマスク、dstのsegマスク、swapした顔のsegマスク、障害物マスクを生成します。ver2から使うマスクを増やしたのでやや重くなっています。

・合成 → 顔の変換で生成した顔やマスクを基に、元の動画にswapされた顔を合成するプロセスです。
・左右反転 → 左右反転した完成動画ができます。
・ct → swapした顔をDSTの色に近づけるためのオプションです。
・プレビュー → チェックが入っていると合成の時にプレビュー画面がでます。プレビュー画面でqを押すとそのシーンのコンバートを止めることができます。プレビュー画面でzを押すと全てのシーンのコンバートをやめることができます。
・モザイクモード → 自分がtwitterにあげているようなモザイク動画が、普通に変換した動画とは別に作成されます。
・グリーンモード → 背景がグリーンバックの動画ができます。編集ソフトで合成できるようにこのオプションを作りましたが微妙かもしれません。
・ダミー出力 → 変換されてない元のdstの動画をシーンごとに生成します。

⑦動画をまとめる

 Convertの段階ではシーンごとに分割された複数の動画なので、このプロセスで1つの動画にまとめます。また、詳細設定で@になっているシーンの顔を変換しない動画もここで生成されます。

左のリストボックスは2人以上のSRCの候補があるときに選んでください。候補が二人以上いる場合に、空白のままだとコンソールでどれかを選ぶように聞かれるので番号を入力してください。

・ギャラリーに保存 → チェックが入っているとまとめた動画が6)Galleryに保存されます。チェックが入ってない場合、0)WorkspaceのSRCの名前フォルダに保存されます。

⑧カスタム

 カスタムのボタンを押すとチェックが入っている全てのプロセスの命令文を作成できます。

⑨COMMAND

 最初に説明しましたが、ここに命令文を貯めてCOMMANDを押すと実行されます。

・削除、全削除 → 命令文を削除できます
・実行時間の指定 → 実行する時間を指定できます。例えば、夜までゲームして寝てる間に実行したい時などにお使いください。
・GPUを選択 → 複数のGPUがある場合、使用するGPUを選択できます。変更する場合、命令文を作成する前に変更してください。