陳巖,奚硯濤,檀明,許強(qiáng),萬(wàn)家華
(1.合肥學(xué)院 人工智能與大數(shù)據(jù)學(xué)院,合肥 230601;2.合肥學(xué)院 中德應(yīng)用優(yōu)化研究所,合肥 230601;3.中國(guó)礦業(yè)大學(xué) 資源與地球科學(xué)學(xué)院,江蘇 徐州 221006;4.安徽新華學(xué)院 大數(shù)據(jù)與人工智能學(xué)院,合肥 230031)
建筑物是重要的地理空間數(shù)據(jù),是基礎(chǔ)地理信息數(shù)據(jù)庫(kù)中的核心構(gòu)成要素之一?;诟叻直媛蔬b感影像的建筑物智能解譯對(duì)于城市規(guī)劃、城市建模、地理制圖、災(zāi)害與環(huán)境管理等具有重要意義[1-2]。
近年來(lái),以卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)為代表的深度學(xué)習(xí)方法被廣泛應(yīng)用于遙感場(chǎng)景分類、地物對(duì)象識(shí)別檢測(cè)和土地利用覆蓋分類等方向,并取得了良好效果[3-4]。與傳統(tǒng)基于光譜和面向?qū)ο蟮姆椒ㄏ啾?,CNN可以有效改善椒鹽噪聲,提高解譯目標(biāo)邊緣精度。U-Net[5]是基于標(biāo)準(zhǔn)CNN設(shè)計(jì)的具有對(duì)稱編解碼結(jié)構(gòu)的語(yǔ)義分割模型。相比基于圖塊的(patch-based)[6]的CNN語(yǔ)義分割方法,U-Net實(shí)現(xiàn)了端到端的語(yǔ)義分割,并在云[7]、車輛[8]、浮油[9]和海冰[10]等目標(biāo)對(duì)象的自動(dòng)提取和解譯中獲得了SOTA(state of the art)的結(jié)果。但需要指出的是,U-Net等深度卷積神經(jīng)網(wǎng)絡(luò)使用的最大池化層以舍棄位置信息為代價(jià)獲取高級(jí)語(yǔ)義特征,利用上采樣和編解碼結(jié)構(gòu)進(jìn)行恢復(fù),使得整個(gè)網(wǎng)絡(luò)過(guò)于復(fù)雜,模型訓(xùn)練耗時(shí)長(zhǎng),難以優(yōu)化,對(duì)訓(xùn)練使用的計(jì)算環(huán)境要求較高。另外,對(duì)于高分遙感影像建筑智能解譯,由于建筑物多尺度特征,及其與周邊地物對(duì)象的尺度差異性,為了提取高級(jí)語(yǔ)義特征,保證建筑物完整性,同時(shí)保留更多空間細(xì)節(jié),需要充分考慮訓(xùn)練樣本尺寸和感受野大小[11]。當(dāng)輸入圖像尺寸過(guò)大時(shí),模型計(jì)算開(kāi)銷增加,內(nèi)存和GPU負(fù)荷增大,訓(xùn)練難度進(jìn)一步提升。
本文通過(guò)修改標(biāo)準(zhǔn)U-Net模型編解碼結(jié)構(gòu)中輸入樣本尺寸、卷積層數(shù)量、卷積核數(shù)量、最優(yōu)化算法和特征融合方法,針對(duì)中低配置計(jì)算環(huán)境,設(shè)計(jì)了面向復(fù)雜場(chǎng)景高分遙感影像建筑智能解譯的U-Net語(yǔ)義分割模型。為進(jìn)一步優(yōu)化、提升模型效率,本文在修改的U-Net模型中引入了空間置棄層(spatial dropout)[12],設(shè)置兩組實(shí)驗(yàn)情景,定量對(duì)比分析了實(shí)驗(yàn)結(jié)果,得出了有意義的結(jié)論。本文的主要貢獻(xiàn)包括兩點(diǎn)。一是首次將空間置棄層引入U(xiǎn)-Net模型,并取得了更高的精度,例如目標(biāo)邊緣更準(zhǔn)確,為進(jìn)一步優(yōu)化U-Net和經(jīng)典深度卷積神經(jīng)網(wǎng)絡(luò)提供了新的思路。二是實(shí)驗(yàn)設(shè)計(jì)改進(jìn)的輸入樣本尺寸、卷積層數(shù)量、卷積核數(shù)量、學(xué)習(xí)率等超參數(shù)以及實(shí)驗(yàn)使用的特征融合方法和最優(yōu)化算法,為使用中低配置計(jì)算環(huán)境訓(xùn)練和測(cè)試U-Net以解決高分辨率遙感影像建筑解譯問(wèn)題提供了有意義的參考。
標(biāo)準(zhǔn)U-Net是由Ronneberger等于2015年設(shè)計(jì)開(kāi)發(fā),最初用于醫(yī)學(xué)細(xì)胞分割。其網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,采用了對(duì)稱的編解碼結(jié)構(gòu)。拆分來(lái)看,可以將整個(gè)網(wǎng)絡(luò)看作由九個(gè)卷積塊組成。相應(yīng)的卷積塊通過(guò)跳躍連接(skip connection)方式進(jìn)行多尺度特征融合。在九個(gè)卷積塊中,五個(gè)編碼卷積塊用于特征提取,四個(gè)解碼卷積塊用于恢復(fù)目標(biāo)位置信息并最終實(shí)現(xiàn)逐像素分類。每個(gè)編碼卷積塊由若干個(gè)卷積層、非線性激活層、批歸一化層(batch normalization,BN)[13]和最大池化層構(gòu)成。每個(gè)解碼卷積塊由若干個(gè)上采樣層、特征融合層、卷積層、非線性激活層和BN層構(gòu)成。
圖1 標(biāo)準(zhǔn)U-Net網(wǎng)絡(luò)結(jié)構(gòu)
標(biāo)準(zhǔn)U-Net的輸入樣本為572像素×572像素的三通道圖像。在首個(gè)編碼卷積塊中,經(jīng)過(guò)兩次卷積和ReLU(rectified linear unit,ReLU)非線性激活后,對(duì)得到的特征圖進(jìn)一步做BN和最大池化操作。其中,卷積層卷積核數(shù)量為64,每個(gè)卷積核通道數(shù)為3,尺寸為3像素×3像素。此后各編碼卷積塊中的卷積核數(shù)量依次成倍增加至1 024個(gè),通道數(shù)與上層輸出特征圖通道數(shù)保持一致,卷積核尺寸保持不變。在最后一個(gè)編碼卷積塊中,對(duì)其輸出進(jìn)行兩倍上采樣操作,并將上采樣輸出與第4個(gè)編碼卷積塊的輸出進(jìn)行融合,再依次進(jìn)行兩次卷積和ReLU非線性激活、一次BN運(yùn)算,最終進(jìn)入解碼卷積塊。其中,標(biāo)準(zhǔn)U-Net特征融合采用的是沿通道拼接(concatenate)的方式。依次將上采樣輸出與對(duì)應(yīng)的編碼卷積塊輸出進(jìn)行融合、上采樣,并最終基于1*1卷積操作和softmax分類器輸出388像素×338像素的逐像素分類結(jié)果圖。模型訓(xùn)練使用的損失函數(shù)為交叉熵,最優(yōu)化算法為隨機(jī)梯度下降(stochastic gradient descent,SGD)。
本文通過(guò)修改標(biāo)準(zhǔn)U-Net網(wǎng)絡(luò)編解碼結(jié)構(gòu)中輸入樣本尺寸、卷積層數(shù)量、卷積核數(shù)量、最優(yōu)化算法和特征融合方法,針對(duì)中低配置計(jì)算環(huán)境,設(shè)計(jì)了面向高分遙感影像建筑智能解譯的U-Net語(yǔ)義分割模型。其網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示,圖中SPD層指代空間置棄層。為了減小內(nèi)存和GPU負(fù)荷,本文將輸入樣本大小從572像素×572像素修改為224像素×224像素,將編碼卷積塊和解碼卷積塊中的卷積層全部減少一層,輸入樣本通道數(shù)保持不變。為了減少模型參數(shù),對(duì)標(biāo)準(zhǔn)U-Net各編解碼卷積塊進(jìn)行了降維操作。例如,將第一個(gè)編碼卷積塊中卷積核數(shù)量從64減少為16,依次按照四倍數(shù)量減少,最后一個(gè)編碼卷積塊卷積核數(shù)量為256個(gè),同時(shí)使用逐層特征圖融合方法替代沿通道拼接特征融合。相比于標(biāo)準(zhǔn)U-Net面向不規(guī)則自然細(xì)胞分割的設(shè)計(jì),本文充分考慮高分遙感影像中建筑物特征[14],即人工構(gòu)造的建筑物的形狀(俯視輪廓)多以矩形和直角多邊形為主,同時(shí)具有規(guī)律顯著的紋理特征和較為均勻的灰度分布。因此,上述修改對(duì)于高分遙感影像建筑物解譯是合適的,實(shí)驗(yàn)結(jié)果也證明了這一點(diǎn)。最后,為了提高模型訓(xùn)練收斂速度,本文使用Adam[15]最優(yōu)化算法取代隨機(jī)梯度下降法。
圖2 改進(jìn)的U-Net網(wǎng)絡(luò)結(jié)構(gòu)
盡管標(biāo)準(zhǔn)U-Net使用了BN加速模型訓(xùn)練防止過(guò)擬合,但其效果受限于batch size[16]。當(dāng) batch size較小時(shí),會(huì)導(dǎo)致模型誤差增加。對(duì)于高分遙感影像建筑智能解譯這樣的語(yǔ)義分割任務(wù),要求的輸入樣本尺寸較大,如果設(shè)置更大的batch size,將會(huì)導(dǎo)致GPU負(fù)荷增加。因此,為了進(jìn)一步優(yōu)化模型,本文在修改的U-Net基礎(chǔ)上引入了空間置棄層進(jìn)行實(shí)驗(yàn)??臻g置棄層是Tompson等提出的一種用于圖像領(lǐng)域的dropout[17]方法。與密集連接中常用的dropout隨機(jī)將若干隱層節(jié)點(diǎn)置零相比,空間置棄層則隨機(jī)將若干特征圖全部元素置零。該方法已在部分自然圖像和醫(yī)學(xué)影像分類和識(shí)別任務(wù)中取得良好效果。
模型訓(xùn)練和測(cè)試使用的數(shù)據(jù)集來(lái)自于武漢大學(xué)季順平團(tuán)隊(duì)開(kāi)發(fā)的WHU building dataset數(shù)據(jù)集[18]。該數(shù)據(jù)集樣本圖像分別采集自不同遙感平臺(tái)和城市,可用于建筑語(yǔ)義分割和變化檢測(cè)研究。本文實(shí)驗(yàn)使用的數(shù)據(jù)集是其中的航空?qǐng)D像數(shù)據(jù)集(aerial imagery dataset),如圖3所示。該數(shù)據(jù)集中原始遙感影像采集自新西蘭Christchurch市,空間分辨率為0.075 m,覆蓋面積達(dá)450 km2,包含22萬(wàn)個(gè)獨(dú)立建筑??紤]內(nèi)存和GPU限制,原始影像被降采樣為0.3 m空間分辨率,并按順序裁剪為8 189個(gè)大小512像素×512像素的子圖。其中,訓(xùn)練集包括4 736個(gè)子圖,驗(yàn)證集包括1 036個(gè)子圖,測(cè)試集包括2 416個(gè)子圖。在本文的實(shí)驗(yàn)中,本文從三個(gè)子數(shù)據(jù)集中隨機(jī)提取了5 772個(gè)訓(xùn)練樣本,并通過(guò)程序動(dòng)態(tài)分配用于訓(xùn)練、驗(yàn)證和測(cè)試的數(shù)據(jù)樣本。但需要指出的是,實(shí)驗(yàn)過(guò)程中設(shè)置了隨機(jī)種子點(diǎn),保證了每次參與訓(xùn)練、驗(yàn)證和測(cè)試的數(shù)據(jù)的一致性。
圖3 aerial imagery dataset航空?qǐng)D像數(shù)據(jù)集
考慮到計(jì)算環(huán)境,模型訓(xùn)練使用的batch size設(shè)置為10;為保證模型有效收斂,學(xué)習(xí)率設(shè)置為0.000 01;損失函數(shù)采用交叉熵,并基于Adam優(yōu)化,替換標(biāo)準(zhǔn)U-Net中使用的隨機(jī)梯度下降法;迭代次數(shù)設(shè)置為1 000;模型使用總體精度作為評(píng)價(jià)指標(biāo)。實(shí)驗(yàn)使用的軟硬件環(huán)境如表1所示。
表1 實(shí)驗(yàn)軟硬件環(huán)境
模型實(shí)現(xiàn)主要基于Tensorflow 2.0深度學(xué)習(xí)框架。對(duì)于數(shù)據(jù)預(yù)處理、載入及結(jié)果可視化,本文分別使用了相關(guān)的Python第三方庫(kù),如numpy、matplotlib、os和glob等。實(shí)驗(yàn)按照數(shù)據(jù)預(yù)處理與載入、模型框架構(gòu)建、模型訓(xùn)練與測(cè)試和結(jié)果可視化的技術(shù)路線實(shí)施。為減小樣本存儲(chǔ)容量,首先將原數(shù)據(jù)集輸入樣本和標(biāo)注樣本數(shù)據(jù)格式進(jìn)行了轉(zhuǎn)換:輸入樣本從24位深TIF格式轉(zhuǎn)換為24位深JPG格式;標(biāo)注樣本從1位深TIF格式轉(zhuǎn)換為8位深PNG格式。模型框架主要采用Tensorflow 2.0深度集成的keras接口進(jìn)行構(gòu)建,這其中包括實(shí)現(xiàn)卷積、最大池化、批歸一化、上采樣、特征融合及空間置棄操作的所有接口。同樣,模型的訓(xùn)練、驗(yàn)證及模型測(cè)試評(píng)價(jià)均采用keras接口。結(jié)果可視化則采用matplotlib.pyplot庫(kù)實(shí)現(xiàn)。模型實(shí)現(xiàn)使用的核心接口如下所示,各接口返回值類型及參數(shù)可參見(jiàn)文獻(xiàn)[19]。
1)數(shù)據(jù)預(yù)處理與載入。采用的函數(shù)描述如下。
①Object glob.glob(parameters):獲取圖像文件全路徑。
②Object tensorflow.image.decode_jpeg(parameters):解碼JPG格式圖像。
③Object tensorflow.image.decode_png(parameters):解碼PNG格式圖像。
④Object tensorflow.data.Dataset.from_tensor_slices(parameters):輸入與標(biāo)注特征切片與重構(gòu)。
2)?模型框架構(gòu)建。采用的函數(shù)描述如下。
①Object tf.keras.layers.Input(parameters):模型輸入。
②Object tf.keras.layers.Conv2D(parameters):卷積。
③Object tf.keras.layers.BatchNormalization(parameters):批歸一化。
④Object tf.keras.layers.MaxPooling2D(parameters):最大池化。
⑤Object tf.keras.layers.UpSampling2D(parameters):上采樣。
⑥Object tf.keras.layers.concatenate(parameters):特征融合。
⑦Object tf.keras.layers.SpatialDropout2D(parameters):空間置棄。
⑧Object tf.keras.models.Model(parameters):模型構(gòu)建。
3)?模型訓(xùn)練與測(cè)試。采用的函數(shù)描述如下。
①Object tf.keras.models.Model.compile(parameters):模型設(shè)置(如學(xué)習(xí)率、優(yōu)化器、損失函數(shù)、評(píng)價(jià)尺度等)。
②Object tf.keras.models.Model.fit(parameters):模型訓(xùn)練。
③Object tf.keras.models.Model.evaluation(parameters):模型測(cè)試。
④Object tf.keras.models.Model.predict(parameters):模型應(yīng)用(預(yù)測(cè))。
4)?結(jié)果可視化。采用的函數(shù)描述如下。
①Object matplotlib.pyplot.plot(parameters):繪制坐標(biāo)軸。
②Object matplotlib.pyplot.figure(parameters):繪制圖像。
③Object matplotlib.pyplot.imshow(parameters):可視化。
為比較改進(jìn)前后模型效率,在樣本尺寸、卷積層數(shù)量和卷積核數(shù)量保持一致前提下,設(shè)置了兩組對(duì)比實(shí)驗(yàn)場(chǎng)景,分別命名為MUNET-SGD-CONCATENATE和MUNET-SPD-ADAM-ADD。前者與標(biāo)準(zhǔn)U-Net網(wǎng)絡(luò)結(jié)構(gòu)、優(yōu)化方法和特征融合方法保持一致,后者采用Adam替換標(biāo)準(zhǔn)U-Net的SGD優(yōu)化方法,并采用逐維度加和特征融合方法取代沿通道維度聯(lián)合特征融合方法。模型參數(shù)數(shù)量、訓(xùn)練時(shí)間和總體精度等改進(jìn)前后主要指標(biāo)如表2所示。模型訓(xùn)練總精度變化曲線如圖4所示。隨機(jī)提取三個(gè)樣本進(jìn)行預(yù)測(cè),結(jié)果如圖5所示。樣本的選擇主要考慮了樣本圖像中建筑物尺度和背景復(fù)雜度,例如樣本1中包含尺度差異較大的建筑物,而樣本2和樣本3中背景包含的地物類別、紋理和顏色相對(duì)更加復(fù)雜。
圖4 模型訓(xùn)練精度變化曲線
圖5 模型預(yù)測(cè)結(jié)果
表2 模型改進(jìn)前后主要指標(biāo)對(duì)比
從結(jié)果可以看出,面向復(fù)雜場(chǎng)景的高分遙感影像,通過(guò)對(duì)標(biāo)準(zhǔn)U-Net模型輸入樣本尺寸、卷積層數(shù)量和卷積核數(shù)量進(jìn)行修改,模型在本研究使用的中低配置計(jì)算環(huán)境下運(yùn)行良好,并獲得了更高的精度。標(biāo)準(zhǔn)U-Net采用沿通道維度聯(lián)合的特征融合方法,大大增加特征維度,參數(shù)數(shù)量增加顯著。使用逐維度加和的特征融合方法并且引入空間置棄模塊后,參數(shù)數(shù)量顯著減少。如表2所示,修改后模型的總參數(shù)數(shù)量減少了195 840個(gè),模型訓(xùn)練所用時(shí)間縮短1 h。另外,Adam優(yōu)化方法的使用使得模型訓(xùn)練收斂更快,例如,MUNET-SPD-ADAM-ADD僅在第13個(gè)epoch就達(dá)到了90%的精度,而MUNET-SGD-CONCATENATE直到第59個(gè)epoch才達(dá)到90%精度。值得注意的是,在MUNET-SGD-CONCATENATE實(shí)驗(yàn)結(jié)果中,每一次epoch驗(yàn)證集的精度均高于訓(xùn)練集精度,這種精度變異情況一直持續(xù)至訓(xùn)練結(jié)束。這可能是由于訓(xùn)練集和驗(yàn)證集中樣本特征分布不均引起,即驗(yàn)證集中特征數(shù)量相對(duì)于訓(xùn)練集更少,或僅集中于較窄特征分布內(nèi)。當(dāng)引入空間置棄層后,在未對(duì)驗(yàn)證集做數(shù)據(jù)增強(qiáng)或特征分布修改等后處理操作情況下獲得了更好的結(jié)果,精度變異情況不再出現(xiàn),如圖6所示。
圖6 訓(xùn)練集與驗(yàn)證集精度與loss曲線
在圖5展示的結(jié)果中可以看出,修改后的模型可以更完整地提取建筑物,同時(shí)大大降低了類似于椒鹽噪聲的局部錯(cuò)分,并且建筑物邊界更加分明、準(zhǔn)確,“羽化狀”邊界問(wèn)題得到了改善。但是,盡管在原始影像上部分小尺度建筑物的顏色和紋理特征比較突出,但仍然被錯(cuò)分為背景(圖7)。一方面可能由于網(wǎng)絡(luò)結(jié)構(gòu)中最大池化作用導(dǎo)致的信息丟失;另一方面,空間置棄層的使用也或多或少對(duì)細(xì)節(jié)特征的提取產(chǎn)生了一定的影響。但總體而言,修改后的模型可以有效地支持中低配置計(jì)算環(huán)境下深度網(wǎng)絡(luò)的訓(xùn)練和測(cè)試,同時(shí)大大提高了面向復(fù)雜場(chǎng)景高分辨率遙感影像建筑智能解譯精度,減少了模型參數(shù)和模型訓(xùn)練時(shí)間。
圖7 小尺度建筑物的漏分
本文面向復(fù)雜場(chǎng)景高分辨率遙感影像建筑智能解譯,設(shè)計(jì)了可有效運(yùn)行于中低配置計(jì)算環(huán)境的U-Net語(yǔ)義分割模型。在保持U-Net整體框架結(jié)構(gòu)不變的基礎(chǔ)上,通過(guò)修改輸入樣本尺寸、卷積核數(shù)量和卷積層數(shù)量,減小了模型訓(xùn)練負(fù)荷。另外,使用Adam替換了隨機(jī)梯度下降優(yōu)化方法,逐維度加和的特征融合方法替換了沿通道維度聯(lián)合的特征融合方法,這些改進(jìn)加速了模型訓(xùn)練收斂速度,減少了模型參數(shù)數(shù)量和模型訓(xùn)練時(shí)間,同時(shí)提高了面向復(fù)雜場(chǎng)景高分辨率遙感影像建筑智能解譯精度。本文首次將空間置棄層引入U(xiǎn)-Net模型中,發(fā)現(xiàn)其可以有效改善由于數(shù)據(jù)集特征分布不均衡引起的精度變異問(wèn)題,無(wú)須經(jīng)過(guò)對(duì)原始數(shù)據(jù)集進(jìn)行數(shù)據(jù)增強(qiáng)或二次特征分布均衡化,就可以很好地解決精度變異問(wèn)題。本文還提供了基于Tensorflow 2.0構(gòu)建U-Net模型的完整思路和接口描述,為研究人員實(shí)現(xiàn)快速構(gòu)建深度卷積神經(jīng)網(wǎng)絡(luò)解決遙感圖像分類問(wèn)題提供了基礎(chǔ)支持。實(shí)驗(yàn)設(shè)計(jì)的輸入樣本尺寸、卷積層數(shù)量、卷積核數(shù)量、學(xué)習(xí)率等超參數(shù)以及實(shí)驗(yàn)使用的特征融合方法和最優(yōu)化算法,都為進(jìn)一步優(yōu)化U-Net的研究提供了新的思路。然而,需要指出的是,由于模型中最大池化操作的使用,平衡小尺度建筑物特征保留和大尺度建筑物完整提取仍然是一個(gè)有待解決的問(wèn)題。在未來(lái)的研究中,將會(huì)引入一些后處理模塊,如以條件隨機(jī)場(chǎng)為代表的概率模型圖,或通過(guò)使用多模態(tài)融合、圖像金字塔和空洞卷積等特征增強(qiáng)和多尺度融合方法提高模型面向多尺度建筑物解譯的魯棒性,并在此基礎(chǔ)上進(jìn)一步考慮如何有效改善面向中低配置計(jì)算環(huán)境的深度卷積神經(jīng)網(wǎng)絡(luò)模型訓(xùn)練效率。