劉茂華,韓梓威,陳一鳴,劉正軍,韓顏順
(1. 沈陽建筑大學 交通工程學院, 遼寧 沈陽 110168; 2. 中國測繪科學研究院, 北京 100089)
樹種分類是生態環境、林業測量、遙感等眾多行業和領域的重點研究課題,因為樹種識別對生態系統評估、生物多樣性監測和森林資源利用起著至關重要的作用[1-2]。傳統的樹種分類方法通常是利用高光譜遙感技術,通過樹木的光譜信息區分不同的樹種。然而,高光譜數據冗余度大,且存在著“同譜異物”和“同物異譜”的現象,忽略了樹木的三維結構信息[3]。激光雷達(Light Detection And Ranging, LiDAR)是一種先進的主動遙感技術,它能夠高精度地快速獲取地表目標的高度信息和三維結構信息,且具有抗干擾能力強、低空探測性能好等優點[4-5]。隨著無人機技術的快速發展,無人機LiDAR為快速、準確的植被精細分類提供了有力的技術支撐[6]。
近年來,深度學習技術在三維數據上取得了很好的發展,根據輸入網絡的表達方式可以概括為以下三種:①基于體素的方法一般是將三維模型劃分為三維網格后再進行3D卷積,代表模型有VoxNet、3D ShapeNets、O-CNN等[7-9];②基于多視圖的方法是先將三維模型通過投影等方法得到二維圖像,再利用圖像領域的方法進行處理,代表模型有MVCNN、FPNN、DeepPano等[10-12];③基于點的方法是網絡能夠適應三維數據的特點,直接對點云進行處理,代表模型有PointNet、PointNet++、PointCNN等[13-15]。
由于深度學習在特征提取上的優勢,近年來有學者將該技術運用到基于LiDAR數據的樹種識別。Guan等[16]基于體素實現了濾波和單木分割,然后將樹的點密度用波形表示,再利用深度玻爾茲曼機(Deep Boltzmann Machine, DBM)實現了對城市樹種的分類;Zou等[17]利用柵格化的方法在樣本空間中劃分體素,將每個體素格網中的點云數累積,投影到包含樹木輪廓的二維圖像上,每30°重復投影,并用一個深度信念網絡(Deep Belief Network, DBN)來生成高級特征,從而進行樹種分類;Hamraz等[18]將點云轉化為數字表面模型(Digital Surface Model, DSM)和2D視圖,再利用深度卷積神經網絡(Convolutional Neural Networks, CNN)對針葉樹和落葉樹分類。
然而,這些研究都是先將點云進行規則化處理,例如轉換成體素或二維圖像,而沒有直接利用三維數據進行特征提取或分類。體素劃分不僅會呈指數級地增加計算成本,還會受到分辨率的限制,存在局部信息丟失的現象。多視圖投影的方法不能充分利用點云的三維結構信息,在點分類和場景理解等3D任務上具有較大的局限性。因此,本文基于森林樣區內獲取的無人機LiDAR點云數據,提出了一種新的樹種分類方法,該方法將無序的點云數據作為神經網絡的輸入,直接利用其三維信息進行特征提取,實現白樺樹和落葉松兩個樹種的分類。
研究區域為中國河北省承德市圍場滿族蒙古族自治縣內的塞罕壩國家森林公園(42°24′N,117°19′E)的一部分,海拔高度為1 500~2 067 m,植被覆蓋度約為80%。研究區內包括白樺和落葉松兩類樹種共計約1 790棵,兩類樹主要以一條較寬的土路為分隔,其中白樺樹主要分布在路的西北部,約870棵;落葉松分布在路的東南部,約920棵。
實驗數據由大疆無人機搭載的Riegl公司miniVUX 1U激光雷達掃描儀于2019年8月24日獲取,航線間距40 m,航高50 m,飛行速度5 m/s,激光雷達掃描角90°~270°,掃描線速度100 m/s。基于該無人機LiDAR系統獲得的原始數據如圖1所示,兩類樹種點云樣例數據如圖2所示,樣區內各樹種的結構特征見表1。

圖1 無人機LiDAR原始數據Fig.1 Airborne LiDAR raw data

(a) 白樺(a) Birch (b) 落葉松(b) Larch圖2 基于無人機LiDAR系統的點云樣本示例Fig.2 Example of point cloud sample based on airborne LiDAR system

表1 樣本樹木結構特征
對于獲取的原始無人機LiDAR點云數據,首先進行預處理,包括去噪和地面濾波。其次,對預處理后的森林點云數據進行單木分割,獲取單木點云。再次,對單木點云添加標簽,制作數據集。訓練集用于訓練神經網絡模型,測試集用于對得到的模型測試樹種分類精度。最后,對可能的分類精度影響因素進行分析,并做對比實驗。基于機載LiDAR數據的三維深度學習樹種分類工作流程如圖3所示。

圖3 樹種分類工作流程Fig.3 Work flow of tree species classification
1.3.1 去噪與地面濾波
由于森林環境的復雜性,獲取機載LiDAR數據的過程中會產生粗差,因此必須先對原始點云數據去噪。對每一個點搜索相同個數的鄰域點,經多次實驗發現,當鄰近點個數為10時,去噪效果最好。然后計算該點到鄰域點的距離平均值Dmean及其中值m和標準差σ。計算最大距離Dmax:
Dmax=m+Kσ
(1)
其中,K為標準差倍數,設置為5。若Dmean大于Dmax,則認為該點為噪點,將其去除。
為消除地形影響,需要先對去噪后的點云數據進行地面濾波,以獲得更準確的單木分割結果。本文利用改進的漸進加密三角網濾波算法[19]對地面點與非地面點進行分離。首先對LiDAR點云以1 m的尺寸劃分網格,取每個網格的最低點進行光柵化,再利用形態學開操作選取潛在地面種子點Gpotential。然后,利用平移平面擬合法濾除Gpotential中的非地面點,進而獲得準確的地面種子點Gseeds。最后,建立TIN模型,執行先向下再向上的迭代加密,得到地面點Gresult。地面點和非地面點的分類結果如圖4所示,其中藍色點為地面點Gresult,白色點是樹木點,刪除地面點即完成濾波。

圖4 地面點與非地面點的分類結果Fig.4 Classification results of ground points and non-ground points
1.3.2 單木分割
為了制作深度學習的數據集,向每棵樹添加代表樹種的標簽,需要對原始的森林數據進行單木分割。單木提取存在一定的錯誤率,例如欠分割、多樹粘連等情況,所以使用單一方法分割得到的高質量單木數量較少。因不同分割方法得到的單木三維形狀有所差異,可作為數據增強的一種方法,故本實驗分別采取改進的分水嶺分割算法[20]和基于點云距離的分割方法[21]對原始的森林點云數據進行分割,以篩選出數量足夠多的高質量單木點云。改進的分水嶺分割算法首先從原始的激光脈沖生成數字表面模型和數字高程模型,進而得到冠層高度模型;然后,通過在具有可變窗口大小的冠層最大值模型中搜索局部最大值來檢測樹梢,其窗口大小由冠部大小和樹高度之間的回歸曲線預測間隔的下限確定,該步驟可有效減少對樹頂點的判別錯誤;最后,利用Marker-controlled分水嶺算法完成單木分割,如圖5所示。基于點云距離的分割將點按順序從高到低進行分類,間距大于指定閾值的點排除在目標樹之外,間距小于閾值的點根據最小間距規則進行分類,分割結果如圖6所示。通過這兩種算法,共分割出單木3 598棵,經人工篩選,刪除過分割、欠分割以及粘連嚴重的樹,保留1 200棵高質量樹作為實驗數據。

圖5 基于改進的分水嶺分割的單木分割結果Fig.5 Results of individual tree segmentation based on improved watershed segmentation

圖6 基于點云距離的單木分割結果Fig.6 Results of individual tree segmentation based on point cloud distance
1.3.3 樣本集準備
深度神經網絡需要輸入樣本具有相同的點云數,故將所有單木均勻采樣2 048個點,并將每棵樹零均值歸一化至單位球內,以解決點的平移不變性。向每棵樹添加標簽,其中白樺樹記為0,落葉松記為1。為了避免因種植區域相同而導致分類器可能過于適合研究地點的情況,從不同的空間中劃分數據。將整個數據集按照8 ∶2的比例隨機分成訓練集和測試集,其中訓練數據取自研究區西側,測試數據選取研究區的東側樹。最后,將包含(x,y,z)坐標的原始點云數據、標簽值和歸一化數據轉換成HDF5格式。詳見表2。

表2 訓練集與測試集
網絡模型分為特征映射模塊、對稱函數模塊和分類器模塊,如圖7所示。對每一個單木點云取固定值N個點,每個點有三個維度的特征(x,y,z),即點的三維坐標。在特征映射模塊中,輸入的是N×3的矩陣,經過三層權重共享的多層感知器(Multi-Layer Perceptron, MLP)將每個點映射到1 024維的高維空間,得到N×1 024的特征矩陣。在對稱函數模塊,通過對稱函數max pooling得到1×1 024維的全局特征。最后,在分類器模塊,以全局特征作為輸入,通過兩個全連接層和一個softmax分類器得到兩個樹種的分類概率。

圖7 神經網絡模型Fig.7 Neural network model
1)特征映射模塊:多層感知器是一種前向結構的人工神經網絡,層與層之間全連接,在輸入與輸出的向量之間能夠進行非線性映射。將輸入層向量記為X,則隱藏層的輸出為f(W1X+b1),其中W1為權重(也叫連接系數),b1為偏置,f是激活函數。在該網絡模型中,感知器的每一層都使用了ReLU激活函數和批處理歸一化,輸出大小依次為64、128、1 024。
2)對稱函數模塊:點云是一個無序點的集合,而點的順序不會影響這個集合本身。如果把點云表示為一個N行D列的二維矩陣(其中N代表點的個數,D代表點的維度),對該矩陣做行變換則一共有N!種變換方式,而這N!種置換代表的是同一點集,因此網絡需要擁有對點云的置換不變性。對稱函數能夠很好地解決這個問題,例如對某一點的集合X(x1,x2,…,xn),取該集合的最大值、最小值、平均值都與點的順序無關。但是,直接對每個點做對稱操作,例如取最大值,會得到整個點集的最遠點值;取平均值,會得到點集的重心,這樣會損失點集有意義幾何信息。因此,在網絡結構中,首先利用MLP對每個點做相同的高維映射,通過高維空間中信息的冗余性避免對稱操作導致的信息丟失。該結構實質上是h、g、Υ的函數組合:
f(x1,x2,…,xn)=Υg(h(x1),h(x2),…,h(xn))
(2)
其中,h代表高維映射,g代表對稱函數,Υ代表MLP整合信息。
3)分類器模塊:對于得到的全局特征向量,將其輸入兩個全連接層(Fully Connected layers, FC)中,并在最后一個層(輸出維度為256)中使用0.7的dropout防止過擬合。在softmax分類損失中加入一個正則化損失(權重為0.001),使矩陣接近正交。
實驗使用NVIDIA Tesla V100-PCIE-16 GB顯卡,在Ubuntu 18.4系統下搭配cuda 10.0框架和cuDNN 7.4.1加速庫訓練。編譯語言使用Python3.6,深度學習框架為Tensorflow-gpu-1.13.1。模型使用Adam優化器,初始學習率為0.001,最小學習率設定為0.000 01,通過指數衰減的方式實現學習率衰減,衰減率為0.7,動量為0.9,共訓練200個周期,每20個周期學習率除以2,批處理歸一化的衰減率從0.5開始,逐漸增加到0.99,訓練時長18 min。為了更好地提高模型的泛化能力,在訓練過程中,通過沿上軸隨機旋轉物體來動態地增強點云,并通過均值為0和標準偏差為0.02的高斯噪聲來抖動每個點的位置。
為了探究單木分割效果對分類結果的影響,同時使本文方法和實驗結果更具實際意義,本文又對數據集的結構做了改變。保持原數據集單木個數不變,隨機抽取10%、20%、30%、40%、50%的樹木樣本,并加入同等數量的非完整分割單木。如圖8所示,替換的樣本有過分割和欠分割的單木,非完整分割的程度及替換次序為隨機抽取,未經人工干預。

(a) 白樺(a) Birch
為了證明本實驗方法的優越性,與以下三種方法進行比較。
方法1:參考Lin等[22]提出的方法,計算點云數據的9個點分布特征參數、13個冠內結構參數、11個樹外結構參數,共計33個特征參數輸入一個三層的MLP分類器中進行樹種分類。
方法2:參考Guan等[16]提出的方法,如圖9所示,取預定義的波形維數n為50,對分割得到的單木進行n個剖面的垂直剖分,將每個剖面的點統計值歸一化至0~1內,以生成波形圖。將得到的波形圖輸入一個兩層的DBM模型中生成高級特征,進行樹種分類。

(a) 白樺樹樣本及其波形圖(a) Sample of white birch tree and its waveform
方法3:參考Zou等[17]提出的方法,在樣本空間中對單木做柵格化劃分,計數每個網格塊中的點數,沿y軸在xz平面上積累網格,得到類似灰度圖像的圖片。對單木點云以相同的旋轉度數重復投影,得到的二維圖像作為樹木的低級特征輸入一個三層的DBN,再使用softmax分類器對同一棵樹的所有投影圖像的分類結果進行投票。參與投票的每幅圖像使用相同的權重,并通過贏得大部分選票的類別結果來判定樹種。圖10為每旋轉36°后的柵格化示意,藍色虛線框內為投影結果。實驗中分類最優結果產生在旋轉角度為10°時。

圖10 單木的柵格化與投影Fig.10 Rasterization and projection of individual tree
實驗分類結果如表3所示,樹種分類的總體準確率(Overall Accuracy, OA)為86.7%,kappa系數為0.73;生產者精度(Producer′s Accuracy,PA)高于85.5%,用戶精度(User Accuracy,UA)高于85.0%。圖11顯示了數據集中非完整分割單木所占比例對分類結果的影響。由圖可以看出,當少量樣本質量變低時(如占比10%),分類準確率并沒有受到較大影響,說明該網絡的魯棒性較好。當低質量樣本變多時(如占比30%以上),網絡的分類精度會迅速下降,說明此時數據集的質量對網絡的學習產生了較大的負面影響。當低質量樣本占總樣本的50%左右時,網絡的分類準確率也降至50%附近,此時對于一個二分類問題來說,相當于網絡能在樣本中學到的東西是非常少的,近乎隨機猜測。

表3 樹種分類結果的混淆矩陣

圖11 數據集質量對分類準確率的影響Fig.11 Influence of data set quality on classification accuracy
由此可以得出,造成分類錯誤的原因主要有以下兩點:一是白樺和落葉松兩個樹種在結構形態上具有較高的相似性;二是實驗區內的樹木比較密集,單木分割的效果會直接影響最后的分類結果。
本文方法與1.5節所述三種方法的分類結果如表4所示。其中方法1的分類精度最低,總體精度為81.7%,kappa系數為0.63,該方法雖然統計了樹木的33個不同的結構參數,但有限參數加淺層學習的分類方法仍限制了其分類精度。

表4 四種方法的分類精度比較結果
方法2的總體準確度為84.2%,kappa系數為0.68,優于方法1,這是因為該方法通過波形數據更好地表示了不同樹種獨特的幾何結構,且使用DBM模型生成了高級特征,減少了人工解譯的錯誤。
方法3的總體精度為85.6%,kappa系數為0.71,優于前兩個方法。相較于方法2對每棵樹生成唯一的波形表示,每10°重復投影對樹木信息的保留更加全面,且大大增加了樣本量,有利于深度學習模型的學習,因此得到了更高的分類精度。
實驗表明,本文方法優于以上三種方法,其原因是:①與將三維數據轉化成二維表達形式的方法相比,基于點的深層神經網絡能夠有效減少數據轉化過程中的信息損失,很好地保留樹木的三維結構信息;②本文提出的網絡模型能夠有效地提取LiDAR數據的高維特征,有利于提高樹種分類精度。
為了避免點云數據幾何信息的損失,本文在對稱操作之前,通過參數共享的MLP將每個點映射到一個高維空間。為了探究點的特征維度對分類結果的影響,對使用128、256、512、1 024、2 048維特征的分類準確度進行了比較(如圖12所示)。結果表明,隨著特征維度的增加,總體分類準確度提高,點云的幾何信息得到了更好的保留。當特征維度達到約1 000時,分類性能達到最好。當特征維度超過1 000以后,分類性能無明顯提升。

圖12 特征維度對分類準確率的影響Fig.12 Influence of feature dimensions on classification accuracy
本研究對分割得到的單木數據分別進行五次均勻下采樣,如圖13所示,采樣點個數從128增加至2 048的過程中,分類準確度提升了13.1%。當每棵樹的采樣點數量超過2 000時,網絡的分類性能趨于飽和。點密度的增加促使分類效果大幅提升的原因主要是白樺和落葉松兩個樹種相似度較高,增加點密度能夠保留更多的幾何結構信息,使得深度神經網絡能夠更好地學習。而當點密度增加到一定數值時,網絡能學到的信息趨于飽和,過大的點密度只會增加信息的冗余程度而很難提升分類性能。

圖13 密度對分類準確率的影響Fig.13 Effect of dot density on classification accuracy
本研究提出了一種新的基于三維深度學習的樹種分類方法。該方法對預處理后的點云數據做單木分割,將得到的單木點云作為模型的輸入,利用由特征映射模塊、對稱函數模塊和分類器模塊組成的深度神經網絡自動提取樹木的高維特征并實現樹種分類。通過實驗得到以下結論:
1)本研究在樹種分類任務上取得了較好的效果,在包含白樺樹和落葉松兩個樹種的數據集上實現了86.7%的總體精度和0.73的kappa系數。
2)實驗結果表明,相比于特征參數法、波形圖法和柵格化投影法,本文方法在特征提取上存在優勢,有助于提高樹種分類精度。
3)隨著點的特征維度和點密度的增加,分類準確率不斷提高,但存在提高的臨界值。在該數據集中,對每棵樹取2 048個點,每個點取1 024維特征時,模型的分類效果最好。