高 焱,熊風光
(中北大學 大數據學院,山西 太原 030051)
在日常生活中視覺搜索幾乎無處不在,人體在觀察物體時通常不會第一時間觀察全局,而是先觀察全局中重要的和與重要的信息相關的部分。同樣,在點云深度學習中如果將主要的計算數據集中在與檢測的類別有關的點上,而與檢測的類別無關的點不納入處理范圍,則可以在很大程度上減少計算量。因此,如何構建深度學習網絡,并高效尋找與檢測物體高度相關的點云就變得至關重要。
近年來,深度學習方法與卷積神經網絡在圖像特征提取方面取得重大成就[1-7]。因而,緊跟計算機視覺的大趨勢,深度學習逐漸取代手動輸入特征表示點云的方法成為點云處理的主導方法。然而,與圖像相比,三維點云無序,無結構,密度不均,因此如何用深度學習對其進行分析處理仍然是難題之一。Simon等人[8]提出了Complex-YOLO,Wu等人[9]提出了SqueezeSeg,Chen Xiaozhi等人[10]提出了一種自動駕駛的三維物體檢測方法,三種方法的共同點是在二維中使用卷積,將卷積結果通過函數回歸處理得到物體三維邊界框預測,其中前兩種的二維輸入獲取方式是三維數據在二維某方向上的投射,第三種的二維輸入方式是二維圖片。此種先將三維轉換成為二維的方法的缺點在于高度信息的缺失和最終結果對數據誤差非常敏感。針對二維圖像的高度信息缺失問題,后來的方法中加入了無需將三維數據進行降維的點云數據處理方法,例如Martin等人[11]提出了一種快速高效利用卷積進行三維點云的物體檢測方法,Daniel Maturana等人[12]提出了Voxnet。這兩種方法的共同點是將點云轉換成為立方體形式進行卷積計算,在上述三維物體檢測方法的基礎上很大程度解決了高度信息缺失問題,但缺點是計算量會隨著數據量的增大而呈指數級增長。對此,Charles Qi博士等人[13]提出了PointNet深度學習框架,該框架無需轉換點云格式,直接處理點云,且在物體分類和場景分割等任務上表現良好。
此外,在三維物體檢測方面也進行了相關研究。Prawira等人[14]提出了基于立體圖像的三維物體檢測方法,Su-A Kim等人[15]提出了基于點特征直方圖的三維物體檢測算法,Ahmed Fawzy Elaraby等人[16]提出了基于Kinect的運用增強深度估計算法的三維物體檢測方法,以上研究均從不同角度在三維物體檢測方面取得了一定進展,然而將深度學習框架運用到點云大型場景中仍然難度很大。Minh等以二維圖像作為輸入,使用RNN(recurrent neural network,循環神經網絡),在每次回溯迭代過程中重復使用同一塊被剪裁區域的不同分辨率圖像,達到圖像內的物體檢測隨著每次的迭代更新趨于完全準確的效果[17-18]。然而,由于是對圖片進行裁剪操作,這種通過迭代更新檢測結果的網絡無法進行反向傳播過程,進而無法對深度網絡進行訓練。為了更好地解決該問題,Jaderberg等人[19]提出了STN網絡,在該網絡中對輸入圖像進行空間仿射線性變換和對周圍鄰域像素的圖像灰度值進行插值函數取樣處理,從而得到輸出的特征圖像,而且該網絡由于可微的灰度插值取樣操作而可以進行反向傳播訓練。在上述文獻的基礎上,Sφren Kaae Sφnderby等人[20]將RNN與STN進行結合,用于二維圖像的檢測中。為了解決RNN的梯度爆炸和梯度急速下降與梯度消失問題,Bernardino等人[21]將設置有門控狀態的長短期記憶網絡LSTM(long short-term memory,LSTM,RNN的一種特殊形式)運用到了深度學習在二維圖像的物體檢測中,實現了LSTM的卷積網絡形式,進一步提高了二維圖像的物體檢測精度。
該文提出基于PointNet的深度學習網絡。該網絡僅用于基于LIDAR數據的三維物體檢測,旨在用相對較低的計算成本和網絡規模較小的框架結構獲得實時、良好的三維物體檢測效果。為此,該文引入視覺注意力機制,對三維數據應用的重要分支—三維物體檢測進行研究,旨在通過對與檢測物體相關的點云的預測邊界框進行連續更新獲得良好的運行效果。主要工作如下:
(1)提出了基于PointNet的深度學習網絡,該網絡無需轉換點云格式,直接對原始三維點云進行處理,對物體的整體形狀進行學習,是端到端的可訓練的網絡框架結構。
(2)對三維物體檢測進行研究,將人體視覺機制引入到用于三維多物體檢測的點云深度學習框架中,引入該機制后的框架通過在給定復雜環境的條件下學習聚焦關鍵物體點云的能力,減少需要處理的點個數,從而減少計算成本。
(3)將基于PointNet的深度學習網絡在自動駕駛數據集KITTI上運行,結果顯示與已有的基于LIDAR數據的檢測方法相比,提出的深度網絡能夠達到良好的運行效果。
改進之后的PointNet的總體框架如圖1所示。該框圖的最終效果為生成單個物體的三維預測邊界框。該框圖所表示的網絡框架包括如下核心功能模塊:環境網絡、重復局部定位網絡、分類器網絡、三維轉換與重采樣網絡、定位與識別網絡。

圖1 網絡總體框架
該網絡模塊的主要功能為通過從輸入的點云數據中提取環境特征從而得到與檢測物體類別相關的物體的可能位置,為之后的與檢測物體類別相關的局部點云的循環迭代更新做準備。在本次研究中,該模塊的輸入數據主要分為兩個部分:經過剪裁處理后的大小為邊長為12米的正方形區域內的三維點云與該區域內的點云對應的俯視圖,其中后者的表現形式為以120*120像素的點云垂直投射的二維圖像,數據類型為二維數組(x,y),x表示網格或點的索引信息,y表示該索引所表示的網格的對應高度信息。該模塊的運行流程可表述如下:
(1)針對三維點云數據,該文使用簡化版的PointNet對數據進行卷積計算(簡化版如圖2所示),通過MLP(multi-layer perceptron,多層感知器)將三維數據轉換成為更高維度數據,通過最大池化技術將高維度數據轉化成為特征向量,由于特征向量來源于三維數據,因此將該向量記作三維環境向量。
(2)針對二維俯視圖,該文通過標準卷積計算與最大池化技術將二維俯視圖轉換成為特征向量,由于特征向量來源于二維數據,因此將該向量記作二維環境向量。

圖2 簡化版PointNet示意圖
二維向量與三維向量分別具有不同的功能,在三維點云場景中,三維向量能夠更好地提供物體的全面信息,二維向量能夠更好地幫助理解復雜結構物體的信息,因此,該文將二維特征向量與三維特征向量進行結合。深度學習中向量結合的方式主要分為向量拼接和向量相加等操作。由于加法在網絡容量相對較低的情況下能夠達到與向量拼接相當的效果,因而選擇向量相加操作,將二維環境向量與三維環境向量結合成為新環境向量。
環境網絡模塊的總體框架如圖3所示。

圖3 特征網絡框架
作為該文提出網絡的核心模塊,重復局部定位網絡模塊的主要功能是在每次迭代計算的過程中對檢測到的新物體進行檢測位置更新。該模塊主要分為兩部分:
(1)重復迭代部分。二維圖像深度學習中主要使用RNN(recurrent neural network,循環神經網絡)深度神經網絡實現重復迭代過程。作為RNN的一種特殊網絡模塊,該文使用GRU(gate recurrent unit,門控循環單元)深度網絡實現重復迭代過程。本部分的輸入為2.1節中的環境向量與上一次輸出的隱藏狀態向量,隱藏狀態向量初始化為大小固定的零矩陣,輸出為維度為512的向量與本次的隱藏狀態向量。前者進入到局部定位模塊進行處理,隱藏狀態向量作為下次迭代過程的輸入進行深度網絡處理。
(2)局部定位部分。該模塊的功能是通過3層的全連接層網絡對轉換矩陣的相關參數作回歸處理。該網絡模塊的輸入為維度為512的向量,輸出為轉換矩陣相關參數。由于本次研究中,物體的比例和大小不會隨著物體與數據探測設備的距離而產生變化,因而僅研究固定的三維變換而對物體的大小予以忽略。為網絡運行簡便,該文僅探討點云數據沿z軸的旋轉。轉換矩陣形式如式(1)所示。
(1)
其中,θ表示點云數據沿z軸的旋轉角,cosθ,sinθ,T(xi),T(yi),T(zi)表示轉換矩陣的相關參數。i∈N+,i∈[0,n),n是重復迭代的次數。
與STN沒有對數據轉換進行監督學習不同,該文為預測得到物體位置通過點云數據與標簽的一一對應對數據轉換進行了監督。該部分總體如式(2)~式(4)所示。
C=fcontext(I)
(2)
hi=fRNN(C,hi-1)
(3)
T(Ωi)=floc(hi)
(4)
其中,式(2)表示作為輸入的點云數據和對應的俯視圖數據I通過2.1中的環境網絡fcontext轉化成為同時帶有三維特征和二維特征的特征向量C;式(3)表示特征向量C和另外一個輸入的隱藏的狀態變量hi-1通過GRU轉化成為新的隱藏狀態變量hi;式(4)表示新的隱藏狀態變量hi通過本地化網絡floc轉化成為旋轉矩陣T(Ωi)。該模塊的總體框架如圖4所示。

圖4 循環局部化網絡框架
根據圖2與2.2節關于重復迭代模塊的表述可知,重復迭代模塊的輸出為列數為512的張量與當前迭代過程的隱藏狀態向量hi。其中列數為512的向量進入到循環局部化網絡進行處理,此外該向量還會進入到分類器網絡中。分類器網絡主要是由兩個與循環重復定位網絡中的全連接層的參數不同的全連接層構成的。經過該部分最終輸出的是objectness數組,并且為該數組內元素設定了閾值,如果數組內元素大于該閾值,則可以認為該元素對應的物體的位置和邊界框的大小預測是準確的,將該元素對應的邊界框的大小、物體的位置等信息加入到物體檢測列表數組中。最終objectness數組的生成圖如圖4所示。
在獲得了旋轉矩陣后,即在三維轉換模塊中對點云數據進行旋轉變換。三維轉換模塊實現的功能是將輸入的點云數據通過2.2節得到的轉換矩陣轉換成為新的點云數據,新的點云數據中與檢測物體相關的點云能夠落在更小的預測邊界框內。為實現點云數據轉換,數據矩陣等式如式(5)所示。
(5)


圖5 循環局部化網絡框架
為簡易表示,本圖將三維點云用二維形式呈現。圖中所有點均落在以原點(0,0,0)為中心,三維數據分別為(W,L,H)的邊界框內,此時通過轉換矩陣T(Ωi),邊界框與所有點均發生了旋轉,此時在原先點云中的關鍵物體點云通過旋轉落在了以原點為中心,三維數據分別為(w,l,h)的邊界框內。此時對落在三維數據為(w,l,h)的框內點進行區域剪裁,并對點云進行取樣,點個數下降成為512個。該模塊的框架如圖6所示。

圖6 三維轉換與重采樣模塊框架
該模塊的功能為在2.4節的基礎上,即在關鍵物體點云確定后,通過對相關參數進行回歸處理對物體的三維邊界框進行預測。使用輕量級的PointNet[22]對三維轉換矩陣的相關參數進行回歸處理。該網絡對三維轉換矩陣的5個參數和邊界框的3個參數(W,L,H)進行回歸處理。最終的邊界框的位置可以通過式(6)得到。
T(Φi)=T(Ωi)*T(Δi)
(6)
其中,T(Φi)表示最終單個物體邊界框的位置信息的矩陣,T(Ωi)表示用于局部定位操作的轉換矩陣,T(Δi)表示用于表示單個物體中心的矩陣,該矩陣主要包含5個參數:(cosδi,sinδi,txi,tyi,tzi),其中δi表示要實現對變換矩陣的回歸需要旋轉的角度,i∈[0,n),i∈N+。該模塊的框架如圖7所示。

圖7 定位與識別網絡模塊框架
為了對該文提出的網絡進行訓練和測試,實驗使用KITTI自動駕駛數據集,該數據集包括7 481個訓練圖像或點云數據和7 518個測試圖像或點云數據。本次實驗中僅用該網絡對汽車物體進行識別。
由于KITTI數據集不提供測試數據集合的真實有效值,因此該文采用的是和已有文獻的點云3D網絡中使用的評估方法[22]相似的評估方法。為了避免將來測試和訓練的樣本中同時含有相同的數據樣本的情況出現,實驗將數據集以70%和30%的比例分別作為訓練集和測試集。
在KITTI數據集中,每一幀中所包含的點云數據大約有10萬個,覆蓋的范圍大約有120米。本實驗直接將點云用作網絡的輸入。然而將大約10萬個點一次性作為輸入會大幅增加計算的開銷,而且對計算能力有著非常嚴格的要求,因此直接使用原始幀數據并不切實際。KITTI數據集僅在負責拍攝周圍環境的攝像機的拍攝范圍內通過數字標簽的形式給出所包含的物體對象的所屬類別,因此為了減少計算量,在實驗時將落在攝像機的拍攝范圍之外的點予以刪除。
在對此次的網絡模型進行訓練時,該文對原有的數據集進行了一定的數據處理。
在進行實驗時,首先將負責拍攝周圍環境的攝像機的拍攝范圍分成了若干個邊長為12米的正方形區域,每個正方形之間有大約1米的邊長的交叉部分。這樣,每個分割成的正方形區域內的點的個數就有0~20 000個不等。如果對這些正方形區域內的點直接進行網絡框架處理,仍然會增加內存的負擔,所以實驗將每個正方形區域內的點進行隨機采樣,使得每個正方形區域內的點為4 096個。
接下來,實驗將每個邊長為12米的正方形區域進行灰度圖像的轉化,生成場景所對應的大小為120*120像素的俯視高度圖,將三維點云通過俯視角度投影并離散成為2D網格。
實驗選擇覆蓋從地面以下2米到地面以上3米的高度區域,此舉是為了基本上覆蓋所有汽車類別的物體的高度。描述所有映射到俯視圖的特定網格單元的點的集合如式(7)和式(8)所示。
H(Sj)=max(Pi→j.[0,0,1]T)
(7)
Pi→j={Pi=[x,y,z]T|Sj=fPS(Pi,r)}
(8)
其中,Pi→j表示將在原始點云數據中索引為i的點投射到高度圖的網格單元對應的索引j中,[x,y,z]表示點云數據中點的三維坐標,Sj表示與點云數據對應的網格單元集合,Pi表示點云數據內的某一個點,r表示高度圖的分辨率,即r=10 cm,H(Sj)表示網格單元集合Sj對應的高度。
針對是否有汽車對每個正方形區域進行標簽設定。來自KITTI數據集的信息用于檢查每個正方形區域內是否有汽車,并且對汽車位置、方向和大小進行觀察和記錄。經過對KITTI數據集的全方位分析之后,發現該數據集的所有區域中95%的區域最多僅有3輛汽車。因此對于每一個正方形區域,都會設有一個含有3個標簽的序列。對應的矩陣變換參數則能夠反映最終邊界框的相關屬性。如果某區域內汽車不足3輛,就會在該區域的范圍之外的固定位置生成剩余數量的固定的大小的邊界框,并顯示為其余顏色,表示該區域內的汽車的數量不足3輛。
然而在實驗過程中發現在非常多的正方形的被剪裁的區域內是沒有一輛汽車的,而且沒有汽車的正方形區域個數比有汽車的區域個數要多。為了能夠讓有汽車的被裁剪的區域和沒有汽車的正方形區域的個數保持盡可能的一致,這里采用了數據增強方法,包含一系列對原始數據的操作(包括旋轉、縮放、裁剪、移位、翻轉等)。增強之后的所使用的KITTI一共包括約27 000個用于訓練的被裁剪的正方形區域。
上文提到該網絡框架包含環境網絡、重復定位網絡、分類器網絡、轉換和重采樣器網絡、邊界框預測等。不同部分會產生不同損失。總損失和各個部分損失的關系如式(9)~式(11)所示。
(9)
Lseq-i=α*Lcls+β*(LT1-reg+LT2-reg)+γ*Lsize-reg+λ*Lreg
(10)
Lreg=‖I-T(ψ)T(ψ)T‖2
(11)
其中,Lseq-i表示某一個序列的總計損失,Lcls表示由分類器網絡產生的損失,LT1-reg表示用于重復局部定位的矩陣參數的損失,LT2-reg表示邊界框預測模塊產生的矩陣參數的損失,Lsize-reg表示邊界框預測產生的損失,Lreg表示正則化損失,Lfinal表示總計的損失,I表示單位陣,T(ψ)表示回歸操作的相關參數所對應的變換矩陣,α、β、γ、λ表示在計算總計損失時的加權系數。
在具體實現的過程中,各個部分損失具體采用的計算方法如下:
(1)對于分類部分損失的計算,采用二進制交叉熵的方法。
(2)對于轉換矩陣回歸處理產生的損失的計算,采用Huber的平滑L1方法。
(3)對于正則化損失的計算,采用均分損失函數的方法。
其中,式(12)主要是為了使得預測的變換矩陣盡可能接近于正交矩陣,以使得優化過程變得更加穩定和網絡性能變得更好。
為了進行訓練,這里將預測序列的長度預定義為n=3。為了能夠使得損失的具體計算結果不受輸入序列的數據的次序的影響,采用最大加權二分圖匹配法。為了能夠計算得到該方法所需要的權重,使用匈牙利算法進行計算,以得到最大匹配。
環境網絡由3個全連接層組成,每一層均是用1D卷積進行實現。該網絡的最開始輸入為三維點坐標,即(x,y,z)。每一層的輸入和輸出的特征的大小分別為(3,64),(64,128),(128,1 024)。除了第一層沒有批次規范化處理之外,其余層均有ReLU激活函數批次規范化處理操作。
除了3D特征網絡,本地化網絡同樣包含3個全連接層。該網絡的每一層的輸入和輸出的大小分別為(512,256),(256,128),(128,5)。在該部分中,僅有第一層和第二層有ReLU激活函數,僅有第一層有Batch Normalization處理。
轉換矩陣初始化為單位矩陣。
損失函數系數分別為:α=1,β=1.5,γ=0.5,λ=0.01。
在實驗進行的過程中觀察到,網絡模型在訓練迭代120次時趨于收斂。對此,本實驗將訓練過程中其余相關的參數設置如下:
動量:0.9,權重衰減:0.000 5,批次大小:初始化為32。
學習率:在前40次訓練迭代過程中是0.01,之后為0.001。
在訓練完整網絡之前,還訓練了此次的改進的網絡的小型初始版本。在該版本中,刪除了原始的點云數據輸入和一開始的處理部分,以及最后的邊界框預測部分,并且從定位網絡直接回歸邊界框的大小尺寸。
在點云檢測任務中,最重要的數據即是檢測的準確性,因此本次實驗中對汽車類別的物體的檢測進行了計算。在以上參數的調整下進行了實驗,并且與已有文獻的檢測率進行了比較,結果如表1所示。

表1 網絡框架在KITTI數據集下的運行結果

續表1
其中輸入L&M為LIDAR+Mono,L為LIDAR。BV(Bird-eye View)表示俯視圖,汽車類別的檢測精度為百分比(%)。F-PointNet表示Frustum PointNet[22],C-YOLO表示Complex-YOLO[8]。
從表1可看出,除去少量數據的上升,隨著檢測難度的增加,物體檢測的精度總體上呈下降趨勢。其中MV3D[23]、F-PointNet、AVOD[24]和RoarNet[25]均使用了LiDAR和數據形式與多傳感器檢測,其精度比未使用多傳感器的方法高,其中RoarNet在各個檢測難度上均比其余方法精度高;文中網絡與VeloFCN[26]、RT3D[27]、VoxelNet[28]、Complex-YOLO方法均未使用多傳感器方法,其中,由于Complex-YOLO方法僅使用了LiDAR數據形式的俯視圖形式,因此盡管FPS在各種方法中最高,然而檢測精度卻未有大幅度提升。文中網絡在未使用多傳感器的條件下,在各個難度的汽車檢測精度上僅次于VoxelNet。考慮到VoxelNet是將三維點云數據轉化成為體素格形式,大幅增加了計算復雜度,對計算機硬件要求相對于其余未使用多傳感器的方法要高。因此可以認為,文中網絡在僅使用LIDAR數據,未使用多傳感器,未將三維點云轉換成為其余三維數據形式,以及較低計算復雜度的情況下,在汽車物體檢測類別的精度上比其余方法的對應數據高,取得了良好的運行效果。
當前隨著深度學習在計算機視覺研究中的不斷深入,該研究方法在二維圖像檢測上得到了廣泛的應用,之后,深度學習在三維數據上的研究工作亦進行開展。然而,大多數已有的關于深度學習在三維數據上的研究的文獻使用的是手動輸入特征值的方法或將非規則化三維體素格的數據形式轉換成為規則化三維體素格的數據形式的方法,兩種處理方式均會大幅提高計算成本,增加計算復雜度。為能夠在未將三維點云數據轉換成為其余數據形式的情況下用較低的計算成本對三維點云進行直接使用和處理,受到與人體視覺機理與RNN網絡的啟發,該文以深度學習神經網絡PointNet為基礎,提出用于三維物體檢測的深度學習神經網絡。該網絡僅使用LIDAR的三維數據,高效獲取數據幾何特征,為減少計算成本與計算復雜度,該網絡引入三維點云的人體視覺機制,引入三維局部定位網絡。為對提出的網絡進行實驗,使用KITTI數據集,對數據集中的汽車進行檢測,并對檢測精度進行評估。結果顯示,該網絡在僅使用LIDAR數據,未使用多傳感器,未將三維點云轉換成為其余三維數據形式,以及較低計算復雜度的情況下,在汽車物體檢測類別的精度上比其余方法的對應數據高,取得了良好的運行效果。