何瑞函 ,蔡 勇 ,張建生
(1.西南科技大學 制造科學與工程學院,四川 綿陽 621010;2.制造過程測試技術省部共建教育部重點實驗室,四川 綿陽 621010)
隨著激光掃描技術的發展,點云作為最能表現物體三維特征的數據深受研究者熱愛。深度學習、卷積神經網絡(Convolutional Neural Network,CNN)[1-2]近幾年引領計算機視覺領域的研究趨勢,并且CNN 網絡在二維圖像分類與識別上顯得高效。點云在空間中的無序性、旋轉不變性、非結構化數據,導致其不能直接作為CNN 網絡的輸入[3]。因此,使用深度學習對點云進行研究的方法有3 種:多視圖[4]、體素法[5]、直接對點云[6-7]。
基于二維多視角3D 識別的方法,本文通過優化采集數據集的方式提升CNN 神經網絡[8]的分類效果。本文對點云模型進行不同視角投影,得到多組2D 圖像數據集。首先用多個VGG16 卷積模型[9-10]提取單獨視角數據集,得到多個映射了圖像特征的卷積神經網絡模型;然后將多個包含特征的VGG16 模塊加上自定義層后“并聯”連接分類層作為分析網絡模型,混合視角圖像數據集作為網絡輸入;最后通過分析多個特征提取模塊的權重,優化多視角圖像的采集密度,提升二維多視角3D 識別效率,即分類效果。
文獻[4]提出的多視角卷積神經網絡(Multi-View CNN,MVCNN)將物體的三維數據通過多視角的“觀察”得到二維圖像,再將二維圖像作為輸入數據帶入傳統的二維圖像卷積網絡中進行訓練。相比于一些直接用三維數據訓練,所用的二維圖像卷積網絡非常成熟,其訓練效果還能超過大量三維數據訓練的結果。文獻[5]的體素法的核心是基于三維數據的“立體柵格化”,將點云數據表示為30×30×30 大小的“立體柵格”,通過將空間中的點云劃分為體素,用體素來表示三維物體,然后再對空間中的體素進行三維卷積。其卷積類似二維圖像深度學習的卷積神經網絡,所以計算在空間和時間上都很復雜。文獻[6]直接將三維點云放入網絡進行訓練,基本思想是對輸入點云每個點的空間編碼進行學習。
多視圖方法最大化利用了CNN 的優點,文獻[4]中提出MVCNN 模型最有代表性。作者指出使用二維圖像表示三維數據會丟失三維特征,為了減少特征的丟失,用多張不同角度的二維圖像來代替三維模型。盡管將三維模型轉為二維圖像的這種方式很巧妙,但也存在未知因素,例如:是否某種視角的圖像最重要,或者是否有某種圖像包含了主要的特征信息。在文獻[4]中,作者尚未闡述這些問題,因此本文將針對此問題進行分析。
觀察三維物體有幾種典型的視角,即從正上方俯視、斜上方俯視和側面側視,本文通過使用Blender 軟件在空間中設置虛擬相機對ModelNet10 數據集的點云模型(.off)依次進行“拍照”提取2D 圖像,相機工作時指向3D網格數據的中心。
ModelNet10 為標記朝向的ModelNet[11]數據集子集,共10 類,訓練集共有3 991 個點云文件,測試集908 個點云文件,本文數據集對ModelNet10 所有點云文件進行采集。
如圖1 所示,每個虛擬相機分別以α=0°,45°,90°不同角度繞Z 軸每隔36°生成一個2D 視角渲染圖,每一個視角三維模型獲得10 個圖像,一共得到3 個子數據集Data_0、Data_45、Data_90。子數據集用單獨 視角的10 張二維圖像表示一個點云。3 個子數據集微調3 個VGG16 卷積神經網絡,分別儲存不同α 角度投影圖像的特征信息。將3 個子數據集打包為混合數據集(Data_mix),作為調試模型的數據集,用共計30(即3×10)張二維圖像表示一個點云模型。

圖1 數據集采集
通過對Blender 軟件生成2D 圖像多次對比,最終在軟件渲染中選擇快照材質光照,顏色為紋理,像素為300×300。用“resize_image_with_crop_or_pad”對數據集預處理,將圖片裁剪為224×224 的圖像。
本文研究目的為,通過改變30 張二維圖像在3 個不同視角中的采集密度,提高神經網絡對點云的分類準確率。
以文獻[9]中VGG16 模型作為基礎網絡模型,包含13個卷積層、3 個全連接層,一共16(即13+3)層。在本文中使用到的包含13 個卷積層、5 個池化層和ReLU 激活函數。
通過卷積層、池化層和激活函數等操作,將原始數據集的特征信息映射到隱含層,再通過全連接層將隱含層的特征信息映射到樣本標記空間進行分類[12]。本文用Imagenet 數據集權重作為VGG16 的預訓練參數,再使用采集的數據集微調,最后用Sotfmax 回歸算法與交叉熵代價函數配合調節網絡中的權重等參數[13]。
以VGG16 特征提取網絡為基礎,提取圖像特征信息,將特征信息保存在VGG16 的卷積層中。模型結構如圖2(a)所示,采集的3D 模型子數據集輸入到隱含層VGG16(除全連接層),圖中的全連接層為分類空間,最后兩層施加權重正則化防止網絡過擬合。使用單視角投影數據集對VGG16_α 模型進行微調,將單組視角2D 圖像的特征映射到VGG16_α 的卷積層空間,3D 模型子數據集圖像的特征信息儲存在該卷積層空間,本文稱之為特征匹配模塊。
圖2(b)中用混合角度數據集(Data_mix)作為特征分析模型(VGG16_dbg)的輸入;隱含層為特征匹配與調試空間,由3 個VGG16 卷積空間加上自定義層通過并聯的方式組成。3 個特征匹配模塊(VGG16_α)的權重等參數,通過遷移學習[14]的方式載入特征分析模型(VGG16_dbg)中。
自定義層(如圖2(c)所示)對每個特征匹配模塊的輸出上施以權重,在微調中評判每個特征匹配模塊的權重大小,神經元表達式形如下:

concatenate 層(如圖2(d)所示)將3 個1×10 的神經元連接為一個(1×30)的網絡層,如式(2)所示:

圖2 卷積網絡模型

最后與分類層相連。
為了使得自定義層中權重,與3 個特征匹配模塊在特征分析模型(VGG16_dbg)中的權重等價。將自定義層中權重初始值設置為相等(0 或1),3 個特征匹配模塊(VGG16_0、VGG16_45、VGG16_90)在初始工作時具有一樣條件,通過用“concatenate”連接層對自定義層的輸出進行拼接時,自定義層中的權重不會被其他層的激活函數、損失函數影響[15],自定義層中權重初始值設置為相等不會造成梯度消失、梯度爆炸或神經元輸出始終不變等問題[16]。
該實驗計算機環境為:Intel-酷睿 i7-9750H 的CPU,16 GB DDR4 內存,在Windows 10 64 位操作系統下使用GTX2060 6 GB 的GPU,使用TensorFlow 框架實現。
文中采用兩種評價標準,第一種為單張圖像分類準確度,第二種為點云投影集合分類準確度。其中,第二種方式在點云識別中更具有說服性,將投影集合中預測的最大類(label)作為預測結果。本文以第二種評價方式作為最主要的評價標準。
從表1 中可見,當相機與豎直方向夾角為45°時,二維投影識別效果最好,在圖1 中α=45°的圖像也具有明顯特征;相反α=0°視角投影圖像中包含較少特征,分類預測結果也是最差。

表1 不同視角數據集準確率比較
調試VGG16_dbg 模型共有313 個可訓練參數,包括3 個自定義層權重和分類層310 個參數。多次實驗發現,調試模型在第5 個epoch 時準確率達到峰值66%,避免引起過擬合,特征分析模型epoch=5。
從表2 中的平均權重發現w0的平均值最小,w45最大。α=45°視角的模型特征較為重要,按照權重的比例,對不同角度圖像的數量進行增減,通過計算得到每一個視角的投影數I,公式如下:

表2 分析模型中各視角卷積網絡的權重變化

式中,Iall為總投影數,為α視角特征匹配模塊的權重絕對值均值,為權重絕對值均值總和。
由式(3)得到視角0°、45°、90°的視圖分別為7、12、11 張,共30 張二維圖像。按照此數量優化本文的訓練集,最終ModelNet10 數據集在VGG16 網絡模型上識別準確率準約為93.6%,對比未優化的數據集約提高1.8%。表3 中,本實驗方法與其他網絡相比也達到了良好的分類準確率。

表3 本文方法與其他算法的分類準確率比較
本文優化3D 模型投影圖的采取方式,使VGG16 網絡模型對指定點云測試集的識別效果得到提升。構建特征網絡權重,分析不同視角3D 投影圖的特征在同一個CNN 網絡下的差異性,并根據權重比例優化數據集的采集密度,使得VGG16 網絡學習到3D 模型投影圖的更多特征。實驗結果證明,通過優化輸入數據采集可以使網絡模型學習到更多特征,達到更好的分類效果。