袁偉,許文波,周甜
1. 成都大學 建筑與土木工程學院,成都 610106 2. 電子科技大學 資源與環境學院,成都 610097
分割遙感影像獲取地理信息數據現已成為主流的地理信息數據獲取途徑,在諸多項目中得到使用,特別是在大區域的地籍調查、生態監測、地理國情監測等項目中,其優勢尤為明顯。傳統的遙感圖像分割主要是依靠像素值的特點函數關系進行計算,將差異較小的像元歸屬為同一類別,如分水嶺算法[1]、主動輪廓模型[2]、統計區域融合[3]、聯合多種空間特征的高光譜圖像空譜分類方法[4]、基于多特征的遙感圖像分割算法[5]等。由于地物存在同物異譜或異物同譜的現象,傳統方法的分類效果十分有限。
隨著深度學習技術的出現和發展,不少學者將深度學習技術應用到遙感影像分割上,取得了較好的效果,如對房屋的提取[6]、對道路的提取[7]。但是多數都集中在對房屋、植被等的提取上,這類地物的特點是在圖幅中的占比較大。而在遙感解譯中,小目標的檢測、分割也是實際生產的需求之一,如對于大海中艦船的檢測或分割,路面汽車的檢測或分割,輸電塔的檢測或分割等。
小目標分割時,由于背景與前景存在明顯的不均衡,背景往往大大多于前景,致使損失函數由背景主導,分割效果不佳。針對這個問題,文獻[8-10]通過對數據集進行重采樣的方式達到樣本類別相對平衡,但是會破壞數據的分布和丟失信息;文獻[11-12]通過修改交叉熵損失函數的形式來增強網絡識別小類別的能力;文獻[13]通過先目標檢測再將檢測到的區域單獨用網絡進行分割后修改原圖。
現有的方法均考慮所有的像素來計算交叉熵損失值,這樣會導致前景較少時被背景所淹沒。本文提出一種僅考慮部份交叉熵較大的像素來計算損失值,有效避免了上述問題,提高了占比較少的前景分割精度。
交叉熵是用來衡量兩幅圖像的相似程度的,現有的損失函數是對所有像素的交叉熵求加權平均,做為最終的損失函數值。對于類別占比較為均衡的情況,只需對所有像素求平均,得到最終的損失函數值,就能得到較好的分類效果,即

(1)
式中:y'為預測為前景的概率值;y為標簽值;LCrossEntropy為每個像素的交叉熵;Loss為最終的損失值。對于類別不均衡的數據,采用對所有像素交叉熵求平均的形式,會導致占比較少的類別被占比大的類別所淹沒。例如一個二分類圖像有100像素,汽車所占像素只有2個,那么即使這2像素分類全錯,所有像素均預測為背景,那么準確率仍然可達98%。因此文獻[12]提出了FocalLoss損失函數,對每個像素按前景和背景賦予不同的權重,然后再求所有像素交叉熵的均值作為最終的損失函數值。每個像素的交叉熵計算方法如下:

(2)

(3)
隨著訓練的進行,這些差異大的像素交叉熵將逐漸變小,差異小的像素交叉熵自然更小,因此這部份交叉熵較大的像素可以覆蓋交叉熵較小的像素。
如表1所示,從混淆矩陣可以看出,像素的分類情況為4類,第1類是實為前景預測為前景的TP,第2類是實為前景預測為背景的FN,第3類是實為背景預測為前景的FP,第4類是實為背景預測為背景的TN。其中,FP和FN是分類錯誤的情況,TP和TN為分類正確的情況。對于損失函數來說,應該著重關注分類不正確的情況,也就是FP和FN。從交叉熵大小來說,FP和FN的交叉熵必然大于TP和TN。因此,篩選出交叉熵大的像素,也就是分類錯誤的像素來求取損失函數值,可以避免錯誤分類的小目標被大量分類正確的像素淹沒的情況。

表1 二分類混淆矩陣
TopPixelLoss損失函數的具體計算步驟為:
1)將預測圖像與真實標簽圖像進行逐像素的比較,計算出每個像素的交叉熵。
2)將所有像素的交叉熵按從大到小進行排序。
3)確定一個K,按此閾值篩選出前K個交叉熵最大的像素。
4)對于篩選出的K個像素交叉熵取平均,作為最后的損失值。
由于采用以折代曲過渡的方案,因此,每塊玻璃的外形尺寸都不相同,需設定一套完整的標識系統,該標識系統應能充分體現玻璃的安裝位置、方向及正反面等信息內容。標識系統制定原則如下:(1)將玻璃骨架編號,然后玻璃分塊跟著骨架進行編號,以明確安裝位置;(2)玻璃統一在左上角做標識,以明確安裝方向;(3)編號及安裝方向標識均標記在玻璃正面,以明確玻璃安裝方向。
試驗數據采用ISPRS 提供的Vaihingen 數據集(http:∥www.isprs.org/commissions/comm3/wg4/tests.html)。該數據集包含33幅不同大小的數字正射影像,其地面分辨率均為9 cm,正射影像由近紅外、紅、綠3個波段組成,包含車輛、建筑物、低矮植被、樹木、不透水地面、河流及其他共6個類別。因車輛在每幅圖幅中所占像素較少,本次試驗選擇車輛作為分類目標。
由于計算機處理能力的限制,將每幅影像裁剪為512×512像素大小,不足的部分以0補充,最后保存為24位的jpg圖片。標注影像按相同的方法裁剪,并轉換為8位的灰度圖像。共得到742幅圖像,隨機選取702幅作為訓練圖像,40幅作為測試圖像。
為了驗證本文方法的優勢,采用MIoU(平均交并比)、ACC(準確度)、F1-score三個評價指標進行對比分析。

(4)

(5)

(6)
其中

(7)
式中:C為前景分類數量,加上背景總共為C+1類,本文C取1。TP為真正,表示正確分為汽車的像素個數。FP為假正,表示背景被分為汽車的像素個數。TN為真負,表示正確分為背景的像素個數。FN為假負,表示汽車被誤分為背景的像素個數。式(4)先將背景和汽車分別作為正樣本求出評價指標后,再取平均值便可得到所有類的平均評價指標。式(5)~(7)中正樣本為汽車。
本文試驗的硬件環境為:CPU Intel I5-9400F,顯卡NVIDIA GeForce RTX 2060 Super 8G,GPU加速庫CUDA10.0。程序采用Python語言基于TensorFlow深度學習框架編寫。
深度學習模型使用PSPNet[14],采用AdamOptimizer 算法[15]尋找最優解,學習率為0.000 1。此外,對權重采用L2正則化[16],以防止過擬合,提高泛化能力。本次試驗的K值1×104~1.4×105,每隔1×104取一次值。訓練周期epoch最大值為100,每個epoch之后在測試集上進行評估,若連續10個epoch的評價指標MIoU都不再升高,則采用提前終止模型訓練的策略(early stopping)[17]結束模型訓練,以防止過擬合。
不同的K值得到的評估指標結果如表2所示??梢钥闯觯瑥?×104開始,評估指標先是上升,到5×104左右最好,然后又下降。因為本文試驗所用的圖片為512×512像素,一幅圖共有22.6×105像素,而從圖中可以看出汽車的像素數在一幅圖中不會超過一半,所以如果K取值超過1.3×105,前景像素所占比例必定越來越小,直到與普通交叉熵一致,預測效果也會下降到與普通交叉熵一致。
從測試集的預測結果圖來看,使用普通交叉熵的PSPNet輸出結果,存在一些誤將背景錯分為車輛的情況,而使用了FocalLoss的PSPNet網絡的輸出結果有所好轉,但是效果最好的還是使用TopPixelLoss的輸出結果,如圖1第1、2行所示。在車輛被誤分為背景的這一類錯誤中,使用TopPixelLoss的輸出結果效果也是最好的,如圖1第3、4行所示。
3種損失函數的所有測試圖像計算出的平均指標值,如表3所示。從評價指標上來看,使用TopPixelLoss損失函數相對于普通交叉熵損失函數來說,MIoU提升了3.6%,F1-score提升了6.0%,ACC也提升了0.2%。用TopPixelLoss損失函數相對于使用FocalLoss損失函數的輸出結果來說,MIoU提升了3.0%,F1-score提升了5.0%,ACC也提高了0.1%。

表2 不同K值的評價指標值

圖1 使用不同損失函數的PSPNet預測結果對比Fig.1 Comparison of PSPNet prediction results with different loss functions

表3 使用不同損失函數的PSPNet評價指標對比
本文針對遙感影像中的小目標分割問題,提出一種名為TopPixelLoss的損失函數。在ISPRS 提供的 Vaihingen 數據集上,使用PSPNet網絡與普通交叉熵、FocalLoss、TopPixelLoss三種損失函數分別對車輛進行二分類分割。結果表明,不論從測試集上的預測圖形來說,還是從評價指標上來說,使用TopPixelLoss損失函數的輸出結果效果都更好。相對于FocalLoss來說,MIoU提升了3.0%,F1-score提升了5.0%,ACC也提高了0.1%。因此,本文提出的TopPixelLoss損失函數在遙感影像小目標語義分割方面,是比FocalLoss損失函數更優的損失函數。
本文的TopPixelLoss計算時涉及超參數K,K值是否能自動確定是下一步的研究重點。