趙若辰, 王敬東, 林思玉, 顧東澤
(南京航空航天大學自動化學院, 江蘇 南京 211106)
建筑物作為航空圖像中的提取重點,精確的檢測建筑物對于城市與農村建設的變化監測、基礎設施規劃、土地利用與管理等任務至關重要[1-4]。但是建筑物的識別檢測一直以來存在諸多難點,例如樹木與陰影對目標的遮擋、建筑物外觀顏色復雜、小型建筑物易受道路汽車等背景干擾等問題,造成了建筑物的漏檢錯檢。這些問題也成為了建筑物檢測研究的熱點。
建筑物檢測目前主要采用深度學習方法,深度學習中的卷積神經網絡不僅可以自主提取特征,還能提取到更多圖像深層次的抽象特征[5]。眾多目標檢測任務結果表明,深層次特征對目標檢測精度有很大提升,因此目前大部分的目標檢測任務都采用了深度學習的方法,建筑物檢測也不例外。Liu等人[6]使用圖像金字塔技術構建多級訓練的圖片樣本,之后運用候選區域檢測建筑物,但是由于圖片尺寸逐級減少,造成了部分特征信息的丟失,導致小尺寸建筑物檢測效果不佳。李大軍等人[7]使用先進的Mask-區域卷積神經網絡(Mask-region convolutional neural networks, Mask-RCNN)[8]模型檢測建筑物,進一步提高了航拍圖像中建筑物檢測的整體準確性。文獻[9]提出一種利用不同尺度的卷積核網絡預測不同尺寸的遙感圖像中建筑物的方法,雖然小尺度建筑物檢測準確率有所提升,但相比其他尺寸的建筑物還有很大差距。除了目標檢測外,建筑物檢測的另一種方向是利用全卷積網絡在圖像上進行語義分割[10],提取出建筑物的輪廓。伍廣明等人提出[11]使用U型卷積神經網絡(U-convolutional neural networks, U-net)[12]對遙感影像進行建筑物特征提取,對建筑物區域與背景進行了分割。相比于Mask-RCNN進一步提升了檢測速度。但是由于網絡層數較深,深層網絡的感受野較大,因此對于小型建筑物的檢測效果不佳。Zuo等人[13]針對全卷積神經網絡模型進行改進,將底層卷積中的不同序列感知野中的特征融合到高層卷積層,對不同語義層次的特征進行融合,提高了檢測速度,但在小尺寸建筑物的識別分割上準確率不高。于洋等人[14]將全卷積網絡的連接結構改進為跳層鏈接,有效防止了因為網絡加深引起的梯度爆炸,同時利用數字地表模型(digital surface model, DSM)圖像數據對網絡進行訓練,細化了建筑物的輪廓邊緣提取結果。李強等人[15]將U-net與Segnet[16]網絡結合對圖像進行分割,利用不同擴張率的空洞卷積[17]提取圖中建筑物的輪廓,方法有效提高了建筑物輪廓提取精度,但是由于空洞卷積感受野太大,小尺寸的建筑物提取效果不佳。文獻[18]在Segnet的基礎上提出了多任務級聯損失函數的概念,改善了不同尺寸建筑物的輪廓的檢測精度。
雖然深度學習算法比傳統算法效果有了很大提升,但是在現有的研究中普遍對小于圖像尺寸十分之一的小型建筑物檢測效果不佳。在實際應用中,小型建筑物的準確檢測對于違章建筑物檢測、新建軍事設施檢測等民用和軍事方面有著重要意義,并且在航拍圖像中這種尺寸的小型建筑物具有相當一部分數量。因此,針對現有模型在小型建筑物檢測方面存在的問題進行了進一步研究。在基于深度學習的Mask-RCNN目標檢測算法上進行改進,設計了一種基于注意力機制的多尺度組卷積特征提取網絡,以提高小型建筑物檢測的準確率。
基于深度學習的目標檢測模型有很多,其中基于二階段的Mask-RCNN模型由于準確率較高,被廣泛應用在各種目標檢測任務中。因此,本文選用Mask-RCNN檢測模型作為基礎并對其在小型建筑物檢測上存在的問題進行研究改進。Mask-RCNN模型訓練和檢測流程如圖1所示。其目標檢測流程主要由特征提取網絡、特征融合網絡以及目標預測網絡3個階段組成。首先,通過深度殘差網絡(residual network,Resnet)[19]逐步提取到不同網絡層的特征圖,如圖1中所示的C1~C5層。再將這些特征圖通過模型中的特征金字塔網絡(feature pyramid networks,FPN)[20]進行特征融合使每層獲得其他層次的特征,得到P2~P5的4層特征圖。之后,將這些特征圖分別送入后續的預測網絡,通過特征圖上的特征篩選出可能含有建筑物的區域。最后,使用全連接層分支來檢測建筑物。訓練過程在其基礎上通過損失函數即檢測誤差反饋指導模型的訓練,使模型提取的特征和后續的分類操作更好地擬合數據。Mask-RCNN雖然整體檢測準確率較高,但是小目標檢測準確率低的問題依然沒有解決,因此本文在此算法模型的基礎上進行了分析改進。

圖1 Mask-RCNN算法流程
從深度學習檢測算法流程可以看出,一開始卷積神經網絡中提取到的特征質量對檢測結果有著直接影響,因此本文主要研究特征提取網絡方面存在的問題。由于特征提取網絡中高層提取到的抽象語義特征對目標檢測很重要,因此將原始Mask-RCNN中的卷積神經網絡的C5層的特征圖和檢測結果進行了輸出。結果如圖2所示。

圖2 特征圖與輸出結果可視化
其中第1行為原圖。第2行為C5層輸出特征圖,圖中像素點顏色亮度與建筑物類別正相關,即越亮代表網絡認為該處特征對建筑物檢測越關鍵,反之則認為是背景特征。第3行為檢測結果,紅色區域為檢測出的建筑物,黃色圈出的為漏檢錯檢的部分。從輸出的特征圖中可以看出,建筑物關鍵特征點集中在大型建筑物所在的區域上,而提取到的小目標特征明顯較少,這可能會造成小建筑的漏檢。另外,網絡還提取了大量非建筑物的背景特征,這些特征可能成為“噪聲”對建筑物的檢測進行干擾,產生錯檢。而從檢測結果上也可以看出,1、2兩幅圖片中存在小建筑物漏檢的情況,3、4兩幅圖片中還存在錯檢的現象,3號圖片中將與小建筑物類似的汽車識別成了建筑物,而4號圖片則將道路識別成了建筑物。從對應的特征圖中可以發現,漏檢的小建筑物所在的區域提取到的特征較少,而本該是背景的地方被特征提取網絡認為存在著建筑物特征。這說明傳統的卷積神經網絡對于特征提取還存在著不足,結合網絡結構進行分析,原始Mask-RCNN的特征提取網絡存在以下不足:一是特征提取網絡的網絡層連接方式,特征僅在一層或少數幾層中被提取和學習,導致在卷積過程中對特征的利用率不高。二是卷積層中僅使用單一的固定尺寸卷積核提取特征,無法充分提取到圖像中的所有特征。三是卷積核不同通道提取到的特征權重是相同的,在卷積過程中卷積核無法分辨提取到的特征對檢測任務是否相關,因此有部分通道會提取學習到與目標不相干的背景特征。
以上這些問題導致了原始的卷積神經網絡在提取特征時無法有效提取小型建筑物特征,導致小目標可用特征少,并且易與提取的背景特征混淆。這也是小目標檢測準確率低的根本原因。因此,為了解決這個問題,本文對原始的Mask-RCNN模型中的特征提取網絡進行了改進。首先將原始Resnet網絡替換為密集連接的卷積神經網絡(densely connected convolutional neural networks, Densenet);接著對網絡中卷積層中的單一尺寸的卷積核進行改進,設計了一種具有多個尺度的組卷積核;最后將注意力機制加到網絡層中指導卷積核提取關鍵特征。
原始Mask-RCNN中使用的是Resnet。Resnet解決了網絡加深導致的梯度消失問題,從而可使用更多的層數提取深層次的語義特征。如圖3所示,與早期卷積神經網絡卷積層線性的輸入輸出圖相比(見圖3(a)),Resnet使用“殘差結構”將每個層與前面的某些層(一般是2~3層)短路連接在一起(見圖3(b))。

圖3 卷積層連接對比
Resnet網絡的卷積層輸出表達式為
xl=Hl(xl-1)+xl-1
(1)
式中:xl為卷積層的輸出;l表示網絡層數;Hl表示非線性型轉化函數,其中包括多次卷積、正則化、池化等一系列操作。但是從圖3可以看出,Resnet提取到的特征依然僅在相鄰的幾層中被提取和學習,存在著第1節所說的特征利用率不高的現象。這種現象在較少的小型建筑物特征上更為明顯。
為了解決這個問題,本文將其替換成Gao等人[21]提出的基于Densenet的結構,如圖3(c)所示。在該網絡中,將殘差結構升級為密集連接的方式,不同于殘差結構僅將網絡中相鄰的幾層進行連接,Densenet每層之間都有直接的鏈路連接,這使得每一層的輸入都是前面所有層輸出結果的總和。Densenet輸出的表達式為
xl=Hl([x0,x1,…,xl])
(2)
因為Densenet中每一層學到的特征圖都能夠被之后所有層直接使用,這使得學習到的特征可以在整個網絡中復用,較好地利用了所有提取到的特征。不多的小目標特征也可以多次在網絡中被學習,較好地解決了小型建筑物特征利用率不高的問題。同時由于特征復用,高層卷積層也使用了低級特征,低級特征得以完整地保留,較好地解決了深層網絡中底層特征逐漸消失的問題。因此,本文使用Densenet替換原始的Resnet作為Mask-RCNN的基礎特征提取網絡。表1為原始Resnet和替換后的Densenet結構對比。

表1 網絡結構比較
其中,網絡后面的數字為含有計算參數的網絡層數。K為特征通道數,本文設為32。送入Densenet網絡的圖片首先經過C1網絡層,其中包括一個步長為2的7×7的卷積層和一個3×3的MaxPooling層,其作用在于縮小輸入圖片大小以減少計算量。然后圖像依次經過C2、C3、C4和C5這4個網絡層以逐步提取不同層次的特征信息。每一個網絡層中包含著不同數量的1×1和3×3卷積和一個由一個1×1卷積和2×2的AveragePooling層組成的轉換層。前者用于提取特征信息,后者用于減小特征圖大小并連接兩個網絡層。從表1中可以看出,相較于Resnet的特征通道數逐層變大,Densent在各層提取特征時特征通道數保持為k不變,這是因為Densent各層需要直接連接,因此要保證通道數相同。
雖然Densenet依靠特征復用的方式基本解決了小目標特征利用率不高的問題,但是由于Densenet的卷積層如圖4(a)所示,與Resnet相同依然使用單一3×3尺寸的卷積核提取特征,在各卷積層進行卷積操作時,僅對圖像固定范圍的區域提取一次特征,所以其本質上小目標的特征并沒有變多。因此,本文設計了一種可以多尺度多次提取特征的卷積核來改善這一問題。

圖4 Densenet卷積層結構改進前后對比
較深的網絡層中特征圖尺寸通常較小,而其中的小型建筑物特征更是細微。因此,為了準確地提取到小型建筑物所在區域的特征,本文增加了一種更小的1×1尺寸的卷積核來解決這個問題。另外從文獻[22]可知,目標除了自身特征外,周圍還存在著豐富的上下文信息,例如房屋陰影等建筑物周圍特有的一些特征。這些特征信息可以有效補充小型建筑物的特征,并幫助網絡更好地定位到小型建筑物所在區域。為了提取建筑物周圍不同面積的上下文特征信息,需要使用不同尺寸的卷積核在特征圖上提取特征。而在Densent中具有抽象語義特征的C4和C5高層特征圖尺寸為32×32和16×16,因此使用大于7×7的卷積核提取特征會造成浪費,且效果不會有所提升。故本文如圖4(b)所示,選用1×1、3×3、5×5、7×7這4種尺寸的卷積核以提取不同范圍地更豐富的特征。不過在實際訓練過程中卻發現模型不僅訓練時間有很大程度的增加,訓練效果也隨之下降。經分析,這是因為較大的卷積核導致了模型的參數計算量變大,而過多的參數使網絡產生了過擬合的現象[23]。單一卷積核參數量計算公式為
P=kernel_size2·input_channel·output_channel
(3)
式中:kernel_size為卷積核尺寸;input_channel為輸入的特征圖通道數;output_channel為輸出的特征圖通道數。尺寸越大的卷積核所帶來的參數量和計算量就越大,不利于訓練以及數據的擬合。因此在不改變感受野的前提下,需要降低模型的參數量。感受野即卷積神經網絡從卷積核中能看到輸入圖像的區域大小,感受野的計算公式為
RFl+1=RFl+(kernel_sizel+1-1)·feature_stride
(4)
式中:RF表示特征感受野大小;feature_stride表示卷積核在圖像上的滑動步長。可以推出一個5×5卷積核的感受野與兩個串聯的3×3卷積核相同,一個7×7卷積核可以被3個3×3卷積核串聯所代替。同時串聯的卷積核參數量為
(5)
output_channel=α·input_channel
(6)
式中:α為輸入輸出特征圖通道數的倍數。以5×5卷積核為例,如α為1,輸入輸出通道數為Ci和Co時,5×5卷積核參數量為5×5×Ci×Co,而串聯的兩個3×3卷積核的參數量為2×3×3×Ci×Co,參數量少了28%,有效緩解了網絡參數的冗余。因此,本文最終使用多卷積串聯的方式,實現了如圖4(c)的多尺度卷積核的構建。
多尺度卷積核有效解決了單一尺寸卷積核在圖像中不能提取不同尺度的特征的問題,但是每種尺寸的卷積核在卷積層中依然只提取了一次特征。為了達到多次提取特征的目的,本文借鑒Krizhevsky等人[24]提出的分組卷積的概念,利用多組卷積分別對特征圖提取特征。分組卷積將一個卷積核按通道分成多組,分別對特征圖進行卷積操作,如圖5所示,圖中C為輸入通道數,輸入的特征圖被分成g組,卷積核也相應地分成g組,分別在對應的組內做卷積。由上文卷積核參數式(3)可知,在相同的參數下,g越大越可以獲得更多的特征圖。因此,本文將4個尺寸的卷積核分為一組,共32組。32為Densenet的通道數,即g理論上的最大值。多尺度分組卷積的結構如圖4(d)所示。由于使用分組卷積后提取的每組特征圖是由卷積核不同通道所提取的,其中包含的特征并不重復,因此可以提取到比以往更多的特征。多尺度組卷積實現了多種尺寸、多次的特征提取,解決了之前單一尺度卷積核提取建筑物特征不充分、小型建筑物特征較少的問題。

圖5 分組卷積
多尺度組卷積核有效解決了小目標特征提取不充分的問題,但是由于網絡中每個卷積核通道之間權重是相同的,這會造成網絡學習到部分卷積核“錯誤”提取的背景特征。不僅造成了卷積核的“浪費”,同時第1節的實驗也表明背景特征容易對建筑物檢測產生誤檢。為了使特征提取網絡更準確地提取建筑物特征而非背景特征和噪聲,將注意力機制應用在了卷積核上。注意力機制[25]由Bahdanau等人提出,本質類似于人類的視覺機制,使卷積核提取特征時傾向于關注圖像中的高價值信息,并忽略掉不相關的信息。其通過對卷積核提取的特征信息進行權重標定,依據權重大小在訓練過程中保留關鍵特征并抑制無用信息。本文將帶有注意力機制的SKnet模塊[26]加入Densenet的網絡層中。SKnet可以獲得不同卷積核和通道的權重,再將其加權到對應的輸出特征圖中,SKnet模塊如圖6所示。

圖6 SKnet模塊
對于網絡層的輸入特征圖X∈RH′×W′×C′,其中H′×W′×C′為特征圖尺寸,首先通過本文設計的多尺度組卷積核(僅以其中一組為例)進行非線性卷積操作得到:
F1:X→U1∈RH×W×C
(7)
F2:X→U2∈RH×W×C
(8)
F3:X→U3∈RH×W×C
(9)
F4:X→U4∈RH×W×C
(10)
由此得到U1、U2、U3、U4共4個特征圖,其中H×W×C為卷積后的特征圖尺寸。接著通過元素對位相加求和的方式將4個特征圖融合成一個特征圖U:
U=U1+U2+U3+U4
(11)
下一步對U通過全局平均池化降成一維的數組s∈RC,其將每個通道上整個空間特征編碼為一個全局特征,如下所示:
(12)
式中:Uc代表對應通道的特征圖。然后通過全連接層中的激活、正則操作學習各個通道之間的非線性關系,得到一個更為緊湊的實數特征z,并由softmax函數得到U1、U2、U3、U4各自的權重概率矩陣ac,bc,cc,dc:
(13)
(14)
(15)
(16)
ac+bc+cc+dc=1
(17)
式中:Ac代表U1中對應c通道的向量元素,Bc、Cc、Dc同理。最后通過加權操作將得到的4個權重矩陣ac,bc,cc,dc加權到U1、U2、U3、U4并求和得到最終的輸出向量Vc:
Vc=acU1+bcU2+ccU3+dcU4
(18)
V=[V1,V2,…,VC],VC∈RH×W
(19)
由此4個卷積核得到了不同的權重,實現了給卷積層添加“注意力”的目的。Sknet考慮了通道和卷積核兩個方面的權重,根據多尺度特征圖匯總得到的加權信息來指導網絡如何給不同尺寸的卷積核分配權重,因此實現了通過權重信息來指導網絡,更側重于提取到有用特征的卷積核,忽略學習到無用背景特征或噪聲的卷積核的目標。Sknet被安插在Densenet網絡層中多尺度分組卷積的后面用來指導卷積核的特征提取,最終本文改進后的Densenet網絡層結構如圖7所示。

圖7 改進后卷積層結構
本文在谷歌地球圖像軟件中采集了美國中部地區的2 000張尺寸為1 024像素×768像素的含有建筑物的航拍圖像作為數據集,其中訓練集驗證集和測試集的比例為8∶1∶1。并使用Labelme圖像標注軟件對訓練集和驗證集圖像進行標注,標注效果如圖8所示。

圖8 原圖與標注圖像
本文基于建筑物在圖像中所占像素大小,劃分大、中、小3種尺寸的建筑物。由于不同數據集圖像尺寸不一,因此對圖中目標大小沒有明確的尺寸定義。目前,廣泛使用的多種公開數據集如微軟發布的COCO數據集[27]將目標尺寸為32×32的目標定義為小目標。另一種劃分方法是利用目標與圖像的相對大小關系,將邊長小于圖片邊長1/10的目標定義為小型目標,本文同樣采用這種定義方法。另外,通過對本文數據集圖像中的建筑物進行觀察分析,絕大部分建筑物尺寸小于圖片邊長的3/10,如圖9所示。因此,在本文尺寸為1 024×768的航拍圖像中,尺寸小于70×70的建筑物為小型建筑物,中型建筑物的尺寸為圖片尺寸的1/10~1/5,大于圖片尺寸2/10的建筑物為大型建筑物。數據集中訓練集和測試集中所含的建筑物樣本數量如表2所示,本文后續的實驗均在此數據集上進行。

圖9 建筑物尺寸定義

表2 數據集中建筑物數量
在后續實驗中對建筑物檢測精度使用目標檢測任務中常用的平均精度(average precision,AP)指標來評估。區分正負樣本的交并比IOU閾值為0.5。
軟件環境基于windows10系統下的keras和tensorflow深度學習框架。硬件環境為:Intel i7-7200H@2.7 Hz×8 CPU和GTX1080Ti GPU。
為了驗證上文對特征網絡的改進措施的有效性,進行了多項對比實驗。
首先對改進前后的特征提取網絡進行了準確率的對比,如表3所示。其中AP表示所有建筑物的整體準確率。APs、APm、APl分別表示小、中、大尺寸建筑物的準確率。網絡后面的數字代表網絡層數。

表3 改進前后準確率比較
從表3中可以看出,經過本文對特征提取網絡的3項改進,建筑物整體檢測準確率有了14.1%的提升,其中小型建筑物檢測準確率提升更加明顯,提升至0.663,相比于原始的0.514提升了28.9%。進一步分析發現,Densenet和多尺度組卷積這兩項改進對小型建筑物檢測準確率提升作用較大,這說明增加小型建筑物特征可以較大提升其檢測準確率。Sknet對整體檢測準確率有較大提升,說明SKnet通過抑制背景特征和噪聲,使網絡更關注于建筑物特征,因此各尺寸的建筑物檢測準確率都有所提升。
對改進前后網絡訓練損失函數的對比如圖10所示,圖中橫坐標為訓練輪次,每一輪中隨機訓練1 000張圖片,縱坐標為損失函數數值。從圖10中可以看出,3種不同方法改進后的網絡損失函數在下降速度上均快于原始的Resnet網絡,且最終數值也比之要小。這反映出改進后的網絡更快地擬合了數據集,進一步說明了改進后的網絡更多更好地提取到了對建筑物檢測效果有幫助的特征。但同時不難發現,加入SKnet后網絡損失函數剛開始高于densenet+多尺度組卷積的曲線,且最終在第25輪時實驗效果比后者要差。經過分析,這是因為網絡的參數量變大,在不改變學習率等超參數的情況下,需要更多的訓練輪次來擬合數據。但另一方面,其收斂速度要快于其他曲線,說明該方法能夠更有效地提取有用特征。

圖10 損失函數曲線
如圖11所示,將改進前后網絡輸出的C5層特征圖進行了對比。其中第1行為原圖,黃色框中為建筑物,第2行為原始Resnet提取的特征圖,第3行為改進后的輸出特征圖。可以看出,相比于原始的Resnet,改進后的特征提取網絡在提取特征時更集中在建筑物上,提取到的背景特征變少,提取的小型建筑物區域特征更多。進一步說明了本文對特征提取網絡改進的有效性。

圖11 改進前后特征圖對比
本文提出的改進后的卷積神經網絡與其他卷積神經網絡的運算效率和計算復雜度對比如表4所示。本文選用了VGG16[28]、Resnet101、InceptionV4[29]、Resnext101[30]、Densenet169共5種目前廣泛使用的網絡與本文網絡在本文數據集上進行比較。其中,每秒傳輸幀數(frames per second,FPS)代表該算法每秒鐘可以處理圖像的幀數,浮點運算數(floating point operations,FLOPs)可以理解為計算量,數值越大代表模型復雜度越高。

表4 網絡檢測速度與計算復雜度對比
從表4中可以看出,InceptionV3網絡的檢測速度和浮點計算量都要優于其他網絡,但是其準確率僅有0.755。得益于Densenet密集連接的結構、小型卷積核級聯以及組卷積,本文網絡在檢測速度和計算復雜度上均比Resnet等網絡有所減少。增加了注意力機制后,本文的浮點計算量雖然相比Densenet增加了1%,但是準確率提高了8%,滿足本文主要提升檢測準確率的需求。
圖12為改進前后的檢測結果對比圖,黃色圈中為改進后被正確檢測的部分。與改進前的檢測結果相比,第1~3號圖像中部分小建筑物的漏檢情況以及第4號圖像中將道路誤檢成建筑物的情況都得到了有效的改善。

圖12 改進前后檢測結果對比
為了解決小型建筑物檢測準確率低的問題,本文針對Mask-RCNN模型中的特征提取網絡進行了改進,首先將原始的Resnet特征提取網絡替換為密集連接的Densenet特征提取網絡,之后將Densenet網絡中卷積層結構改為了具有多尺度的組卷積結構,并加入了SKnet注意力機制模塊。這些對特征提取網絡的改進,經實驗證明有效解決了原始網絡特征利用率不高,提取到的小型建筑物特征較少且易被噪聲或背景特征干擾等問題。各尺寸建筑物整體檢測準確率達到了0.843,小尺寸建筑物的準確率達到了0.663,提升了28%。
不過本文僅對Mask-RCNN模型中特征提取網絡部分進行了論證改進,因此在后續的工作中可以關注模型其他部分對檢測結果的影響,例如特征融合網絡和預測網絡部分,并對其進行改進從而進一步提升對建筑物檢測的準確率。另外,本文的檢測對象為離線的航拍圖像,在后續的工作中還需對模型進一步改進以滿足實時性要求更高的視頻檢測任務。