王俊強,2,李建勝,丁 波2,蔡 富
(1.信息工程大學,鄭州 450000; 2.中國人民解放軍78123部隊,成都 610000)
遙感影像分割作為遙感影像解譯的重要分支之一,是將圖像分割為若干對象區域,每個區域內的像素之間具有較好的相似性,同時保證對象區域之間有較大的異質性[1]。智能的遙感影像分割可實現典型要素自動提取,如快速提取道路網數據,能夠為導航圖提供數據支持。傳統分割方式一般使用隨機森林[2]或者紋理基元森林方法[3]來構建用于語義分割的分類器,這類方法需要人工制作復雜特征,魯棒性差,難以滿足大范圍自動化作業需求。近年來,深度學習在多種高級計算機視覺任務中取得成功,特別是監督學習下的卷積神經網絡在圖像分類、目標檢測方面成功鼓舞著研究人員探索此類網絡對于像素級標記,如語義分割方面的能力。2014年Jonathan Long等提出的全卷積神經網絡(Fully Convolutional Network,FCN)[4],是深度學習應用于圖像語義分割的開山之作,將傳統卷積神經網絡(Convolutional Neural Network,CNN)中的全連接層轉化成卷積層,編碼部分通過卷積和池化操作獲取特征圖,解碼部分通過反卷積上采樣恢復原圖尺度,實現像素級分割。然而,相比于CNN下采樣階段的結構規整,FCN上采樣時的結構相對凌亂。因此,2015年Vijay Badrinarayanan提出SegNet算法[5],采用了幾乎和下采樣對稱的上采樣結構,分割精度及效率均得到提升。針對現有模型由于沒有引入足夠的上下文信息及不同感受野下的全局信息而存在分割出現錯誤的情景,Zhao H提出了使用全局場景下的類別信息的PSPNet算法[6],另外還提出了引入輔助損失的深度殘差網絡(ResNet)[7]優化方法。Deeplab系列(v1,v2,v3,v3+)是由Liang-Chieh Chen等[8-10]提出的,通過不斷優化,最近的Deeplabv3+[10]在引用多孔空間金字塔池化(ASPP)網絡模塊,利用解碼編碼的形式,擴展了感受野,獲取更多的上下文信息,能夠實現圖像魯棒分割。總而言之,這些基于深度學習的語義分割算法不斷優化,性能得到提升,但這些算法都基于公開自然場景數據集上評價分析,當前針對于高分辨率遙感影像分割分析較少,因此,研究分析這些算法在遙感影像中的分割性能,對于選擇合適算法用于遙感圖像語義分割具有參考價值。
本文將基于無人機遙感影像,通過定性對比試驗和定量評價分析典型的3種語義分割算法SegNet、PSPNet、Deeplabv3+的分割性能。本文首先介紹了這3種語義分割算法基本原理,其次闡述了優化策略,最后通過實驗進行全面分析評價。
SegNet類似于全卷積網絡的解碼編碼形式,但編碼和解碼使用的技術不一致,其網絡結構如圖1所示。該網絡結構是一種對稱結構,編碼部分使用的是VGGNet網絡[11]的前13層卷積網絡,通過卷積提取高維特征,并通過池化使圖片變小,解碼部分通過上采樣與反卷積操作使特征圖像變大,恢復至原輸入圖像大小,最后通Softmax層,輸出每個像素點不同分類的最大值。由于最大池化和子采樣的疊加,會導致邊界細節損失增大,因此SegNet在編碼特征圖過程中儲存了最大池化標記位置,并且在上采樣過程恢復最大池化位置。

圖1 SegNet算法原理
針對大部分全卷積網絡的模型都缺少合適的策略去利用全局場景下的類別信息,PSPNet算法引入金字塔池化模塊,其原理示意圖如圖2所示。輸入圖像通過特征提取網絡得到原來圖像尺寸1/8的特征圖像,特征圖像送入金字塔池化模塊,金字塔池化分為4種不同尺度,池化之后可得到不同尺寸的特征圖,對每個金字塔層級特征圖進行1*1卷積降維操作,然后直接對低維的特征圖進行上采樣,得到原圖尺寸。最后,不同層的特征圖與原特征圖融合連接后經過卷積輸出結果。

圖2 PSPNet算法原理
Deeplabv3+算法采用類似于FCN的編碼器-解碼器的方式,其原理示意圖如圖3所示。

圖3 Deeplabv3+原理示意
輸入圖像利用特征提取網絡生成比原圖縮小16倍特征圖。該算法以Xception網絡作為骨架網絡,其網絡結構由一系列深度可分離卷積、類似ResNet中的殘差連接和一些其他常規的操作組成,由于Deeplabv2版本采用的是ResNet作為骨架網絡,Deeplabv3+精度較Deeplabv2提升,因此本文不再對該算法下以ResNet作為骨架網絡進行訓練。Xception網絡中引入了ASPP模塊,可以在多尺度上捕獲信息,實現魯棒分割。然后將特征圖輸入到一個256通道的1*1卷積層中。最后,將卷積后的特征圖輸入至解碼器部分實現恢復至原圖像大小的分割結果。該解碼器借鑒全卷積網絡的跳步連接方式,首先利用48通道1*1卷積對低層次特征圖卷積,實現特征圖降維,再將其與經4倍雙線性內插上采樣的高層次特征圖融合,最后進行3*3卷積操作后經4倍的雙線性內插恢復至原圖大小,獲得分割預測圖。
受限于硬件環境能力,實際訓練中可能不具備分布式GPU環境,并且訓練樣本規模有限,如果隨機給定初始化模型參數權值,訓練效果不一定良好。
遷移學習是將算法中的骨架網絡在經過海量圖像分類數據預訓練好的權值,遷移至訓練任務中,對網絡權值進行初始化。通過遷移學習可加速網絡訓練速度,提高訓練精度[12]。但語義分割算法中的骨干網絡和圖像分類任務預訓練的模型不一定完全一致,如PSPNet算法中的ResNet網絡引入空洞卷積策略,而實際預訓練ResNet模型不具備該參數,導致兩者參數無法一一對應,因此,實際只從預訓練模型中加載模型中包含的相關參數字段。
骨干網絡是語義分割算法的基礎網絡,對于提取特征至關重要,網絡結構越合理,模型算法效果將更優,也更容易進行訓練。為尋求更優的骨干網絡,可對算法骨干網絡部分進行替換實驗,例如,針對PSPNet算法,文獻[6]中特征提取網絡采用的是帶有空洞卷積的ResNet網絡,為對比不同骨架網絡下的算法性能,本文同時設計采用DenseNet網絡[13]作為特征提取網絡進行對比實驗。DenseNet是一種具有密集連接的卷積神經網絡,其基本思路與ResNet一致,但相對于ResNet的“短路連接”,其建立的是前面所有層與后面層的密集連接,可實現特征重用,提升效率。在圖像分類領域里,同等精度下,DenseNet的參數量要小于ResNet。
在PSPNet算法基礎上,本文利用ResNet和DenseNet不同網絡層數的網絡結構作為骨干網絡設計模型進行實驗,分別為ResNet-34,ResNet-50、ResNet-101、DenseNet121、DenseNet169以及DenseNet201,算法生成模型大小如表1所示,其中以DenseNet121為骨架網絡的PSPNet模型參數最少,模型復雜度最低,訓練時需要梯度下降的參數更少。本文將在節3.3對不同骨干網絡進行精度分析。

表1 模型參數大小
實驗硬件為聯想P920工作站,操作系統為Ubuntu16.04,配置96G內存及NVIDIA TITAN Xp顯卡。編程語言為Python,深度學習框架為Pytorch。
實驗訓練數據為南方某區域2015年5張不同像素大小及區域的無人機遙感影像及相應標記數據,標記分為5類,分別為背景、植被、建筑、水體及道路。將其中4張裁切為300*300大小圖片1900張,另外1張裁切為300*300大小圖片300張作為驗證集。另有多張不同場景的測試影像數據(不帶標記)作為分割效果可視化對比驗證。由于訓練樣本數據量有限,僅利用上述樣本訓練,會造成過擬合現象,為解決這個問題,本文設計了適應遙感數據特點的數據增強器,該數據增強器相比于常規的通過圖像單個變換方式增強,不同之處在于其以概率的形式對多種圖像變換方式進行組合操作,再將數據固定到指定尺寸,如圖4所示。

圖4 數據增強器設計
在該圖像增強器的處理下,每次輸入網絡中的圖片能從色彩、亮度、紋理、尺度等方面保持差別。因此,通過數據增強器能夠有效豐富樣本的數量。
傳統影像分類方法采用總體精度(overrall accuracy,OA)、平均精度(average accuracy,AA)和Kappa系數作為評價指標[15]。本文將繼續采用OA和AA指標,并引入深度學習標準度量MIoU作為評價指標。假設圖像共有k+1個待分割簽類別(從L0到Lk,其中L0為背景類),pii表示本屬于類i但被預測為類j的像素數量。即pii表示真正例的數量,而pij、pji則分別為假正例和假負例。則總體精度可表示為:
(1)
平均精度是總體精度的一種簡單提升,計算每個類別被正確分類像素數量的比例后,計算所有類別的平均值,可表示為:
(2)
MIoU是計算真實值和預測值兩個集合的交集和并集之比,在每個類別計算IoU后取平均值,可表示為:
(3)
該指標綜合反映了目標的捕獲程度(使預測標簽與標注盡可能重合)和模型的精確程度使并集盡可能重合)情況。
以PSPNet和SegNet算法為例,骨干網絡分別采用ResNet-101和VGG16網絡,對遷移訓練和未遷移訓練的總體精度隨著訓練epoch(訓練集中的全部樣本訓練一次為1個epoch)變化情況進行對比分析,如圖5所示,兩種算法均訓練150個epoch,批處理尺寸為8,初始學習率為0.001,每50個epoch下降為原來0.1倍。

圖5 遷移學習支持下的總體精度對比
從圖5可知,在SegNet及PSPNet算法中遷移訓練方式結果均要優于隨機初始化權值方式,總體精度大概能提升2~5個百分點。收斂速度方面,遷移訓練方式快于初始化權值方式,尤其PSPNet算法表現更明顯,PSPNet學習率為0.001的情況下,遷移訓練方式訓練前20個epoch精度上升較快,在第50個epoch降低學習率后,第60個epoch達到收斂,初始化權值方式明顯經過訓練更多epoch后收斂。因此,利用遷移學習方式是一種有效提升訓練效率和精度的方式,尤其是在數據量小或深度學習設備性能有限情況下,遷移學習方式作用更突出。
在遷移學習的基礎上,對表1設計的不同骨干網絡模型進行訓練,訓練參數設置同上,訓練總體精度隨著epoch變化情況如圖6所示。結合表1及圖6可知,以DenseNet121為基礎的PSPNet算法參數量最少,約為以ResNet-34為基礎的0.7倍,但最終精度略高于ResNet-34。ResNet和DenseNet相互對應的幾種級別網絡中,DenseNet精度總體與ResNet相當,表明DenseNet這種密集連接型的卷積神經網絡更加優化,能夠保證精度的前提下降低模型復雜度,從而降低訓練難度。
通過以上實驗,驗證了遷移學習方式對于訓練效果的提升。本文將使用遷移學習對以上3種算法進行訓練,其中PSPNet算法采用ResNet-50、ResNet-101、DenseNet169以及DenseNet201網絡,SegNet算法采用VGG網絡,Deeplabv3+采用Xception網絡,3種算法均訓練150個epoch,批處理大小為8,初始學習率為0.001,每50個epoch下降為原來0.1,統計分析總體精度、平均精度以及MIoU如表3所示。從總體精度和平均精度來看,Deeplabv3+算法達到最高的總體精度89.3%及平均精度88.9%,相對于SegNet和PSPNet算法提升幅度較大,PSPNet算法中不同骨架網絡精度略有不同,但總體變化幅度不大,以ResNet-101為骨架網絡精度最高。從MIoU來看,Deeplabv3+算法達到最高80.4%,較SegNet和PSPNet算法提升較大。從分類別精度(AA和IoU)來看,所有類別Deeplabv3+算法均達到最高精度,SegNet算法所有類別精度均不如PSPNet算法,道路及建筑物分割由于復雜程度高于水體及植被,其精度相對于水體及植被更低。為嘗試集成學習方法對結果的影響,以PSPNet算法與SegNet算法為基礎,利用簡單的多數投票法的方式對各模型結果進行融合[16],獲得最終結果,從表2可知,融合后的MIoU值相對于PSPNet可以提升1個百分點。

圖6 遷移學習支持下的總體精度對比
綜合以上可知,Deeplabv3+算法精度遠高于其他兩種算法,是深度學習語義分割方法運用于遙感影像高精度分割的不錯選擇。在各種模型算法精度較差情況下,通過多模型投票融合可提升分割精度。PSPNet算法精度雖不如Deeplabv3+算法,但其優勢是較為模塊化的結構,便于更換CNN網路,降低模型復雜程度。
圖7分別采用以上3種算法及SegNet與PSPNet投票融合的方式對驗證集圖片進行分割可視化(黑色為背景,綠色為植被,藍色為河流,紅色為建筑物,白色為道路),從圖7可知,Deeplabv3+算法分割效果最優,邊界信息較其他方法更完整,SegNet算法分割圖像較粗糙,要素信息完整性不如其他兩種算法。通過SegNet與PSPNet算法融合后,分割效果較單個算法更優。
測試數據上的分割結果如圖8所示,輸入圖像選擇3張1500*1500像素大小的無人機影像,Deeplabv3+分割完整性及邊緣信息均要優于PSPNet算法及SegNet算法,尤其是道路的連通性,建筑物的邊界效果,說明Deeplabv3+算法能夠實現目標的魯棒分割。
基于深度學習的語義分割算法基本結構均是采用解碼和編碼形式,但通過在算法結構中引入不同模塊,可達到不同分割效果。本文對比分析了代表性的3種3種深度學習語義分割方法SegNet、PSPNet、Deeplabv3+的性能。通過無人機影像數據分割試驗分析,可得到以下結論:利用遷移學習方式訓練,可提升訓練精度和加快訓練進度,提升總體精度2-5個百分點。編碼器部分不同骨架網絡可達到不同精度效果,選擇一種結構最優且精度較高的骨架網絡(如DenseNet),可保證精度的前提下,降低模型復雜度。通過投票集成方式對不同模型或者同模型不同尺度下的預測結果進行融合,可提升訓練精度。 Deeplabv3+算法較其兩種算法精度更優,能夠實現目標的魯棒分割,將其應用于遙感影像高精度解譯是較好的選擇。

表2 不同算法精度統計情況 (%)

圖7 不同算法在驗證集上的預測效果對比

圖8 測試圖片分割效果對比
本文分析的幾種典型的算法,對于將深度學習方法用于遙感影像分割方面具有一定參考價值,但由于當前深度學習發展迅速,可能會涌現出更多好的算法,如在網絡中引入全局上下文信息模塊的EncNet[17],同樣能夠達到較好效果,后續可對這些算法作進一步研究。