王俊強(qiáng),2,李建勝,丁 波2,蔡 富
(1.信息工程大學(xué),鄭州 450000; 2.中國人民解放軍78123部隊,成都 610000)
遙感影像分割作為遙感影像解譯的重要分支之一,是將圖像分割為若干對象區(qū)域,每個區(qū)域內(nèi)的像素之間具有較好的相似性,同時保證對象區(qū)域之間有較大的異質(zhì)性[1]。智能的遙感影像分割可實現(xiàn)典型要素自動提取,如快速提取道路網(wǎng)數(shù)據(jù),能夠為導(dǎo)航圖提供數(shù)據(jù)支持。傳統(tǒng)分割方式一般使用隨機(jī)森林[2]或者紋理基元森林方法[3]來構(gòu)建用于語義分割的分類器,這類方法需要人工制作復(fù)雜特征,魯棒性差,難以滿足大范圍自動化作業(yè)需求。近年來,深度學(xué)習(xí)在多種高級計算機(jī)視覺任務(wù)中取得成功,特別是監(jiān)督學(xué)習(xí)下的卷積神經(jīng)網(wǎng)絡(luò)在圖像分類、目標(biāo)檢測方面成功鼓舞著研究人員探索此類網(wǎng)絡(luò)對于像素級標(biāo)記,如語義分割方面的能力。2014年Jonathan Long等提出的全卷積神經(jīng)網(wǎng)絡(luò)(Fully Convolutional Network,F(xiàn)CN)[4],是深度學(xué)習(xí)應(yīng)用于圖像語義分割的開山之作,將傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)中的全連接層轉(zhuǎn)化成卷積層,編碼部分通過卷積和池化操作獲取特征圖,解碼部分通過反卷積上采樣恢復(fù)原圖尺度,實現(xiàn)像素級分割。然而,相比于CNN下采樣階段的結(jié)構(gòu)規(guī)整,F(xiàn)CN上采樣時的結(jié)構(gòu)相對凌亂。因此,2015年Vijay Badrinarayanan提出SegNet算法[5],采用了幾乎和下采樣對稱的上采樣結(jié)構(gòu),分割精度及效率均得到提升。針對現(xiàn)有模型由于沒有引入足夠的上下文信息及不同感受野下的全局信息而存在分割出現(xiàn)錯誤的情景,Zhao H提出了使用全局場景下的類別信息的PSPNet算法[6],另外還提出了引入輔助損失的深度殘差網(wǎng)絡(luò)(ResNet)[7]優(yōu)化方法。Deeplab系列(v1,v2,v3,v3+)是由Liang-Chieh Chen等[8-10]提出的,通過不斷優(yōu)化,最近的Deeplabv3+[10]在引用多孔空間金字塔池化(ASPP)網(wǎng)絡(luò)模塊,利用解碼編碼的形式,擴(kuò)展了感受野,獲取更多的上下文信息,能夠?qū)崿F(xiàn)圖像魯棒分割??偠灾?,這些基于深度學(xué)習(xí)的語義分割算法不斷優(yōu)化,性能得到提升,但這些算法都基于公開自然場景數(shù)據(jù)集上評價分析,當(dāng)前針對于高分辨率遙感影像分割分析較少,因此,研究分析這些算法在遙感影像中的分割性能,對于選擇合適算法用于遙感圖像語義分割具有參考價值。
本文將基于無人機(jī)遙感影像,通過定性對比試驗和定量評價分析典型的3種語義分割算法SegNet、PSPNet、Deeplabv3+的分割性能。本文首先介紹了這3種語義分割算法基本原理,其次闡述了優(yōu)化策略,最后通過實驗進(jìn)行全面分析評價。
SegNet類似于全卷積網(wǎng)絡(luò)的解碼編碼形式,但編碼和解碼使用的技術(shù)不一致,其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。該網(wǎng)絡(luò)結(jié)構(gòu)是一種對稱結(jié)構(gòu),編碼部分使用的是VGGNet網(wǎng)絡(luò)[11]的前13層卷積網(wǎng)絡(luò),通過卷積提取高維特征,并通過池化使圖片變小,解碼部分通過上采樣與反卷積操作使特征圖像變大,恢復(fù)至原輸入圖像大小,最后通Softmax層,輸出每個像素點不同分類的最大值。由于最大池化和子采樣的疊加,會導(dǎo)致邊界細(xì)節(jié)損失增大,因此SegNet在編碼特征圖過程中儲存了最大池化標(biāo)記位置,并且在上采樣過程恢復(fù)最大池化位置。
圖1 SegNet算法原理
針對大部分全卷積網(wǎng)絡(luò)的模型都缺少合適的策略去利用全局場景下的類別信息,PSPNet算法引入金字塔池化模塊,其原理示意圖如圖2所示。輸入圖像通過特征提取網(wǎng)絡(luò)得到原來圖像尺寸1/8的特征圖像,特征圖像送入金字塔池化模塊,金字塔池化分為4種不同尺度,池化之后可得到不同尺寸的特征圖,對每個金字塔層級特征圖進(jìn)行1*1卷積降維操作,然后直接對低維的特征圖進(jìn)行上采樣,得到原圖尺寸。最后,不同層的特征圖與原特征圖融合連接后經(jīng)過卷積輸出結(jié)果。
圖2 PSPNet算法原理
Deeplabv3+算法采用類似于FCN的編碼器-解碼器的方式,其原理示意圖如圖3所示。
圖3 Deeplabv3+原理示意
輸入圖像利用特征提取網(wǎng)絡(luò)生成比原圖縮小16倍特征圖。該算法以Xception網(wǎng)絡(luò)作為骨架網(wǎng)絡(luò),其網(wǎng)絡(luò)結(jié)構(gòu)由一系列深度可分離卷積、類似ResNet中的殘差連接和一些其他常規(guī)的操作組成,由于Deeplabv2版本采用的是ResNet作為骨架網(wǎng)絡(luò),Deeplabv3+精度較Deeplabv2提升,因此本文不再對該算法下以ResNet作為骨架網(wǎng)絡(luò)進(jìn)行訓(xùn)練。Xception網(wǎng)絡(luò)中引入了ASPP模塊,可以在多尺度上捕獲信息,實現(xiàn)魯棒分割。然后將特征圖輸入到一個256通道的1*1卷積層中。最后,將卷積后的特征圖輸入至解碼器部分實現(xiàn)恢復(fù)至原圖像大小的分割結(jié)果。該解碼器借鑒全卷積網(wǎng)絡(luò)的跳步連接方式,首先利用48通道1*1卷積對低層次特征圖卷積,實現(xiàn)特征圖降維,再將其與經(jīng)4倍雙線性內(nèi)插上采樣的高層次特征圖融合,最后進(jìn)行3*3卷積操作后經(jīng)4倍的雙線性內(nèi)插恢復(fù)至原圖大小,獲得分割預(yù)測圖。
受限于硬件環(huán)境能力,實際訓(xùn)練中可能不具備分布式GPU環(huán)境,并且訓(xùn)練樣本規(guī)模有限,如果隨機(jī)給定初始化模型參數(shù)權(quán)值,訓(xùn)練效果不一定良好。
遷移學(xué)習(xí)是將算法中的骨架網(wǎng)絡(luò)在經(jīng)過海量圖像分類數(shù)據(jù)預(yù)訓(xùn)練好的權(quán)值,遷移至訓(xùn)練任務(wù)中,對網(wǎng)絡(luò)權(quán)值進(jìn)行初始化。通過遷移學(xué)習(xí)可加速網(wǎng)絡(luò)訓(xùn)練速度,提高訓(xùn)練精度[12]。但語義分割算法中的骨干網(wǎng)絡(luò)和圖像分類任務(wù)預(yù)訓(xùn)練的模型不一定完全一致,如PSPNet算法中的ResNet網(wǎng)絡(luò)引入空洞卷積策略,而實際預(yù)訓(xùn)練ResNet模型不具備該參數(shù),導(dǎo)致兩者參數(shù)無法一一對應(yīng),因此,實際只從預(yù)訓(xùn)練模型中加載模型中包含的相關(guān)參數(shù)字段。
骨干網(wǎng)絡(luò)是語義分割算法的基礎(chǔ)網(wǎng)絡(luò),對于提取特征至關(guān)重要,網(wǎng)絡(luò)結(jié)構(gòu)越合理,模型算法效果將更優(yōu),也更容易進(jìn)行訓(xùn)練。為尋求更優(yōu)的骨干網(wǎng)絡(luò),可對算法骨干網(wǎng)絡(luò)部分進(jìn)行替換實驗,例如,針對PSPNet算法,文獻(xiàn)[6]中特征提取網(wǎng)絡(luò)采用的是帶有空洞卷積的ResNet網(wǎng)絡(luò),為對比不同骨架網(wǎng)絡(luò)下的算法性能,本文同時設(shè)計采用DenseNet網(wǎng)絡(luò)[13]作為特征提取網(wǎng)絡(luò)進(jìn)行對比實驗。DenseNet是一種具有密集連接的卷積神經(jīng)網(wǎng)絡(luò),其基本思路與ResNet一致,但相對于ResNet的“短路連接”,其建立的是前面所有層與后面層的密集連接,可實現(xiàn)特征重用,提升效率。在圖像分類領(lǐng)域里,同等精度下,DenseNet的參數(shù)量要小于ResNet。
在PSPNet算法基礎(chǔ)上,本文利用ResNet和DenseNet不同網(wǎng)絡(luò)層數(shù)的網(wǎng)絡(luò)結(jié)構(gòu)作為骨干網(wǎng)絡(luò)設(shè)計模型進(jìn)行實驗,分別為ResNet-34,ResNet-50、ResNet-101、DenseNet121、DenseNet169以及DenseNet201,算法生成模型大小如表1所示,其中以DenseNet121為骨架網(wǎng)絡(luò)的PSPNet模型參數(shù)最少,模型復(fù)雜度最低,訓(xùn)練時需要梯度下降的參數(shù)更少。本文將在節(jié)3.3對不同骨干網(wǎng)絡(luò)進(jìn)行精度分析。
表1 模型參數(shù)大小
實驗硬件為聯(lián)想P920工作站,操作系統(tǒng)為Ubuntu16.04,配置96G內(nèi)存及NVIDIA TITAN Xp顯卡。編程語言為Python,深度學(xué)習(xí)框架為Pytorch。
實驗訓(xùn)練數(shù)據(jù)為南方某區(qū)域2015年5張不同像素大小及區(qū)域的無人機(jī)遙感影像及相應(yīng)標(biāo)記數(shù)據(jù),標(biāo)記分為5類,分別為背景、植被、建筑、水體及道路。將其中4張裁切為300*300大小圖片1900張,另外1張裁切為300*300大小圖片300張作為驗證集。另有多張不同場景的測試影像數(shù)據(jù)(不帶標(biāo)記)作為分割效果可視化對比驗證。由于訓(xùn)練樣本數(shù)據(jù)量有限,僅利用上述樣本訓(xùn)練,會造成過擬合現(xiàn)象,為解決這個問題,本文設(shè)計了適應(yīng)遙感數(shù)據(jù)特點的數(shù)據(jù)增強(qiáng)器,該數(shù)據(jù)增強(qiáng)器相比于常規(guī)的通過圖像單個變換方式增強(qiáng),不同之處在于其以概率的形式對多種圖像變換方式進(jìn)行組合操作,再將數(shù)據(jù)固定到指定尺寸,如圖4所示。
圖4 數(shù)據(jù)增強(qiáng)器設(shè)計
在該圖像增強(qiáng)器的處理下,每次輸入網(wǎng)絡(luò)中的圖片能從色彩、亮度、紋理、尺度等方面保持差別。因此,通過數(shù)據(jù)增強(qiáng)器能夠有效豐富樣本的數(shù)量。
傳統(tǒng)影像分類方法采用總體精度(overrall accuracy,OA)、平均精度(average accuracy,AA)和Kappa系數(shù)作為評價指標(biāo)[15]。本文將繼續(xù)采用OA和AA指標(biāo),并引入深度學(xué)習(xí)標(biāo)準(zhǔn)度量MIoU作為評價指標(biāo)。假設(shè)圖像共有k+1個待分割簽類別(從L0到Lk,其中L0為背景類),pii表示本屬于類i但被預(yù)測為類j的像素數(shù)量。即pii表示真正例的數(shù)量,而pij、pji則分別為假正例和假負(fù)例。則總體精度可表示為:
(1)
平均精度是總體精度的一種簡單提升,計算每個類別被正確分類像素數(shù)量的比例后,計算所有類別的平均值,可表示為:
(2)
MIoU是計算真實值和預(yù)測值兩個集合的交集和并集之比,在每個類別計算IoU后取平均值,可表示為:
(3)
該指標(biāo)綜合反映了目標(biāo)的捕獲程度(使預(yù)測標(biāo)簽與標(biāo)注盡可能重合)和模型的精確程度使并集盡可能重合)情況。
以PSPNet和SegNet算法為例,骨干網(wǎng)絡(luò)分別采用ResNet-101和VGG16網(wǎng)絡(luò),對遷移訓(xùn)練和未遷移訓(xùn)練的總體精度隨著訓(xùn)練epoch(訓(xùn)練集中的全部樣本訓(xùn)練一次為1個epoch)變化情況進(jìn)行對比分析,如圖5所示,兩種算法均訓(xùn)練150個epoch,批處理尺寸為8,初始學(xué)習(xí)率為0.001,每50個epoch下降為原來0.1倍。
圖5 遷移學(xué)習(xí)支持下的總體精度對比
從圖5可知,在SegNet及PSPNet算法中遷移訓(xùn)練方式結(jié)果均要優(yōu)于隨機(jī)初始化權(quán)值方式,總體精度大概能提升2~5個百分點。收斂速度方面,遷移訓(xùn)練方式快于初始化權(quán)值方式,尤其PSPNet算法表現(xiàn)更明顯,PSPNet學(xué)習(xí)率為0.001的情況下,遷移訓(xùn)練方式訓(xùn)練前20個epoch精度上升較快,在第50個epoch降低學(xué)習(xí)率后,第60個epoch達(dá)到收斂,初始化權(quán)值方式明顯經(jīng)過訓(xùn)練更多epoch后收斂。因此,利用遷移學(xué)習(xí)方式是一種有效提升訓(xùn)練效率和精度的方式,尤其是在數(shù)據(jù)量小或深度學(xué)習(xí)設(shè)備性能有限情況下,遷移學(xué)習(xí)方式作用更突出。
在遷移學(xué)習(xí)的基礎(chǔ)上,對表1設(shè)計的不同骨干網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練,訓(xùn)練參數(shù)設(shè)置同上,訓(xùn)練總體精度隨著epoch變化情況如圖6所示。結(jié)合表1及圖6可知,以DenseNet121為基礎(chǔ)的PSPNet算法參數(shù)量最少,約為以ResNet-34為基礎(chǔ)的0.7倍,但最終精度略高于ResNet-34。ResNet和DenseNet相互對應(yīng)的幾種級別網(wǎng)絡(luò)中,DenseNet精度總體與ResNet相當(dāng),表明DenseNet這種密集連接型的卷積神經(jīng)網(wǎng)絡(luò)更加優(yōu)化,能夠保證精度的前提下降低模型復(fù)雜度,從而降低訓(xùn)練難度。
通過以上實驗,驗證了遷移學(xué)習(xí)方式對于訓(xùn)練效果的提升。本文將使用遷移學(xué)習(xí)對以上3種算法進(jìn)行訓(xùn)練,其中PSPNet算法采用ResNet-50、ResNet-101、DenseNet169以及DenseNet201網(wǎng)絡(luò),SegNet算法采用VGG網(wǎng)絡(luò),Deeplabv3+采用Xception網(wǎng)絡(luò),3種算法均訓(xùn)練150個epoch,批處理大小為8,初始學(xué)習(xí)率為0.001,每50個epoch下降為原來0.1,統(tǒng)計分析總體精度、平均精度以及MIoU如表3所示。從總體精度和平均精度來看,Deeplabv3+算法達(dá)到最高的總體精度89.3%及平均精度88.9%,相對于SegNet和PSPNet算法提升幅度較大,PSPNet算法中不同骨架網(wǎng)絡(luò)精度略有不同,但總體變化幅度不大,以ResNet-101為骨架網(wǎng)絡(luò)精度最高。從MIoU來看,Deeplabv3+算法達(dá)到最高80.4%,較SegNet和PSPNet算法提升較大。從分類別精度(AA和IoU)來看,所有類別Deeplabv3+算法均達(dá)到最高精度,SegNet算法所有類別精度均不如PSPNet算法,道路及建筑物分割由于復(fù)雜程度高于水體及植被,其精度相對于水體及植被更低。為嘗試集成學(xué)習(xí)方法對結(jié)果的影響,以PSPNet算法與SegNet算法為基礎(chǔ),利用簡單的多數(shù)投票法的方式對各模型結(jié)果進(jìn)行融合[16],獲得最終結(jié)果,從表2可知,融合后的MIoU值相對于PSPNet可以提升1個百分點。
圖6 遷移學(xué)習(xí)支持下的總體精度對比
綜合以上可知,Deeplabv3+算法精度遠(yuǎn)高于其他兩種算法,是深度學(xué)習(xí)語義分割方法運用于遙感影像高精度分割的不錯選擇。在各種模型算法精度較差情況下,通過多模型投票融合可提升分割精度。PSPNet算法精度雖不如Deeplabv3+算法,但其優(yōu)勢是較為模塊化的結(jié)構(gòu),便于更換CNN網(wǎng)路,降低模型復(fù)雜程度。
圖7分別采用以上3種算法及SegNet與PSPNet投票融合的方式對驗證集圖片進(jìn)行分割可視化(黑色為背景,綠色為植被,藍(lán)色為河流,紅色為建筑物,白色為道路),從圖7可知,Deeplabv3+算法分割效果最優(yōu),邊界信息較其他方法更完整,SegNet算法分割圖像較粗糙,要素信息完整性不如其他兩種算法。通過SegNet與PSPNet算法融合后,分割效果較單個算法更優(yōu)。
測試數(shù)據(jù)上的分割結(jié)果如圖8所示,輸入圖像選擇3張1500*1500像素大小的無人機(jī)影像,Deeplabv3+分割完整性及邊緣信息均要優(yōu)于PSPNet算法及SegNet算法,尤其是道路的連通性,建筑物的邊界效果,說明Deeplabv3+算法能夠?qū)崿F(xiàn)目標(biāo)的魯棒分割。
基于深度學(xué)習(xí)的語義分割算法基本結(jié)構(gòu)均是采用解碼和編碼形式,但通過在算法結(jié)構(gòu)中引入不同模塊,可達(dá)到不同分割效果。本文對比分析了代表性的3種3種深度學(xué)習(xí)語義分割方法SegNet、PSPNet、Deeplabv3+的性能。通過無人機(jī)影像數(shù)據(jù)分割試驗分析,可得到以下結(jié)論:利用遷移學(xué)習(xí)方式訓(xùn)練,可提升訓(xùn)練精度和加快訓(xùn)練進(jìn)度,提升總體精度2-5個百分點。編碼器部分不同骨架網(wǎng)絡(luò)可達(dá)到不同精度效果,選擇一種結(jié)構(gòu)最優(yōu)且精度較高的骨架網(wǎng)絡(luò)(如DenseNet),可保證精度的前提下,降低模型復(fù)雜度。通過投票集成方式對不同模型或者同模型不同尺度下的預(yù)測結(jié)果進(jìn)行融合,可提升訓(xùn)練精度。 Deeplabv3+算法較其兩種算法精度更優(yōu),能夠?qū)崿F(xiàn)目標(biāo)的魯棒分割,將其應(yīng)用于遙感影像高精度解譯是較好的選擇。
表2 不同算法精度統(tǒng)計情況 (%)
圖7 不同算法在驗證集上的預(yù)測效果對比
圖8 測試圖片分割效果對比
本文分析的幾種典型的算法,對于將深度學(xué)習(xí)方法用于遙感影像分割方面具有一定參考價值,但由于當(dāng)前深度學(xué)習(xí)發(fā)展迅速,可能會涌現(xiàn)出更多好的算法,如在網(wǎng)絡(luò)中引入全局上下文信息模塊的EncNet[17],同樣能夠達(dá)到較好效果,后續(xù)可對這些算法作進(jìn)一步研究。