このプロジェクトはZhangらの研究 に基づいています.ZhangらプロジェクトをForkして,私のデータセットやモデルを入れて使ってください.
まず最初にこちら からデータセットをダウンロードしてください.訓練済みモデルが欲しい場合はこちら からダウンロードして適当な場所に入れてください.(データセットにはhelenを用いています.)
config.yml
でパラメータを設定し,以下のコマンドを実行してモデルを訓練します.
python train.py
任意の画像でテストしたい場合は顔のみが映る256*256の画像を用意してください.
cascade.py
を使うことで簡単に顔をカスケードすることができます.
その場合./data/cascade/input/
にカスケードしたい画像を入れて実行してください.
カスケードした画像を./data/test/test_A/
に入れて以下のコマンドを実行します.
python predict.py --config <path_to_config.yml_in_the_out_dir> --test_dir <path_to_a_directory_stored_test_data> --out_dir <path_to_an_output_directory> --pretrained <path_to_a_pretrained_model> --cuda
学習済みモデルの全テスト結果は./out/epoch_0001/
にあります.ここでは一部を紹介します.
valデータに対する結果
cascade.py
を使うことで簡単に顔をカスケードすることができます.
その場合./data/cascade/input/
にカスケードしたい画像を入れて実行してください.
カスケードした画像を全て./data/mk_datasets/data_C/
に入れて以下を実行します.
python mk_mask.py
./data/mk_datasets/segment_mask/
にセグメンテーションマスクが出力されます.
ただし,ailia-modelの「human_part_segmentation」を用いているため,ライセンスを取得し,コード内のscript_pathにhuman_part_segmentation.py
の絶対パスを指定することを忘れないでください.
2.1~2で得たカスケード画像とセグメンテーションマスクを用いて以下のコードを実行すると, 影付き画像と影マスクを生成することができます.
python mk_datasets.py
ここまで行えば,data_A, data_B, data_Cにそれぞれ影付き画像,影マスク,影なし画像 が出力されているはずです.このABCは訓練データとテストデータのABCに対応しています. お好みで移動させてください.
前項の手順を図説するとこうなります.パーリンノイズのシード値やガウシアンブラーのカーネルを ランダム化することで多様な影を出力しています. 手法図