董昱程
(昆明能訊科技有限責任公司,云南 昆明 650217)
電力建設是國民經濟建設的重要組成部分,其中輸電線路和電力桿塔是電力系統的重中之重,是發電廠、變電站、配電設備和電力用戶的紐帶,電力桿塔又是連接輸電線路的重要組成部分。隨著國民經濟的飛速發展,電網規模日益龐大,電網結構日趨復雜,對電力設施安全性、可靠性及其運行狀態的實時性監測要求越來越高。由于輸電線路往往距離長、覆蓋范圍廣,因此電力桿塔巡檢就成為電網運營維護、確保電力安全可靠運行的一項重要內容。
激光雷達技術(LiDAR)是近20年來發展非常迅速的遙感技術,它通過發射激光脈沖、接收返回的脈沖信號,經過系統處理來獲取目標的三維空間信息。機載LiDAR即將LiDAR 系統安置于機載平臺(包括飛機、直升機和無人機等)對地物進行掃描來獲取地物空間信息,在不需要大量地面控制點的情況下即可快速獲取地表各種地物高密度、高精度的三維空間信息,并且能部分地穿透植被獲取林下地形信息,因此逐漸被引入到輸電線路巡線中,當前的應用主要涉及輸電線走廊的激光點云處理。
點云是目前攝影測量、遙感、計算機視覺等多個領域廣泛應用的數據源之一,而信息提取是點云處理、分析和應用的必經環節。點云分類又是點云數據處理的重要環節,快速高精度的點云分類有助于后續工作的展開。點云分類的目的是將獲取的原始激光點云標記為地面點、植被點、建筑點、輸電線路點、桿塔點等,這是生產DEM和分析輸電線路安全以及建模的基礎。地面點和導線點分類一般可以基于高程特征自動識別;植被點、建筑點、道路點、桿塔點云和絕緣子等精細電力設施往往需要結合相關算法和手動標注。
近年來,深度學習和卷積神經網絡的方法由于強大的表達能力和特征抽象能力,在許多領域取得了突破性的成功,利用深度學習來對三維點云進行分類,也成為一個越來越受重視的研究方向。PointNet是其中具有代表性的研究成果,該模型開創性地利用深度學習模型對點云進行分類,取得了較好的效果,可以運用與桿塔點云的精細分類。
點云分類是點云處理領域中十分重要的一項任務。傳統的點云分類方法是通過手工提取的特征來捕捉點云的幾何屬性,由于手工提取無法完全利用三維點云的全部信息,因而該方法的分類精度存在瓶頸。深度學習興起之后,研究者開始探索利用深度神經網絡學習點云特征。典型的處理方法是將點云數據轉換為體素表示,進而在三維深度學習模型上進行特征提取,完成分類任務。三維體素的表示形式完整地保留了原始三維形狀信息,因而具有較好的特征鑒別力。但是該方法對內存的開銷很大,導致在實際情況下無法使用分辨率高的體素網絡。斯坦福大學的Qi[1]等人提出了PointNet模型,開創性地利用深度網絡直接處理不規則的三維點云數據,模型以原始的點云作為輸入,是一個可以同時進行分類和分割的聯合結構,在分類任務上取得了較好的效果。但該模型仍存在一個明顯的不足,即沒有考慮到點云的局部結構,這也導致其識別細粒度模式的能力以及對復雜場景的泛化能力較差。本文針對此問題,設計了一個基于圖卷積網絡的分類模型,提出了一個kNN graph 層,通過在點云空間構造k近鄰圖,利用圖結構獲取局部信息,進而提高分類準確率。
LiDAR作為一種快速、全天候、精確獲取地面三維數據的技術,在現階段LiDAR技術隨著軟硬件的發展也取得了全面的發展并受到了極大的重視。LiDAR(Light Detection And Ranging)集中體現了激光技術、計算機技術、全球定位系統(GPS)和慣性導航系統(INS)3種技術的結合。LiDAR以其快速、全天候、精確、直接獲取地面二維數據信息的特點,在城市三維建模中扮演著越來越重要的角色。
隨著機載激光雷達傳感器的發展,機載LiDAR點云數據的可獲得性在不斷提高,其自動處理與分類也已成為攝影測量與遙感、計算機視覺等諸多領域的研究重點與熱點。盡管機載LiDAR點云數據在如建筑物檢測與重建、電力線的識別與建模、植被分類與提取、道路、路邊石以及道路標志的提取等方面都有著廣泛的應用,但由于點云密度不均、分布離散以及場景復雜等多方面因素的影響,使得機載LiDAR點云的動高精度分類仍存在較大挑戰。
雖然機載LiDAR點云數據具有場景復雜、目標豐富、密度不均勻以及含有噪聲等特點,使得現有三維場景目標提取識別方法自動化程度不高、識別準確率不高。且由于現實場景的復雜性以及LiDAR點云數據存在噪聲點等原因,導致目前點云后處理中識別和分類的效率較低。電力鐵塔的空間結構十分復雜,模型結構多,桿塔形狀多。激光雷達采集的電力桿塔點云,很難用傳統方法快速準確分類。
2.3.1 點云具有無序性
受采集設施以及空間坐標系的影響,物體運用不同的設施掃描或者在不同的地點掃描,點云數據的次序都會大不相同,所以不容易直接經過模型對其進行相關的處理。
2.3.2 點云具有稀疏性
在自動駕駛和機器人的場景當中,雷達激光的采樣點的覆蓋尺度相對于場景的所有尺度來說,具有非常大的稀疏性。在KITTI數據集中,如果把未經過加工處理的雷達激光點云映射到相應的彩色圖片上,大約只有4%的像素才能有相對應的雷達點。因此,讓基于點云數據的分類和語義感知成為了難題。
2.3.3 點云信息量有限
點云的數據結構是由一些三維空間的點的坐標構成的點集,實質上是對世界三維幾何形態的弱分辨率的重采樣,所以只能得到比較少的幾何信息。
在深度學習中,為了充分利用點云數據的特性,降低網絡的計算復雜度,基于原始點云的網絡模型逐漸被提出。PointNet是直接對無結構的點云應用深度學習的網絡架構來處理點云的分類及分割任務。該框架主要解決點云稀疏性、置換不變性和轉換不變性問題。考慮到點云的稀疏性,PointNet的研究人員并未將點云轉換為多視圖或是體素網格,而是對點直接進行處理。針對置換不變性,采用多層感知機(MLP)對每個點獨立的提取特征,進而使用最大池化層將所有點的信息聚合得到全局特征。此外,該框架還引入了轉換網絡,通過構造轉換矩陣對輸入點云和特征進行空間對齊以解決轉換不變性問題。雖然PointNet對點云分類及分割取得的效果良好,但并未考慮點與點之間的關系及局部鄰域信息,因此,在處理大場景點云時,會導致細節信息的丟失。
PointNet是一種直接消耗原始點云的新型深度神經網絡,很好地處理了輸入點集的無序性。PointNet運用深度神經網絡中的最大池函數來解決點云的無序性難題,運用共享網絡參數的形式來解決維度的改變問題,并且都取得了不錯的成績。
3.1.1 PointNet體系結構
如圖1所示為PointNet的網絡結構,分類網絡N個點作為輸入,輸入的點和特征經過轉化,然后用max pooling聚合點的特征。最后分別輸出K個類的分類分數。分割網絡是對分類網絡的擴充,它可以聚合全局特征和局部特征然后輸出每個點的分數。“MLP”代表多層感知器,括號內的數字是每層的大小。所有層的Batchnorm用的是Relu函數。分類網絡中的最后一個MLP使用的是Dropout層。

圖1 PointNet網絡結構示意圖
PointNet的網絡有3個關鍵模塊:解決無序性問題的對稱函數、聚合局部和全局的信息和共享對齊網絡。
3.1.2 解決無序性問題的對稱函數
為了實現一個不受輸入順序影響的網絡模塊,PointNet運用一個對稱函數來聚合每個點的信息。這里對稱函數將n個向量作為輸入,并輸出一個與輸入順序無關的新向量。對稱函數近似定義一個在點集上的一般函數:

當f:2RN→R,h:RN→Rk,是對稱函數。
這個基本模塊用多層感知器網絡來近似h,g由單個變量函數和最大池函數組成。實驗發現,經過h集合,網絡能夠學習一些f來捕捉集合的差異特性。雖然模塊看起來簡單,但它實現效果好。
3.1.3 聚合局部和全局的信息
上一節的輸出形成一個向量[f1,...fk]它是輸入點集的全局標簽。PointNet能夠很容易的在全局特征上訓練SVM或者多層感知機來進行形狀分類。然而點的分割需要局部和全局特征的結合。其實可以用一種簡單而高效的方式來實現這一點。解決方案可以在圖1中的分割網絡部分看到。在計算好全局點云特征向量之后,將全局特征與每個點的特征串聯起來,將其反饋到每個點的特征。而后基于組合點的特征提取新的點的特征,此時每點特征都包含部分和全局的特征信息。
3.1.4 共享對齊網絡參數
當點云經歷某些幾何變換(如剛性變換)時,點云的語義標簽是不變的。因此,我們期望我們的點集可以通過學習使得網絡對這些轉換不改變點云的語義標簽。一種處理方法是在特征提取之前將全部輸入點集與標準空間對齊。關于此方法Jaderberg等人引入了空間變換的思想,在GPU上通過采樣和插值在一個特定的定制層來實現2D圖像的對齊。而PointNet的點云輸入形式使我們能夠以更簡單的方式實現這一目標。PointNet由一個迷你網絡(圖1中的T-net)來預測仿射變換矩陣,從而直接將此轉換矩陣應用于原始點的坐標。這個迷你網絡自身接近于一個大型網絡,由點的獨立特征提取、最大池層和全連層這些基本模塊組成。這個方法能夠進一步的擴展到特征空間的對齊。PointNet能夠預測特征轉換矩陣,并在點的特征上插入另一個對齊網絡,以便實現來自不同輸入點的特征對齊。但是,特征空間中的變換矩陣比空間變換矩陣具有更高的維數,極大的提高了優化的難度。因此,PointNet增加了softmax函數來計算與標注樣本間的損失。PointNet將特征變換矩陣近似為正交矩陣:

式中:I為;A為
結果發現通過增加函數softmax,優化變得比之前穩定,而且使模型實現了更好的功能。
如圖2所示這部分展示的是PointNet的應用。從左到右依次是點云的物體分類,部分分割和場景語義分割。點云分類是將輸入的點云數據給出類別名稱(比如:杯子、桌子、汽車);部分分割是將物體的部分類標簽給出并用不同顏色表示(比如機身、機翼、機尾);場景語義分割是將一個場景中同一類的物體用相同的顏色表示(比如:人、椅子、桌子、墻)。

圖2 PointNet功能示意圖
PointNet通過學習全局點云的特征來實現對物體的分類。對于電力桿塔的點云有很好的效果,并且PointNet的網絡獲得了強大的推理速度,也可以很容易實現CPU的并行,容易推廣使用。
激光雷達掃描后的點云是連續一片的,我們所做的是對桿塔部分點云進行分類,先手動摳出桿塔部分,并將桿塔部分的點云分成7類,如表1所示。

表1 桿塔點云分類類別
之后對桿塔點云進行人工標記構建桿塔點云數據集,再利用PointNet進行訓練,得到桿塔點云分類模型,就可以利用該模型對其他桿塔點云進行分類,如圖3。

圖3 桿塔點云分類流程圖
我們只對桿塔部分的點云進行分類,先對整體的點云扣取桿塔,如圖4,并對每一個桿塔的坐標點進行歸一化:

圖4 單個桿塔示意圖

對坐標的y和z做相同的操作。
然后人工標記桿塔數據,為每一個點打上標簽。因為激光雷達采集的點云非常密集,通常一個桿塔部分的點數量在十萬以上,所以采取隨機采樣的方法來來構建桿塔數據集,隨機抽取桿塔中的2048個點作為一個樣本,因為人工標記成本較高,可對一個桿塔多次隨機采樣,我們對每個桿塔點云隨機采樣50~80次,一共得到10萬組樣本作為原始數據訓練樣本,作為桿塔點云數據集。
將桿塔點云數據集分出的90%作為訓練集,剩下10%作為測試集。在訓練時使用NVIIDA GTX 1080TI GPU進行加速,訓練30Epoch,batch_size設為32,訓練用時20 h。
用桿塔數據集的剩余10%進行測試,準確率為0.912。如果預測的點標簽與原始數據集中的標簽相同,則認為這個點預測正確。
在GPU模式下預測10萬點的桿塔平均用時6 s,在CPU模式下預測10萬點的桿塔平均用時9 s。
現在我們已經有了已經分類的桿塔區域,如圖5,通過空間幾何關系和聚類的方法,可以單獨提取桿塔部件,絕緣子,跳線等,如圖6~7所示。

圖5 PointNet分類桿塔示意圖

圖6 分離出的絕緣子示意圖

圖7 分離出的跳線示意圖
實驗證明PointNet已經實現了非常好的性能并且大大簡化了點云數據的目標分類任務。但是關于抽稀點云數據的目標分類和語義分割還有待研究。因此,為了驗證PointNet在數據抽稀情況下的效果,我們先對點云進行隨機抽稀,做了如下實驗,測試數據在抽稀情況下的準確率。
對數據抽稀,然后將其抽稀數據的測試結果與原始數據測試結果進行對比。實驗過程與結果如表2所示。

表2 抽稀后點云準確率
測試結果如圖8展示了PointNet雖然簡單但是有效,當點云數據輸入超過原始數據的2/3時對各種損壞輸入都具有很好的魯棒性,但是當數據抽稀超過1/2時精度下降嚴重,需要進一步的研究和攻克。

圖8 抽稀點云準確率示意圖
PointNet對無序點云特征的優異學習能力,在訓練時間和識別時間上都很有優勢,對點云分類的精度很高。將PointNet運用在電力桿塔分類中也取得了較好的效果,相信該工作在未來的電力使用場景中能發揮更大作用。另外PointNet還有很大的改良空間,比如解決點云的密度不均勻問題、抽稀數據識別率下降問題等等,值得進一步的學習和研究。