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

[CAPE] Learning to Dress 3D People in Generative Clothing #93

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

[CAPE] Learning to Dress 3D People in Generative Clothing #93

Yagami360 opened this issue Aug 23, 2020 · 0 comments

Comments

@Yagami360
Copy link
Owner

Yagami360 commented Aug 23, 2020

0. 論文情報・リンク

1. どんなもの?

  • SMPL で生成した裸体人体メッシュから衣装の頂点変位を学習するための Mesh-GAN-VAE のアーキテクチャを採用することで、衣装を着た人物メッシュをパラメトリックに生成出来るようにした CAPE を呼ばれる3D人体メッシュ再構成モデル。

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

  • SMPL ではパラメトリックに人体メッシュを生成出来るものの、生成される人体メッシュは裸体メッシュであり、服を着た人物メッシュを生成することが出来ない。このことは、多くのアプリケーション(人物画像から3D人物モデルを再構築するアプリケーションや仮想試着など)で問題となる。
    SMPL ベースの後発モデル(Multi-Garment Net など)では、SMPL で生成した裸体人物メッシュの "固定された" 頂点変位として衣装メッシュを生成し、服を着た人物メッシュの生成を実現している。しかしながらこの方法で得られた衣装メッシュは、衣装形状やシワが人物姿勢によって変化せず決定論的な衣装メッシュになっているという問題がある。
    本手法では、この衣装メッシュへの頂点変位を "衣装形状や人物姿勢の関数" と見なし、 これを Mesh-GAN-VAE というネットワークで学習することで、衣装の形状が人物姿勢によって動的に変化するような服を着た人物メッシュの生成を実現している。
    本手法のアーキテクチャ全体は、CAPE [Clothed Auto Person Encoding] と呼ばれる。
  • また、これらネットワークを学習するための CAPE Dataset を提供している。

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

  • SMPL の拡張
    本手法では、既存の人物メッシュ3D再構成モデルと同じく、統計的手法に基づくパラメディック制御可能な人体メッシュ生成モデルである SMPL を利用している。

    SMPL でのメッシュ生成処理は、以下の式のように定式化される。

    本手法では、上図の (d) のように、人体メッシュからのオフセット層(後述の VAE-GAN フレームワークでの GCN層)として衣装を定義し、人体メッシュ上に服メッシュを追加している。
    これらの処理は、以下の式のように定式化され、{人物形状パラメータβ・人物姿勢パラメータθ・衣装の種類 c・衣装の形状パラメータ z}でパラメトリックに衣装を着た人物メッシュを生成出来るようになっている。

    ここで、Multi-Garment Network では衣装メッシュの頂点変位がパラメータに依存せず固定であったのに対して、本手法では、衣装メッシュの頂点変位 S_clo がパラメータ依存になっている点に注意。
    パラメータに依存するので人物ポーズ変換などのパラメータ変化に応じてよりダイナミックに衣装メッシュを生成出来るようになっている。

  • 衣装の頂点変位層 / VAE-GAN フレームワークでの GCN層

    先に述べたように本手法では、SMPL で生成した裸体人物メッシュからのオフセット層(頂点変位層)として衣装メッシュを定義し、人体メッシュ上に服メッシュを追加する。
    このオフセット層(頂点変位層)は、具体的には、上図のような VAE-GAN の構造をしたネットワークとなる。
    但し、入力される頂点変位はグラフ構造なので、各種畳み込みはグラフ畳み込みによって行われる。
    このネットワークは、以下のサブネットワークから構成される。

    • VAE / Graph generator

      • encoder
        SMPL から生成した 6890 個の頂点に対しての頂点変形グラフの各頂点 x を通常のグラフ畳み込みで enocode し、衣装形状の潜在変数 z を生成する。
        この encoder 部分の詳細ネットワーク構造は、以下のようになる

      • decoder
        encoder した衣装形状潜在変数 z を decode し、再構成した頂点変位グラフの各頂点 x ̂ を生成する。
        この decoder 部分の詳細ネットワーク構造は、以下のようになる

      ※ ここで、これら encoder-decoder においてグラフ畳み込みを繰り返すとグラフの局所的な情報が欠落するので、encoder-decoder の上位層からの局所的な情報を residual connections する改善を行っている。

      推論時には、encoder を使用せず、正規分布からサンプリングされた衣装形状潜在変数 z を decoder して頂点変位 x ̂ を生成することに注意(※ 通常の VAE と同じ挙動)

    • 識別器 / Patchwise discriminator



      GAN のアーキテクチャを適用可能にするために、PatchGAN をグラフ構造に対して適用可能した Patchwise discriminator を採用する。
      これにより、上図の赤枠にように、頂点変位グラフの各頂点に隣接する頂点(=面)に対して、Real or Fake を識別出来るようになる。
      この Patchwise discriminator のネットワークの詳細構造は、以下のようになる。

    • 入力データ{θ,c}の変換 / Conditional model



      SMPL の人物姿勢パラメータθは、72 次元の軸各表現 [axis-angle representation] であり、ニューラルネットワークが直接学習するのは困難である。
      そのため、ロドリゲスの回転公式の表現行列 [Rodrigues rotation transformation] を用いて、パラメータθを回転行列に変換する。
      また、衣装カテゴリ c は one-hot encode される。

      encoder-decoder のグラフ畳み込みで学習されたグラフ特徴量と、これら条件入力{θ,c}の次元数のバランスをとるために(=concat 出来るように)、条件入力{θ,c}はまず小さな FC 層でそれぞれ C_1 (θ),C_2 (c) に変換される。

      これら条件入力{θ,c}は、上図赤枠のように、VAE 内の bottleneck 部分と decoder 部分全ての箇所で concat して入力される。

  • 損失関数
    本手法でのネットワークは、以下に定義された損失関数の線形結合で学習される。

  • CAPE Dataset


    本手法では、上図のような様々なポーズでの衣装を着た人物メッシュからなる学習用データセットを提供している。
    データセットに含まれる衣装の種類は{short T-shirts, long T-shirts, long jerseys, long-sleeve shirts, blazers, shorts, long pants, jeans }の8種類になっている。

  • 【補足】既存のモデルとの比較

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

  • メッシュ Encoder の定性的品質比較検証

    既存のモデルでの Encoder(PCAベース、COMA [convolutional mesh autoencoder] )と比較して、本手法での VAE ベースの encoder が最も3D再構築した人物メッシュの品質が高くなっている

  • 未知の人物姿ポーズに対する生成メッシュの定性的品質検証

    本手法では、学習用データに含まれていない未知のポーズの人物メッシュに対しても、人物ポーズに衣装が追従した人物メッシュをうまく生成出来ている。
    ※ 上図は、ポーズθと服カテゴリ c を固定した状態で、サンプリングした z で生成した結果となっている

  • 画像から人物メッシュを3D再構築するアプリケーションでの定性的品質評価

    上図は、本手法を SMPLify のアーキテクチャに適用して、画像から人物メッシュを3D再構築した場合の結果を示している。SMPLify より品質のか高い人物メッシュを生成出来ている。

5. 議論はあるか?

  • PatchGAN をグラフ構造に対して適用可能した Patchwise discriminator は、グラフ構造に GAN を適用するときに汎用的に使えそう。
  • 画像 encode 部分さえ追加すれば、image-to-3D のタスクにも簡単に応用出来そうなアーキテクチャになっている。(実際に論文中でも、本手法を SMPLify のアーキテクチャに適用して image-to-3D に応用した実験結果がある)

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

  • VAE-GAN のアーキテクチャ
    • CVAE-GAN: fine-grained image generation through asymmetric training
    • Autoencoding beyond pixels using a learned similarity metric
  • SMPL
    • SMPLify : Keep it SMPL: Automatic Estimation of 3D Human Pose and Shape from a Single Image
  • 残差構造付きグラフ畳み込み
    • Convolutional mesh regression for single- image human shape reconstruction
  • グラフ構造に対しての識別器
    • Generating 3D faces using convolutional mesh autoencoders

7. 参考文献

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

No branches or pull requests

1 participant