劉澤鑫 萬旺根
1(上海大學通信與信息工程學院 上海 200444)2(上海大學智慧城市研究院 上海 200444)
三維模型分類作為數字幾何領域的重要組成部分,被廣泛應用于計算機輔助設計和前沿的無人駕駛中[1]。無論是模型分類還是模型檢索,如何通過設計合理的算法以提高模型的處理精度,一直是國內外學者的研究熱點。Kazhdan等[2]提出了一種基于球諧函數的三維模型分類算法;Vranic等[3]提出了一種使用徑向函數來表征三維模型并進行分類的算法;Liu等[4]提出了一種使用距離函數表征三維模型特征并實現分類的算法;Bronstein等[5]提出了一種使用熱核特征[6]和無監督聚類[7]實現三維模型分類的方法。
此外,卷積神經網絡[8]技術作為一種可以處理三維場景下復雜問題的工具也已被成功地應用于三維模型分類領域中。Charles等[9]提出的PointNet方法采用多層感知機網絡對三維模型進行擬合表示,并通過卷積神經網絡對其進行特征提取和分類運算;Su等[10]提出的MVCNN方法使用二維視圖表示三維模型,并通過卷積神經網絡處理這些圖像以實現模型的分類;Wu等[11]提出的3D ShapeNets算法將三維模型表示為體素網格[12]上的二值分布,并通過卷積神經網絡計算三維模型的特征與分類情況。
以上方法有其各自的優點與缺憾,基于卷積神經網絡的方法而言,大部分可以自主提取特征并實現端到端的模型分類,然而這些方法的算法復雜度普遍較高,并且分類結果不甚理想。針對以上問題,本文提出了基于體素模型與卷積神經網絡的三維模型分類算法,該算法基于八叉樹結構[13]對三維模型進行體素化,明顯降低了算法的時間復雜度和對GPU顯存的要求,同時具有較高的三維模型分類能力。
體素是體積元素的簡稱,表示數據在三維空間上的最小單位。在三維模型相關研究領域中,體素化表示將三維模型轉化為一系列體素的堆砌組合,從而模擬模型的空間幾何分布。采用體素化的方法處理三維模型能夠直觀地呈現模型結構,準確地記錄模型信息。為了進一步降低顯存占用,同時提升計算速度,本文使用基于八叉樹結構的體素化方法對三維模型進行體素化處理。體素化流程如圖1所示。

圖1 體素化流程
在構建基于八叉樹結構的體素模型時,我們首先設定模型的深度(Depth,d)為N,接下來的操作可以分為兩步:
(1) 基于八叉樹結構將三維模型體素化。為實現該目標,首先通過預處理步驟計算出模型的AABB包圍盒并按標準尺寸將其均勻縮放為軸向對齊的三維邊界立方體,然后依據廣度優先的原則順序遞歸并細分三維邊界立方體。在上述過程的每個迭代步驟iter中,我們通過搜索器ser充分遍歷處于第iter深度處,由三維形狀占據的非空節點單元,并將它們中的每一個單元細分為第iter+1深度的八個子單元。該過程將一直持續直到iter達到預定的值N為止。
(2) 貯存重要屬性信息。在構建基于八叉樹體素結構的三維模型時,我們將為各個節點單元添加重要的屬性信息,以其滿足后續卷積神經網絡的操作需求。具體而言,即為八叉樹體素結構的每個單元添加通過計算得到的隨機鍵屬性、關系標簽屬性以及信號屬性。其中,采用隨機鍵的方式標記節點單元可以使三維卷積運算時的節點鄰域構建變得高效,采用關系標簽的方式標記節點單元可以使三維池化運算時的父子節點查詢更加快捷,而信號屬性的設置可以清晰化模型的性狀特征,同時使描述符的學習與存儲更加容易。
如圖2所示,我們通過可視化效果圖比較了斯坦福兔子的原始模型、普通體素模型和基于八叉樹結構的體素模型。觀察發現,與普通體素化方法相比,采用本文方法處理得到的模型更加忠實于原始樣本。

(a) 原始模型 (b) 普通體素模型 (c) 本文模型圖2 模型對比
為了使神經網絡結構能夠處理體素模型,本文特別使用了網絡模型中的幾項關鍵組件,并在此基礎上設計了可提取三維模型特征描述符的卷積神經網絡結構。
為使本文設計的網絡結構適配基于八叉樹結構的體素模型,并可以提取三維模型的特征描述符,我們有選擇性地使用了神經網絡中的部分運算符。
2.1.1三維卷積運算
本文使用支持空間運算的三維卷積運算符對模型進行特征提取,并在每次運算中,通過設置約束項的方式,將運算符的作用范圍控制在體素模型相同深度處、待運算節點單元的周圍,從而實現在八叉樹結構上開展高效的卷積運算。該過程的計算公式如下:
(1)

2.1.2三維池化運算
池化的作用是壓縮特征信號的空間表達,除去冗余數據并在保持位移不變的前提下突出顯著特征。為了在基于八叉樹結構的體素模型上進行池化運算,本文選用了支持空間運算的三維池化運算符對特征圖進行池化操作。該過程的計算公式如下:
Resd-1=f(down(Resd))
(2)
式中:down(·)表示池化算子,本文采用的池化方式為Max-pooling。
2.1.3全連接運算
全連接運算的作用是將經過卷積運算和池化運算得到的分布式特征表示映射到樣本標記空間,以支持后續的特征分類操作。該過程的計算公式如下:
W=Arr(wm)FC=f(Arr(Resd×Wm+pm))
(3)
式中:W表示參與運算的卷積核組,pm表示偏置項,FC表示全連接層。
2.1.4Softmax運算
我們以Softmax層作為三維模型分類網絡的最后一層,并通過它進行分類運算以得到最終的分類結果。該層的運算過程如下:
(4)
式中:f(zi)表示第i類的預測結果。
在確定卷積神經網絡關鍵組件的基礎上,本文設計了一套適配于八叉樹結構體素模型的三維模型分類網絡。該分類網絡系統可分為特征提取器和分類器兩部分,其中特征提取器的深度由體素模型的分辨率(Resolution,r)決定,并且特征提取器的深度與模型分辨率之間存在著如下式所示的關系。
r=23×d
(5)
如圖3所示,卷積神經網絡為本系統的特征提取器。根據體素模型分辨率的不同,該網絡將包含一定數量的運算單元(Unit,u),而每個運算單元又由兩個三維卷積運算層、一個歸一化層、一個激活層和一個三維池化層組成。該網絡中卷積層的卷積運算符尺寸為3×3×3,移動步長為1,池化層的池化運算符尺寸為2×2×2,移動步長為2,網絡結構任意深度處的特征圖的數量如式(6)所示,當模型經過運算單元的一次處理后,分辨率減半,同時特征描述符向上抽象一個維度。

圖3 特征提取器網絡
(6)
將特征提取器作為第一部分置于圖4框架中,銜接在分類器之前便構成了完整的三維模型分類系統。其中,沿著系統執行方向,分類器依次包含兩項512個單位的全連接層、一項40個單位的全連接層和一項用于分類的Softmax層。當使用分類系統對模型進行分類時,首先使用特征提取器抽象得到體素模型的特征描述符,接著將特征描述符作為運算基礎單元輸入到分類器中進一步處理并輸出最終的分類結果。

圖4 三維模型分類網絡
與同領域中其他三維模型分類方法,尤其是基于體素模型的方法相比,本文算法可以在較短的訓練時間及較小的顯存占用下,訓練出準確率較高的分類模型。后續將通過實驗探究最合理的體素模型與網絡結構搭配,同時驗證本文算法的上述優勢。
為找到最佳的體素模型與網絡結構組合,同時量化地驗證本文算法的優勢,我們在參考同類方法的基礎上,設計了一系列實驗,包括:基于體素模型分辨率設計的實驗、基于最佳網絡結構設計的性能比較實驗以及同類方法的分類準確率對比實驗。
實驗環境:Intel(R) Xeon(R) CPU X5650,24 GB內存,NVIDIA Tesla K20c,操作系統為Windows 10 pro 64-bit。數據集:選擇公共的Princeton ModelNet40數據集作為實驗訓練集和測試集來驗證本文實驗的效果。卷積神經網絡結構主要參數設置:設置神經網絡的學習率為0.1,批大小為32,epoch為40。
本文提出的三維模型分類系統中特征提取器的運算單元數與模型的分辨率有關,而特征提取器的結構又直接影響到三維模型的分類準確率。為此,我們特別設計了本實驗,以探究最為合理的體素模型與特征提取器組合。圖5所示為本實驗的結果圖,實驗中,分別按照3、4、5、6、7的深度配置將Princeton ModelNet40數據集中的三維模型體素化,其對應的模型分辨率分別為(23)3、(24)3、(25)3、(26)3、(27)3。

圖5 體素模型分辨率對分類準確率的影響
實驗結果表明,當體素模型深度為6,對應分辨率為(26)3時,模型與分類網絡結構組合具有最佳的分類效果。分析認為:當體素模型的分辨率較低時,三維模型的局部信息表達不充分,無法通過神經網絡結構學習得到高表征的特征描述符,致使分類準確率較低,而數據集體量相對較小則可能造成模型在訓練過程中出現過擬合現象,從而使得分類準確率無法提升甚至下降。圖6所示為最佳的分類網絡結構設計。

圖6 效果最佳的分類網絡結構
由于使用了八叉樹結構的體素模型作為輸入數據源,相較于普通的基于全體素模型的分類方法,本文算法在進行分類運算時速度更快,顯存占用較小。為了證實這一理論分析,我們使用圖6所示分類網絡結構開展了本實驗。 表1所示為本實驗的結果,其中:第一列表示分類網絡運算時的迭代時間成本,該值是通過計算1 000次迭代傳播的平均時間得到的;第二列表示分類網絡運行時的峰值顯存占用。

表1 性能分析
實驗結果表明,本文提出的三維模型分類算法運行時的速度較快,同時對顯存的占用較小,這也與上文的理論分析相吻合。
為了證實本文算法具有更好的分類效果,我們將本文提出的算法與當前主流分類算法在ModelNet40數據集上的測試結果進行了比較,實驗結果如圖7所示。其中,參與對比實驗的方法包括3D ShapeNets[11]、DeepPano[14]、Geometry Image[15]、FPNN[16]、PointNet[9]以及MVCNN[10]。

圖7 分類準確率比較
實驗結果表明,本文提出的基于體素模型與卷積神經網絡的三維模型分類算法具備更高的模型分類水平。
為了形象地說明本文的分類效果,本節展示了使用本文算法在ModelNet40數據集上進行分類實驗時得到的正確與錯誤分類實例,并簡要分析了錯誤分類的原因。
如表2所示,為通過本文方法分類得到的部分正確實例,不難發現,對于人、汽車、飛機、吉他等形狀明顯的模型類別,本文算法可以準確地判斷出其類別。

表2 正確分類模型實例
表3所示為使用本文方法分類得到的部分錯誤實例,出現這種狀況的原因可能是部分模型相似度較高。

表3 錯誤分類模型實例
表3中,第一個“水杯”模型被錯誤分類為“花瓶”,分析發現該“水杯”模型的體素模型為上寬下窄的圓柱體,與“花瓶”的外形非常相似,從而在分類時發生錯誤判斷;第二個“浴缸”模型被錯誤分類為“碗”,分析發現該“浴缸”模型的體素模型為半橢圓形容器,與“碗”的外形非常接近,從而在分類時出現誤判。
本文提出了一種基于體素模型與卷積神經網絡的三維模型分類算法。與傳統的基于卷積神經網絡的三維模型分類算法相比,本算法首先構建了基于八叉樹結構的體素模型,在降低神經網絡運算復雜度的前提下,盡可能地保留了三維模型的幾何特征;其次,綜合運用包括三維卷積運算層、三維池化運算層在內的多個關鍵組件構建了本文的三維模型分類網絡以完成模型的分類操作。實驗結果表明,本文算法可以在顯存占用小,運算速度快的前提下,提升分類準確率。然而,我們也注意到由于模型的信號屬性算子設計仍然存在缺陷以及神經網絡結構參數設置不合理等因素,本文算法在分類外形相近的模型時結果不甚理想,因此未來將研究設計能充分表征三維模型結構特性信號屬性以及更加合理的神經網絡結構和參數組合。