張 溯,楊 軍
1(蘭州交通大學 自動化與電氣工程學院,蘭州 730070) 2(蘭州交通大學 電子與信息工程學院,蘭州 730070)
近年來,隨著Kinect、RealSense和Tango等小型三維傳感器的出現,降低了人們獲取三維模型的門檻,對日益增長的三維模型數據進行高效地分析和處理成為計算機視覺領域的研究熱點.在深度學習領域中,VGGNet[1]、GoogleNet[2]、ResNet[3]等網絡及其衍生網絡[4-7]的不斷提出,使卷積神經網絡(Convolutional Neural Network,CNN)在解決二維圖像的分類識別、語義分割等問題時取得了顯著的成效,研究者開始關注如何將CNN在二維圖像上的研究成果應用到三維模型的分析與處理上,如三維目標的檢測與識別、協同一致分割等.
三維點云模型因具有良好的形狀表達能力,在機器人、自動駕駛、場景重建等領域有著廣泛的應用.已有的研究大多采用多視圖[8-10]或體素化[11-15]的方法處理點云數據,并將其輸入到卷積神經網絡中進行分析,然而,經過多視圖投影處理的模型數據會在一定程度上丟失原模型的空間結構信息,而經過體素化處理的點云數據,分辨率明顯降低,直接影響模型的分析處理結果,于是研究者開始嘗試直接將點云數據輸入到卷積神經網絡中進行分析.利用深度學習網絡直接處理點云數據面臨著3方面挑戰:1)點云模型由三維空間中的點組成,在幾何結構上具有無序性,而卷積操作對于輸入數據的順序比較敏感;2)當點云模型經過剛性變換后,如平移或旋轉,點的三維坐標會發生改變,這要求卷積網絡要對剛性變換的模型具有不變性;3)點云模型具有隱含的空間幾何信息,因此深度學習網絡要有捕捉空間幾何信息的能力.
文獻[16]提出的PointNet使用對稱函數解決點云數據的無序性對卷積操作的影響,將原始點云模型直接作為深度學習網絡輸入,通過提取模型的全局特征,完成三維模型分類和分割任務.隨后提出的PointNet++[17]對點云模型分層采樣,能夠獲取模型的局部特征,得到更好的分類結果.而這些方法僅僅將每個點的三維坐標作為網絡的輸入,并未考慮模型自身空間結構信息.為此,本文提出一種新的三維點云模型分類框架,充分考慮模型的空間結構信息,構建能夠提取表征三維模型空間結構信息的轉換網絡,以獲得更好的模型分類結果.主要創新點及貢獻有:1)構建轉換網絡提取模型的空間結構信息,并通過多層感知機(Multilayer Perceptron,MLP)映射為特征權重;2)構建模型分類網絡,將網絡提取的淺層特征與特征權重相乘,輸出能夠表征模型空間結構的高維特征,并通過反向傳播算法更新特征權重,使分類網絡能夠學習模型的空間結構信息.
研究三維模型的分類識別、分割等問題的核心在于模型特征的選擇和處理.根據模型特征的提取方式,三維模型分類識別的方法通常分為兩類:人工設計特征描述符和深度學習方法提取特征描述符.
人工設計特征描述符的方法通常基于三維模型特定性質的先驗知識,其典型代表有波核簽名[18](Wave Kernel Signature,WKS)、熱核簽名[19](Heat Kernel Signature,HKS)、尺度不變特征變換[20](Scale Invariant Feature Transform,SFIT)、旋轉圖像法[21](Spin Image)、點特征直方圖[22](Point Feature Histograms,PFH)、方向直方圖簽名[23](Signature of Histograms of OrienTations,SHOT)等.但人工設計的特征描述符僅從特定角度出發,不能包含模型的所有特征和屬性,無法精確、完備地表征模型,普適性較差,難以推廣至不同的研究問題.
深度學習已廣泛應用于二維圖像的分析中,并逐漸向三維模型的研究領域延伸.早期研究中深度學習作為從低級特征學習高級特征的工具.Shu等人[24]提出的無監督形狀分割方法,首先對輸入模型進行分解,計算局部特征,然后使用自動編碼器學習高級特征并進行模型分割.Guo等人[25]計算模型表面每個三角形的不同尺度局部特征,通過卷積神經網絡對模型及其部件的類別進行預測,并標注標簽.盡管這些算法使用深度學習從模型低級特征中學習高級特征,但仍舊無法擺脫低級特征通過人工設計所帶來的局限性,并未充分發揮深度學習的潛力.
之后的研究方法著手將三維數據轉換成規則的表示形式,如體素化和多視圖.VoxNet[13]及其衍生網絡[26,27]將三維模型轉化為體素模型,使用卷積神經網絡得到分類或分割結果.然而,體素化會導致部分模型信息丟失,體素分辨率的增加使內存占用和計算消耗過大.KD網絡(KD-Net)[28]和基于八叉樹的卷積神經網絡(Octree-based Convolutional Neural Networks,O-CNN)[29,30]使用樹形結構劃分模型的體素表示.該類方法利用樹形結構可直接尋址的優勢,計算時跳過空單元,集中處理信息單元,降低了計算復雜度,然而網絡性能仍依賴于體素分辨率,難以處理高分辨率的三維模型.
Su等人[10]首次將多視圖卷積神經網絡(Multi-view Convolutional Neural Networks,MV-CNN)引入三維模型識別.首先將三維模型投影到多個視圖中,并使用基于二維圖像的卷積神經網絡處理視圖,然后將從視圖中提取的特征通過最大池化層進行組合,最終通過網絡來預測模型標簽.Le等人[31]提出一種多視圖遞歸神經網絡(Multi-view Recurrent Neural Networks,MV-RNN),將模型的各個視圖轉化為時間序列,并使用遞歸神經網絡進行處理.盡管基于多視圖的方法產生不錯的分類和識別結果,但它仍存在局限性:1)將三維模型投影至二維空間,得到的每個視圖只包含部分信息,在視圖之間進行關聯不容易;2)多視圖方法僅限于對模型表面建模,不能捕捉其內部結構.
Qi等人提出的PointNet[16]使得深度學習與點云數據緊密結合.該網絡通過在模型的每個點上獨立提取特征,并使用最大池化將其聚合為全局特征,然而該方法忽略了模型的局部結構信息.為了解決這一問題,Qi等人又提出了PointNet++[17],該網絡將PointNet分層應用于點云的多個子集,以獲得模型的局部信息.此外,Su等人[32]提出的稀疏網格網絡(Sparse Lattice Networks,SPLATNet)將輸入點映射到稀疏網格上,使用雙邊卷積進行處理.文獻[33]提出的PCNN將點云上的函數擴展為外圍空間的連續體積函數,將點云映射到高維空間,以方便經典CNN的應用,但仍會導致模型結構信息的丟失.
綜上所述,目前主流算法趨向于直接處理點云模型,不再將模型轉換為投影視圖或體素表示.但在提取特征的過程中,仍然將模型上的點獨立處理,導致無法完整地捕獲模型的空間結構信息,所提取的特征表征模型形狀的能力較差.
三維點云模型由離散點組成,每個點具有不同的屬性,如三維坐標、顏色、法向量等.類比二維圖像,當三維模型上所有的點缺失顏色、法向量等屬性,僅保留坐標信息時,外界仍能獲取模型所表達的形狀含義.因此,點集所形成的空間結構是三維模型向外界傳遞信息的關鍵,點與點之間的位置關系包含著模型的空間結構信息,其可以表達模型的形狀含義.通常,可以使用歐氏距離、模型表面的測地距離、空間向量、空間坐標等幾何特性表示離散點之間的空間結構信息.
由于計算測地距離要先獲得模型的形狀表示,過程過于復雜,并且使用過多的幾何特性會重復表示相同的空間結構,加大網絡的計算難度,本文使用歐氏距離和三維坐標表示點集N的空間結構信息.定義空間結構信息gi,j如式(1)所示:
gi,j=[di,j,xi,yi,zi,xj,yj,zj]
(1)
其中,di,j為點pi,pj之間的歐氏距離,xi,yi,zi和xj,yj,zj分別為點pi和pj的三維坐標.
研究三維點云數據模型分類問題的一般過程是將三維模型上每個點的坐標作為輸入,提取其淺層特征,將其逐級映射為高維的特征表示,并將得到的高維特征聚合得到全局特征以完成三維模型分類任務.點pi的淺層特征fi通過映射得到高維特征Fi的過程如式(2)所示:
Fi=M(fi)=ai×fi
(2)
其中,M為映射過程,ai為特征權重.
神經網絡通過反向傳播算法學習權重ai,使網絡性能得到優化.但由于反向傳播時ai的梯度僅與pi相關,將點孤立地看待,并未考慮點與點之間的相互關系.若權重ai能夠學習空間結構信息gi,j的高維表示,將點pi與其它點相互連接,使得點pi的淺層特征fi通過映射M輸出能夠表示點之間空間結構信息的高維特征,可以獲取更好的分類結果.因此,使用ai,j替換ai,重新定義權重ai,j如式(3)所示:
ai,j=S(gi,j)
(3)
其中,S為獲得gi,j高維表示的映射,以此對點pi,pj之間的空間結構信息進行編碼.由于MLP具有強大的映射能力,所以采用MLP來實現映射S.權重ai,j通過映射S獲得點pi,pj間的高維結構信息,更新特征映射過程如式(4)所示:
Fi=M(fi)=ai,j×fi=S(gi,j)×fi
(4)
此時由于ai,j通過映射S學習點之間的空間結構信息gi,j,其梯度同時與點pi,pj相關,使得高維特征Fi具有點之間的結構信息,映射M具有捕捉空間結構信息的能力.
例如點pi關于pj的空間結構信息gi,j為[di,j,xi,yi,zi,xj,yj,zj],gi,j經過MLP逐層映射,輸出的ai,j為[a1,a2,a3,…,a64].這里映射S通過MLP提取gi,j的高維表示形式ai,j,以此編碼點pi,pj之間的空間結構信息.傳統的特征映射過程中,權重ai通過網絡初始隨機生成,反向傳播算法更新參數時ai的梯度僅與點pi相關.而ai,j為經過編碼的空間結構信息,同時與點pi,pj相關,將權重ai替換為ai,j,使得反向傳播算法更新參數時ai,j的梯度與點pi,pj同時相關,實現對點之間空間結構信息的學習過程.
圖1為本文構建的空間結構信息轉換網絡(Spatial Structure Information Transform Network,SSITNet)架構.首先將點集構建為以點po為球心,r為鄰域半徑的球形鄰域,點pi為鄰域內的任意點,在該鄰域內提取點pi關于球心po的空間結構信息go,i,輸入到MLP中,得到關于點pi的權重ao,i.球形鄰域的半徑r通過最遠點采樣算法(Farthest Point Sampling,FPS)確定,權重ao,i通過反向傳播算法更新.

圖1 空間結構信息轉換網絡Fig.1 Spatial structure information transform network
傳統CNN[1-7]通過分層不斷地使用卷積核掃描二維圖像上的像素并做內積操作,使得后面的特征圖感受野不斷擴大,同時每個像素包含的信息也越多.雖然卷積操作無法直接在三維模型上使用,但采用類似的思想,將三維點云模型以不同尺度劃分為若干點云子集,在每個點云子集上提取局部特征,再將其聚合獲得全局特征,可以同時保留局部和全局信息,得到良好的分類結果.

圖2 鄰域Nm的特征提取過程Fig.2 Feature extraction process of Nm
通過最遠點采樣和球查詢(Ball Query)實現三維模型的采樣分組過程,以獲得模型N的點云子集的球形鄰域N1,N2,…,Nm.在Nm中選定中心點po,提取鄰域點pi的空間結構信息g.圖2為構建的特征提取過程網絡,MLP是通過共享權重的卷積實現的,np是鄰域點pi的數量,提取點pi淺層特征的第1層卷積核大小是1×3×1,SSITNet第1層卷積核大小是1×7×1,之后的卷積核大小分別是1×1×64、1×1×128.SSITNet通過3層MLP得到含有空間結構信息的權重ao,i,其維度與點pi淺層特征fi的維度相等,權重ao,i與淺層特征fi經過映射M,使得輸出的特征Fi包含空間結構信息,再經過MLP映射,對每一個點提取1024維特征,經過最大池化(MaxPool)輸出該鄰域的1×1×1024的全局特征F.
基于構建的特征提取過程,將輸入模型采樣分組為多個尺度,逐層提取鄰域特征,并聚合為全局特征,以此提出一種基于空間結構信息的三維點云模型分類框架,如圖3所示.分組采樣層通過特征提取過程獲得各個鄰域的特征,再將各個鄰域的特征聚合為模型的全局特征傳入下一個分組采樣層,最終獲得模型1×1024的全局特征,再經過全連接層得到分類結果.

圖3 基于空間結構信息的三維點云模型分類框架Fig.3 Classification framework of 3D point cloud model based on spatial structure information
實驗采用ModelNet40數據集,其包含40個類別的CAD模型用于訓練和測試,其中訓練模型9843個,測試模型2468個.分類網絡框架采用Python語言編寫,Pytorch框架實現,Adam優化算法[34]對參數進行訓練,設置Batch Size 為 32,初始學習率為 0.001,動量為 0.9,Dropout 丟棄率為 0.5,初始權重設為高斯分布的隨機數.
使用分類準確度Accuracy將本文算法與其他針對點云模型的分類方法進行定量比較,其計算公式如式(5)所示:
(5)
其中,N為測試集的模型數量,TN為測試集中分類正確的模型數量.

表1 不同算法在ModelNet40數據集上的分類準確率Table 1 Recognition accuracy of different algorithms on ModelNet40 dataset
從表1的實驗結果可看出,本文方法在ModelNet40數據集上分類準確率明顯提高.基于空間結構信息的分類框架將模型分組采樣,逐層提取特征,獲得模型的局部信息和全局信息,比PointNet[16]分類準確率提高了3.6%.在分層提取特征的基礎上,將空間結構信息融入網絡,使得權重具有表征空間結構信息的能力,與PointNet++[17],PCNN[33]和KCNet[35]等算法相比,分類準確率均有提高.相比Kd-Net[28]使用大規模點集作為輸入,本文方法僅使用1024個點,在分類準確率上提高了1%.當PointNet++[17]使用5000個點和法向量作為輸入時,分類準確率為91.9%,而本文算法比其提高了0.9%.
本文還對不同采樣分組尺度以及輸入點數對網絡性能的影響進行了實驗探究,結果如表2所示.當采樣分組尺度提升,即增加采樣分組層數,得到模型的點云子集數量增多,點云子集中的點數減少,使得局部結構更加緊湊,SSITNet網絡獲得模型的局部信息更加細致,對模型的表征能力逐漸增強,分類準確率也隨之提升.文中采用的采樣分組尺度為3層.當模型的點數增加,模型的空間結構未發生明顯變化,計算時會得到重復的空間結構信息,對模型空間結構的表征能力并無提升,所以輸入點數的增多對于網絡分類準確率的影響較小.

表2 不同分組采樣尺度和輸入點數對網絡分類性能的影響Table 2 Influence of of different sampling scales and input point number on classification performance of the network

表3 不同MLP層數對網絡分類準確率的影響Table 3 Influence of different number of MLP layers on classification accuracy of the network
本文繼續探究了SSITNet結構中MLP層數和空間結構信息gi,j對分類準確率的影響.表3是SSITNet中MLP層數對分類網絡框架性能的影響,當空間結構信息的高維映射S通過3層MLP實現時,分類準確度最高.其原因是兩層MLP對于空間結構信息的擬合程度不足,而4層MLP有可能產生過擬合現象,從而導致準確率下降.空間結構信息gi,j的定義對于權重ai,j有著直接影響,如表4所示.僅使用三維歐氏距離定義空間結構信息gi,j,獲得92.5%的分類準確率,但將對應點的坐標加入空間結構信息gi,j,準確率有所提升,表明更為詳細的空間結構信息使網絡對模型的描述能力有所提高.

表4 不同的空間結構信息對網絡分類準確率的影響Table 4 Influence of different spatial structure information on classification accuracy of the network
本文提出一種能夠提取三維模型空間結構信息的SSITNet,并以此實現三維點云模型的分類.首先對三維模型分組采樣,得到若干球形鄰域,計算每個鄰域內點的淺層特征,并使用SSITNet將空間結構信息轉換為特征權重,獲得模型的淺層特征,再經過高維映射和聚合得到球形鄰域的全局特征,在3個尺度內逐層迭代,最終輸出分類結果.該框架能夠有效地表征模型的局部和全局信息,并對于空間結構有著良好的刻畫能力,比主流算法在分類準確率上都有所提升.然而對于模型空間結構信息的表征局限于歐氏距離,模型表面的測地距離有更好的刻畫能力,但測地距離難以簡單高效地計算,下一步的工作將模型的測地距離與SSITNet相結合,以期取得更好的分類結果.