正規表達式詳解?*本文是文章的第一部分,請大家持續關注原創作者文章~,現在小編就來說說關于正規表達式詳解?下面内容希望能幫助到你,我們來一起看看吧!
正規表達式詳解
*本文是文章的第一部分,請大家持續關注原創作者文章~
概述
深度隐式表達 (Deep Implicit Representation, DIR) 在 2019 年同期發表了一系列代表性的工作。
本文主要介紹 Deepsdf [4] 以及 Occupancy Networks [2] (OccNet) 兩篇文章,之後會介紹一些其他的工作,本系列僅涉及部分代表性的 DIR 工作,讀者感興趣的話可以自行查找其他相關的工作。
值得注意的是,這裡 DIR 的說法是比較嚴格的,Openreview 上關于GRF[5] (當然 GRF 也是很好的工作) 的評論中提到:
也就是說,implicit function 的說法是不推薦的。那麼什麼是 DIR 呢?用下面這張圖可以概括:
輸入一個點 p,輸出 p 的屬性,如果屬性是該點是否被占據,那麼這就是Occupancy Networks,如果屬性是 SDF 值,那麼這就是 DeepSDF,到這裡其實已經介紹完了 DIR 的相關概念。如果讀者是更關注 NeRF 的内容,剩下部分可以選擇跳過。
DeepSDF
DeepSDF 的作者之一是 Newcombe,也是 KinectFusion 的作者之一, 現在在 Facebook Reality Labs,對重建這一套是再熟悉不過了。
在表示方面,傳統方法都會使用 Mesh, 點雲,體素,面片等,其實這些表示方法都各有各的優缺點,很多文章都踩過了我們就不踩了,那麼使用 DIR 的表示方法有什麼好處呢?
首先它是連續的,神經網絡具有很強的插值能力。其次使用深度學習的方法就一定會想到要具有一定的泛化性。
如果你對傳統重建方法有所了解的話,一定會發現,傳統重建會有許多空洞,那麼能不能使用 DIR 方法補全一下缺失的幾何。
當然還有 compact 的優點,少量參數的内存開銷即可,還有很多其他優點不一一贅述。下面我們進入主題。
首先距離符号函數 (SDF) 是一個連續函數:
SDF (x) = s : x ∈ R3, s ∈ R, (1)
這裡 x 表示采樣點的坐标,|s| 表示距離表面的最近距離,s 的符号為正表示在物體外部,符号為負表示在物體内部,上面這張圖是 SDF 的示意圖, 物體的表面被隐式的表達為 SDF (.) = 0 的等值面。
DeepSDF 使用 MLP 來拟合這個連續函數:
fθ(x) ≈ SDF (x). (2)
這樣一個函數是沒有什麼意義的,對每個物體都要訓練測試訓練測試...... 因此 DeepSDF 引入了 Auto-Decoder 來增加泛化性。
其實這個概念并不陌生,但是按照論文的說法在 3D learning 方面是首次提出的。
用白話講就是為每個形狀分配一個 latent code z,然後與采樣點坐标一同輸入到網絡中,把這個 code 與網絡的參數一同進行優化即可:
fθ(x, z) = sˆ, (3)
論文裡比較 sao 氣的給了概率證明,對于理解 DIR 來說意義并不大,我們不多涉及。
接下來我們完整的回顧一下 DeepSDF:
1. 數據準備:對與每個 3D 模型取一些列的采樣點 (x, s),采樣方式是個比較繁瑣的過程:
假設是watertight 的mesh 模型。先将模型 normalize 到一個單位球,接着在表面采 250000 個點,并保留其法向量。
然後對250000 點加擾動,每個點擾動得到 2 個點,一共會有 500000 個擾動空間點,對這些空間點計算 SDF 值,計算方式就是從 250000 個表面點中找最近的點,然後計算符号與距離。
2. 訓練:将大批量的采樣點與随機初始化的 latent code z 一同輸入到網絡,通過 gt SDF 值做監督,對網絡參數以及 z 一同做優化。
3. 測試:同樣需要采樣點,但是此時的采樣點可以是稀疏的,甚至可以僅僅根據一張深度圖即可完成推理。但是需要優化 latent code z,網絡參數保持不變。
4. 可視化:使用 Marching Cubes 或者 raycasting 算法即可。
結果我們不過多展示了,大家可以參考論文。DeepSDF 的效果在當時是十分驚豔的,當然也存在一些問題。
比如,姿态問題沒有考慮,訓練測試的模型都是處于 canonical pose 的;部分區域過于平滑;
僅适用于單個物體,不能拓展到大場景等。感興趣的讀者可以自行查找一下相關的 task,DIR 的研究是多種多樣的,在 3D 視覺領域能挖掘的東西還有很多很多。
Occupancy Networks
這張圖我很喜歡,它很直觀的表達出 DIR 在表示方面的優勢,相信 reviewer 一看到也是類似的反應。
DIR 最大的優勢就是緊緻連續,僅使用少量的内存開銷即可将 3D 信息嵌入到神經網絡的參數當中。
使用 SDF 值作為點的屬性表達是一種方式,當然也可以使用該點是否被占據,OccNet 沒有使用額外的類似 DeepSDF 的 latent code,而是選擇将觀測 (如圖片、點雲、體素等) 作為輸入然後提取 code,可以概括的表達為以下形式:
fθ(p, x) = oˆ, (4)
這裡 oˆ ∈ [0, 1] 表示點 p 被占據的概率,x 表示觀測輸入。表面所在的位置為 oˆ = τ 的等值面,這裡 τ 是 OccNet 中唯一的超參數,文中給出的建議值為 τ = 0.2。
相比 SDF 值,occupancy 值的 gt 更容易獲取一些,在提取幾何部分 OccNet 也做了特殊的處理,提出了 Multiresolution IsoSurface Extraction (MISE),有效利用了 fθ 的梯度信息做約束,使得提取到的 mesh 既不會太複雜,又相對準确,本文對 MISE 不做深入講解。
OccNet 與 DeepSDF、IM-NET[1]、Deep Level Set[3] 是同期的工作, 這四篇工作都是在 2019 年發表的,也從此引發了以 DIR 為表示方法的熱潮。
下面給出兩張 OccNet 的網絡結構圖幫助讀者理解:
圖 1 OccNet 網絡架構
(a)Single Image 3D Reconstruction.
(b)Point Cloud Completion.
(c)Voxel Super-Resolution.
圖 2 Encoder
結語
對于 loss function 是個開放性的問題,本文兩篇文章都沒涉及。核心本質的 DIR 思想相信大家已經初步建立概念了。
接下來的更新我們會提到一些典型的 DIR 工作,由于作者本身也要做一些 research 工作,希望在深度和廣度方面盡可能地拓展一些,如有不正确的地方歡迎大家指正。
參考文獻
[1] Z. Chen and H. Zhang. Learning implicit fields for generative shapemodeling. In Proceedings of the IEEE/CVF Conference on ComputerVision and Pattern Recognition, pages 5939–5948, 2019.
[2] L. Mescheder, M. Oechsle, M. Niemeyer, S. Nowozin, and A. Geiger.Occupancy networks: Learning 3d reconstruction in function space. InProceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 4460–4470, 2019.
[3] M. Michalkiewicz, J. K. Pontes, D. Jack, M. Baktashmotlagh, andA. Eriksson. Deep level sets: Implicit surface representations for 3dshape inference. arXiv preprint arXiv:1901.06802, 2019.
[4] J. J. Park, P. Florence, J. Straub, R. Newcombe, and S. Lovegrove.Deepsdf: Learning continuous signed distance functions for shape representation. In Proceedings of the IEEE/CVF Conference on ComputerVision and Pattern Recognition, pages 165–174, 2019.
[5] A. Trevithick and B. Yang. Grf: Learning a general radiance field for 3dscene representation and rendering. arXiv preprint arXiv:2010.04595,2020.