ニューラル3D表現の最新動向
2022.06.09
加藤 大晴 (Preferred Networks)
SSII 2022 技術動向解説セッション
ニューラル3D表現の最新動向
2022-06-09
加藤 大晴 (Preferred Networks)
2
Figure: [Mescheder+ 2019]
ボクセル
点群
メッシュ
ニューラル場
自己紹介
加藤大晴(かとうひろはる)
#3
発展的なトピック
#4
3D形状表現はメッシュ,ボクセル,点群などが使われてきた
形状もニューラルネットワークで表現する手法が登場し始めている
✔ 複雑なシーンを柔軟に表現可能
✗ まだ発展途上
[Niemeyer+ 2020]
[Mildenhall+ 2020]
もしかしたら今後主流になるかも
SSII 2020 加藤講演資料
コンピュータビジョン?
#5
ニューラル3D表現
ニューラルネットワークで3D情報を表現
詳細の前に,従来的な表現を復習
#6
ボクセル
ピクセルを3Dに拡張したもの
✔ 画像を認識・生成する方法論 (CNN etc.) をほとんどそのまま使い回せる
✗ メモリ消費量が膨大で,解像度は2563くらいが限界
#7
[Image: URL]
1603
803
403
階層的ボクセル (octree)
細かく表現したいところだけボクセルを分割
✔ 高解像度の表現が可能
✗ 生成/管理が複雑
✗ 深層学習との相性の良さが失われる
#8
[Image: URL]
点群
3Dシーンを点の集合で表現
✔ ボクセルよりコンパクト
✗ 面を表現できない
✗ 深層学習で扱うのがやや難しい
#9
[Image: URL]
メッシュ
3Dシーンを三角形(多角形)の集合で表現
✔ とてもコンパクト
✗ よいメッシュを得るためには職人技が必要
✗ 深層学習で扱うのはかなり難しい
#10
[Image: URL]
(非ニューラル)陰関数表現
3D座標 p と関数 f について,f (p) = 0 となるところが物体の表面
✔ とてもとてもコンパクト
✗ 形状の作成がとても難しい
✗ 一般に,表面の位置を陽に求められない
#11
[Figure: URL]
ニューラル3D表現 (neural field)
3D座標 p とニューラルネットワーク f について,�f (p) が座標 p の3D情報 (モノがあるか,色,etc. ) を表す
この表現はニューラル場 (neural field) と呼ばれる
#12
ボクセル
点群
メッシュ
ニューラル場
ニューラル3D表現の利点
3D空間内の点 p の3D情報 = ニューラルネットワーク(p)
✔ コンパクトかつ柔軟
✔ 形状の生成が簡単
✔ 深層学習と組み合わせるのが簡単
#13
いろいろな形の表現
占有率: p が物体の中にある確率 = NN(p)
符号付き距離: p から物体の表面までの距離 = NN(p)
密度: レイが p を通るときにそこで物体にぶつかりそうな度合い = NN(p)
#14
形以外も表現できる
テクスチャ: 点 p の色 = NN(p)
マテリアル: 点 p のマテリアル = NN(p)
シーンフロー: 時刻 t で p にある点の移動速度と向き = NN(p, t)
#15
ニューラル場の最適化
ニューラル場に変換したい3Dモデルを持っているとき,
それを直に教師データとして用いて NN を最適化すればよい
たとえば
ただ,既存のモデルをニューラル場に変換したい場面は現実的にあまりない
→ 多視点画像からニューラル場を得られないか?
#16
画像からニューラル場を最適化
#17
観測画像 (2D)
カメラパラメータ
ほしいもの (3D)
画像からのニューラル場の最適化
ニューラル場をレンダリングした画像と,観測画像との違いが
小さくなるように NN を最適化すればよい
勾配法でNNを最適化するには,レンダリング関数が微分可能でなければならない
#18
観測画像 (2D)
ほしいもの (3D)
レイ上の点 {qi}
それぞれの点の3D情報
(モノがあるか? 色は?)
NN
ピクセルの色 c
Render
正解 ct
誤差最小化
Neural radiance field (NeRF)
#19
NeRF はきわめて高性能な自由視点画像生成手法
点の色は見る向きによって異なってもよい,とモデル化することが特徴
σ = NNσ(p), c = NNc(p, d)
また,微分可能ボリュームレンダリングを用いることに特徴がある
p にモノがありそう度
3D座標
p の色
見ている向き
NeRFによる自由視点画像生成
#20
観測画像
観測にない視点からレンダリング
NNを最適化
NeRFによる自由視点画像生成
#21
視点によって
見え方が変わる
動画への拡張
#22
静止した NeRF
σ = NNσ(q)
c = NNc(q, d)
に加えて,その変形を最適化
q = NNq(p, t)
各フレームでの3D座標
時刻
静止した空間�での3D座標
動画への拡張
#23
撮影条件が揃っていない写真からのNeRF
#24
条件付きニューラル場
#25
1シーンついてそれぞれ NN を最適化するのは大変
条件付きニューラル場: シーンを表現する特徴ベクトルを z として,
3D情報 = NN(p, z)
とすることで,ひとつの NN でいろいろな3Dシーンを表現
単一画像物体再構成
#26
画像から形状コードを推定する NNr と,�それをデコードして形状を出力する NNd を同時に学習
適当な点 p
正解の�3Dモデル
画像
NNr
形状コード z
モノがある度
NNd(p, z)
p にモノが�あるかどうか
予測誤差
再構成
学習
単一画像物体再構成
#27
単一画像物体再構成を画像から学習
#28
正解の3Dモデルを持っていなくても,�レンダリングを介すれば画像を用いて学習できる
適当なピクセル p の�レイ上の点 {pi}
正解の画像
画像
NNr
z
モノがある度,色
{NNd(pi, z)}
p の色
予測誤差
再構成
学習
Render
レンダリングされた色
3D形状生成モデル
#29
敵対的生成ネットワーク (GAN) と同様の枠組みで,3D形状の生成モデルを訓練可能
判別器
ランダムな形状コード z
ボクセル
本物らしい度
生成
学習
ボクセル化
ニューラル場 NNd
生成モデル?
#30
デコーダ
・ピクセルの逐次生成
・低解像度→高解像度
中間表現
画像
3D世界
2D画像
投影
多くの画像生成モデル
実際の画像の生成プロセス
高解像度化が難しい
回転・拡大縮小は苦手
解像度は問題にならない
回転・拡大縮小も容易
*1
SSII 2018 加藤講演資料
3Dを介した画像生成モデル
#31
ニューラル場,微分可能レンダリング,敵対的学習の合わせ技
判別器
ランダムな形状コード z
画像
本物らしい度
生成
学習
レンダリング
ニューラル場 NNd
3D空間での compositionality を考慮した画像生成モデル
#32
複数の要素 (e.g. 前景,背景) を別個のニューラル場で表すことで
シーン中の要素を独立にコントロールして画像を生成
前景だけ動かす
物体を増やす
ニューラル3D表現の欠点
✗ 多数の点を NN にクエリする必要があり,形状推定/レンダリングが遅い
✗ 単純な NN ですべてを表すのは効率的ではないかもしれない
✗ 人間による編集が難しい
#33
ボクセルの併用によるシーン表現の効率化
#34
シーンをグリッド状に配置されたプリミティブの集合として表すことで
効率的かつ高精度に3D形状を表現できる
点群の併用によるシーン表現の効率化
#35
シーンを点群上に配置されたプリミティブの集合として表す
NNを分割して街を表現
#36
ニューラル場って本当に必要?
#37
y = NN(p) は,以下の処理から成るはず
本当に重要なのはどちらか?
そこをうまく作り込めば,NN のサイズを小さくできるのでは?
レンダリングの高速化 (グリッド&ニューラル場)
#38
シーンを大きな NN 1つで表すのではなく
グリッドごとに小さな NN を持つことで
性能を落とさずレンダリングを2500倍高速化
グリッドの併用は「座標の値 p を内部表現に変換」する手間を低減することになる,はず�(個人的な解釈)
最適化の高速化 (グリッド&ハッシュ化&ニューラル場)
#39
ハッシュ化とグリッドを駆使して p を前処理しておくことで NN を小さくでき,最適化を4時間から5秒にまで高速化
p を内部表現へ変換するプロセスを�人手で作り込んだものといえる
最適化の高速化 (疎なボクセル)
#40
疎で高解像度のボクセルを使えば,そもそも NN を一切使わなくてもよい
正解
NeRF++
Plenoxels (No NN)
ニューラル3D表現の最新動向 まとめ
#41
ニューラル場: NN が3D座標を受け取り,その点の3D情報を出力
ニューラル場を使えば万事オーケーなのか?
ボクセル
点群
メッシュ
ニューラル場