Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Learning to Transfer Texture from Clothing Images to 3D Humans #85

Open
Yagami360 opened this issue Aug 5, 2020 · 0 comments
Open

Learning to Transfer Texture from Clothing Images to 3D Humans #85

Yagami360 opened this issue Aug 5, 2020 · 0 comments

Comments

@Yagami360
Copy link
Owner

Yagami360 commented Aug 5, 2020

0. 論文情報・リンク

1. どんなもの?

  • 3Dベースの仮想試着タスクにおいて、服画像のシルエットとUV座標の対応関係を DNN で学習することで、事前に定義したテクスチャーマッピング用 UV 座標を用いることなく服画像のシルエットのみから、パラメーター制御可能な3D人体モデルである SMPL の3D服メッシュにテクスチャーマッピングすることを実現。

2. 先行研究と比べてどこがすごいの?

  • 服テクスチャーを3D衣装に(事前に定義したUV座標を用いることなく)自動でテクスチャーマッピングする手法は、学習のための様々な合成データの生成、バーチャル試着、アート、デザインなどの多くの応用分野が存在するものの、これまで殆ど着目させていなかった。
    本手法では、服画像のシルエットとUV座標の対応関係を DNN で学習することで、事前に定義したテクスチャーマッピング用 UV 座標を用いることなく服画像のシルエットのみから、パラメーター制御可能な3D人体モデルである SMPL の3D服メッシュにテクスチャーマッピングすることを実現している。

3. 技術や手法の"キモ"はどこにある?

  • アーキテクチャの全体像

    上図は、本手法でのアーキテクチャの全体像を示した図である。
    本手法での処理の流れは、以下のようになる。

    I. Data collection by non-rigid 3D mesh to image alignment
    2D服画像と3D服メッシュの対応関係を学習することで、両者を一致させるようなフィッテング処理を行い、フィッテングされた3D服メッシュを得る。

    II. Pix2Surf Network
    CNN ネットワークで、3D衣服表面のUVマップからピクセル位置への対応関係を推論し、最終的なテクスチャーマッピング画像を出力する?

  • パラメーター制御可能な3D衣装メッシュ
    本手法では、SMPL から拡張された、パラメーター制御可能な3D衣装テンプレートメッシュである「Multi-Garment Net: Learning to Dress 3D People from Images」を利用している。
    この3D衣装テンプレートメッシュは、SMPL と同様に、以下の式のように、制御パラメーターである服形状 β と服姿勢 θ を与えることでメッシュを変形させることができる

  • I. Data collection by non-rigid 3D mesh to image alignment / Non-Rigid Garment Fitting to Retail Images

    本手法では、上図のように2D服画像と3D服メッシュの対応関係を学習し、フィッテング処理を行う。
    これらの処理の流れは、以下のようになる。

    1. GrabCut を用いて、2D服画像と3D服メッシュのマスク画像を作成する。
      → 2D服画像の服マスク画像のみ?3D服メッシュのマスク画像も含む?

    2. 第1段階として、3D衣装メッシュの表面を2D服画像シルエット(服マスク画像)に荒くフィッテングする。
      具体的には、以下の式で定義された損失関数を最小化するように荒いフィッテングを行う。

      この損失関数 (3) を最小化するために、あるポーズに対応する制御パラメーター θ をポースAでの制御パラメーター θ_A で初期化するようにする。

      更に、スケジューリングを使用して最適化を行う?
      → 論文中の「Additionally, we use scheduling: for shirts we first optimize shape and translation holding pose fixed and optimize all variables jointly afterwards. For pants and shorts the scheduling order is reversed.」
      → この部分、何を言っているのか分からなかった。

    3. 第2段階として、第1段階での荒いフィッテングを洗練させる。
      第1段階でのフィッテング処理は、フィッテング処理がパラメーター制御可能なモデル G(θ,β) によって制限されているために、境界付近のシルエットを完全に一致させることが出来ない。
      そのため第2段階のフィッテング処理では、パラメーター制御可能な3Dモデル G(θ,β) ではなく、実際の頂点座標での3Dモデル G∈R(m×3) を直接変形させることで、シルエットを更に一致させるようにする。
      具体的には、以下の式で定義される損失関数を最小化するようにフィッテング処理を行う。

    4. これらフィッテング処理により、フィッテングされた3D服の頂点を出力される。
      これに面の構造を付与することで、フィッテングされた3D服メッシュの構造が得られる

  • II. Pix2Surf Network

    上位服画像と3D服メッシュのフィッテング処理では、画像ピクセルから3D服メッシュの表面への密な対応関係が得られているが、これらの対応関係からテクスチャーマッピングを直接学習するのは困難なタスクであり、単純な畳み込みネットワークでは実現できない。
    そのため本手法では、テクスチャーマッピングを直接学習するのではなくて、上図のように、3D服メッシュ表面の UV 座標マップ画像を学習&推論するようにする。

    Pix2Surf のネットワークは、以下の損失関数を最小化するように学習を行う。

    Pix2Surf のネットワークの出力であるUVマップ画像を推論した後、それと並列化可能なカーネル?を用いて、入力服画像からピクセル点をサンプリングして最終的なテクスチャーマッピング画像を生成する?
    → 論文中の「Once the network predicts a correspondence map for an input image, we use it and the parallelizable kernel to generate the final image by sampling points from the input image.」記載がよく分からなかった。

    【補足】射影テクスチャーマップ(射影テクスチャーリンク)

    UV 座標でのテクスチャーマッピングとは異なり、
    投影変換と同じ用にテクスチャー画像をスクリーン上に投影するテクスチャーマッピング手法

4. どうやって有効だと検証した?

  • 既存のテクスチャーマッピング自動化モデルとの定性比較検証

    既存のテクスチャーマッピング自動化可能モデルと比較して、本手法でのテクスチャーマッピングが最も品質が高くなっている。
    ※ pix2pix : 入力画像とテクスチャーマッピング画像を pix2pix で学習した設定

  • 仮想試着への応用

    2D画像ベースの仮想試着モデルよ比較して、オクリュージョンを含む様々な姿勢での品質が向上している。

5. 議論はあるか?

  • 全体的に Pix2Surf の説明が何を言っているのか分からなかった。

6. 次に読むべき論文はあるか?

  • SMPL: A skinned multi-person linear model
  • Multi-garment net: Learning to dress 3d people from images

7. 参考文献

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant