Warping Module では、上図のように、{試着画対象人物パース画像 B_bs・着せ替え服着用人体パース画像 A_cs}から試着対象人物画像が着せ替え服を着用したときの人体パース画像(=試着画像の人体パース画像)B_cs^′ を生成する。
ネットワークの内部構造としては、UNet をベースとした dual path 構造のネットワークを採用している。
Warping Module での処理の流れは、以下のようになる。
1. pose encoder で、試着対象人物パース画像を encode し、サイズ 512 x 16 x 16 の特徴マップを出力する。
2. clothing encoder で、着せ替え服着用人物パース画像を encode し、2 x 2 x 1024 の狭い空間での特徴マップに encode する。その後アップサンプリングを行い 512 x 16 x 16 の特徴マップを出力する。
※ 一度 2 x 2 x 1024 の狭い空間での特徴マップに encode することで、生成される人体パース画像が、服の高レベルの情報(トップス or ボトムズなど)に影響を受けるが、細かい情報は試着対象人物パース画像の影響を強く受けるようになる。
※ encoder に入力される着せ替え服着用人物パース画像は、衣装カテゴリのチャンネル数 18 をもつ 18 x 128 x 128 のパース画像。各チャンネルの値は、その衣装カテゴリである確率値となる。
3. 2つの encode された特徴マップを concat し、4段の Resblock に入力する。
4. Resblock からの特徴マップを cloth decoder で元の解像度にアップサンプリングし、試着画像の人物パース画像を B_cs^′ を出力する。
5. 後処理として、B_cs^′ の顔と髪のセグメンテーション部分を、元の着せ替え服着用人物パース画像 A_cs の顔と髪のセグメンテーションに置き換える?
※ この後処理は、異なる人物間での試着を実現するために必要な処理。(この処理がなければ、同一人物での試着しか行えなくなる)
- 弱教師あり学習(自己教師あり学習)
このネットワークを学習するためには、理想的には{試着画対象人物パース画像 B_bs・着せ替え服着用人体パース画像 A_cs・試着画像の人体パースの正解データ B_cs^′}のペアデータがあることが望ましい。しかしながら、実際上このようなペアデータは入手困難である。
そのため本手法では、弱教師あり学習での学習を行う。
具体的には上図のように、{試着画対象人物パース画像 B_bs・着せ替え服着用人体パース画像 A_cs・試着画像の人体パースの正解データとしての着せ替え服着用人体パース画像 A_cs}のペアデータで学習を行うようにする
この際に、服着用人体パース画像 A_cs をそのまま使うと A_cs -> A_cs への恒等写像をネットワークが学習してしまうので、ネットワークに入力する A_cs のみに対してランダムなアフィン変換を行いDAするようにする。(正解データとしての A_cs は DA しない)
- 損失関数
Warping Module は、以下の cross entropy loss と adv loss の線形結合で学習を行う。
Texturing Module
Texturing Module では、上図のように、試着対象人物画像 B とWarping Module で生成した試着画像の人物パース画像を元に、最終的な試着画像を生成する。
具体的には、以下のような処理を行う
1. 試着対象人物画像 B を ROI Pooling 付きの encoder-decoder ネットワークに入力し、18x128x128 の特徴マップを出力する
2. 試着対象人物画像 B の encode した特徴マップと Warping Module からの人物パース画像を concat する
3. concat した特徴マップを別の enocder-decoder に入力し、試着画像を出力する。
4. 後処理として、試着画像の顔と髪部分のピクセルを、試着対象人物画像 B の顔と髪部分のピクセルに置き換える?
※ この後処理は、異なる人物間での試着を実現するために必要な処理。(この処理がなければ、同一人物での試着しか行えなくなる)
- 弱教師あり学習(自己教師あり学習)
Warping Module と同じ用に、試着対象人物画像 B を正解データとしてそのまま学習すると B -> B への恒等写像をネットワークが学習してしまうので、ネットワークに入力する試着対象人物画像 B のみに対してランダムなアフィン変換を行いDAするようにする。(正解データとしての B には DA しない)
- 損失関数
Texturing Module の損失関数は、以下の式のように、L1 loss + VGG loss + adv loss の線形結合で定義される。
0. 論文情報・リンク
1. どんなもの?
2. 先行研究と比べてどこがすごいの?
3. 技術や手法の"キモ"はどこにある?
アーキテクチャの全体像
Warping Module
Texturing Module
- 弱教師あり学習(自己教師あり学習) Warping Module と同じ用に、試着対象人物画像 B を正解データとしてそのまま学習すると B -> B への恒等写像をネットワークが学習してしまうので、ネットワークに入力する試着対象人物画像 B のみに対してランダムなアフィン変換を行いDAするようにする。(正解データとしての B には DA しない) - 損失関数 Texturing Module の損失関数は、以下の式のように、L1 loss + VGG loss + adv loss の線形結合で定義される。
4. どうやって有効だと検証した?
学習用データセット 学習用データセットとして、DeepFashion データセットを利用。 人体パース画像は、LIP SSL の事前学習済みネットワークで生成。
DA による弱教師あり学習の効果
Warping Module での試着対象人体パース画像の定性検証
既存の2Dベース仮想試着モデルとの定性的比較検証
5. 議論はあるか?
6. 次に読むべき論文はあるか?
7. 参考文献