袁偉,許文波,周甜
1. 成都大學(xué) 建筑與土木工程學(xué)院,成都 610106 2. 電子科技大學(xué) 資源與環(huán)境學(xué)院,成都 610097
分割遙感影像獲取地理信息數(shù)據(jù)現(xiàn)已成為主流的地理信息數(shù)據(jù)獲取途徑,在諸多項(xiàng)目中得到使用,特別是在大區(qū)域的地籍調(diào)查、生態(tài)監(jiān)測(cè)、地理國(guó)情監(jiān)測(cè)等項(xiàng)目中,其優(yōu)勢(shì)尤為明顯。傳統(tǒng)的遙感圖像分割主要是依靠像素值的特點(diǎn)函數(shù)關(guān)系進(jìn)行計(jì)算,將差異較小的像元?dú)w屬為同一類別,如分水嶺算法[1]、主動(dòng)輪廓模型[2]、統(tǒng)計(jì)區(qū)域融合[3]、聯(lián)合多種空間特征的高光譜圖像空譜分類方法[4]、基于多特征的遙感圖像分割算法[5]等。由于地物存在同物異譜或異物同譜的現(xiàn)象,傳統(tǒng)方法的分類效果十分有限。
隨著深度學(xué)習(xí)技術(shù)的出現(xiàn)和發(fā)展,不少學(xué)者將深度學(xué)習(xí)技術(shù)應(yīng)用到遙感影像分割上,取得了較好的效果,如對(duì)房屋的提取[6]、對(duì)道路的提取[7]。但是多數(shù)都集中在對(duì)房屋、植被等的提取上,這類地物的特點(diǎn)是在圖幅中的占比較大。而在遙感解譯中,小目標(biāo)的檢測(cè)、分割也是實(shí)際生產(chǎn)的需求之一,如對(duì)于大海中艦船的檢測(cè)或分割,路面汽車的檢測(cè)或分割,輸電塔的檢測(cè)或分割等。
小目標(biāo)分割時(shí),由于背景與前景存在明顯的不均衡,背景往往大大多于前景,致使損失函數(shù)由背景主導(dǎo),分割效果不佳。針對(duì)這個(gè)問題,文獻(xiàn)[8-10]通過對(duì)數(shù)據(jù)集進(jìn)行重采樣的方式達(dá)到樣本類別相對(duì)平衡,但是會(huì)破壞數(shù)據(jù)的分布和丟失信息;文獻(xiàn)[11-12]通過修改交叉熵?fù)p失函數(shù)的形式來增強(qiáng)網(wǎng)絡(luò)識(shí)別小類別的能力;文獻(xiàn)[13]通過先目標(biāo)檢測(cè)再將檢測(cè)到的區(qū)域單獨(dú)用網(wǎng)絡(luò)進(jìn)行分割后修改原圖。
現(xiàn)有的方法均考慮所有的像素來計(jì)算交叉熵?fù)p失值,這樣會(huì)導(dǎo)致前景較少時(shí)被背景所淹沒。本文提出一種僅考慮部份交叉熵較大的像素來計(jì)算損失值,有效避免了上述問題,提高了占比較少的前景分割精度。
交叉熵是用來衡量?jī)煞鶊D像的相似程度的,現(xiàn)有的損失函數(shù)是對(duì)所有像素的交叉熵求加權(quán)平均,做為最終的損失函數(shù)值。對(duì)于類別占比較為均衡的情況,只需對(duì)所有像素求平均,得到最終的損失函數(shù)值,就能得到較好的分類效果,即
(1)
式中:y'為預(yù)測(cè)為前景的概率值;y為標(biāo)簽值;LCrossEntropy為每個(gè)像素的交叉熵;Loss為最終的損失值。對(duì)于類別不均衡的數(shù)據(jù),采用對(duì)所有像素交叉熵求平均的形式,會(huì)導(dǎo)致占比較少的類別被占比大的類別所淹沒。例如一個(gè)二分類圖像有100像素,汽車所占像素只有2個(gè),那么即使這2像素分類全錯(cuò),所有像素均預(yù)測(cè)為背景,那么準(zhǔn)確率仍然可達(dá)98%。因此文獻(xiàn)[12]提出了FocalLoss損失函數(shù),對(duì)每個(gè)像素按前景和背景賦予不同的權(quán)重,然后再求所有像素交叉熵的均值作為最終的損失函數(shù)值。每個(gè)像素的交叉熵計(jì)算方法如下:
(2)
(3)
隨著訓(xùn)練的進(jìn)行,這些差異大的像素交叉熵將逐漸變小,差異小的像素交叉熵自然更小,因此這部份交叉熵較大的像素可以覆蓋交叉熵較小的像素。
如表1所示,從混淆矩陣可以看出,像素的分類情況為4類,第1類是實(shí)為前景預(yù)測(cè)為前景的TP,第2類是實(shí)為前景預(yù)測(cè)為背景的FN,第3類是實(shí)為背景預(yù)測(cè)為前景的FP,第4類是實(shí)為背景預(yù)測(cè)為背景的TN。其中,F(xiàn)P和FN是分類錯(cuò)誤的情況,TP和TN為分類正確的情況。對(duì)于損失函數(shù)來說,應(yīng)該著重關(guān)注分類不正確的情況,也就是FP和FN。從交叉熵大小來說,F(xiàn)P和FN的交叉熵必然大于TP和TN。因此,篩選出交叉熵大的像素,也就是分類錯(cuò)誤的像素來求取損失函數(shù)值,可以避免錯(cuò)誤分類的小目標(biāo)被大量分類正確的像素淹沒的情況。
表1 二分類混淆矩陣
TopPixelLoss損失函數(shù)的具體計(jì)算步驟為:
1)將預(yù)測(cè)圖像與真實(shí)標(biāo)簽圖像進(jìn)行逐像素的比較,計(jì)算出每個(gè)像素的交叉熵。
2)將所有像素的交叉熵按從大到小進(jìn)行排序。
3)確定一個(gè)K,按此閾值篩選出前K個(gè)交叉熵最大的像素。
4)對(duì)于篩選出的K個(gè)像素交叉熵取平均,作為最后的損失值。
由于采用以折代曲過渡的方案,因此,每塊玻璃的外形尺寸都不相同,需設(shè)定一套完整的標(biāo)識(shí)系統(tǒng),該標(biāo)識(shí)系統(tǒng)應(yīng)能充分體現(xiàn)玻璃的安裝位置、方向及正反面等信息內(nèi)容。標(biāo)識(shí)系統(tǒng)制定原則如下:(1)將玻璃骨架編號(hào),然后玻璃分塊跟著骨架進(jìn)行編號(hào),以明確安裝位置;(2)玻璃統(tǒng)一在左上角做標(biāo)識(shí),以明確安裝方向;(3)編號(hào)及安裝方向標(biāo)識(shí)均標(biāo)記在玻璃正面,以明確玻璃安裝方向。
試驗(yàn)數(shù)據(jù)采用ISPRS 提供的Vaihingen 數(shù)據(jù)集(http:∥www.isprs.org/commissions/comm3/wg4/tests.html)。該數(shù)據(jù)集包含33幅不同大小的數(shù)字正射影像,其地面分辨率均為9 cm,正射影像由近紅外、紅、綠3個(gè)波段組成,包含車輛、建筑物、低矮植被、樹木、不透水地面、河流及其他共6個(gè)類別。因車輛在每幅圖幅中所占像素較少,本次試驗(yàn)選擇車輛作為分類目標(biāo)。
由于計(jì)算機(jī)處理能力的限制,將每幅影像裁剪為512×512像素大小,不足的部分以0補(bǔ)充,最后保存為24位的jpg圖片。標(biāo)注影像按相同的方法裁剪,并轉(zhuǎn)換為8位的灰度圖像。共得到742幅圖像,隨機(jī)選取702幅作為訓(xùn)練圖像,40幅作為測(cè)試圖像。
為了驗(yàn)證本文方法的優(yōu)勢(shì),采用MIoU(平均交并比)、ACC(準(zhǔn)確度)、F1-score三個(gè)評(píng)價(jià)指標(biāo)進(jìn)行對(duì)比分析。
(4)
(5)
(6)
其中
(7)
式中:C為前景分類數(shù)量,加上背景總共為C+1類,本文C取1。TP為真正,表示正確分為汽車的像素個(gè)數(shù)。FP為假正,表示背景被分為汽車的像素個(gè)數(shù)。TN為真負(fù),表示正確分為背景的像素個(gè)數(shù)。FN為假負(fù),表示汽車被誤分為背景的像素個(gè)數(shù)。式(4)先將背景和汽車分別作為正樣本求出評(píng)價(jià)指標(biāo)后,再取平均值便可得到所有類的平均評(píng)價(jià)指標(biāo)。式(5)~(7)中正樣本為汽車。
本文試驗(yàn)的硬件環(huán)境為:CPU Intel I5-9400F,顯卡NVIDIA GeForce RTX 2060 Super 8G,GPU加速庫(kù)CUDA10.0。程序采用Python語(yǔ)言基于TensorFlow深度學(xué)習(xí)框架編寫。
深度學(xué)習(xí)模型使用PSPNet[14],采用AdamOptimizer 算法[15]尋找最優(yōu)解,學(xué)習(xí)率為0.000 1。此外,對(duì)權(quán)重采用L2正則化[16],以防止過擬合,提高泛化能力。本次試驗(yàn)的K值1×104~1.4×105,每隔1×104取一次值。訓(xùn)練周期epoch最大值為100,每個(gè)epoch之后在測(cè)試集上進(jìn)行評(píng)估,若連續(xù)10個(gè)epoch的評(píng)價(jià)指標(biāo)MIoU都不再升高,則采用提前終止模型訓(xùn)練的策略(early stopping)[17]結(jié)束模型訓(xùn)練,以防止過擬合。
不同的K值得到的評(píng)估指標(biāo)結(jié)果如表2所示??梢钥闯觯瑥?×104開始,評(píng)估指標(biāo)先是上升,到5×104左右最好,然后又下降。因?yàn)楸疚脑囼?yàn)所用的圖片為512×512像素,一幅圖共有22.6×105像素,而從圖中可以看出汽車的像素?cái)?shù)在一幅圖中不會(huì)超過一半,所以如果K取值超過1.3×105,前景像素所占比例必定越來越小,直到與普通交叉熵一致,預(yù)測(cè)效果也會(huì)下降到與普通交叉熵一致。
從測(cè)試集的預(yù)測(cè)結(jié)果圖來看,使用普通交叉熵的PSPNet輸出結(jié)果,存在一些誤將背景錯(cuò)分為車輛的情況,而使用了FocalLoss的PSPNet網(wǎng)絡(luò)的輸出結(jié)果有所好轉(zhuǎn),但是效果最好的還是使用TopPixelLoss的輸出結(jié)果,如圖1第1、2行所示。在車輛被誤分為背景的這一類錯(cuò)誤中,使用TopPixelLoss的輸出結(jié)果效果也是最好的,如圖1第3、4行所示。
3種損失函數(shù)的所有測(cè)試圖像計(jì)算出的平均指標(biāo)值,如表3所示。從評(píng)價(jià)指標(biāo)上來看,使用TopPixelLoss損失函數(shù)相對(duì)于普通交叉熵?fù)p失函數(shù)來說,MIoU提升了3.6%,F(xiàn)1-score提升了6.0%,ACC也提升了0.2%。用TopPixelLoss損失函數(shù)相對(duì)于使用FocalLoss損失函數(shù)的輸出結(jié)果來說,MIoU提升了3.0%,F(xiàn)1-score提升了5.0%,ACC也提高了0.1%。
表2 不同K值的評(píng)價(jià)指標(biāo)值
圖1 使用不同損失函數(shù)的PSPNet預(yù)測(cè)結(jié)果對(duì)比Fig.1 Comparison of PSPNet prediction results with different loss functions
表3 使用不同損失函數(shù)的PSPNet評(píng)價(jià)指標(biāo)對(duì)比
本文針對(duì)遙感影像中的小目標(biāo)分割問題,提出一種名為TopPixelLoss的損失函數(shù)。在ISPRS 提供的 Vaihingen 數(shù)據(jù)集上,使用PSPNet網(wǎng)絡(luò)與普通交叉熵、FocalLoss、TopPixelLoss三種損失函數(shù)分別對(duì)車輛進(jìn)行二分類分割。結(jié)果表明,不論從測(cè)試集上的預(yù)測(cè)圖形來說,還是從評(píng)價(jià)指標(biāo)上來說,使用TopPixelLoss損失函數(shù)的輸出結(jié)果效果都更好。相對(duì)于FocalLoss來說,MIoU提升了3.0%,F(xiàn)1-score提升了5.0%,ACC也提高了0.1%。因此,本文提出的TopPixelLoss損失函數(shù)在遙感影像小目標(biāo)語(yǔ)義分割方面,是比FocalLoss損失函數(shù)更優(yōu)的損失函數(shù)。
本文的TopPixelLoss計(jì)算時(shí)涉及超參數(shù)K,K值是否能自動(dòng)確定是下一步的研究重點(diǎn)。