一方向から見た 2Dの画像を3Dにする論文を読む

ランニングできず 英語できず

(1)一方向から見た 2Dの画像を3Dにする論文を読む

「3D Object Reconstruction from a Single Depth View with Adversarial Learning」

https://arxiv.org/abs/1708.07969

 この論文は1方向から見た画像(2.5D画像)を3D画像にする論文ですが、一旦3D情報を獲得してから、入力画像に対応する2D画像を出力しています。

2.5D図から3D図を生成するために本物の3D図と比較してVAEで適切な3D特徴量を生成しています。しかし図を回転させて表示していないので、どれぐらい正確に3D認識しているか定かではありませんが、64^3規模の3D情報は保持できるとあります。本モデルを3D_RecGANと名付けています。

 

f:id:mabonki0725:20170908162853p:plain

 (1.1) 手法

 この手法は教師付き学習ですが、VAE+GANで3D図を学習しています。

 計算方法は概そ以下を繰返します。

  ・2.5D画像(1方向から見た画像)からVAEのencoderで隠れた3D特徴を抽出します。

  ・隠れた特徴からVAEのdecoderで画像を再生成します。

  ・VAEは偽画像の生成器(Generator)として識別器(Descriminator)に入れられます。

  ・識別器は本物の3D画像を読み込み真偽の確率を推定します。

  ・推定された真偽の確率によって

    ・偽の確率が高い→VAEのパラメータを再計算します

    ・真の確率が高い→VAEのパラメータの方向を増加させます

  ・真に近い指標になったら終了します。

f:id:mabonki0725:20170908182708p:plain

 ここで注意すべきは以下と考えます。

 ・一般にVAEの入力は乱数を使い、隠れ特徴量を多変量の正規分布としますが、

  ここでは2.5Dの画像を入力に使っています。

        そのため損失関数を2値の交差情報量を使っています。

  \mathcal{L}_{vae} = -\alpha \log(y') - (1 - \alpha)(1-y) \log(1-y')

  ここで

              yy'は目標とするpixel値と推定されたpixel値です

              \alphaは罰則強化値  y=1がミスの場合の罰則を多く見積もっています

  なお一般の交差情報量の定義は以下です。

             cross(p,q) =\int p(x) \log q(x) dx

    ・採用したGANは次式の条件付GANです。識別器の損失関数\mathcal{L}_{dis}は次式となります。         

       \mathcal{L}_{dis} = E \left( D(y' | x) \right) - E \left( D(y|x) \right) + condition(\lambda,\hat{y},x)

         condition(\lambda,\hat{y},x) = \lambda E \left((||\nabla_{\hat{y}} D(\hat{y}|x) ||_2 -1 ) ^2 )\right)

        ここで 

                 xは3Dの情報

              {\hat{y} = \epsilon x + (1- \epsilon) y'}      \epsilon \sim U(0,1)

    ・生成器(Generator)の損失関数\mathcal{L}_{gen}はVAEとGANの生成器の損失関数の合成としています。

            \mathcal{L}_gen = \beta \mathcal{L}_{vae} + (1-\beta) \mathcal{L}_{gan}^g

            \mathcal{L}_{gan}^g =  -E \left( D(y'|x) \right)

      ・GANのネットワークモデルはWGAN-GPを採用しています。

  (1.2)  結果

 訓練データはModeNet40を使っています。また画像の種類を学習させるため、CADで200種類のデータを生成して学習させています。

f:id:mabonki0725:20170908170711p:plain

   ここで重要なことは、このVAE+GANで学習すると未知の2.5Dの画像でも3D画像が生成できることです。

 以下は本モデル 3D-RecGANと既存のモデルVarley at al と Poisson と3D-RacAEとの比較です。

f:id:mabonki0725:20170908175105p:plain

(1.3) 感想

    ・繰返しになりますが、未知の2.5D画像で3D表現できるのは凄いことです。

  ここに公開ソースがあります。GitHub - Yang7879/3D-RecGAN: 3D-RecGAN in Tensorflow

 ・このモデルは3D図の状態を生成しているが表示は2D図に過ぎません。この提案の枠組みで回転させて3D図表示できるか不明ですが、GANで3D情報xを与えているので不可能ではないと思われます。

 ・VAEで生成された隠れ変数の情報が全く記述がありません。論文の文脈からは3D情報xを生成しているはですが、そうで無いならVAEではなく普通のCNNの逆のDeconvNetで十分と思われます。