高 晨
(中國科學技術大學 數學科學學院,安徽 合肥 230026)
網格參數化在計算機圖形學與數字幾何處理有著廣泛的應用,例如紋理貼圖、細節映射、網格編輯、網格修復、重網格化、曲面擬合等。 因為三角形網格擁有著簡單的幾何特性,是網格曲面的一種主要表示形式,因此對于三角形網格的參數化也一直是參數化研究的熱點。三角形網格的參數化是建立在流形曲面與參數域之間的一一映射,三角形網格被映射到參數域為二維平面的參數化,被稱為平面參數化。
1963 年,TUTTE W T[1]提出重心映射定理,證明了網格模型中,一個頂點的坐標可以表示為其鄰接頂點坐標的加權組合,這為網格參數化提供了理論基礎,基于這個定理,ECK M 等人[2]和FLOATER M S[3]描述了一種簡單的參數化方法,將每個內部頂點表示為其相鄰頂點的凸組合。 使用不同的權重設置,獲得了不同的參數化,著名的權值方法有余切權值和均值權值,然而,重心坐標法要求網格的邊界固定在平面上的凸多邊形上,這是一種任意的方法,通常會導致明顯的失真。
若三角形網格在映射前后邊長發生了變化,稱之為等距失真,若三角形網格在映射前后角度發生了變化,則將其稱之為共形失真。為了衡量這些失真,一些扭曲度量函數相繼被提出,例如保形能量[4]和MIPS 能量[5],它們都是為保持映射前后的角度而設計的能量;格林-拉格朗日變形能量、ARAP 能量[6],則要求映射為等距映射,保持映射前后的長度。 考慮到失真度量大多是高度非線性函數,因此開始產生一些非線性的參數化方法,例如:基于角度的拍平化法[7]及其改進方法 ABF++[8]、基于最小二乘的保角參數化[4]、最等距參數化法[5]、局部全局參數化方法[6]等。
與此同時,卷積神經網絡[9]自從被提出以來,已經在計算機視覺[10-11]、自然語言處理[12]、語音處理[13]等相關的大量問題中取得了最先進的結果,這得益于卷積神經網絡的多尺度層次結構,使得網絡模型能夠學習平移不變的局部特征,但也使得卷積神經網絡局限在具有歐幾里得結構的數據上。 為了將卷積網絡應用在非歐數據上,人們開始研究基于圖結構和網格結構的圖卷積神經網絡模型。BRUNA J 等[14]利用圖拉普拉斯基與傅里葉基之間的聯系,首次提出了CNNs 在圖上的泛化, 因此產生了泛化圖卷積的譜濾波器。 隨后,BOSCAINI D 等人[15]利用傅里葉變換在頻率空間中對其進行了擴展。 為了降低譜圖卷積的計算復雜度,DEFFERRARD M 等人[16]對這些特殊的濾波器進行了近似處理, 并對其進行了特征向量的顯式計算,引入了高效的操作符集合。 KIPF N[17]使用Chebyshev 多項式對其進行了簡化,提出了圖卷積神經網絡,ANURAG R[18]等利用圖卷積網絡在網格上建立了圖卷積網格自動編碼器,提出基于網格的池化層。 在此基礎上,多種圖卷積網絡模型相繼建立,并有了廣泛而快速的發展。
在本文中,建立一類應用在網格上的參數化神經網絡模型,針對一類人臉網格數據,根據不同的度量函數,獲得相應的人臉網格參數化結果,具體如下:
(1)構建一類基于圖卷積網格自編碼器的參數化網絡模型,它由網格卷積層、網格上采樣層、網格下采樣層構建而成,其中網格卷積層由一類快速局部化的卷積濾波器組成。
(2)使用參數化網絡模型,針對不同的參數化扭曲度量函數,在人臉數據集上獲得相應的人臉網格參數化結果。
(3)保證參數化效果,并使用建立的圖卷積網絡模型,可對人臉網格進行批量處理,更快地獲得參數化結果。
基于網格數據的圖卷積自動編碼器模型的建立主要依靠卷積操作的定義,來完成網格數據在網絡層與層之間的傳播,同時對應于圖卷積網絡的池化層,建立起網格上采樣層與網格下采樣層。
給定一個三維網格,其網格數據形式可以表示為 F=(V,A),其中|V|=n 是三維歐幾里得空間中網格的頂點集合,V∈Rn×3。 A 則是一個 n×n 的矩 陣,表示V 中頂點之間的鄰接關系,若 V 中的點 i 和點j 之間存在一條邊,則在 A 中,Aij=1,若 V 中的點 i和點 j 之間沒有邊相連,則在 A 中,Aij=0,考慮到網格結構中點的鄰接關系不會過多,矩陣A 是一個對稱稀疏鄰接矩陣, 描述了網格數據的拓撲信息,由鄰接矩陣的性質, 可以輕易地得到V 中一個點的度,, 即度為矩陣 A 中第 i 行的元素求和。網格上的 Laplacian 矩陣[19]可以定義為 L=D-A,其中 D 為 n×n 對角矩陣,主對角線上元素即為 V 中點的度。

Laplacian 矩陣 L 擁有良好的性質,是一個半正定堆成矩陣, 因此, 可以將 L 寫成特征分解形式:L=UΛUT。 其中 U=[u0,u0,…,un-1]是 L 的正交特征向 量 。 Λ =diag(λ0,λ1,…, λn-1)∈ Rn×n, 則 是 由Laplacian 矩陣特征值組成的對角矩陣,其中特征值具有非負實值性質。 網格數據上的傅里葉變換可以定義為 xω=UTx,傅里葉逆變換則為 x=Uxω。
網格數據上的卷積公式在傅里葉空間由如下公式定義:

其中x、y為網格中的頂點 ,UTx、UTy 為 x、y 對 應 的傅里葉變換,⊙表示哈達馬積,對于兩個維度相同的向量、矩陣、張量進行對應位置的逐元素乘積運算。對于一個輸入信號x,在網格數據上的卷積操作定義為,它和一個帶有參數 θ 的濾波器 gθ在傅里葉空間的乘積:

其中 σ(·)是激活函數,gθ(λ)為對應的卷積核。 這樣的參數定義存在弊端如下:
(1)每一次參數傳播,都需要計算U、gθ(λ)、UT三者的矩陣乘積,計算復雜度很高。
(2)對于每個卷積核,都需要 n 個參數。
因此,KIPF N 等人[17]使用切比雪夫多項式對其進行擬合,使得卷積核可以表示為如下形式:


此時卷積核可被定義為如下形式:

yj是輸 出 y∈Rn×Fout中的第 j 個特征,而輸入 xi∈Rn×Fin擁有 Fin 個特征,則對于一個卷積核,其擁有 Fin×Fout 個參數,每個卷積層擁有 K×Fin×Fout 個參數,其中K 是切比雪夫多項式的階,K 的值決定了每層卷積的作用范圍,如圖1 所示,K=1 時,卷積作用于節點的一階鄰居上,通過卷積作用,生成輸出。通過這樣的卷積核和輸入數據的卷積,可以實現在圖數據結構或者網格數據結構的局部參數共享。

圖1 一階圖卷積示意圖
網格數據的采樣操作包括上采樣層和下采樣層,其中下采樣層移除網格中的點,以獲得壓縮后的網格數據,上采樣層則通過還原來恢復網格數據。
考慮網格數據,一個擁有n 個頂點的網格數據輸入可以表示為 n×F 的形式,其中 F 為每個頂點的特征個數。
1.3.1 網格下采樣操作
定 義 一個變 換矩陣 Qd∈{0,1}m×n,n >m 用 于 完成圖卷積網絡中網格的下采樣操作,下采樣利用二次矩陣[20]迭代收縮頂點對,保持曲面誤差逼近。 如圖2 所示,深灰色點在下采樣操作后被丟棄,留下的淺灰色點即為收縮后的頂點子集,記為Vd滿足 Vd∈V。 變換矩陣則可定義為:?p,Qd(p,q)=1表示第 q 個頂點被保留,Qd(p,q)=0 表示第 q 個頂點在下采樣操作中被丟棄。

圖2 網格采樣層示意圖
1.3.2 網格上采樣操作
定義變換矩陣 Qu∈{0,1}n×m,n >m用于上采樣操作,為了能獲得和輸入數據結構一致的數據結構,上采樣操作矩陣是在下采樣操作中同時建立的。如圖3 所示,下采樣后保留的頂點進行相應的卷積變換,獲得輸出網格數據,這些在下采樣中被保留的頂點依舊在上采樣中被保留,即有Qu(q,p)=1,當Qd(p,q)=1。 而對于那些在下采樣操作中被丟棄的頂點,Vq∈V,即滿足?p,Qd(p,q)=1 的點的集合,在做下采樣操作時考慮其所對應的重心坐標, 即在下采樣網格中, 將 Vq中的點 vq投影到其相近的三角形(i,j,k)中,投影后的點用表示,由重心坐標性 質 有其 中 νi,νj,νk∈Vd,并滿足 ωi+ωj+ωk=1。 則在對應的上采樣矩陣 Qu中,可 定 義 Qu(q,i)=ωi,Qu(q,j)=ωj,Qu(q,k)=ωk,并 有Qu(q,l)=0,?l≠i,j,k。 故 由此 可得 對應 于下采樣操作矩陣Qd和下采樣操作后的頂點集合Vd的上采樣操作矩陣 Qu,同時,上采樣后的頂點集合 Vu可以由Vu=QuVd給出。

圖3 參數化網格模型示意圖
基于圖卷積網格自編碼器的參數化網格模型以圖卷積神經網絡為基本單元,首先獲得輸入網格數據的坐標信息,網格的拓撲連接關系則蘊含在神經網絡的卷積中,通過Laplician 矩陣保證網格的拓撲結構不變。 網絡的前半段為圖卷積網格自編碼器的編碼部分,通過網格卷積層與網格下采樣層,在潛在空間里學習到輸入數據的特征信息,后半段則為自行建立的參數化解碼過程,以網格卷積層與網格上采樣層組成, 并通過一次額外卷積層獲得輸出。與自編碼器不同,通過解碼直接得出輸入數據的參數化表示。 當訓練完成后,得到的參數化網格模型相當于網格參數化過程。 如圖3 所示,首先對輸入數據進行一次卷積操作,之后每一個矩陣塊之間均代表著一次卷積操作與網格下采樣操作,下采樣尺度為2,交替多次進行,在潛在空間學習到特征信息后, 再交替多次進行網格上采樣操作與卷積操作,最后由一層卷積層構成整個網絡。

圖4 人臉數據集示例圖
本文中使用的數據集由文獻[18]中的數據集裁剪而成,共有20 465 個人臉三角網格,其中每個三角 網格 有 2 105 個點 ,4 148 個面。 按 照 10:1 的 比例劃分訓練集與測試集,訓練集有18 415 個網格數據,測試集有2 050 個網格數據。其中訓練集中分出1 000 個數據作為訓練中的驗證集。 圖4 給出數據集中的一些數據集中的人臉數據。 本文中將使用此人臉數據集作為構造的基于圖卷積網格自動編碼器的參數化網格模型的輸入。 同時,利用一個C++中的幾何處理庫,libigl 庫中的SLIM(Scalable Locally Injective Mappings)算法[21]對原始數據集做基于對稱Dirichlet 能量函數的參數化, 并將參數化結果作為網絡中的標簽進行訓練,隨后和本文中所使用的參數化網絡模型的輸出做對比。
2.3.1 Dropout 與正則化
Dropout 可以作為訓練深度神經網絡的一種防止過擬合的方法供選擇。 在每個批量訓練中,通過忽略一定比例的的特征節點(即讓一定比例的隱層節點值取為0),可以明顯地減少過擬合現象。 這種方式可以減少隱層節點之間的相互作用。 網絡工作流程如下:
(1)以概率p 隨機地刪除掉卷積網絡中隱層的神經元,其中保持輸入輸出神經元保持不變(即將神經元經激活函數的輸出值置為0)。
(2)使得輸入數據通過修改后的卷積網絡前向傳播,得到的輸出再進行反向傳播。 每次批量的訓練樣本在執行此過程之后,在剩余的神經元上(即沒有被刪除的部分)按照隨機梯度下降法或者其他參數更新方法更新對應的參數。
(3)恢復那些在第一步中被刪除的神經元,然后從隱層神經元中再隨機以概率p 選取一個節點集合,將其刪除掉。對小批量訓練數據,繼續前向傳播與網絡反向傳播,并通過隨機梯度下降法更新對應的參數。
防止網絡過擬合的方法還有正則化方法,即對損失函數添加懲罰項。 所謂懲罰是指對損失函數中的某些參數做一些限制。 常用的正則化有 L1 正則化和 L2 正則化。
在本文所采用的網絡模型中,使用了dropout 方法,其中 drop 概率設置為 0.9(保留參數概率),同時使用L2 正則化,使網絡模型中的權值參數值盡可能小,提高網絡模型的抗擾動能力。
2.3.2 超參數優化
本文建立的參數化網絡模型有兩個重要的超參數,一個為網絡深度(即網絡的隱藏層個數),在本文中,并不直接使用隱藏層個數作為網絡深度的定義,而是考慮到建立的參數化網絡模型中卷積層與采樣層交替的形式,與網格下采樣層與上采樣層一一對應的關系,本文分別測試了網絡深度為2、3、4、5 時損失函數的下降趨勢。 此外,另一個極為重要的參數為K 值,K 值是卷積層中使用的切比雪夫多項式的階數,在網絡傳播中關系到一個節點的 K 階鄰居。 為此,本文分別選取 K=1,2,3 做實驗對比,結論如圖5 所示。 網絡中 batchsize 設置為16,每經過200 次訓練輸出一次損失函數,記為一次step, 圖中給出了每個網絡前 200 step 所對應的驗證集的損失函數,可以看出不論K 為多少,深度為2 和 3 時的網絡訓練效果不如網絡深度為 4 和 5時的網絡,而 K=1 時的網絡也沒有 K=2,3 時的網絡效果好,但當網絡深度設置過深時,訓練速度會變得緩慢, 因此綜合訓練效果與時間上的考慮,本文中的網絡深度取 4,并令K 值取 2。

圖5 不同超參數對比圖
通過構建模型與參數調優,最終得到應用于人臉數據集上的基于圖卷積網格自編碼器的參數化網格模型,在表1 中,列出了網絡模型具體的層參數,可以看出,網絡在編碼部分與參數化表示部分均經過了 4 次下采樣與 4 次上采樣, 同時在卷積過程中,設置卷積核的 K 值為 2,并在編碼過程中,依次采用了 16、16、32、64 個卷積核,在參數化表示過程中,依次采用了 64、32、16、16 個卷積核。 多個卷積核表示使得網絡可以學習到盡可能多的特征表示。

表1 參數化網絡模型具體層參數
本文人臉數據集測試集內共有2 050 個數據,從中隨機抽取了5 例數據,與經典參數化方法進行了對比,對比結果如圖6 所示,本文實驗在基于TensorFlow 深度學習框架的 Ubuntu 系統下進行。 網絡初始學習率設置為0.008,優化時學習率采用了學習率指數衰減的方法,即學習率隨著訓練次數的增加而逐漸衰減,衰減步數為1 000,衰減率為 0.95。同時為了加快網絡收斂速度, 網絡中動量設置為0.9。選定L1 損失函數為網絡優化目標函數,并使用小批量隨機梯度下降算法進行訓練,其中Batchsize 設置為 16。
圖6 展示了網絡模型與PP[22]算法在參數化結果上的效果對比,圖中第一列為原始人臉網格,第二列是PP 算法的參數化結果,第三列為網絡模型算法的參數化結果。 圖中顏色表示對應三角形面上的度量損失,在這里,均對參數化結果做了對稱Dirichlet度量函數的計算,從圖中可以看出,網絡模型取得了非常不錯的參數化效果。 相比較PP 算法在部分區域陷入局部解的情況,網絡模型表現更好。

圖6 參數化結果示意圖
除此之外,在本文中給出了網絡模型與PP 算法、SLIM 算法之間的參數化時間對比,結果見表2。 可以看出,基于PP 算法的參數化處理單個網格平均用時為 1.009 s,基于SLIM 算法的參數化處理單個網格平均用時為0.382 6 s, 但基于圖卷積網絡的參數化處理單個用時只需 0.227 1 s。 相比 PP 算法和SLIM 算法的順序處理,本文建立的參數化網絡模型可以對數據集進行批量處理, 并擁有極高的效率, 處理全部測試集 (共 2 050 個網格數據) 僅需4.619 7 s。

表2 參數化算法運行時間比較
當前,網格參數化已經取得了極為豐富的理論成果和應用技術,大多參數化方法都采用算法迭代求解非線性系統的方法,在本文中,設計了一類基于圖卷積網格自編碼器的參數化網絡模型,并針對構造的人臉數據集進行了參數化處理。 深度學習方法的引入,對于網格參數化而言是一個全新的思考方向。 針對網格數據,圖卷積網絡展現了其強大的特征提取和表達能力,同時從參數化結果來看,也展現了構建的參數化網絡模型的魯棒性與快速處理能力,同時在需要批量處理參數化的應用中,網絡模型展現了高效的應用能力。