Neural3DMM与螺旋卷积
《Neural 3D Morphable Models: Spiral Convolutional Networks for 3D Shape Representation Learning and Generation》
本文介紹了一種固定拓撲3D可變形形狀的表示學習和生成框架。利用螺旋卷積這種網格卷積算子,建立網格自編碼器和GAN結構。
螺旋卷積
M = (V,E,F) 是一個三角網格
V = {1,…,n} 頂點
E 邊
F 人臉
f : V → R vertex-wise features(頂點方面的特征)
在圖像或網格中生成一個算子,關鍵的挑戰是缺乏一個向量空間結構,和一個可以與每個點關聯的全局坐標系統。
GCNN、ACNN或MoNet通過在網格的每個頂點 i 周圍構造一個局部坐標系 uij 來克服這個問題,其中一組局部加權函數 w1,…, wl 用于聚合來自相鄰頂點 j 的信息。這樣就可以定義“patch操作符”來生成圖像中的滑動窗口濾波。在歐氏集合中,局部坐標可以被全局坐標識別。
后半部分求和是 ‘soft pixels’,共有L個(什么意思??)
f 類似于圖像中的像素強度
gl 濾波器權重
構建patch操作符有兩個難點:
文章中提出了一個重要發現:這兩個問題與生成具有固定拓撲結構的形狀無關。在一個固定的網格結構上構建patch算子,相當于對相鄰點進行排序。
il 表示 i 以某種固定方式排序的頂點的鄰域。
在歐氏集合中,這個排序是在一個patch上對像素進行光柵掃描(所以 l = 1 ?),而本文選擇用更加直觀的螺旋掃描進行排序。
定義螺旋patch算子為以下有序序列:
Rd(i) 表示d環,即一組有序的頂點,其到 i 的最短路徑恰好是 d 跳長。
h 表示patch的半徑(跳長),相當于經典CNN算法的kernel。
順序的唯一性是通過固定兩個自由度得到的:環的方向——無論它們是順時針還是逆時針排序,以及第一個頂點。這些自由度是通過選擇螺旋中的前兩個頂點來設置的,其余的點通過歸納選擇。為了允許固定大小的螺旋線,文中將長度限制到一個固定的長度,并對長度小于所選頂點的頂點進行零填充。
定義螺旋卷積為:
對比
(1) Lim的算法
這個人的方法是:在訓練過程中,對每個網格樣本、每個頂點和每個epoch隨機選擇每個螺旋的起始點。這是為了防止和圖像卷積等價,失去了有序的良好特性。
為了使順序一致,需要基于一個局部坐標系統來定義它,該坐標系統可以跨網格重復(網格一致性),并基于形狀的底層幾何(頂點一致性)。如果缺少這兩個性質中的一個,那么在訓練時,參數可能難以適應變化較大的坐標系統,從而表示能力減弱。特別是每個epoch都選擇隨機起點,增加了學習旋轉不變濾波器(rotation invariant filters)的可能性,這樣作用于相同環上的頂點的參數會近似。(why?)
有些懵:
- 什么是旋轉不變濾波器?
在數學里,給予一個定義于內積空間的函數,假若對于任意旋轉,函數的參數值可能會改變,但是函數的數值仍舊保持不變,則稱此性質為旋轉不變性(rotational invariance),或旋轉對稱性(rotational symmetry),因為函數對于旋轉具有對稱性。
為了解決這個問題,選擇起始點就很重要。
文章根據形狀的基本幾何(underlying geometric)來選擇起始點。在固定的拓撲結構中,可以通過為每個網格選擇相同的頂點索引,來檢索相同的順序。因此我們在網格上固定一個參考點 i0,每個螺旋的起始點都是指向 i0 的最短曲面幾何路徑,即 dM。
Lim的算法沒有用到這種3D模型的固有屬性(local statistics are repeated across different patches),而是recurrent網絡,因此計算復雜度更高。
(2)Spectral filter光譜濾波
在一般圖上,相鄰的頂點沒有規范的順序,必須使用置換不變算子(permutation-invariant operators)。因此產生了光譜卷積算子,依賴于拉普拉斯算子,對相鄰頂點進行加權平均。但在網格上,光譜濾波相當弱,因為它們也是局部旋轉不變性的,在每一環都有固定值。
為什么拉普拉斯算子具有旋轉不變性?
螺旋卷積和圖像卷積等價,在CV領域可以進行長期的研究。使用小的patch,參數少,計算快。膨脹卷積也可以使用螺旋算子,simply subsampling the spiral。可以強制執行原語順序(an ordering of the primitives)的領域也可以應用此算子,如點云。
Neural 3DMM
在本文中,與線性的3DMM不同,使用了螺旋卷積作為構建塊(building block),構建一個完全可微的非線性可變模型,通過直接作用于網格來學習如何表示和合成3D形狀。本質上,Neural 3DMM是一個深卷積自編碼器,它學習形狀的層次表示。
上圖就表示了Neural3DMM的結構。編碼器負責將網格投射到非結構化的潛在表示(latent representation)中,解碼器再從中重構出原始輸入。和傳統的方式相似,由一系列帶有小接受域的卷積層構建:編碼器pooling,decimate(瓦解?)網格,聚合信息;解碼器unpooling,upsample(上采樣)網格,推斷信息。上采樣之后,用[35]的方法,通過插值,用重心坐標對附近的頂點進行加權,來計算添加頂點的特征。整個網絡通過最小化輸入和預測輸出之間的L1范數進行訓練。
這個模型的層次性,允許在多個尺度上進行有效的學習。因此,該網絡通過局部卷積,利用形狀的平穩性,學會了以更高效、語義更有意義的方式壓縮三維數據,同時將參數空間保持在較低的維數。
螺旋卷積GAN
為了使生成的模型網格具有更高的分辨率,產生更多細節,提出了Wasserstein GAN。它被訓練最小化網格的實際分布和生成器網絡產生的分布之間的Wasserstein散度。文章中,通過在loss function中添加gradient penalty來估計散度,從而在critic network中實施了Lipschitz約束。生成器和辨別器的結構和Neural3DMM的一致。而且固定的拓撲結構允許我們在生成器的unpooling層預定義上采樣矩陣,因此可以直接從生成器的潛在空間中取樣,在訓練中看不到面部識別,這是比較新穎的一點。
總結
以上是生活随笔為你收集整理的Neural3DMM与螺旋卷积的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQL Server中的数据类型详解
- 下一篇: AJAX 弹出窗消息类