柳長安,孫書明,趙麗娟
(華北電力大學 控制與計算機工程學院,北京 102206)
激光雷達(light detection and ranging,LiDAR)以其高精度、高分辨率等特性成為重要的遙感工具[1-2]。當下,無人機機載激光雷達技術已廣泛應用于電力巡檢作業[3-6],與傳統技術手段相比較,其耗費時間更短且數據更加可靠[7],可以很好地解決空間定位和測量精度的問題,并可以對故障和缺陷進行更加準確的判斷和定性,實現多維度的立體巡檢[8-12]。
國內外對于桿塔自動提取的問題也有一定研究,其中CHEN利用點云的數字高程模型(digital elevation model,DEM)與數字表面模型(digital surface model,DSM)特征構建歸一化數字表面模型(normalized digi-tal surface model,nDSM)點云,并對nDSM點云整體繪制高程直方圖以確定地物點云與非地物點云的分離高度閾值[13],但由于其特征由點云整體得出,當地形較為起伏時,通過單閾值較難分離。SONG將點云所在空間分為若干個大小相等的格網,在格網內部利用DEM與DSM特征構建高差特征圖,并利用DSM特征計算坡度特征,通過高差特征與坡度特征來定位桿塔[14],但由于采用判斷連通域的方式剔除高大樹木,當連續的高大樹木處在線路下方時,將難以判斷。GUO等人同樣將點云所在空間格網化,利用格網內相對高程差區分地物點與非地物點,并利用單個格網垂直方向空間間隔的數目來區分電力線點與桿塔點[15],但同樣難以區分處于電力線正下方的高大樹木。HAN通過霍夫變換先行提取出電力線點云,進而生成3維立方體外包來提取電力塔數據點,最后在電力塔數據上建立3維空間格網[16],但易受點云密度分布不均的干擾。SHEN等人在將點云所在空間格網化的基礎上,在格網內部確定高程閾值,并進行進一步分割[17],但易被垂直方向樹障遮擋等因素干擾。
基于以上問題,本文中提出了一種直接以LiDAR點云數據作為輸入端的輕量級神經網絡,通過特征網絡自動提取其形狀、空間特征并加以判斷,以確定桿塔所在的區域,在地形起伏較大區域及桿塔區域存在垂直方向遮擋的情況下使精確度及穩定性有所提升。
目前從激光點云中提取桿塔的算法,多數依賴于人為擬定的空間特征、形狀特征等。人為擬定的特征往往具有一定的局限性,而通過神經網絡提取的特征,直接從分類結果的角度考慮,在穩定性以及準確率方面,有其自身的優勢。同時因為無需預先使用降噪算法,使得點云的原始信息以及特征得以更完整的保存。目前有數種針對點云數據進行分類的網絡,如PointNet[18]、PointNet++[19]、VoxelNet[20]等,但其網絡結構較為復雜,訓練周期也較長,而桿塔提取的問題只需判別某點是否為桿塔點,因此本文中使用規模較小的輕量級網絡,基于空間進行體素格劃分,并對體素格提取特征加以判斷,主要分為以下幾個步驟:(1)將原始點云空間劃分為若干個大小相等的體素格,將點云數據中的每個點歸入對應體素格中,并對每個體素格內的點進行采樣,采樣最大數量為δn;(2)對體素格內的采樣后所有的點,利用特征提取網絡,提取其特征,并且利用最大池化函數,消除點云數據無序性帶來的干擾;(3)利用卷積層,進一步計算每個體素格對應的空間、形狀特征,并結合相對高度差δz以及點密度q兩個特征組成新的特征矩陣;(4) 將體素格對應的特征作為輸入,利用分類網絡,判斷該體素格是否為桿塔點云,并利用聚類算法,剔除孤立體素格。其具體流程圖如圖1所示。

Fig.1 Flow chart of the algorithm for the extraction of power tower
本文中提出的網絡主要由三部分組成:(1)特征學習網絡;(2)卷積層;(3)分類網絡。如圖2所示。

Fig.2 Structure of the network
將點云所在的3維空間分為大小完全相同的若干體素格。假定點云數據在3維空間內占據的長、寬、高分別為D,W,H;且每個體素格的長、寬、高分別為vD,vW,vH;對于體素格類別的判斷分為兩個步驟,首先令體素格的高度為H,對劃分后的體素格進行第1次判斷,而后對于已經確定為桿塔的體素格,假設垂直方向的體素格數量為n,令vH=H/n,在垂直方向上再次劃分體素格,并進行進一步判斷,這種做法避免了3維卷積運算,對整體的運算效率帶來了較大提升,如圖3所示。

Fig.3 Order of classification
首先需要將點云數據中所有點歸入對應的體素格中。由點云數據自身的特性可知,不同體素格中點的數量差距較為明顯,基于運算效率以及穩定性的考慮,本文中算法對體素格內的點進行隨機采樣,設定閾值δn,當體素格內點的數量大于δn時,采用隨機采樣,只保留其中的δn個點;當點的數量不大于δn時,則將所有點全部保留。


(1)


Fig.4 Feature-learning network
其中前向傳播部分由全連接層與線性整流函數(rectified linear unit,ReLU)組成。輸入端Min經過特征層(feature layer,FL)FL0進行前向傳播被投影為維度更高的特征矩陣,對于所有經由FL0產生的特征矩陣,按位置分別進行最大池化獲得特征矩陣M00,繼而將所有經由FL0產生的特征矩陣與M00相連接,得到每個點對應的特征矩陣L01,對于每一個L01,經過前向傳播之后再次被投影為更高維度的特征L02,對其按位置分別進行最大池化,得到該體素格所對應的特征矩陣V0,同時利用最大池化的方式,也規避了3維點云的無序性對特征提取帶來的影響。
卷積層由若干個卷積核組成,用于進一步提取各個體素格自身以及與周圍其它體素格所共同形成的特征,為保證卷積后得到的特征數量與體素格的數量相等,需預先在特征圖外圍增加一圈空的特征向量,如圖5所示。

Fig.5 Convolutional layer
在此過程中引入傳統的桿塔提取算法中的特征M′,假設某體素格的特征向量V0是尺寸為nr×1的矩陣,則卷積過后得到的特征向量V1,其尺寸仍為nr×1,將V1與M′=[δz,q]T相連接,得到特征向量V2,其中δz代表體素格的高度特征值,q代表體素格內的點的數量(即點密度),如圖所示,當體素格的高度取vH=H時,有:
δz=zmax-zmin
(2)
式中,zmax和zmin代表該體素格中所有點z的最大值與最小值, 而當體素格的高度取H/n時,有:

(3)

如圖6所示,該部分以特征向量V2作為輸入,以softmax層作為輸出層Mout。

Fig.6 Classifying layer
該分類網絡包含全連接層與激活函數(ReLU),并以softmax模型作二分類的判斷,經前向傳播之后,將判斷出該體素格的類型為桿塔點云或者非桿塔點云。其損失函數為:
Eloss=(Mlabel-Mout)2
(4)
式中,Eloss代表輸出值與標定值的誤差,Mlabel為事先標定的值,用于區別某體素格是否屬于桿塔點云。當所有體素格的類型被判定完畢后,對其采用聚類算法,以獲得每個桿塔的最終區域.
本文中的算法在Intel Corei5-7300HQ CPU,2.5GHz,8G內存硬件條件下運行,由于需要與以CloudCompare為基礎的項目對接,因此在win 10,PCL 1.8.1,opencv-2.4.13.6環境下采用Microsoft Visual Studio 2015編程實現。
本文中所述網絡采用北川地區的巡檢數據作為訓練集,其桿塔類型為V型塔或T型塔,在人工對桿塔點云位置進行標定之后,將其中80%作為訓練集,20%作為測試集,并對原始數據進行平移、旋轉、鏡像等操作以達到數據擴展的目的?;邳c云數據的特征考慮,如果體素格的尺寸過大,將影響桿塔提取的精度,而如果尺寸過小,造成每個體素格中容納的點的數量減少,將難以提取到有效的特征,同樣對桿塔提取造成不利影響。故體素格設置為如下尺寸(單位為m):vW=1m,vD=1m,而對于vH,在第1次判別時取vH=H,第2次進一步判別時取vH=2m,并且第1次判別時體素格中點數上限為150,第2次判別時點數上限為30。
經由FL0產生的特征矩陣尺寸為32×1,與最大池化特征拼接后特征矩陣尺寸為64×1,經過第一部分特征學習網絡,輸出的體素格特征矩陣尺寸為128×1,第二部分卷積層中設置4個卷積核,第三部分分類網絡中中間層的矩陣尺寸50×1,并采用mini-batch的方法進行訓練。
由于訓練集的單個點云數據文件包含的點數通常達到數百萬以上,且其整體的長度和寬度可達1km甚至2km以上,考慮內存空間的問題,將原點云數據分塊進行訓練,每塊的長度和寬度都為50m。故經過第一階段特征學習網絡之后,將得到一個尺寸為50×50且深度為128的特征。由于桿塔點云所占的體素格數目相對于點云整體的比例很小,若直接將數據輸入進行訓練,準確率的提升將較為迅速,而召回率則將一直維持在較低水平,故在訓練中的反向傳播部分對非桿塔點云的體素格進行欠采樣,以維持召回率與準確率的平衡,如圖7所示。此為一塊數據直接輸入以及進行欠采樣時,其召回率及準確率隨訓練次數的變化曲線,橫軸為訓練次數,縱軸為召回率或準確率的百分比。在訓練數據集中,該網絡的召回率與準確率均達到90%以上。

Fig.7 Curve of recall and precision in training
為驗證本文中方法在不同環境下的可行性及魯棒性,選取了不同地形以及包含不同塔型的3組機載激光點云數據進行實驗。數據1覆蓋面積為392m×1181m,包含3262599個數據點,地形較為平坦,周圍有一定量樹木干擾,其桿塔類型為酒杯型,數據2覆蓋面積為173m×1165m,包含1573050個數據點,地形起伏較為明顯,為桿塔定位帶來一定困難,桿塔類型同樣為酒杯型,數據3覆蓋面積為771m×508m,包含1836981個數據點,高空中有若干噪聲點,且檔間有高大樹木干擾,塔型為羊角塔與干字型塔,如圖8所示。經過聚類篩選之后,提取出桿塔點云,其總耗時分別為10s,12s,15s,其中對體素格的聚類搜索半徑為2m,聚類最小數量為10。

Fig.8 Experimental data and results
為驗證桿塔點云的提取精度,對以上實驗結果中總計9處桿塔的提取精度進行評估,評估標準為點云提取率(提取點數量/標定點數量)。
統計結果如表1所示。由表1可知,桿塔點云的提取精度通常能達到95%左右,無論是地物點云中存在地形起伏或者植被等因素的干擾,本文中提出的網絡均能較好地提取桿塔點云,其中對平坦地形的提取效果最好,且運行速度也相對較快,而對地形明顯起伏以及兩檔之間受高大樹木干擾或者有噪聲干擾的情況,其精度略有下降,但依然可以維持較高的準確率,說明本方法具有一定的魯棒性。

Table 1 Accuracy evaluation of the extraction
本文中通過卷積神經網絡學習體素格內的空間、結構特征,輔以傳統方法中的高度差、點密度等特征,提出了一種基于LiDAR激光點云的桿塔點云提取方法。在地形起伏較大以及受高大植被干擾等環境當中,該方法仍可自動地準確提取出桿塔點云,且具有較好的魯棒性。實驗表明,本文中所提方法在一定程度上解決了噪點濾波、垂直遮擋等因素對桿塔點云提取造成不利影響的問題,在輸電走廊的空間結構自動分析領域具有較好的工程應用價值。