9.1 GAN による 3D データ生成

ボクセル

規則的に区切られた3次元空間内のグリッドにおける1つのデータ点を表す。

3D-GAN は、ランダムサンプリングしたノイズを入力として、ボクセルデータを生成する GAN である。GANを用いたボクセルの生成について最初の論文は \cite{Wu2017Learning} である。

\cite{Shin2018Pixels} では、2次元画像から3次元データを再構成するタスクにおいて、ボクセルを生成するモデルとサーフィス(ポリゴンメッシュ)を生成するモデルの生成能力の差、および、学習に使用する物体データに物体中心(object-centered)座標系を使用した場合と、視点中心(view-centered)座標系を使用した場合での生成能力の差を比較した。物体中心座標系は学習済みの既知のクラスの物体生成に適し、視点中心座標系は学習していない未知のクラスの物体生成に適すると結論した。 これは、物体中心座標系で学習したモデルは2次元画像内の向きの情報が利用しづらいことを意味する。 また、ボクセルとサーフィスでは、サーフィスベースの手法が未知のクラスの物体に対して生成能力が高いとしている。

\cite{Vladimir2018Image} は、2次元のRGB画像からボクセルによる3次元形状を生成する Z-GAN を提案した。 viewing frustum のスライスと物体との重複を bool 演算で取得し、視点中心座標系で構成されたボクセルデータ fruxel を作成する。

\cite{Shin2018Pixels} では、2次元画像から3次元データを再構成するタスクにおいて、ボクセルを生成するモデルとサーフィス(ポリゴンメッシュ)を生成するモデルの生成能力の差、および、学習に使用する物体データに物体中心(object-centered)座標系を使用した場合と、視点中心(view-centered)座標系を使用した場合での生成能力の差を比較した。物体中心座標系は学習済みの既知のクラスの物体生成に適し、視点中心座標系は学習していない未知のクラスの物体生成に適すると結論した。 これは、物体中心座標系で学習したモデルは2次元画像内の向きの情報が利用しづらいことを意味する。 また、ボクセルとサーフィスでは、サーフィスベースの手法が未知のクラスの物体に対して生成能力が高いとしている。

Vladimir2018 は、2次元のRGB画像からボクセルによる3次元形状を生成する Z-GAN を提案した。

ポリゴンメッシュ

多数の3角形や4角形のポリゴンを使って形状を表現する。

\cite{Cheng2019MeshGAN} は、ポリゴンメッシュを扱った GAN の初期の研究である。 人間の顔を表現したテンプレートメッシュを使用し、形状と表情を分離して生成できるように学習する。 生成器、識別器はともに spectral mesh convolution を採用した Graph Convolutional Networks を利用し、識別器がオートエンコーダの構造を持つ。

\cite{Ma2020Learning} は \cite{Loper2015SMPL} で提案された人型テンプレートメッシュを変形して、服を着た人型メッシュを作成する VAE ベースの GAN 'CAPE' を提案した。 SMPLでは服がモデリングされていない人型モデルを利用すると、画像から3Dモデルを再構成するタスクでドメインギャップが発生する。 CAPEではそれを解決した。 生成器は Graph Convolution を利用した VAE-GAN、識別器はグラフ(メッシュ)の一部だけの真贋を判定するパッチ上のものを使い、メッシュ全体の構造は再構成誤差で制御する。服の形状、服の種類、人型メッシュのポーズの3変数で条件付けができる。

点群 Point Cloud

Point Cloud では、$x$, $y$, $z$ 座標に対する3つの値を持つ点の集合で形状を定義する。

\cite{Li2018Point} では、点群生成に特化した PC-GAN と Wasserstein 距離の泰斗な推定を可能にする損失関数 Sandwiching Objective を提案した。 ある物体 $\Theta$ を表現した点群 $X$ の分布 $p(X)$ に従う点 $x$ を、1度につき1個生成する手法を取っている。

\cite{Shu2019} では、点群をグラフとみなし、Graph Convolution を応用して点群を生成する tree-GAN を提案した。 点群を表すグラフに木構造を採用し、rootノードとなる1個の点から開始して、生成器内の各レイヤーでBranching (点の追加)およびGraph Convolution を繰り返して、点群を生成する。 従来のGraph Convolutionとは異なり、対象ノードの隣接ノードではなく祖先ノードを使用して計算を行う。

@misc{Wu2017Learning,
      title={Learning a Probabilistic Latent Space of Object Shapes via 3D Generative-Adversarial Modeling}, 
      author={Jiajun Wu and Chengkai Zhang and Tianfan Xue and William T. Freeman and Joshua B. Tenenbaum},
      year={2017},
      eprint={1610.07584},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      howpublished="\url{https://arxiv.org/abs/1610.07584}"
}

@misc{Shin2018Pixels,
      title={Pixels, voxels, and views: A study of shape representations for single view 3D object shape prediction}, 
      author={Daeyun Shin and Charless C. Fowlkes and Derek Hoiem},
      year={2018},
      eprint={1804.06032},
      archivePrefix={arXiv},
      primaryClass={cs.CV},
      howpublished="\url{https://arxiv.org/abs/1804.06032}"
}

@misc{Vladimir2018Image,
      title={Image-to-Voxel Model Translation with Conditional Adversarial Networks}, 
      author={Vladimir A. Knyaz and Vladimir V. Kniaz and Fabio Remondino},
      year={2018},
      howpublished="\url{https://openaccess.thecvf.com/content_ECCVW_2018/papers/11129/Knyaz_Image-to-Voxel_Model_Translation_with_Conditional_Adversarial_Networks_ECCVW_2018_paper.pdf}"
}

% https://github.com/vlkniaz/Z_GAN

9.2 三次元畳み込み

3D Convolution (3次元畳み込み)

カーネルサイズ $k_1 \times k_2 \times k_3$ の畳み込みカーネルを使って5元次 Tensor ($\mbox{batch_size} \times $\mbox{_channel} \times $\mbox{depth} \times $\mbox{height} \times $\mbox{width} $) に対してConvolution 演算を行う。 3D Convolution は3次元空間における物体の空間的関係を特徴として抽出する。

例として入力と出力のチャネル数をともに1とする。 $1 \times 1 \times 3 \times 3 \times 3$ の5次元テンソルに $2 \times 2 \times 2$ のカーネルを stride=1, padding=0 で適用すると$1 \times 1 \times 2 \times 2 \times 2$ の5次元テンソルになる。

3次元転置畳み込み

入力と出力のチャネル数をともに1とする。 $1\times 1 \times 2 \times 2 \times 2$ の5次元テンソルを0 padding で $1\times 1 \times 4 \times 4 \times 4$ に拡大した後、 $2 \times 2 \times 2$ のカーネルで転置畳み込み演算を行うと $1\times 1 \times 3 \times 3 \times 3$ に拡大した後、 の5次元テンソルとなる。

9.3 3D-$\alpha$-WGAN-GP

MRI の3次元頭部画像の生成を試す。

3D-$\alpha$-WGAN-GP は Generator, ENcoder, Discriminator, Code Discriminator の4つのモデルからなる。 通常のGAN (Generator + Discriminator )の枠組みに対して、 Encoder(訓練データをエンコードして入力ノイズを生成する)と Code Discriminator (ノイズが本物かエンコードされたものかを識別する)が追加されている。

医用画像分野における GAN の活用

VAE と GAN の融合

VAE は通常の auto encoder に比べて、未知の入力に対してロバストな推定ができるという利点がある。 VAEは通常の Auto Encoder と同様にぼやけた画像が生成されやすいという欠点を持つ。

GAN は VAE よりもはっきりとした画像を生成できるが、学習が不安定になったり、同じような画像しか生成できなくなるという欠点もある。

$\alpha$-GAN \cite{Rosca2017Variationl} は VAE と GAN を融合して両者の利点を併せ持った GAN である。モード崩壊を回避するために、訓練データと生成データの再構成誤差を利用する(VAEの手法)。 訓練データ $x_{real}$ をノイズ $\hat{z}$ に変換して生成器に入力して $x_{rec}$ を生成する。 $x_{real}$ と $x_{rec}$ のL1損失を計算する。

ノイズ $z$ と$\hat{z}$ を識別するコード識別器 $C_w$ が追加されている。 ノイズ $z$ は標準正規分布などからサンプルするが、コード識別器により ノイズ$\hat{z}$ (訓練データからエンコードされる) がノイズ$z$と同じ確率分布に従うように変換器を学習することができる。

生成器の生成データ $x_{gen}$ ($z$から生成される)と $x_{rec}$ ($\hat{z}$ から復元される)に対し、 どちらも偽物として識別器を学習させる。識別器は $x_{real}$のみを本物として扱う。

データセット

IXI (Information eXtraction from Images) データセットを使用する。 600人の健康な被験者から集めた頭部3次元MRI画像のデータセットである。

モデルの定義

[自分へのメモ] 公式のコードではCodeDiscriminatorクラスの中で latent_dim という大域変数を使っているが、やめたほうがいい。 コンストラクタで与える latent 変数を使うように変更した。

損失関数・オプティマイザ

学習ループ

データ生成