肖建峰
(南華大學(xué)計算機學(xué)院軟件工程系,衡陽 421001)
深度學(xué)習(xí)(deep learning,DL)是機器學(xué)習(xí)(machine learning,ML)領(lǐng)域中一個新的研究方向,它被引入機器學(xué)習(xí)使其更接近于最初的目標(biāo)——人工智能(artificial intelligence,AI)[1]。近年來隨著深度學(xué)習(xí)的發(fā)展,深度學(xué)習(xí)在計算機視覺上用于語義分割有不錯的成就。圖像分割是計算機視覺領(lǐng)域的一個重要方向,是圖像處理的核心環(huán)節(jié)。伴隨深度學(xué)習(xí)技術(shù)的發(fā)展,結(jié)合深度學(xué)習(xí)的圖像分割技術(shù)在精確度上遠超傳統(tǒng)圖像分割方法。卷積神經(jīng)網(wǎng)絡(luò)(CNN)與全卷積神經(jīng)網(wǎng)絡(luò)(FCN)的提出,極大促進了圖像語義分割技術(shù)發(fā)展,研究人員提出了很多新型網(wǎng)絡(luò)模型,分割精準(zhǔn)度大幅度提升[2]。
遙感技術(shù)在空間地理信息的應(yīng)用上解決了許多的問題。遙感技術(shù)廣泛用于軍事檢測、監(jiān)視海洋環(huán)境、觀察天氣等。在民用方面,遙感技術(shù)被用來進行地理資源檢測、農(nóng)作物分類、用地規(guī)劃、環(huán)境污染監(jiān)測、建筑識別、預(yù)測地震等方面。
本文將講述語義分割的相關(guān)內(nèi)容,闡明使用FCN和ResNet結(jié)合的網(wǎng)絡(luò)模型來對地表的建筑物進行識別,將圖像分割出來的原理。并利用航拍的地表圖片進行訓(xùn)練,得出實驗結(jié)果,進行總結(jié)。
語義分割是計算機視覺中十分重要的領(lǐng)域,它是從像素的級別上識別圖像,識別出圖像中每個像素對應(yīng)的物體的種類。語義分割的目的是將圖像中的每個像素映射至一個目標(biāo)類。語義在圖像的領(lǐng)域來說就是指對圖像內(nèi)容進行理解。分割,就是將圖像中物體從像素的顏色上分離。如圖1中對像素進行分類識別出一只貓。
圖1 語義分割簡單示例
1.2.1 地理位置信息
通過構(gòu)建神經(jīng)網(wǎng)絡(luò)訓(xùn)練數(shù)據(jù),將航拍的圖像作為輸入能有效地自動識別地表的建筑、山川、河流等位置信息,來幫助地理局進行相關(guān)的工作。
1.2.2 用于無人駕駛
對于自動駕駛的汽車來說,判斷道路的情況是十分重要的,對無人駕駛來說語義分割是很核心的算法,通過對道路圖像的輸入利用神經(jīng)網(wǎng)絡(luò)將道路上的物體分類,從而對分析的道路情況進項相應(yīng)的駕駛操作,提升駕駛的安全。如圖2所示。
圖2 道路情況語義分割
1.2.3 醫(yī)療影像分析
圖像分割是一個重要的處理步驟,它可以幫助進行以圖像為指引的醫(yī)學(xué)干預(yù)、放射療法或是更有效的放射科診斷等[3]。如圖3所示。
圖3 醫(yī)學(xué)影像齲齒診斷語義分割
1.3.1 圖像分類
給出打好標(biāo)簽的分類的圖像,進行訓(xùn)練然后這就是圖像分類問題。圖像分類是判別圖中物體是什么,比如是貓還是羊。
1.3.2 目標(biāo)檢測
區(qū)分圖像中的物體并進行定位,一般對所檢測的物體進行矩形框的標(biāo)記,同時標(biāo)注出是什么物體。如圖4所示的檢測則要使用邊界框檢測所給定圖像中的所有羊。
圖4 目標(biāo)檢測示例
1.3.3 語義分割
對圖像進行像素級分類,預(yù)測每個像素屬于的類別,不區(qū)分個體。如圖5所示。
圖5 語義分割示例
1.3.4 實例分割
定位圖中每個物體,并進行像素級標(biāo)注,區(qū)分不同個體。如圖6所示,3只羊都被分割出不同的顏色。
圖6 實例分割示例
CNN在卷積、非線性激活和最大池化運算后,將特征圖展開成若干個獨立神經(jīng)元,并通過全連接方式映射為固定長度的特征向量,常應(yīng)用于對整幅圖像分類。與CNN不同,Long等人2015年提出的FCN模型(fully convolutional networks for semantic segmentation),利用特征圖同尺寸卷積運算得到若干個卷積層用來代替CNN網(wǎng)絡(luò)中的全連接層,并采用空間插值和反卷積等上采樣技術(shù)對特征圖進行尺度復(fù)原,最后基于多分類模型進行逐像素預(yù)測,實現(xiàn)端到端語義分割[4]。FCN有三大特點:
(1)接收任意尺寸輸入的全卷積網(wǎng)絡(luò)。全卷積神經(jīng)網(wǎng)絡(luò)把卷積神經(jīng)網(wǎng)絡(luò)中的全連接層使用卷積層來代替。在傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)中,前面是卷積層,后3層是全連接層,而FCN打破了常規(guī),把后面的全連接改成卷積,最后輸出和原圖大小相同的圖片。因為所有的層都是卷積層,故稱為全卷積網(wǎng)絡(luò)。為了實現(xiàn)圖像的像素分類,最后將圖片進行分割,輸出應(yīng)為圖片,而全連接層的是將二維的輸入轉(zhuǎn)換為一維,不能變?yōu)槎S圖像。但是FCN將全連接層替換為卷積層就能達到輸出為低分辨率圖像的目的,同時卷積也能學(xué)習(xí)到更深的特征。網(wǎng)絡(luò)結(jié)構(gòu)如圖7所示。
圖7 FCN網(wǎng)絡(luò)結(jié)構(gòu)
(2)圖片上采樣。圖片上采樣利用反卷積把圖像變大,最后放大成和原圖大小相同的圖片(圖8)。上采樣還能提高分辨率,能夠輸出良好的結(jié)果。并確保特征所在區(qū)域的權(quán)重,最后在提高圖像分辨率和原始圖像一致性后,高權(quán)重區(qū)域就是目標(biāo)所在區(qū)域。如圖9中,自行車的圖片,沒有經(jīng)過上采樣的圖像熱圖形狀模糊,識別不出是什么物體,經(jīng)過不斷地反卷積之后圖像特征逐漸明顯,自行車的部分權(quán)重高熱圖顏色深,很好的提升了圖像分辨率保留了特征。
圖8 反卷積填充
圖9 上采樣示例
(3)融合深層粗糙特征和淺層精細(xì)特征的跳躍結(jié)構(gòu)。經(jīng)過卷積池化后的圖像特征丟失會很明顯,為了加強特征的學(xué)習(xí)使得輸出的圖像更加精細(xì),保留細(xì)節(jié)。FCN具有跳躍結(jié)構(gòu),如圖10所示。
圖10 FCN跳躍結(jié)構(gòu)
圖像經(jīng)過1次卷積池化過程,長變?yōu)?/2,寬變?yōu)?/2;圖像通過第2次卷積池化過程后,長變?yōu)?/4,寬變?yōu)?/4;圖像通過第3次卷積池化過程后,長變?yōu)?/8,寬變?yōu)?/8,留下第3次的池化后的featuremap;通過第4次卷積池化過程后圖像長變?yōu)?/16,寬變?yōu)?/16,這時留下第4次的池化后的特征圖featuremap;在第5次卷積池化過程后圖像長變?yōu)?/32,寬變?yōu)?/32,F(xiàn)CN-32s是直接經(jīng)過5次卷積池化后通過后幾層卷積得到的分割圖像。FCN-16s是第4次保留的featuremap和第5次的卷積池化后的上采樣疊加的圖像,能恢復(fù)一些細(xì)節(jié)。FCN-8s是第3次保留的featuremap和第4、5次上采樣的圖像再次疊加的放大圖像。此時一些細(xì)節(jié)的特征將保留下來。使用跳級連接結(jié)構(gòu),從卷積的前幾層中提取的特征圖像,分別與后一層的上采樣層連接,然后再進行上采樣,經(jīng)過多次采樣后,可以得到與原始圖像大小相同的特征圖像,因此在復(fù)原圖像時,可以獲得更多的和原圖一樣的圖像信息。
圖11 殘差網(wǎng)絡(luò)殘差塊
殘差網(wǎng)絡(luò)是由來自Microsoft Research的4位學(xué)者提出的卷積神經(jīng)網(wǎng)絡(luò),在2015年的ImageNet大規(guī)模視覺識別競賽(imageNet large scale visual recognition challenge,ILSVRC)中獲得了圖像分類和物體識別的優(yōu)勝[5]。殘差網(wǎng)絡(luò)的特點是它有特殊的跳躍結(jié)構(gòu)能幫助學(xué)習(xí)更多的特征,精細(xì)化表述,同時能解決相應(yīng)的網(wǎng)絡(luò)退化梯度消失的問題。一般網(wǎng)絡(luò),隨著層數(shù)的加深,網(wǎng)絡(luò)會發(fā)生退化,即特征圖像包含的圖像信息會隨層數(shù)的增加而減少,而ResNet的跳躍結(jié)構(gòu)能將之前的層的特征直接映射到后層或者經(jīng)過降維之后疊加到后面的層,從而可以使得模型訓(xùn)練時學(xué)習(xí)更多的特征,刻畫細(xì)節(jié),最后和原圖一致。
為了更好的實現(xiàn)對建筑物的語義分割,本文利用FCN和ResNet50網(wǎng)絡(luò)模型進行訓(xùn)練,網(wǎng)絡(luò)結(jié)構(gòu)如圖12所示。
圖12 FCN+ResNet50模型
Conv2_x層是3個1×1,64、3×3,64、1×1,256的卷積構(gòu)成,Conv3_x層是3個1×1,128、3×3,128、1×1,512的卷積構(gòu)成,Conv4_x層是3個1×1,256、3×3,256、1×1,1024的卷積構(gòu)成,Conv5_x層 是3個1×1,512、3×3,512、1×1,2048的卷積構(gòu)成。
為了驗證模型的有效性,本文使用航拍的地表建筑數(shù)據(jù)進行訓(xùn)練,圖像分為有建筑與無建筑,訓(xùn)練測試后將圖像分類,有建筑則進行分割圖像。
train_mask.csv:存儲圖片的標(biāo)注的rle編碼,run-length encoding,游程編碼或行程是一種不會破壞圖像的無損壓縮的方法。
train文件夾和test文件夾:存儲訓(xùn)練集和測試集圖片,訓(xùn)練集圖片30000張,測試集圖片2500張。
首先對圖片進行預(yù)處理,讀取圖片,進行rle解碼,然后對圖片進行數(shù)據(jù)增廣。數(shù)據(jù)增廣是一種有效的正則化手段,可以防止模型過擬合,在深度學(xué)習(xí)模型的訓(xùn)練過程中被廣泛地運用。數(shù)據(jù)增廣的目的是增加數(shù)據(jù)集中樣本的數(shù)據(jù)量,同時也可以有效增加樣本的語義空間。本文利用albu?mentations對數(shù)據(jù)進行增廣,包括對圖片進行裁剪、翻轉(zhuǎn)、隨機裁剪等操作。劃分好訓(xùn)練集和測試集,接著進行模型訓(xùn)練,設(shè)置EPOCHES=20,BATCH_SIZE=32,IMAGE_SIZE=512,使 用DiceLoss作為損失函數(shù),每次訓(xùn)練時進行正向傳播,計算損失,反向傳播。
在訓(xùn)練過程中,對訓(xùn)練集和驗證集進行了劃分,并利用繪圖工具繪制了精度曲線和損失函數(shù)曲線。最終準(zhǔn)確率為82%。損失率為0.101。如圖13所示。
圖13 準(zhǔn)確率損失率
從圖14預(yù)測結(jié)果看出,驗證FCN+ResNet50網(wǎng)絡(luò)模型用于地表的建筑物的識別是行之有效的。
圖14 預(yù)測結(jié)果
本文講述了FCN+ResNet的網(wǎng)絡(luò)模型進行語義分割的方法,主要是應(yīng)用于航拍的地表建筑識別。介紹了FCN的三大特點,接收任意尺寸輸入的全卷積網(wǎng)絡(luò);圖片上采樣;融合深層粗略特征和淺層細(xì)節(jié)特征的跳躍結(jié)構(gòu),ResNet的跳躍結(jié)構(gòu),以及FCN是如何做到語義分割的原理。同時提出將FCN+ResNet網(wǎng)絡(luò)模型結(jié)合能更好的學(xué)習(xí)深層特征和淺層的精細(xì)特征,最后通實驗進行驗證,利用航拍的地表建筑圖像數(shù)據(jù)集,使用FCN+REsNet50模型進行訓(xùn)練最終得出不錯的效果。因此得出FCN_ResNet網(wǎng)絡(luò)用于航拍的地表建筑識別是行之有效的,其也是語義分割表現(xiàn)不錯的模型。