これは、Mask R-CNN のマスク推定 branch の3D版のようなもので、マスク推定 branch のように検出された物体の M x M の2Dグリッド画像を出力するのではなくて、G x G x G の3Dグリッド情報を出力する。
具体的には、Mask R-CNN で RoIAlign からの2D特徴マップに対して、全畳み込み層を適用し、G x G x G の3Dグリッド情報を出力する。
3D空間では、カメラの位置や視点によって、ボクセルの大きさが変化する。
そのため、本手法では上図のように、3D空間→ 2D空間への変換を行うカメラの変換行列 K を使用して、ボクセルと2D特徴マップの対応関係を維持する。
※ このカメラの変換行列とは、具体的には、ビューポート変換行列・投影変換のこと?
Cubify を使用したボクセルからメッシュへの変換
voxel branch では、Cubify と呼ばれる手法を用いて、ボクセルからメッシュへの変換を行う。
この Cubify では、以下のような手順でボクセルからメッシュへの変換を行う。
i. 上記のボクセルの占有確率と、ボクセルの占有確率を二値化するための閾値を入力する。
ii. 各占有確率ボクセルは、8つの頂点、18の辺、12の面を持つ立方体の三角形メッシュに置き換えらる。
iii. 隣接するボクセル間で共有されている頂点と辺をマージし、共有されている内部面を除去。
※ Cubify は、pytorch3d では `pytorch3d.ops.cubify()` で実行可能?
この Cubify で効率的なバッチ処理を行うには工夫が必要であるが、本手法では以下の図のようなアルゴリズムで効率的なバッチ処理を行っている。
損失関数 : Voxel Loss
voxel branch のネットワークは、推定したボクセル占有確率と正解ボクセル占有確率の間の BCE loss で定義される。
※ 正解ボクセル占有確率は、どうやって取得する?(正解メッシュから取得可能?)
0. 論文情報・リンク
1. どんなもの?
2. 先行研究と比べてどこがすごいの?
3. 技術や手法の"キモ"はどこにある?
アーキテクチャの全体像
voxel branch
ボクセル推定 voxel branch では、Mask R-CNN で RoIAlign で検出された入力画像中の物体に対して、ボクセルの占有確率のグリッド情報を学習&推論する。
これは、Mask R-CNN のマスク推定 branch の3D版のようなもので、マスク推定 branch のように検出された物体の M x M の2Dグリッド画像を出力するのではなくて、G x G x G の3Dグリッド情報を出力する。 具体的には、Mask R-CNN で RoIAlign からの2D特徴マップに対して、全畳み込み層を適用し、G x G x G の3Dグリッド情報を出力する。
Cubify を使用したボクセルからメッシュへの変換
損失関数 : Voxel Loss voxel branch のネットワークは、推定したボクセル占有確率と正解ボクセル占有確率の間の BCE loss で定義される。 ※ 正解ボクセル占有確率は、どうやって取得する?(正解メッシュから取得可能?)
mesh refinement branch voxel branch で推定した荒いメッシュは、椅子の脚のような細かい構造物を正確に3D化出来ているわけではない。 そのため、mesh refinement branch でこのメッシュの頂点位置を調整し、メッシュを緻密化する。 具体的には、以下の Vertex Alignment + Graph Convolution + Vertex Refinement の3つの処理で頂点位置を調整する。
Vertex Align
Graph Convolution メッシュのエッジで表わさえる頂点連結関係性をもとに、以下の式で表現されるグラフ畳み込み(GCN)を用いて、メッシュの頂点連結関係性を集約しながら学習を行う。
Vertex Refinement Graph Convolution で畳み込みされた頂点特徴ベクトルに対して、以下の式に従って、voxel branch で生成した荒いメッシュの頂点位置を refinement する。 ※ この式により、メッシュのトポロジーを固定したままメッシュ形状が更新される。
損失関数 : Mesh Losses メッシュ上の全ての頂点で動作する損失関数を計算コストが大きいので、メッシュからサンプリングした有限個の点群 [pointcloud] P に関する損失関数 pointcloud loss を導入する。 具体的には、正解メッシュと推論メッシュから一様サンプリングした頂点と法線ベクトルをもとに、以下の式で定義された損失関数を導入し、i 番目のステージ(段)の mesh refinement branch の学習を行う
4. どうやって有効だと検証した?
学習用データセット
3D再構成メッシュの定性検証
既存の3D再構成モデルとの定性比較検証
既存の3D再構成モデルとの定量比較検証
5. 議論はあるか?
6. 次に読むべき論文はあるか?
7. 参考文献