呂帥君, 邢 燕, 洪沛霖
(1.合肥工業大學 數學學院,安徽 合肥 230601; 2.安徽中醫藥大學 醫藥信息工程學院,安徽 合肥 230012)
三維形狀的獲取越來越容易,這對三維物體分類的發展至關重要,目前的主要方法大都依賴卷積神經網絡解決三維物體的分類問題。卷積神經網絡通過提取物體的各種高維特征對物體進行分類預測。
對于三維形狀,有幾種比較流行的數據類型:體素[1]、點云[2]、多視角圖片[3]和網格[4]。體素在概念上類似于二維空間中的像素,可以看作數據在三維空間中的最小單位。體素表示法是一種規格化的表示方法,但其分辨率的限制導致很多細節缺失。點云是三維坐標系中點的集合,可以表示物體的外表形狀;除了最基本的位置信息以外,也可以在點云中加入其他信息,如點的色彩信息等。但由于點與點之間沒有連接關系,點云表示方法缺少物體的表面信息。多視角圖片(簡稱多視圖)是通過不同視角的虛擬攝像機從物體模型中獲取的二維圖像的集合。多視圖通常需要使用比較多的圖片來構建完整的三維模型,在固定圖片數量的情況下,容易受到物體自遮擋等因素的影響。網格是由一組多邊形表面組成的非結構化數據,目前最普遍使用的是三角網格。多邊形網格通過一種易于渲染的方式表示三維物體模型,在三維可視化等領域有很大作用。
近年來,隨著神經網絡的發展和顯卡硬件設備的升級,深度學習在識別、分類、數據挖掘、機器翻譯、自然語言處理、語音處理、計算機視覺等領域都取得了很多成果,解決了很多復雜的模式識別難題,甚至在某些領域的識別能力超過人類。卷積神經網絡在三維網格處理上的應用也越來越多。文獻[4]提出了一種學習網格信息的卷積神經網絡,它將面作為最小單元,定義了共享邊的面之間的連接,使得網絡能夠通過逐面處理解決網格數據的復雜性和不規則性;文獻[5]提出了一種基于邊的能夠簡化網格模型用于三維網格分類和分割任務的卷積神經網絡。
深度學習的成功得益于幾十年積累的海量數據,但是對于很多特定任務的標簽,數據并不充足,而且獲取也相當困難,因此研究半監督、弱監督和無監督學習很必要。弱監督學習[6]是已知數據和其一一對應的弱標簽,訓練一個智能算法,將輸入數據映射到一組更強的標簽的過程。半監督學習[7]是指已知部分數據對應的標簽,另一部分數據的標簽未知,訓練一個智能算法,學習已知標簽和未知標簽的數據,將輸入數據映射到標簽的過程。
受到弱監督的圖像分割任務[8-9]的啟發,本文針對半監督三維網格數據的分類問題,在文獻[4]的全監督MeshNet網絡的基礎上,利用網格數據的結構相似性和幾何一致性,在一般的交叉熵損失函數中加入正則化損失。這一針對網格分類任務的正則化損失的設計,有效提高了網格分類的準確率。
三維形狀的網格數據包括頂點、邊和面,邊由2個頂點確定,封閉的邊組成面。文獻[4]將面看作最小處理單元,并將面的特征分為空間特征和結構特征。空間特征用三角形的中心點坐標表示;結構特征包括三角形中心點到3個頂點的角向量、三角形的單位法向量和三角形鄰域面的索引,如圖1所示。

圖1 三角面的各種特征
文獻[4]是在全監督的情況下對數據集進行分類,本文針對標簽數據不足的半監督情況,增加正則化損失,提高分類準確率。為了測試本文提出的正則化損失在不同標注數據比例下的效率,對10%、30%、50%、70%、90%的標注數據均進行了實驗。實驗結果表明,增加的正則化損失可使在各種標注比例的數據集上訓練所得的模型獲得更高的分類準確率。
本文采用MeshNet網絡,網絡架構如圖2所示。

圖2 MeshNet網絡架構
網絡的輸入是三角面相關的一系列初始值,如三角形中心點坐標、單位法向量、角向量、鄰域面索引(圖1)。經過空間描述符模塊和結構描述符模塊產生初始的空間特征和結構特征。隨后這些特征與鄰域面索引被聚合到網格卷積模塊,并輸入到一個池化函數中,輸出用于后續任務的全局特征。
與空間位置相關的初始值是中心點坐標。在空間描述符模塊中,對每一個中心點坐標簡單地應用一個共享的多層感知器,輸出初始的空間特征,如圖3所示。

圖3 空間描述符模塊
結構描述符模塊比較復雜,包括面的旋轉卷積和核相關操作。面旋轉卷積(face rotation convolution, FRC)考慮面的形狀信息,獲取的是面的內部結構,而面核相關(face kernel correlation, FKC)考慮面的周圍信息,獲取的是面的外部結構。
FRC模塊以面的角向量作為輸入,假設面的角向量分別為v、v2和v3,則FRC模塊的輸出定義如下:
(1)
其中,f(·,·):R3×R3→RK1和g(·):RK1→RK2是由待學習的權值形成的函數,K1、K2分別表示函數f(·,·)和g(·)輸出的維度。
FKC模塊將面的單位法向量和鄰域面索引作為輸入,計算面和可學習的核之間的相關性。第i個面和第k個核之間的核相關定義如下:
(2)
其中:|Ni|為第i個面和它的鄰域面的法向集合的元素個數;|Mk|為第k個核中法向集合的元素個數;核函數Kσ(·,·):R3×R3→R度量2個向量的親和度,實驗選用高斯核函數。核相關可以挖掘網格中的局部結構[10-11]。
網格卷積模塊包括空間特征與結構特征的聯合部分和結構特征與鄰域特征的聚合部分。空間特征與結構特征的聯合是將它們串聯起來并使用1個多層感知器來生成新的特征。結構特征與鄰域特征的聚合是先將結構特征與3個鄰域面特征分別串聯,并經過1個共享的多層感知器處理,再對結果應用最大池化得到新的特征。
深度學習中,正則化項有防止過擬合、提高泛化能力的作用。當模型參數過多時,網絡會發生過擬合,即對訓練數據擬合得很好的模型通常無法很好地擬合測試數據。一般地,過于復雜的模型會引起過擬合,此時模型泛化能力比較低;相反,模型相對簡單時,模型擬合能力較低,而泛化能力相對較高。引入正則化項是利用人們對問題的認識和對解的估計的先驗知識。先驗知識增加了對模型的限制,可以降低模型的方差,提高模型的穩定性,但也會使模型的偏置增大。偏置與方差之間的權衡是機器學習的基本主題之一。
本文利用“特征相似的網格更加可能屬于同一類別”這樣的先驗知識提高分類準確率。網絡學習得到的特征向量包含網格可用于分類的各種結構特征和空間幾何特征,利用特征向量差值的L2范數的平方來度量不同網格之間的差異。正則化損失定義如下:
1‖yi-yj‖≥δexp(-‖fi-fj‖2)]
(3)
其中:y為預測的分類概率向量;f為網絡學到的網格特征向量;fi和fj分別表示從網絡模型得到的第i個和第j個網格的特征向量;yi和yj分別表示第i個和第j個網格的網絡預測輸出(屬于不同類別的概率向量);1‖yi-yj‖<δ、1‖yi-yj‖≥δ是指示函數,分別表示條件‖yi-yj‖<δ和‖yi-yj‖>δ為真時等于1,否則等于0;δ為區分是否屬于同一類別的閾值。
模型最終的損失函數如下:
l=D(y,g)+λR(y,f)
(4)
其中:D(y,g)為數據項,是預測結果y與真實標簽g之間的交叉熵損失;R(y,f)為式(3)定義的正則化項;λ為平衡因子,用來平衡數據項和正則化項,λ越大,正則化項的作用越大,不同的λ值會導致不同的分類結果。根據經驗,實驗中設置λ=5×10-6。
本文模型使用的數據集來自文獻[1]的ModelNet40數據集,數據集包括來自40個類別的12 311個網格模型,其中9 843個用于訓練,2 468個用于測試。為了統一輸入數據格式,每個網格被簡化或擴充為1 024個面的網格,再被平移到網格的幾何中心并歸一化到單位球內。訓練過程中,通過一個均值為0、標準差為0.01的高斯噪聲抖動頂點位置來增強數據。
模型訓練采用的優化算法為隨機梯度下降法,初始學習率為0.01,動量為0.9,學習率的衰減率為0.000 5。設置最大epoch次數為150,批大小為64。
本文實驗在Python3.6,Intel(R) Core(TM) i9-9900K CPU @3.60 GHz×16, RAM 32 GiB和Nvidia RTX 2080Ti GPU環境上運行的。
關于分類的數值指標,本文選用常見的準確率(accuracy)和平均精度均值(mean average precision,mAP)。
首先引入4個符號:
TP:預測正確的正例樣本個數;
TN:預測正確的負例樣本個數;
FP:標簽為負例,被錯分為正例的樣本個數;
FN:標簽為正例,被錯分為負例的樣本個數。
準確率(A)是正確分類(即預測與標簽一致)的樣本數與樣本總數之比。對于某一類別,計算公式如下:
(5)
其中:分子是預測正確的樣本數,包括預測正確的正樣本數TP和預測正確的負樣本數TN;分母為樣本總數,包括預測正確的樣本數(TP+TN)和預測錯誤的樣本數(FP+FN)。
平均精度均值(用mAP表示)指標需要先定義查準率和召回率:
P=TP/TP+FP
(6)
R=TP/TP+FN
(7)
其中:P為查準率(precision),表示真實的正例占預測為正例的樣本比例,它針對預測為正例的結果;R為召回率(recall),表示被正確預測的正例占總正例的比例,它針對正例標簽的樣本。
平均精度(average precision,AP)的定義如下:

(8)
其中,P(R)為系統在召回率為R時的查準率。
因為實驗中的樣本一般為離散量,所以求解AP的積分一般用離散求和形式替代,具體表達式為:
(9)

mAP可表示K個類別的AP均值或K次查詢的AP均值,定義如下:
(10)
實驗中,將本文方法與以往有代表性的方法作對比,結果見表1所列。本文方法使用了與MeshNet相同的實驗參數設置,其他對比方法沿用了其論文中最高性能的參數設置,表1中的數據有些直接摘自其發表的論文。由于MeshNet網絡架構充分利用了網格的空間特征和結構特征,加上精心設計的先驗損失,本文所提的分類方法在全監督分類性能上比以往方法都有所提升,既遠遠超出傳統的基于網格的SPH方法[12]和基于多視圖的LFD方法[13],又能與基于體素的3DShapeNets[1]、基于點云的PointNet[2]、基于多視圖的MVCNN[3]和基于網格的MeshNet[4]等深度學習的方法相媲美。

表1 ModelNet40數據集上的分類性能比較 %
為進一步驗證所提的正則化損失的有效性,本文對ModelNet40數據集選擇不同的標注比例進行半監督實驗,實驗結果的2種數值指標分別見表2和表3所列。

表2 ModelNet40數據集上半監督分類的準確率 %

表3 ModelNet40數據集上半監督分類的mAP指標 %
同時,表2和表3也給出了消融實驗的結果用以對比。從表2和表3可以看出,增加的正則化項在不同比例的標注數據下都提高了分類準確率。
本文針對半監督三維網格數據的分類問題提出一種基于正則化損失的MeshNet半監督分類方法,利用數據的結構相似性和幾何相似性提高了分類準確率,多種量化指標都優于僅用交叉熵損失的分類。本文所提的分類方法不僅適用于網格分類問題,而且在網格分割、網格去噪、圖像處理、語音處理等領域均可以使用。在后續的工作中,將探討超參數的設定,如式(3)中δ的選取,并探索設計更好的與任務相適應的先驗項來提高網絡性能。