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

BCNet: Learning Body and Cloth Shape from A Single Image #92

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

BCNet: Learning Body and Cloth Shape from A Single Image #92

Yagami360 opened this issue Aug 22, 2020 · 0 comments

Comments

@Yagami360
Copy link
Owner

Yagami360 commented Aug 22, 2020

0. 論文情報・リンク

1. どんなもの?

  • 1枚の人物画像のみから SMPL を用いた服と人物メッシュの3D再構築を実現。更に、全ての衣装に対して汎用性な頂点ブレンディング重みを生成するネットワークを導入することで、スカートのような緩んだ衣装に対しての服メッシュと人物メッシュの3D再構成を実現

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

  • 既存の image-to-3D 手法である Multi-Garment Net では、人物画像から衣装を着た人物メッシュと衣装メッシュとを3D再構築することを実現している。
    しかしながらこの Multi-Garment Net では、生成した衣装メッシュとSMPLでの人物メッシュの頂点が共有されているので、これらメッシュ間でスキンメッシュアニメーション用の頂点ブレンディング重みの値も共有されてしまい、それ故に緩んだ衣装(スカートなど)での頂点変位を計算すると、不適切な頂点ブレンディング重みにより不自然なアーティファクトが発生してしまうという問題が存在する。
    また、入力する人物画像として通常8枚の人物画像が必要であるという問題も存在する。
    本手法では、1枚の正面人物画像のみから SMPL を利用して、服と人物メッシュの3D再構築を実現し、
    更に、全ての衣装に対しての汎用性な頂点ブレンディング重みを生成するネットワークを導入することで、スカートのような緩んだ衣装に対しても服と人物メッシュの3D再構築することも実現している。
  • また、SMPL とは独立した衣装メッシュを生成出来るので、従来の SMPL+D よりも多くの衣装カテゴリの衣装メッシュ生成を実現出来る
  • また、本手法での学習用データセットを公開している。

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

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

    上図は、本手法でのアーキテクチャの全体像を示した図である。
    本手法は、以下の4つの主要コンポーネントで構成されている。

    1. Image Encoder
    2. SMPL でのメッシュ生成
    3. Skinning Weight Network
    4. Displacement Network
  • SMPL の利用と衣装メッシュ生成
    本手法では、Multi-Garment Net などの既存の image-to-3D モデルと同じく、統計的手法に基づくパラメディック制御可能な人体メッシュ生成モデルである SMPL を利用している。
    SMPL でのメッシュ生成処理は、以下の式のように定式化される。

    Multi-Garment Net では、上記 SMPL で生成した裸体人体メッシュから衣装部分の頂点変位を計算することで、衣装メッシュを生成している。

    Multi-Garment Net などの既存のモデルでは、この式における頂点ブレンディング重み W_g は SMPL での頂点ブレンディング重みの値と同じ値に設定している。
    しかしながら、このような設定で緩んだ衣装(スカートなど)での頂点変位を計算すると、不適切な頂点ブレンディング重みにより不自然なアーティファクトが発生してしまうという問題が存在する。
    そのため本手法では、全ての衣装に対しての汎用性な頂点ブレンディング重みを生成するネットワークを導入してこの頂点ブレンディング重み W_g を推定することで、スカートのような緩んだ衣装に対しても服と人物メッシュの3D再構築することも実現している。
    また、これにより SMPL とは独立した衣装メッシュになるので、SMPL+D よりも多くの衣装カテゴリの衣装メッシュ生成を実現出来るようになる

  • Image Encoder

    本手法では、まず入力された1枚の人物画像に対して CNN ベースの encoder で特徴抽出を行う。
    encoder としては、ResNet18 が採用されおり、最終的な特徴マップは 8x8 のサイズにしている。
    それら特徴マップを Flatten し(特徴マップ数 x 8 x 8 のベクトル化)、全結合層で潜在変数にしている。
    その全結合層は4つ存在し、それぞれ{SMPL 人物姿勢パラメータβ・SMPL 人物姿勢パラメータθ・ワールド変換パラメータ t・衣装特徴量の潜在変数 l}を出力する。

    ここで、SMPL 人物姿勢パラメータθを直接出力すると、SMPLで人体メッシュを生成するとメッシュが破綻しやすいという問題がある。
    そのため人物姿勢パラメータθを直接出力するのではなく、以下の式のように、全関節のベクトル化された回転行列を出力するようにする。これにより(メッシュが破綻しにくくなるので)学習が安定化する効果がある。

    ※ SMPL 人物姿勢パラメータθは軸角表現での72次元のベクトルであるので、image-encoder で encoder したθを直接使用してSMPLで人体メッシュを生成するとメッシュが破綻しやすい。

    また、衣装特徴量の潜在変数 l を MLP に入力して、衣装のトップス or ボトムズ分類スコア u, d を出力する
    更に、{衣装特徴量の潜在変数 l・SMPL 人物姿勢パラメータβ}のペアを MLP に入力して、衣装形状パラメータαを出力する。

  • Skinning Weight Network

    本手法では、既存の頂点ブレンディング重みを推定するネットワークに着想を得て、衣装メッシュの頂点ブレンディング重みを推定するネットワークを設計している。
    ※ 既存の頂点ブレンディング重みを推定するネットワーク:論文「Neuroskinning: automatic skin binding for production characters with deep graph networks」

    Skinning Weight Network での処理の流れは、以下のようになる。

    1. ニュートラル性別での衣装メッシュ T_g (α ̂,0) の各頂点から、ニュートラル性別での SMPL 人体メッシュ T_b (β ̂,0) のジョイント点 J までの距離を計算する。
    2. 衣装メッシュ T_g (α ̂,0) の各頂点の{x,y,z 座標・法線ベクトル・ジョイント点までの距離}を concat して、Skinning Weight Network に入力し、ニュートラル性別での SMPL 人体メッシュ T_b (β ̂,0) のジョイント点 J に対応する頂点ブレンディング重みを出力するようにする
      i. ここで、頂点の特徴量の次元を変えるために MLP を用い、頂点特徴量を抽出するために一般的な ResBlock を利用している。
      ii. また、頂点連結関係性を集約するためにグラフ畳み込みを利用している。
      特に、Skinning Weight Network が様々な衣装カテゴリに対応出来るようにするために、attention 付きのグラフ畳み込みである GAT を使用している。
      この GAT では、フィルタの重み学習がメッシュの頂点接続性に依存せず頂点の入力特徴量のみで重みを決定することが出来る。これにより、様々な衣装カテゴリに対応出来るようになる。
      ※ GAT :論文「Graph attention networks」
  • Displacement Network

    先の (2) 式モデル化される衣装生成モデルでは、PCA 係数αを用いて衣装メッシュの形状を捉えているが、姿勢の違いにより折り目のようなメッシュの細かい詳細形状は、PCA のような線形モデルでは対応できない。
    そのため本手法では、頂点変位ネットワーク [displacement network] という、衣装メッシュの各頂点の頂点変位を元の人体メッシュに回帰するためのネットワークを導入している。

    ネットワーク構造としては、上図のように、Skinning Weight Network と同じような構造が採用されている。
    但しこの頂点変位ネットワークは、回帰性能を向上されるために、全衣装カテゴリに対してのネットワークではなく、衣装カテゴリ別のネットワークになっている。

    また、同じ接続性を持つメッシュに対して最先端の回帰能力を持つ spiral graph convolution を各衣装カテゴリに採用している?
    ※ spiral graph convolution : 論文「Neural 3d morphable models: Spiral convolutional networks for 3d shape representation learning and generation」

    服メッシュの細かい変形情報を捉えるために、以下のような処理も行っている。

    1. 衣装メッシュの各頂点を2D画像上に投影し、投影された頂点を中心とした 32×32 のパッチ画像を取得する
    2. MLPを用いて、その32×32のパッチ画像を潜在変数に enocde する
    3. その潜在変数を、{SMPL形状パラメータβ・衣装パラメータα}に加算する。
    4. 潜在変数を加算した{SMPL形状パラメータβ・衣装パラメータα}に対して、{座標変換(ワールド変換?)・法線変換?・スキニング変換(スキンメッシュアニメーション)}を行ったものを concat し、displacement network に入力する。
  • 損失関数
    本手法では Skinning Weight Network を、以下の損失関数で学習する。

    その後、その他のネットワークを以下に定義した損失関数の線形結合で学習する。

    • Losses on shape parameters

      {SMPL 制御パラメータβ,θ・ワールド変換パラメータ t ・衣装形状パラメータα}に関しての、生成値と正解データの間の L2 loss。
      人物姿勢パラメータθに関しては、θで直接 loss をとるのではなく、ロドリゲスの回転公式の表現行列 R で loss をとる。
      SMPL 人体メッシュに対してのパラメータ{β,θ,t}と衣装メッシュに対してのパラメータ{α}は、それぞれ別の損失関数で学習される。

    • Losses on geometry

      服装メッシュ M とメッシュのジョイント点 J に関しての損失関数。

      服メッシュの頂点変位 D に関しての損失関数。
      詳細な reconstruction を実現するために、生成した頂点変位と正解頂点変位間での L1 loss と、ラプラシアン座標上での生成した頂点変位と正解頂点変位間の L2 loss を採用している

    • Losses of projection

      生成3Dメッシュと正解3Dメッシュをそれぞれ2D画像に射影レンダリングした画像間での損失関数。
      人体メッシュと服メッシュは、別の損失関数で定義される

    • Losses of classification
      推定した衣装トップス or ボトムズ分類スコア {u,d} とその正解データとの間の分類エラーにペナルティーを課すための softmax loss

    • Losses of interpenetration

      論文「Garnet: A two-stream network for fast and accurate 3d cloth draping」にインスパイアされた損失関数
      生成した人体メッシュと衣装メッシュとの間に相互貫通 [interpenetration] が発生することを防止する効果がある。

  • データセットの作成

    • Skinning Weight Dataset
      Skinning Weight Network を学習するためには、正解データとしての頂点ブレンディング重みが必要である。
      そのため本手法では、全ての衣装カテゴリに対して、頂点ブレンディング重みのデータセットを作成している。

    • Synthetic Dataset Construction
      本手法では、学習用データセットとして{入力人物画像・人体メッシュ・服メッシュ}のペアデータが必要になるが、このようなデータセットが公開されていないために、NVIDIA の物理シミュレーションソフトウェアである FleX とレンダリングソフトウェアである Blender を用いて、下図のような物理シミュレーションに基づき、学習用データ作成を行っている。

      最終的な合成画像(※入力画像として使用)は、以下のようになる

    • HD Texture Dataset

      上記 Synthetic Dataset Construction で作成した合成画像は、実際のリアル画像とドメインの違い?が謙虚であるので、上図のように、HD [high-definition] テクスチャーのものと差し替える?処理を行って、データセットを作成している。

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

  • 本手法での生成メッシュの品質検証&既存のモデルとの品質比較検証

    左上図は、本手法での生成メッシュの示した図である。
    右上図は、既存のモデルである Multi-Garment Net(後処理なし)と本手法での生成メッシュを比較した図である
    本手法では、スカートやサイズの大きい服ような緩んだ衣装でも、うまく服メッシュを生成出来ていることがわかる

  • Garment Transfer への応用

    オクリュージョンがある場合でも品質の高い Garment Transfer が実現出来ている。

  • 本手法での限界点

    (A) サポートしていない衣装での品質
    (B) 複数の層からなる衣装を1つの層の衣装として扱ってしまう
    (C) 複数のシワなどを滑らかにし過ぎてしまう

5. 議論はあるか?

  • Image-Enocder でSMPL人物姿勢パラメータθを直接出力するのではなく、全関節のベクトル化された回転行列(ロドリゲスの回転公式の表現行列 [Rodrigues rotation transformation])を出力する方法は、他のSMPL人物姿勢パラメータθをencoderする方法でも使えそう。
  • Skinning Weight Network が様々な衣装カテゴリに対応出来るようにするために、attention 付きのグラフ畳み込みである GAT を使用している点に注目。
  • Skinning Weight Network と Displacement Network のアーキテクチャの詳細が理解できていない。詳細を知るには、論文「Neuroskinning: automatic skin binding for production characters with deep graph networks」を読み必要がありそう
  • コードを公開とあるが、未だ公開されていない。データセットは公開されている。
  • Garment Transfer(仮想試着のようなもの)への応用で、オクリュージョンありの場合も品質の高い仮想試着が実現出来ていることに注目

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

  • SMPL 人物形状パラメータθにおけるロドリゲスの回転公式の表現行列 [Rodrigues rotation transformation] の利用
    • Unite the people: Closing the loop between 3d and 2d human representations
    • Expressive body capture: 3d hands, face, and body from a single image
    • Learning to estimate 3d human pose and shape from a single color image
  • Skinning Weight Network のアーキテクチャ
    • Neuroskinning: automatic skin binding for production characters with deep graph networks

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