穆莉莉 單卓佳
(安徽理工大學機械工程學院 安徽淮南 232001)
近年來,隨著人工智能、機器視覺、神經網絡等信息科學技術的快速發展,3D傳感技術在自主駕駛、醫療、建筑和工業設計等行業越來越重要。由于神經網絡、卷積網絡在2D 圖像上的應用,將卷積網絡、神經網絡應用到3D數據引起了許多研究者的關注[1]。物體的三維表達方式有點云、網格、體素、多視覺圖像。點云數據是一種常用的三維數據,是由物體表面上很多點構成,具有xyz 坐標信息以及法向量等信息。相比體素網格數據,能夠將原始的幾何信息更好的保留在幾何空間中[2]。
在3D 數據進行深度學習時有多視角投影法、柵格化法等方法,多視角投影法是將三維數據經過多視角投影到二維圖像,通過2D卷積網絡處理數據,但在轉化過程中會導致三維空間信息的大量丟失。用柵格化法把三維空間劃分為柵格并轉化為體素,此方法能夠解決點云無序性問題,但會大大增加模型學習的難度[3?4]。為了避免三維數據作為神經網絡輸入層出現點云數據轉換問題,斯坦福大學Charles[5]等提出以原始點云數據為神經網絡輸入層的深度學習模型PointNet,PointNet 是3D 點云處理的開山之作,是直接輸入點云數據進行訓練的模型,其模型通過對稱函數解決點云無序性問題,通過多層感知機(MLP)獲取全局特征,獲得較好的識別效果及分割精度[6]。同時,卷積神經網絡中選擇合適的優化器與激活函數對三維點云部件分割精度至關重要。針對深度神經網絡設置不同的參數對分割精度的影響,文章提出在PointNet模型的基礎上,考慮影響三維點云分割精度的各種因素,其因素包括卷積網絡的構建、激活函數與優化器的選取等,通過權衡各種因素對分割精確的影響從而達到最佳精確度[7]。
(一)卷積網絡激活函數的選擇。激活函數是神經網絡中的重要部分,在神經網絡中,每一層的輸出承接上一層輸入的線性變換,激活函數可以使神經網絡加入非線性因素,提高網絡對模型的表達能力,使得神經網絡能夠解決更加復雜的問題。神經網絡中經常使用的激活函數有Sigmoid、ReLU、Tanh等函數。
(二)優化器的選擇。在深度學習中,是以損失函數作為神經網絡性能評判指標。神經網絡中每一層有許多權重,其權重決定損失的大小和網絡的輸出,可以通過減小損失的方式更新權重,提高神經網絡的性能。優化器可以修改權重和學習率來最小化網絡損失,從而優化網絡。常用的優化器有Adam、SGD、SGD+Momentum、Nadam、Adadelta 等。選擇不同的優化器對點云分割優化效果極其重要[8]。
(一)PointNet 模型。采用PointNet 神經網絡模型對ShapeNet 數據集的飛機模型進行三維點云部件分割。該模型的輸入是由n個(n×3)三維點云數據構成,首先通過T?Net(3×3)網絡模型對輸入的點云數據進行規范化處理,解決三維點云數據的平移不變性、旋轉不變性、放縮不變性問題。通過點云變化矩陣操作,多層感知機MLP(3,64,128)進行升維操作提取數據的空間特征,上升為128維的特征向量。再通過T?Net(128×128)網絡模型對輸入特征進行規范化處理。然后利用多層感知機MLP(128,512,2048)進行升維處理,同時使用對稱函數進行最大池化獲得全局特征,使得多層感知機中的64、128、128、512 維特征向量與全局特征向量完成拼接,構成n×2880 矩陣。最后通過多層感知機MLP(2880,128)和MLP(128,5)進行降維處理得到n×5 的特征矩陣,完成5 個部分特征分類[9]。PointNet神經網絡模型的框圖如圖1所示。

圖1 PointNet神經網絡模型
(二)多層感知機。MLP多層感知機是由輸入層、隱藏層、輸出層三層組成的多層結構,其隱藏層也是多層結構,每一層中有很多的節點,該節點可以實現給定輸入的激活函數。在做多層結構中,層與層之間的節點是密集連接,可以相互通信[10]。感知機的目的是對輸入進行加權處理,突出輸入數據的特征,其數學模型設為輸入層為{x1,x2,???,xn} ,隱藏層的輸出公式如下:
其中W1為權重值,b1為偏置值,三層感知機的數學模型如下:
其中函數G為激勵函數,激勵函數可以克服梯度消失的問題和加快訓練速度。在PointNet 模型中通過采用MLP 進行特征提取和特征轉換,解決點云無序性問題。
(三)T?net 網絡模型。為了解決點云數據旋轉不變性、平移不變性、放縮不變性,PiontNet模型引入了T?Net網絡模型[11]。點云數據的旋轉不變性、平移不變性、放縮不變性是指點云數據代表的物體通過旋轉、平移、放縮導致所有的(x,y,z)坐標發生變化,但還能代表同一物體,在PointNet模型中使用了T?Net(3×3)和T?Ne(t128×128)網絡模型。T?Ne(t3×3)網絡模型的作用是對輸入點云數據處理,該網絡模型通過三次卷積操作,其三次卷積中的filter(過濾器)分別采用64、128、1024,將3 維輸入升到1024維,再進行最大池化操作,防止過擬合,提高計算效率,最后通過MLP(512,256,3)降回3 維數據。而T?Net(128×128)網絡模型作用是對輸入的特征進行處理,其卷積操作中的filter 分別采用128,512,2048,同樣使用最大池化,之后再通過MLP降維到64維[12]。T?Net網絡模型的框圖如圖2、圖3所示。

圖2 T-Net(3×3)網絡模型

圖3 T-Net(6×6)網絡模型
(四)三維點云最大池化。最大池化可以保留數據的特征,減少神經網絡訓練的參數,從而使得訓練時間減小。在本文使用的PointNet模型中,輸入的點云數據從3維到2048維后,需要通過最大池化層對n個點進行融合處理得到全局特征。最大池化操作會有效地對輸入數據進行下采樣,提高機選效率。最大池化滿足梯度之和不變的原則,把patch 中的最大值傳遞給接下來的一層[13]。雖然丟失一部分數據信息,但減小了訓練與測試的計算量,防止數據參數量過大出現過擬合情況,提高了訓練效率。三維點云最大池化操作如圖4所示。

圖4 三維點云最大池化操作圖
(一)點云分割實驗配置。分割實驗采用ShapeNet數據集,該數據集包含4045個飛機模型,每一個飛機模型都是由三維點云數據組成。實驗將數據集中百分之八十的飛機模型作為訓練集,剩余百分之二十的飛機模型作為測試集,然后對訓練結果進行測試。在訓練時,從每個飛機模型中隨機抽取1024個點進行訓練與測試。實驗結果將每個飛機模型分割為“wing”,“bady”,“tail”,“engine”與“空白”5個部分,分割實驗步驟為:
1)啟動Python,下載ShapeNet數據集;
2)構建好PointNet 模型,設置模型參數,學習率設置為0.001,batchsize設置為32,設置不同的激活函數和優化器,開始訓練模型對ShapeNet進行分割;
3)評估分割的精確率,查看分割實驗結果。
(二)模型參數分析。
1.激活函數的選擇。在PointNet 模型的卷積網絡中,選擇Sigmoid 激活函數和ReLU 激活函數做對比實驗。Sigmiod 函數用于隱藏層的輸出,輸出在(0,1)之間,其函數公式為:
其中x為輸入值,?(x)為輸出值。
ReLU函數在輸入小于或等于0時,輸出為0;當輸入大于0時,輸出等于輸入,ReLU函數公式為:
其中,x為函數的輸入,h(x)為函數的輸出。
ReLU函數具有很好的稀疏性,有一半的值未被激活,可以很好地避免過擬合,而Sigmiod函數不具有稀疏性。此外,相對于Sigmiod 函數的兩端飽和,ReLU 函數只有一端飽和,緩解梯度消失問題,加速了梯度下降的收斂速度[14]。選擇ReLU 函數與Sigmiod函數兩種不同的激活函數進行不同輪數的訓練與測試,由表1所知,ReLU函數相對于Sigmiod函數能夠達到較高的精確度。

表1 激活函數測試精確度對比
2.優化器的選擇。選擇Adam優化器、SGD優化器與SGD+Momentum 優化器做對比實驗,Momentum 參數選擇0.9。SGD(隨機梯度下降)的表達式如下:
其中W為更新的權重,μ為學習率,為損失函數關于權重的梯度。SGD+Momentum 動量梯度下降法基本迭代表達式如下:
其中ε> 0 為每次迭代的學習率,μ∈[ 0,1 ],?f(θt)是目標函數,為θt的梯度曲線,v為矢量速度。
Adam優化器結合了Momentum和AdaGrad的方法,對梯度的一階矩估計和二階矩估計進行綜合考慮,計算出步長。使用三種不同的優化器進行點云分割,結果對比如表2所示。由表2可知,SGD優化器相較于Adam優化器和SGD+Momentum優化器能夠快速穩定地達到更高的精確度。在選擇SGD優化器與RuLU激活函數下進行60輪訓練與測試,其訓練測試精確度、損失率隨訓練輪數的折線圖如圖5、圖6所示,三維點云部件分割效果如圖7所示。

表2 優化器對比

圖5 準確率和驗證準確率

圖6 損失率和驗證損失率

圖7 三維點云部件分割效果圖
為了進一步提高三維點云物體部件分割的精度,本文通過對PointNet神經網絡模型構建的調整,激活函數的選擇以及優化器的選擇,并在ShapeNet 數據集上進行多輪次的訓練與測試,得出結果并進行對比。由對比結果可以得出,該模型在選擇Relu激活函數和SGD優化器時會得到較高的精確度,訓練精確度最高可達89.09%,測試精確度最高可達88.39%。