仮想試着 VTNFP 論文ノート

VTNFP 仮想フィッティングに関する注意事項

導入

最近はVTNFPの再現準備をしているので、まずはVTNFPの論文を理解する必要があります。
VTNFP は VITON および CP-VTON をベースに改良されたものです。
VITON は 2D バーチャル試着の元祖で、その後 CP-VTON が 2 度の改良を加えて VITON の再現に失敗しましたが、CP-VTON も成功しました。
紙のメモ

タスク

オンライン ショッピングの台頭により、仮想の着替えによりユーザー エクスペリエンスが大幅に向上します。
仮想ドレッシング技術は、基本的に 3D モデルベースと 2D モデルベースに分けられます。3D ベースの着せ替え技術は、ハードウェアの導入と計算効率の点で高価であり、インターネット上での実装には不便であり、大量の計算量とその他の情報の必要性により 3D の実現が大きく制限されます。人々の注目は、2D 画像をベースにした仮想着付け技術に移り始めました。
最近の RGB 画像手法は、類似した画像を生成し、効率的であれば使用するリソースが少なくなるなどの近似手法です。
2D 手法では、次の基準を満たす必要があるため、多くの課題に直面します: 1: ポーズと体の形状を保持する必要があり、体の部分を適切にレンダリングする必要がある; 2: 衣服の細部は置き換えるべきではない (パンツなどは保持する必要がある); 3: : 対象となる衣服は体の部位によく適合している必要があります; 4: テキストと埋め込まれた詳細は可能な限り保存される必要があります。
次に、VITON と CP-VTON が紹介されます。後者は、歪んだ衣服画像には優れていますが、身体部分と衣服の保存には欠点があります。
次の 3 つの方法を比較しました。
ここに画像の説明を挿入

最初の 2 つはどちらもパンツを適切に保持しておらず、最初の 2 つは衣服と体の境界面もぼやけています。理由は 2 つ考えられます。使用された最初の 2 つの CA レンダリングでは、身体部分の詳細が十分に保持されていなかったこと、腕やズボンなどの重要な部分が最終合成で完全に表示されなかったことです。
上記の問題を解決するために、我々は主に 3 つのステップに分かれる VTNFP を提案します。
1: 衣服変形モジュールは、対象の衣服を人物の体のポーズに一致させます。CP-VTON とは異なり、関連するマッチング コンポーネントをより強力にするためにセルフ アテンション メカニズムを採用しています。
2: セグメンテーション マップ生成モジュールは、ターゲットの服を着ている人々のセグメンテーション マップを生成するセグメンテーション マップを生成します。これは重要な貢献です。
3: 試着合成モジュールの融合段階では、歪んだ衣服と生成されたセグメンテーション マップおよびその他の情報を合成します。
私たちの主な貢献:
衣服を着ている体の部位を予測するためのセグメンテーション マップを生成する新しい方法を提供します。この段階はトレーニング可能であり、衣服の合成に重要な意味を持ちます。
私たちは、生成されたセグメンテーション マップやその他の情報とともに歪んだ衣服を合成する新しいネットワークを使用し、衣服や身体部分の詳細を保存します。私たちの方法は、定性的に量的に現状を上回ります
。アートメソッド。
ここに画像の説明を挿入

関連作業:

GANやその他の方法を導入し、人間による分析と理解、さまざまな仮想試着方法を導入しましたが、私たちの方法はVITON CP-VTONに最も似ています。

VTNFP

トレーニング データは三つ組である必要があります: 参照画像 I、衣服 c、^I しかし、そのようなデータを取得するのは難しいため、データは I, c になります。モデルをトレーニングするには、衣服に依存しない人々の表現 I を作成し、CA と c に基づいて合成画像 ^ I を生成するようにモデルをトレーニングします。
VTNFP は前述したように 3 つのモデルで構成されます。
最初のモデル: a: ^c = M1(p1, c)、P1 と衣服を介して、体の形状に適合する歪んだ衣服を生成します; b: M ^s = M2(p2, ^c)、P2 および ^c と c を介して生成します新しい身体部分セグメンテーション マップ。ターゲットの衣類で覆われています。c: 画像合成段階: ^I = M3(p3, ^c)、最終画像を生成します。重要な点は 3 人の人物表現であり、p1、p2 は I から取得され、p3 は I と �c から取得されます。p3 にはセグメンテーション マップの身体部分とターゲットの衣服が含まれており、これは衣服の詳細と身体部分を保存するために重要です。

人物の代表者

人体と衣服の詳細を保持するために、ハイブリッド衣服非依存人物表現 (HCPR) を使用して 3 段階の人体表現を取得します。
ここに画像の説明を挿入

p1 は、単一チャネルのボディ パーツ マップと 18 チャネルのポーズ ヒートマップの 2 つの部分で構成されます。身体部分図は I から取得され、人体の 6 つの部分が示されています。ポーズ ヒート マップのこの部分は、主に画像内の人体の姿勢情報 (ポーズ) を抽出することであり (オープンポーズを使用)、人体の姿勢情報は 18 個のキー ポイントで表されます。次に、各キーポイントがヒートマップ形式に変換されます。まず 18 個のキー ポイントを分離し、特徴マップの各キー ポイントについて、11 × 11 の範囲内の隣接ポイントを 1 で埋め、残りを 0 で埋めます。最後に、これらのキー ポイントのヒート マップ結果を組み合わせて、18 チャンネルの人体のポーズ ヒート マップ (ポーズ マップ) を取得します。それなら concat で済みます。
ここに画像の説明を挿入

p2 は 4 つの部分で構成されています: シングル チャネルのボディシェイプ マップ、シングル チャネルの腕のマップ、チャネルの顔と髪のマップ、そして 18 チャネルのポーズ マップです。姿勢グラフは p1 と同じで、他の 3 つの部分は p1 の身体部分グラフと 8 の方法で得られた他の意味部分ラベルを組み合わせて生成されます。
ここに画像の説明を挿入

p3 は、単一チャネルのボディ セグメンテーション マップ、単一チャネルの腕形状マップ、3 チャネルの顔と髪のマップ、18 チャネルのポーズ マップの 4 つの部分で構成されます。p2 と ^c から得られた身体セグメンテーション マップには 13 個のセマンティック セグメンテーション領域が含まれており、対象の衣服を着ている人物の、上下の衣服、眼鏡などの詳細を含むマップです。腕の形状マップは、衣服の外に露出した腕を表す身体セグメンテーション マップから取得されます (p2 の腕マップとは異なります)。顔と髪は RGB 画像で、ポーズ マップは以前と同じです。
p 1 2 3 は異なる情報を表し、p1 と p2 は I から得られた衣服に依存しない文字表現を表します。p1 は歪んだ衣服を生成するために使用され、p2 は身体セグメンテーション マップを予測するために使用されます。p3 は、p2 と ^c から取得されたターゲット イメージ ブループリントを提供します。

衣服変形モジュール M1 (衣服変形)

このモデルは、ターゲットの衣服を I の人物のポーズと体型 (p1) に一致させて変形させます。CP-VTON と同様に、エンドツーエンドの GMM を使用し、特徴の学習とマッチングを改善するために NL を使用します。
ここに画像の説明を挿入

畳み込みニューラル ネットワークを使用して p1 と c の特徴をそれぞれ抽出し、次に NL を使用して 2 つを相関させ、最後にこの相関マップを回帰ネットワークに送信してパラメーター theta を予測し、c を theta を通じて ^c に歪めます。 loss 関数は使用される L1 損失であり、グラウンド トゥルースは I から分離されます。ここで私が考えているのは、Iの衣服セグメンテーションマップを用いて損失評価を行い、衣服を人の姿勢に合わせるだけでなく、腕の遮蔽部分を除去することです。
注: 使用するデータセットは次のとおりです: I、c。元の画像で人が着ている服はターゲットの服と同じなので、最終的に歪んだ c は、人が着ている c とできるだけ一致するようになります。

セグメンテーションマップ生成モジュールM2(セグメンテーションマップ)

M2 は対象の衣服を着ている人物のセマンティック セグメンテーション マップを取得するもので、I からは元の衣服のセマンティック セグメンテーション マップのみが取得できます。この段階のセマンティック セグメンテーション マップは、p2 と ^c に基づいています。
以下の図はこのステージの構造を示しています
ここに画像の説明を挿入

p2 と ^c をエンコードし、デコーダを使用して M^s を生成します。エンコーダからデコーダへの横方向の情報フローをゲートするためのセルフアテンション メカニズムと、長期的な依存関係を捕捉するための NL 操作を採用しています。^c はエンコーダ/デコーダの入力ですが、ターゲットの衣服のテキストと埋め込みの詳細が失われる可能性があるため、衣服の特徴を抽出するためのブランチを追加し、最後にそれをエンコーダ層に接続します。
注: p2 に加えて、上位層ではラップされた衣服も追加されます。
このモデルは c, I を使用してトレーニングされます。まず I から p2 を取得し、次に I から直接取得されるグラウンド トゥルースと M^s を比較します。このモデルは CGAN モデルとしても見ることができます。最終的な損失関数は、ピクセル レベルの中心損失と、異なる重みを持つ CGAN 損失関数で構成されます。i と k は、それぞれピクセル インデックスとセマンティック本体部分を表します。
![ここに画像の説明を挿入](https://img-blog.csdnimg.cn/7737e41cbef848b1b7b10d27b97c3faf.pn

試着合成モジュールM3(画像生成)

最終的な目標は、最初の 2 つのモデルの出力に基づいて最終的なターゲット イメージを計算することです。全体として、^c、p3、I からの腕とパンツの情報の 3 つのソースを使用しました。
ここに画像の説明を挿入

上のブランチはゲート ネットワーク (U-NET タイプ) を使用して p3 と ^c の情報を抽出します。下のブランチは 7 つのエンコード層で構成され、Xception に基づいており、その後に 4 つのデコーダーが補助情報情報を抽出し、その後直接上部に接続 ブランチで得られる機能は十分です。下のブランチの主なタスクは、腕とパンツに関する情報を提供することです。
このモデルは、対象画像の衣服領域を決定するマスクを生成するとともに、予備合成画像sを生成する。最終的なイメージは、最初の 2 つの出力を混合したものです。 I^= m⊙ ^c+ (1 −m) ⊙ s 注: ⊙ は要素ごとの行列乗算を表します。
損失関数
M3 の損失関数は次で構成されます。
ここに画像の説明を挿入

式 6 は、使用される L1 損失です。歪んだ服の腕の部分を取り除くと、グラウンドトゥルースマスクが得られます^c。この損失により、ネットワークはターゲットの衣類の詳細をより多く保持できるようになります。(7) は合成画像と最終的な実際のターゲット画像の L1 損失であり、ピクセル強度ギャップの使用に加えて、VGG19 による知覚損失も使用して特徴を抽出します。S と I の間では知覚損失が使用されており、抽出された特徴の各層の重みも異なります。最終的な損失関数は、それらに 4 つの異なる重みを乗算することによって構成されます。知覚損失とは、生成された画像をより現実的にすることです。

実験と分析

データセット: VITON および CP-VTON と同じ、14006 トレーニング、2002 テスト。トレーニング中、ターゲットの衣服はモデルが着用している衣服と同じですが、テスト中は異なります。すべての評価と視覚化はテスト段階で行われます。

実装の詳細

すべての入力と出力は 256x192 です。

衣服変形モジュール:

200K エポック、バッチ サイズ = 4;
Adam オプティマイザー (β1 = 0.5、β2 = 0.999);
学習率 最初の 100K は 0.0001、最後の 100K は 0.0001 から 0 に低下します;
2 つの特徴抽出ネットワークの基本アーキテクチャは同じです、各ネットワーク 4 つの 2 ステップ層と 2 つの 1 ステップ層を含む 6 つの畳み込み層があり、その後に非ローカル層が続きます; フィルターの数は 64、128、256、512、512 です; 回帰畳み込みのパラメーター
推定ネットワークは 2 つの 2 ストライド畳み込み層、1 つのシングルストライド畳み込み層、および 1 つの全結合層で構成されます。フィルタの数はそれぞれ 512、256、128、64 ですが、コンボリューション カーネルのサイズについては論文では言及されていません。

セグメンテーションマップ生成モジュール

1. 式 4 の α = 0.5。
2. トレーニング 15 エポック バッチ サイズ = 5;
3. ジェネレーターには 4 つのエンコード層と 4 つのデコード層が含まれており、フィルター サイズは 4x4、ストライドは 2 です。
4. エンコーダフィルタの数はそれぞれ 64、128、256、512 です。デコーダのチャンネルはそれぞれ 512、256、128、1 です。NL 層は接続層の後に追加されます。,
5. 高次元の特徴を抽出する畳み込み層のフィルターは 3x3 で、Xception は 3 つあり、フィルター数は 32、64、128、256、512 です。識別器は参考文献 [12] と同じです。 ]。

試着合成モジュール(画像合成)

1. 式(10)のλは1、回数、オプティマイザ、学習率は衣服変形モジュールと同じです。
2. すべての上位ブランチ符号化層フィルターのサイズは 4x4、ステップ サイズは 2、数値は 64、128、256、512、512、および 512 です。 3. 参考文献 39 および 24 と同様に
、最近傍補間層と単一 A ストライド畳み込み層が 2 ストライド逆畳み込み層に置き換わります。
4. したがって、すべてのデコード層は、係数 2 のアップサンプリング層と、シングル ステップ フィルターの 3x3 畳み込み層で構成されます。番号はそれぞれ512、512、256、128、64、4です。
5. Leakrelu はエンコード層で使用され、relu はデコード層で使用され、各畳み込み層の後にインスタンス正規化層が続きます。
6. 下のブランチは上のブランチとは異なります。エンコード層のフィルターはそれぞれ 32、64、128、256、512、512、512 で、最初の 2 つの畳み込み層のフィルターは 3x3 で、ストライドはそれぞれ 2 と 1 です。最後の 5 つの畳み込み層は Xception ブロックです。
7. デコード層 上部ブランチの最初の 4 層と同じ構造を使用します。

定性的結果:
ここに画像の説明を挿入

高次元の特徴を抽出し、NL レイヤーを使用しない場合、結果として得られるセグメンテーション マップは適切に機能しません。
ここに画像の説明を挿入

アームパンツなどのディテールは下枝がないとダメです。
次に各モデルの比較です
ここに画像の説明を挿入

それぞれに長所と短所があります。ポーズと衣服の詳細を同時に適切に保存できるのは VTNFP だけです。VITONはエッジウェア、CP-VTONのディテールを無視して改良を行っていますが、ボディの面では低下しています。VTNFP は、ターゲットの衣服を着た人物のセグメンテーション マップを生成します。これに基づいて、ポーズ マップのみに依存するのではなく、歪んだ衣服のセグメンテーション マップから腕の部分を削除することでグランド トゥルースのマスクが取得されるため、ポーズ衣服の細部もよく保存されています。

定量的な結果:

私たちは何人かのボランティアを選び、お気に入りの生成画像を選択するよう依頼しましたが、そのほとんどは VTNFP である傾向がありました。

結論は:

私たちのモデルは 3 つのステップに分かれており、最初のステップでは歪んだ衣服を生成し、次にターゲットの衣服を着た身体セグメンテーション マップを生成し、最後に合成画像を生成します。私たちのモデルは現在、他の方法よりも優れたパフォーマンスを発揮します。

おすすめ

転載: blog.csdn.net/aaatomaaa/article/details/127675692