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