李海楓, 黃于鑒, 魯紅英
(成都理工大學 計算機與網絡安全學院,成都 610059)
機載LiDAR技術由載體平臺與LiDAR兩部分組成,搭載平臺可分為地基、天基、空基3種形式,地基平臺主要包括車輛、船舶、手持設備等;天基平臺主要為人造衛(wèi)星、太空站;空基平臺多為直升機、無人機。LiDAR技術是一種采集數(shù)據(jù)精度高、人工工作量小、獲取數(shù)據(jù)效率高的主動式探測技術,與傳統(tǒng)的航空遙感技術相比,機載LiDAR技術不受光照、霧霾、潮濕等環(huán)境因素影響,能夠全天候地進行數(shù)據(jù)采集,為大面積測繪提供了一種快速準確的方案[1-2],廣泛用于道路提取[3-4]、森林調查[5]、電力線路調查[6]、水文勘探[7]等多種領域。
在處理機載LiDAR數(shù)據(jù)過程中,往往需要分離點云數(shù)據(jù)中地面點與地物點,從而制作高精度數(shù)據(jù)高程模型,該過程通常稱為點云濾波。最初點云濾波方法是從點云數(shù)據(jù)中人工設計算法提取特征,利用特征內在規(guī)則區(qū)分點云數(shù)據(jù);然而提取特征的優(yōu)劣對濾波精度影響巨大,人工提取特征往往工作量巨大,算法泛用性差、濾波精度低,隨著人工智能技術的快速發(fā)展,深度學習方法在目標檢測、語義分割等領域取得了令人矚目的成果。深度學習具有自動提取數(shù)據(jù)特征的優(yōu)點,避免了主觀因素對數(shù)據(jù)分類的影響;此外,深度學習方法還具有泛用性強和分類精度高的特點,已成為點云濾波主流研究方法之一。
通過對傳統(tǒng)點云濾波算法(布料模擬算法、漸進三角網加密算法)和深度學習方法的研究,發(fā)現(xiàn)當前基于深度學習的相關研究取得了豐碩的成果;但如何更好地解決提升濾波精度、減少主觀因素影響、提高運行速度等問題仍是未來需要進一步解決的難題。在總結前人的研究基礎上,本文提出了一種基于深度學習的機載LiDAR點云濾波方法,下面重點從點云濾波系統(tǒng)整體結構、數(shù)據(jù)處理、深度學習模型中降采樣和損失函數(shù),實驗結果對比分析等方面進行闡述。
濾波方法主要分為基于規(guī)則的濾波方法和基于學習的濾波方法兩類?;谝?guī)則的分類方法指研究者依據(jù)點的各項屬性(空間坐標、反射強度、回波次數(shù)等),根據(jù)地面點與地物點的區(qū)別設計分類規(guī)則?;趯W習的濾波方法是指實際場景中地理特征存在較大區(qū)別,人工難以分類,研究人員使用各種數(shù)學模型提取點云數(shù)據(jù)特征進行的分類。
基于規(guī)則的濾波方法根據(jù)分類規(guī)則不同可分為基于坡度的方法、基于數(shù)學形態(tài)學的方法和基于模擬曲面的方法。基于坡度的方法主要思路是計算點云數(shù)據(jù)坡度差值,根據(jù)點云坡度差值是否在閾值內進行分類,差值在閾值內則為同類點。算法流程簡潔且運算效率高,但受算法閾值單一的影響,對不同地形的效果差距較大[8-9];基于數(shù)學形態(tài)學的方法主要思路是設置濾波窗口,將窗口內點云數(shù)據(jù)進行形態(tài)學開閉運算,地物點經過形態(tài)學開運算后高程變化大,而地面點運算后變化較小。這類算法關鍵點在于對濾波窗口大小的選擇,需要研究者根據(jù)算法使用經驗以及專業(yè)知識進行設定,濾波窗口過小會損失陡峭的地面細節(jié),濾波窗口過大會損失平滑的地面細節(jié)[10-11];基于模擬曲面的方法是指,通過構造模擬曲面分離地面點與地物點。常規(guī)流程是首先建立簡單曲面模型,通過設定的擬合規(guī)則不斷迭代,使模擬曲面逐步接近原始地面。這類方法的代表有漸進加密三角網濾波算法[12]和布料模擬算法[13],兩者使用相對簡單且效果優(yōu)秀,廣泛應用于多種點云處理軟件。
這些方法均為根據(jù)數(shù)據(jù)規(guī)律制定規(guī)則,通過設定的規(guī)則分離地面點與地物點;但真實地形往往存在地形裂變、地形突起等規(guī)則難以覆蓋的因素,而且使用算法時需要人為設定濾波參數(shù),參數(shù)設定的合適與否往往決定了濾波效果,這導致基于規(guī)則的濾波方法對不同場景泛用性較差,濾波精度低。
基于學習的濾波方法將濾波視為對于點云數(shù)據(jù)的分類問題,主要思路是通過數(shù)學模型學習數(shù)據(jù)特征來對數(shù)據(jù)分類。將標注數(shù)據(jù)送入設計好的模型來學習數(shù)據(jù)的特征,該過程稱為訓練;模型通過學習到的特征對數(shù)據(jù)分類,該過程稱為預測。根據(jù)特征提取的方式可分為人工設計特征的濾波方法和直接使用點云的濾波方法,區(qū)別在于對點云數(shù)據(jù)是否進行特征工程。人工設計特征的濾波方式需要根據(jù)目的設計特征提取算法,從點云提取點的特征。優(yōu)秀的特征能使數(shù)據(jù)能在模型中得到更好的表現(xiàn),這項工作往往需要具有相關專業(yè)知識背景的人員輔助,最后將提取好的特征通過模型進行訓練,此類常用的方法有條件隨機場[14]、隨機森林[15]、支持向量機[16]等。而基于深度學習的方式無需人工設計特征提取算法,自身具有特征提取的能力,通過對數(shù)據(jù)學習可以自動、有效地提取點云數(shù)據(jù)特征。但由于點云數(shù)據(jù)排列不規(guī)則的特點,處理圖像的各類深度學習模型難以直接使用在點云數(shù)據(jù)上,早期點云深度學習的研究方法是將點云轉化為各種中間形式進行深度學習,如VoxNet將點云轉化為體素后使用3D卷積算子進行深度學習[17],MVCNN通過設置多個視角,從點云中獲取2D圖像后使用2D卷積算子進行深度學習[18]。由于沒有直接使用點云形式的數(shù)據(jù),在點云形式轉化為中間形態(tài)的過程中,往往會丟失點云幾何信息。從2017年PointNet被提出[19]開始,直接使用點云數(shù)據(jù)的深度學習模型開始爆發(fā)式出現(xiàn),有關PointNet的論文中不僅提出了一種可以直接使用點云的深度學習模型,并且提出點云數(shù)據(jù)的3個特性,即順序不變性、平移不變性和幾何不變性[19]。能解決上述3個特性的深度學習算子便可直接使用點云形式的數(shù)據(jù)進行深度學習。此后如KPconv[20]、RandlaNet[21]等各類可直接使用點云數(shù)據(jù)的深度學習模型不斷出現(xiàn)。
圍繞機載LiDAR點云濾波的準確率與效率,設計了點云濾波深度學習模型。整體結構如圖1。系統(tǒng)整體運行流程分為訓練與測試兩部分,訓練過程中,點云數(shù)據(jù)切片后首先經過數(shù)據(jù)增強模塊,數(shù)據(jù)增強后送入主干網絡進行訓練,過程中通過損失函數(shù)衡量預測值與真實值的差別,并通過反向傳播算法逐步更新模型權重,減少預測值與真實值的不同。測試時首先將點云均等劃分,經過冗余切片模塊進行分割,同時記錄下冗余切片處理前的點云數(shù)據(jù)位置,送入學習后的模型得到結果,僅保留冗余切片處理前的點云數(shù)據(jù)分類結果。
該模型的主干網絡采用編碼器加解碼器的U型結構,其中編碼器通過點云降采樣和特征聚合將特征逐層提取并映射到高維的特征空間,解碼器負責將提取到的抽象特征進行逐層傳播,使點云內所有點獲得對應點等級特征,最后全連接層根據(jù)提取的點等級特征將點云數(shù)據(jù)分為地面點和地物點。機載平臺LiDAR點云數(shù)據(jù)存在數(shù)據(jù)類別不均衡的特點,模型使用了加權交叉熵函數(shù)作為損失函數(shù)提高模型對于不均衡數(shù)據(jù)的分類精度。對于數(shù)據(jù)類別較為單一且相似度較高的情況,通過在訓練時增加了數(shù)據(jù)增強模塊對于數(shù)據(jù)進行增強,提升模型魯棒性。對于測試過程中數(shù)據(jù)切片導致點云損失幾何信息的情況,設計了冗余分割模塊,通過增加測試數(shù)據(jù)的邊緣部分從而減少數(shù)據(jù)幾何信息損失,同時在測試時設置比例因子控制點云濾波速度與準確性。
深度學習屬于“數(shù)據(jù)饑渴型”的技術,高精度、高性能深度學習模型需要大量標記數(shù)據(jù)。數(shù)據(jù)包含場景類型越豐富,數(shù)據(jù)量越大,模型泛化能力越強,濾波效果越好。除此之外,數(shù)據(jù)增強還在避免過擬合、提高模型健壯性方面擁有較好效果。
圖1 整體結構Fig.1 Diagram demonstrating the integral structure
圖像類二維數(shù)據(jù)主要增強方式有幾何變換方法和像素變換方法。常用幾何變換方法有翻轉、旋轉、裁剪、平移、縮放等;常用像素變換方法是給圖片像素各通道值加入噪聲,如增加高斯噪聲、變換亮度和飽和度、調節(jié)白平衡等。對于三維的點云數(shù)據(jù),由于點云數(shù)據(jù)特征包含點之間的幾何關系,除上述兩種變化外,還可以通過對點云坐標附加一個隨機偏移量,模擬環(huán)境因素對于激光雷達的干擾。
深度學習模型使用數(shù)據(jù)增強模塊有兩個原因。第一,由于訓練數(shù)據(jù)的數(shù)量和種類相對單一,很難完全覆蓋真實場景,使用數(shù)據(jù)增強可以增加訓練數(shù)據(jù)的數(shù)量從而提升模型的效果,并且提高模型對于真實場景的泛用性。第二,由于自然條件等各種因素,LiDAR數(shù)據(jù)有時會存在遮蓋、稀疏、缺失、失真等各種問題,數(shù)據(jù)增強可以使模型對非純凈數(shù)據(jù)脫敏,更適應存在干擾的真實場景數(shù)據(jù),增加模型魯棒性。數(shù)據(jù)增強模塊的主要數(shù)據(jù)增強方法有:隨機裁剪、抽稀、加入隨機噪聲等。隨機裁剪指從垂直z軸方向隨機生成少量點,將點所形成多邊形內覆蓋的點云去除,該方法主要目的在于使模型增強對存在覆蓋情況的點云數(shù)據(jù)的準確性(圖2-B);抽稀是指在隨機采樣、體素采樣及八叉樹采樣隨機中選擇一種采樣方法,對點云數(shù)據(jù)按一定比例進行去除,該方法主要目的在于增強模型對稀疏點云數(shù)據(jù)的準確性(圖2-C);加入隨機噪聲指選擇部分數(shù)據(jù),將選中點坐標值加入一個范圍為-1至1的隨機值,該方法的主要目的在于增強模型對存在自然環(huán)境因素干擾的點云數(shù)據(jù)的準確性(圖2-D)。
圖2 數(shù)據(jù)增強Fig.2 Data augment
深度學習模型的主干網絡采用了常見的“編碼器-解碼器”結構。編碼器從不定長點云數(shù)據(jù)提取出定長高維特征,解碼器再將獲得的定長高維特征映射回不定長點云數(shù)據(jù),使點云數(shù)據(jù)中每個點得到點等級特征。編碼器與解碼器之間加入了跳連結構以輔助高維特征映射回點云數(shù)據(jù),最后通過全連接層根據(jù)點等級特征劃分數(shù)據(jù)類別。
編碼器采用了多層下采樣加特征聚合的方案,其主要任務是獲得數(shù)據(jù)的高維特征。下采樣可以減少運算量,同時防止模型過擬合,增加模型對存在細微干擾數(shù)據(jù)的魯棒性。特征聚合可以將點領域內的數(shù)據(jù)特征聚合在一起,減少下采樣產生的信息損失。多層結構能夠增加感受野,使深度學習模型學習到多層次的特征。編碼器共有6層,每層由兩個部分組成:點云降采樣模塊與特征聚合模塊。
點云降采樣模塊主要負責降低點云數(shù)據(jù)量,降采樣減少點數(shù)時需要盡可能降低點云幾何信息損失。常用點云降采樣方法有最遠點采樣[19]、隨機采樣等。最遠點采樣方法需要計算點云中與前一個被選中點距離最大的點,能提取更有代表性的點云子集,但時間、計算資源消耗較大。隨機采樣的資源消耗較小,但由于隨機選取可能導致選取的點云覆蓋率較差,難以代表整體數(shù)據(jù),基于體素降采樣的思想,采用了均勻網格劃分后隨機采樣的方法,將整體點云劃分為若干網格,在每個網格內進行隨機采樣,在保留隨機降采樣速度優(yōu)勢的同時,盡量維護了點云數(shù)據(jù)幾何完整性,在時間和性能上均有較好的表現(xiàn)。
特征聚合模塊采用了KPconv算子[20],該算子采用虛擬卷積核進行卷積的方法,每個卷積核內包含若干核點,每個卷積核通過半徑來確定卷積覆蓋范圍,計算核點與卷積核覆蓋范圍內的點之間的距離,通過將距離進行卷積提取出輸入點特征,該算子與PointNet[19]相比能更好地提取點之間的關系。同時每個核點可以聚合卷積范圍內點特征,部分補償了降采樣損失的幾何信息。原理如圖3所示,點云降采樣后進行特征融合,以獲取下一層點云的采樣后特征。
圖3 KPconv原理Fig.3 Diagram showing the principle of KPconv
解碼器主要任務是上采樣,其目的是將高維特征傳播到具體的每一個點,得到點等級數(shù)據(jù)特征。解碼器共有5層,每一層與輸入大小對應的編碼器層進行跳躍連接。解碼層將上層傳來的聚合點特征進行線性插值,再與跳躍鏈接的編碼器層特征通過1×1的卷積,每層重復該過程直到將特征擴散至原始點云中每一個點。
交叉熵常常用于衡量兩個數(shù)據(jù)分布之間差異,深度學習模型根據(jù)預測結果與真實結果的交叉熵差值,通過反向傳播算法調整模型的參數(shù)。交叉熵損失函數(shù)廣泛應用于分類任務之中,對于類別均衡的數(shù)據(jù)效果較好;但由于激光雷達由空中向地面發(fā)射激光的特點導致點云數(shù)據(jù)中海拔相對高的數(shù)據(jù)類別點數(shù)更多。同時由于場景自身特點導致數(shù)據(jù)類別存在不均衡的現(xiàn)象,如存在大量密集植被或存在連綿大量建筑的場景往往地物點多余地面點,而對于荒地、高山等存在裸露地面的場景,則地面點會多于地物點。使用常規(guī)交叉熵函數(shù)對數(shù)據(jù)量較小的樣本會放大誤差,深度學習模型采用了對于數(shù)據(jù)進行加權的交叉熵函數(shù)[22],其計算公式為
(1)
式中:Ni是第i類的總點數(shù);M表示總類別數(shù);yc表示第c類的真實標簽向量;pc表示第c類的預測標簽向量。
使用改進后損失函數(shù)衡量誤差時,類別占比較小的數(shù)據(jù),可以獲得相對大的權重,使得模型更“重視”樣本量少的數(shù)據(jù)類別,避免了常規(guī)交叉熵損失函數(shù)衡量類別不均衡數(shù)據(jù)誤差較大的缺點,增強模型對類別不均衡數(shù)據(jù)的學習能力。
由于計算機硬件限制,深度學習對大規(guī)模數(shù)據(jù)往往需要進行切片處理,數(shù)據(jù)切片后通過深度學習模型進行訓練和預測,可以避免硬件資源不足的影響。深度學習模型處理圖像時主要是對于像素的通道值進行學習,其數(shù)據(jù)排列整齊的特點使得切片產生的像素排列損失影響很小。與二維的圖像數(shù)據(jù)不同,深度學習模型對排列不整齊的點云數(shù)據(jù)進行學習還需要點云幾何結構。對于切片帶來的信息損失,在測試過程設計了冗余切片模塊對幾何信息缺失進行一定補償。
冗余切片是指每次選擇切片區(qū)域后保存所選區(qū)域內點云的位置信息,通過設置比例系數(shù)對于所選切片的面積進行放大,兩者邊長之比為所設置的比例系數(shù),放大后切片覆蓋的點云數(shù)據(jù)與放大前切片覆蓋的點云數(shù)據(jù)擁有同一個中心。擴大的部分能盡量保留未擴大部分的完整幾何結構,減少切片帶來的幾何信息損失。每次模型輸出時只保留中心未擴大面積內點云的模型輸出結果,其余結果不保留,原理如圖4所示。該方法可以適應不同的需求,對于要求精度的場合,可以通過增加比例系數(shù)獲得更精確的效果;若要求速度,則可以通過減少比例系數(shù)加速模型運算。
圖4 冗余切片原理Fig.4 Principle of redundant slice
實驗使用OpenGF數(shù)據(jù)集[23],其中場景被分為metropolis、smallcity、village和mountain四類,場景特點如表1所示。數(shù)據(jù)集來自9個不同地區(qū),總點云覆蓋面積為47.7 km2,其點數(shù)總計542.1×106。
為了驗證濾波方法的性能,建立濾波精度交叉表(表2),其中:a表示方法分類正確的地面點個數(shù);b表示將地面點分為地物點的個數(shù);c表示地物點分為地面點的個數(shù);d表示方法分類正確的地面點個數(shù)。
模型訓練使用衡量標準為全局準確率(overall accuracy, 簡稱OA)
(2)
表1 OpenGF數(shù)據(jù)集場景特點Table 1 Characteristics of OpenGF dataset scenarios
表2 交叉表Table 2 Crosstab
與交并比(intersection over union, 簡稱IoU)
(3)
測試結果時,采用兩種指標衡量濾波方法的精度,一方面從定量的角度上,根據(jù)國際攝影測量與遙感協(xié)會規(guī)定的總誤差(Et)進行精度判定
(4)
另一方面,因為存在樣本不均衡的情況,采用了kappa系數(shù)對于結果進行評估。kappa系數(shù)是基于混淆矩陣的衡量分類精度的方法,其定義為
(5)
a.數(shù)據(jù)集。選取OpenGF數(shù)據(jù)集中的Train作為訓練集,Validation中4種地形作為測試集,分別測試布料模擬算法、KPconv方法與深度學習模型對于每種地形的濾波效果。
(5)農業(yè)營養(yǎng)和有益元素(指標)N,OrgC在萊蕪市土壤中的基準值最高;S,Cl在東營市,Mn,Co,TFe2O3在棗莊市,B,CaO在德州市,P在濱州市土壤中的基準值最高,其余營養(yǎng)元素(指標)Mo,Se,Al2O3,K2O,SiO2在威海市土壤中的基準值最高。農業(yè)營養(yǎng)和有益元素(指標)最小值分布在青島市(P,CaO)、東營市(I,Mn,Al2O3)、濰坊市(Se)、泰安市(N)、臨沂市(Cl,S)、菏澤市(OrgC)和威海市(B,MgO,TFe2O3)等7個地市土壤中。
b.參數(shù)設置。布料模擬算法:最大迭代次數(shù)為2 000,布料單元大小設置0.5,分類閾值設為0.5;KPconv與深度學習模型設定學習率為0.000 1,隨機初始化參數(shù)進行訓練100個迭代,設備為RTX2080Ti,系統(tǒng)為Ubuntu20.04。
c.驗證算法有效性。深度學習模型訓練結果如圖5所示。
圖5 訓練過程全局準確率與交并比的變化情況Fig.5 Changes of OA and IoU during training
從圖5可以看出,模型在80個迭代之后漸漸穩(wěn)定,在訓練集中全局準確率收斂于0.955,交并比收斂于0.917。
總誤差反映了濾波方法對于場景的可行性,誤差越小濾波效果越好;kappa系數(shù)用來衡量分類一致性,反映了分類精度,其值通常處于0~1之間,kappa系數(shù)越大一致性越高。對布料模擬算法、KPconv模型與深度學習模型的實驗結果計算總誤差及kappa系數(shù)(圖6)。
據(jù)圖6可以得到:①從平均總誤差與平均kappa系數(shù)可以看出,深度學習模型的分類精度與分類一致性總體優(yōu)于布料模擬算法,反映了深度學習方法具有更強的泛用性;②在smallcity、village及mountain場景中,深度學習模型的分類精度與分類一致性優(yōu)于布料模擬算法,反映深度學習方法在地面更復雜的場景擁有更好的表現(xiàn),對于地形裂變等因素的識別率更高;③在metropolis場景中,優(yōu)化前的KPconv模型較布料模擬算法表現(xiàn)較差,主要原因在于數(shù)據(jù)切片后導致的信息損失(圖7),其中紅色為地物點,藍色為地面點。
圖7 KPconv部分誤差可視化Fig.7 KPconv partial error visualization
可以看到由于建筑物頂部面積過大,切片后模型誤認其為地面,導致分類誤差。深度學習模型加入數(shù)據(jù)增強模塊與冗余切割模塊后,改善了該問題。
綜上所述,在較為平坦的地形中,布料模擬算法與深度學習模型均有較為良好的效果。但在實際運用中,布料模擬算法各種參數(shù)的設置對濾波效果影響較大,布料單元設置較小時,會將建筑物頂部視為地面;而布料單元設置較大時,對于地形變化識別效果會較差。而在起伏的地形,深度學習模型相較于布料模擬算法效果更好,且在使用中深度學習模型無需設置各種參數(shù),輸入數(shù)據(jù)便可以得到結果。深度學習模型部分結果可視化如圖8所示。
圖8 部分結果可視化Fig.8 Visualization of partial results
a.具有優(yōu)秀的泛用性,對于多種場景或場景存在復雜地形的情況有良好的表現(xiàn)。
b.具有更高的精度,對于地形裂變等因素具有更高的濾波精度,且實用中可以通過增加一部分標注的新數(shù)據(jù)進一步提升效果。
c.無需設置各類參數(shù),對于不同的地形無需專業(yè)知識可直接使用。
雖然深度學習方法在多方面優(yōu)于傳統(tǒng)方法,但也存在著諸多不足,還有很多需要改進的問題,如受限于計算機軟硬件發(fā)展,需要將數(shù)據(jù)切片導致信息受損,需要人工對數(shù)據(jù)進行標注等問題,仍需要研究者們繼續(xù)在該領域不斷努力探索。