一方向から見た 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認識しているか定かではありませんが、規模の3D情報は保持できるとあります。本モデルを3D_RecGANと名付けています。
(1.1) 手法
この手法は教師付き学習ですが、VAE+GANで3D図を学習しています。
計算方法は概そ以下を繰返します。
・2.5D画像(1方向から見た画像)からVAEのencoderで隠れた3D特徴を抽出します。
・隠れた特徴からVAEのdecoderで画像を再生成します。
・VAEは偽画像の生成器(Generator)として識別器(Descriminator)に入れられます。
・識別器は本物の3D画像を読み込み真偽の確率を推定します。
・推定された真偽の確率によって
・偽の確率が高い→VAEのパラメータを再計算します
・真の確率が高い→VAEのパラメータの方向を増加させます
・真に近い指標になったら終了します。
ここで注意すべきは以下と考えます。
・一般にVAEの入力は乱数を使い、隠れ特徴量を多変量の正規分布としますが、
ここでは2.5Dの画像を入力に使っています。
そのため損失関数を2値の交差情報量を使っています。
ここで
とは目標とするpixel値と推定されたpixel値です
は罰則強化値 y=1がミスの場合の罰則を多く見積もっています
なお一般の交差情報量の定義は以下です。
・採用したGANは次式の条件付GANです。識別器の損失関数は次式となります。
ここで
は3Dの情報
・生成器(Generator)の損失関数はVAEとGANの生成器の損失関数の合成としています。
・GANのネットワークモデルはWGAN-GPを採用しています。
(1.2) 結果
訓練データはModeNet40を使っています。また画像の種類を学習させるため、CADで200種類のデータを生成して学習させています。
ここで重要なことは、このVAE+GANで学習すると未知の2.5Dの画像でも3D画像が生成できることです。
以下は本モデル 3D-RecGANと既存のモデルVarley at al と Poisson と3D-RacAEとの比較です。
(1.3) 感想
・繰返しになりますが、未知の2.5D画像で3D表現できるのは凄いことです。
ここに公開ソースがあります。GitHub - Yang7879/3D-RecGAN: 3D-RecGAN in Tensorflow
・このモデルは3D図の状態を生成しているが表示は2D図に過ぎません。この提案の枠組みで回転させて3D図表示できるか不明ですが、GANで3D情報を与えているので不可能ではないと思われます。
・VAEで生成された隠れ変数の情報が全く記述がありません。論文の文脈からは3D情報を生成しているはですが、そうで無いならVAEではなく普通のCNNの逆のDeconvNetで十分と思われます。