顧振輝,姜文剛
江蘇科技大學 電子信息學院,江蘇 鎮(zhèn)江212003
艦船是重要的海上目標,遙感圖像的船舶檢測在民用領域和國防安全中具有廣泛的應用。在民用領域,利用遙感圖像進行船舶檢測可以為船舶導航和海上搜救提供實時位置信息,對專屬經濟區(qū)管理等提供重要保障[1];在軍事上,獲取目標艦船的海上位置信息能夠讓我軍對敵方艦隊的配置和活動范圍有很好的了解,給指揮層布置對戰(zhàn)策略提供強有力的信息支援。
光學遙感圖像提供了豐富的形狀、輪廓顏色和紋理信息,并且在遙感圖像中使用2D 物體檢測算法的船舶檢測已經被廣泛研究[2-4]。經典方法的船舶檢測方法有基于閾值分割[5],這需要有個相對穩(wěn)定的海面環(huán)境,受光照、海況的影響比較大;還有一種方法是使用支持向量機(SVM)、AdaBoost、決策樹等[6],這些要依賴于手工制作的特征如局部二進制模式(LBP)、直方圖定向梯度(HOG)[7]才能檢測艦船。然而,這些經典方法受手動標記的圖像特征和模板的限制[8-11],當船舶的大小和朝向和預設的模板不同時,檢測的性能會有很大的降低。
自卷積神經網絡(Convolutional Neural Networks,CNN)在ImageNet大規(guī)模視覺識別挑戰(zhàn)(ILSVRC)上的圖像分類[12]取得了巨大成功[13-14],CNN 可以提取對圖像噪聲和形態(tài)變化具有魯棒性的語義級圖像特征[15-18]?;谏疃葘W習的目標檢測算法已被用于光學遙感圖像中的目標檢測[19-20]。CNN 在目標檢測方面仍存在一些主要挑戰(zhàn),如物體旋轉、類內散度過大和類間散度過小,這些挑戰(zhàn)通常會降低物體檢測性能。就艦船檢測來說由于遙感圖像是由衛(wèi)星從高空俯拍得到的,艦船的朝向有著不確定性;受艦船長寬比的影響,不同種類的艦船有著不同的邊緣特征,在港口密集停放或靠著很近的艦船會產生較高的噪聲干擾,影響回歸框位置的確定。
為了解決上述挑戰(zhàn),本文在現(xiàn)有Mask R-CNN目標檢測模型框架的基礎上嵌入一種學習旋轉不變和Fisher判別層,通過加入旋轉不變正則化器和Fisher判別正則化器來優(yōu)化目標函數(shù),提升艦船檢測性能。第一個正則化器將樣本旋轉之前和之后的特征緊密地對應起來強化艦船特征的旋轉不變性,第二個正則化器處理不同長寬比的艦船之間的特征聯(lián)系,減少艦船的類內散度,提高艦船與海面和港口其他物體之間的類外散度。
Mask R-CNN是一個兩階段目標檢測框架,第一個階段掃描圖像并生成候選區(qū)域(Region Proposal Network,RPN),第二階段分類候選并生成邊界框和掩碼。Mask R-CNN 擴展自Faster R-CNN 由何凱明博士提出[21],使用ROI Align代替ROI Pooling,解決ROI Pooling在進行池化的過程中對ROI 區(qū)域進行拉伸使ROI 區(qū)域產生形變,導致定位不準。Mask R-CNN添加了一個實例分割框架(將屬于同一類的不同實例用不同的顏色分割),在進行目標檢測的同時完成像素級實例分割任務,將目標從背景中分割出來。
如圖1所示將旋轉不變正則化器和Fisher判別正則化器嵌入到現(xiàn)有的Mask R-CNN對象檢測框架,不改變原有的神經網絡架構。
選用ResNet50 作為特征提取的卷積神經網絡,網絡結構如表1所示。
將用于目標檢測的旋轉不變和Fisher 判別融合到現(xiàn)有的Mask R-CNN檢測框架中,解決遙感圖像艦船檢測中由物體旋轉、類內多樣性和類間相似性導致的檢測性能下降問題。
圖1 改進的Mask R-CNN框架圖
表1 ResNet50殘差神經網絡結構圖
對于Mask R-CNN模塊采用的ResNet[22],兩個正則化器嵌入在2 048維ROI池層中。第一個正則化器將旋轉之前和之后圖像的特征強制地共享以增強旋轉不變性,第二個正則化器約束卷積神經網絡特征使檢測模塊具有小的類內散度和大的類間散度。
給定一組初始樣本X={X+,X-} ,首先使用簡單的旋轉操作生成一組訓練樣本xRI={ X ,TφX },其中X+表示初始正樣本,X-表示初始樣本負例表示一系列K 旋轉變換,TφK表示訓練樣本的旋轉操作,角度為φk∈φ,k=1,2,…,K 。
為了加速訓練同時避免過度擬合,模型參數(shù)基于ImageNet數(shù)據集[13]進行預先訓練,然后通過微調方法轉移到優(yōu)化的檢測模型中。給定訓練樣本X 及其對應的標簽,其中yxi表示樣本xi的背景標簽向量,其值為1 或0。對于訓練樣本xi∈X,Os( )xi是softmax 分類層的輸出,并且Or( )xi是最后全連接層(FC)的輸出。為了最小化訓練樣本上softmax 分類誤差,在本文設計的艦船檢測模型中,還要求得到的艦船特征應該對任何一組訓練樣本{ }xi,Tφxi保持旋轉不變能力,且具有強大的判別能力,能有很小的類內散度和適當?shù)念愰g散度。為此,提出以下新的目標函數(shù):
其中,λ1,λ2,λ3,λ4和λ5是控制這五項相對重要性的五個權衡參數(shù)。
式(1)中J0( x,y )是分類損失函數(shù),通過使用( c +1)類多項負對數(shù)似然準則來定義,它的目的是最小化給定訓練樣本的分類誤差,并通過下式計算,
式中,yxi,lg Os( xi)表示yxi和lg Os( xi)的內積,N 是X 中初始訓練樣本的總數(shù),K 表示每個xi∈X 旋轉變換的次數(shù)。
式(1)中J1( X,TφX )表示是旋轉不變正則化器,其在旋轉之前和之后施加在訓練樣本上,即強制旋轉前和旋轉后的樣本共享相似特征。將正則化約束項定義為:
其中,Or( )xi是訓練樣本xi的卷積神經網絡特征,表示從訓練樣本xi中所有旋轉樣本中提取的平均卷積神經網絡特征,定義如下:
式(4)表示使每個訓練樣本的平均卷積神經網絡特征接近從所有旋轉版本中提取特征。如果該項輸出小值,則認為特征表示對于任何旋轉變換保持不變。
式(1)中J2( )X+表示對所有正訓練樣本的卷積神經網絡特征上的正則化器?;贔isher判別標準,它需要最小化正樣本X+類內的分散,可表示為最大化正樣本X+的類間散布,可以表示為。的定義分別如下:
其中,C 表示目標的種類,nc表示第c 類樣本總的數(shù)量,mc表示樣本X+c的均值特征,m 表示總樣本X+的均值特征,定義如下:
式(1)中的第四項是權重衰減項,使用L2正則化減小W 的權重。
式(1)中的第五項是邊界框回歸損失,定義如下:
式(1)中最后一項表示實例分割損失,ROI 的輸出維度為cm2,表示c 個分辨率為m2的二進制mask,c 表示二進制數(shù)量。本文方法為每一個像素值應用sigmoid激活函數(shù),定義J5為平均二進制交叉熵損失函數(shù)。
本文采用PyTorch作為深度學習的框架,PyTorch是一個基于火炬(Torch)的Python開源機器學習庫,用于計算機視覺和自然語言處理等應用程序。它是由Facebook里面的人工智能研究小組開發(fā)的。PyTorch 本質上是Numpy 的替代者,對GPU 有很好的支持、帶有高級功能,是一個用來快速搭建和訓練深度神經網絡的理想選擇。實驗中用OpenCV對基本圖像進行處理,使用可視化工具matplotlib對訓練過程中的損失函數(shù)進行了可視化。實驗采用的電腦配置是CPU 為I7-9700K,內存RAM有32 GB,GPU為技嘉GTX 1080Ti 11g。
使用Kaggle 艦船識別比賽提供的圖像作為模型的訓練集,這個圖像包含192 556張圖片,圖像的尺寸為長768,寬768(單位:像素),其中不包含艦船目標的圖有150 000張,占總數(shù)的77.9%,含艦船目標的圖有42 556張(22.1%),其中包含的艦船種類有集裝箱貨輪、散貨輪、驅逐艦等,它們的長寬比在7∶1到4.5∶1之間,為了加速數(shù)據集的制作和提升模型訓練速度,將圖像中不包含艦船目標的圖像舍去。
使用LableMe標注有船樣本中船的位置,生成每張樣本對應的.json文件,使用腳本程序批量將json轉化為數(shù)據集。
在改進的Mask R-CNN 框架中實現(xiàn)遙感圖像中艦船檢測,將殘差神經網絡ResNet50 和FPN 作為特征提取的骨干網絡,利用在ImageNet 數(shù)據集上預先訓練好的模型初始化檢測網絡,利用Kaggle船只檢測數(shù)據集進行參數(shù)微調。
式(1)中的λ1,λ2,λ3,λ4和λ5是用于控制目標函數(shù)中5個函數(shù)相對重要性的5個參數(shù),λ1控制旋轉變換正則化器,λ2控制卷積神經網絡特征正則化器及類內散度和類間散度,λ3控制權重衰減,λ4控制回歸框損失,λ5控制分割損失。由于是在Mask R-CNN 基礎上更新的目標函數(shù),所以將λ4和λ5設置為1,這和式(1)中第一項分類損失函數(shù)的參數(shù)一樣,使模型在進行微調時不破壞在ImageNet 數(shù)據集下初始化結果,權重衰減的參數(shù)λ3根據文獻[13]中的經驗設置為0.000 5。使用窮舉搜索的方式測試λ1和λ2的參數(shù)敏感性,實驗得出以下結論:(1)較小的λ2,增大了類間散度的同時也增大了類內散度;(2)旋轉不變特征的加入,增強了艦船特征聯(lián)系,減少了類內散度,避免了模型的過擬合。當λ1=0.01,λ2=0.005 時,對艦船這類大長寬比和方向不定的目標進行檢測時有很好的實時性和準確度。所以將式(1)中的參數(shù)分別設置為λ1=0.01,λ2=0.005,λ3=0.000 5,λ4=1,λ5=1,使用雙向softmax 分類器(一類表示背景,另一類表示艦船)訓練旋轉不變卷積神經網絡模型,將生成的所有區(qū)域提案與實際標注的圖像計算交并比IOU,將IOU 大于0.5 的艦船檢測回歸框作為初始正樣本,其余提案作為初始負樣本。分類器的學習率設置為0.01,整個網絡設置為0.001 以允許微調進行而不破壞初始化,并且讓學習率每10 000次迭代減少10倍,勢頭設定為0.9。使用三個旋轉,φ=對每個訓練圖像進行旋轉操作以獲得4X 訓練樣本。旋轉變換是一種常見的數(shù)據增強方法,讓有效的數(shù)據產生更多的等價數(shù)據,通過對圖像進行90°、180°和270°三次旋轉,使訓練樣本擴充到了原來的4倍,使用數(shù)據增強過后的樣本訓練網絡可以減少網絡的過擬合。通過這三次旋轉增加的數(shù)據量,可以解決海上艦船朝向不確定的問題,讓網絡學習到的特征具有一般性,而不是只能檢測出某一具體角度的艦船。
在實際中,很難將整個訓練集中所有類的特征考慮在內,這會導致需要極大的計算資源,減緩模型訓練的速度。做了兩個必要的修改:(1)不是使用整個訓練集來更新Fisher 判別項,而是根據每個小批量執(zhí)行Fisher判別正則化器的更新。(2)將每批次分成若干子批次,以同時更新式(3)中引入的旋轉不變正則化器。具體的步驟如下:在每次迭代中,隨機抽樣16個圖像并從每個圖像中選擇16個正樣本的ROI盡可能保證檢測物體的特征能很好地包含其中,以構建一個用于更新Fisher判別項的256 個ROI 的小批量樣本。將上述樣本集再分成四個子集合,在每個子集合中,隨機抽樣四個圖像并從每個圖像中選擇16個ROI(8個正樣本和8個負樣本)以及它們的4個旋轉角度以構建具有256個ROI大小的子集更新旋轉不變項。
使用matplotlib 可視化訓練過程中損失函數(shù)的變化,操作過程如圖2。選取5次訓練結果在表2中具體展示,由圖3 可見,在進行過40 000 次迭代后模型的分類損失(loss)和實例分割損失(loss_mask)趨于穩(wěn)定。
圖2 損失函數(shù)可視化操作
表2 權重衰減和損失函數(shù)變化
圖3 損失函數(shù)變化
最小化類內散度,必須減少同一類卷積神經網絡特征與它們中心及均值特征之間的距離,最大化類間散度,就是擴大卷積神經網絡特征與它不同類的中心的距離。圖4 是傳統(tǒng)方法和改進方法訓練完成后散度變化圖,用不同顏色表示不同類的特征分布。改進方法的類間散度更?。ㄌ卣鞣植几o湊),類間散度更大(不同類之間的空隙更大)。
圖4 散度變化
圖5 是Mask R-CNN 兩階段目標檢測展示圖,圖6表示訓練完基于Mask R-CNN 改進的艦船檢測模型后在測試集上的部分結果,圖7表示使用相同訓練集訓練的Mask R-CNN(主干網絡也是ResNet 50+FPN)模型在測試集上的部分結果,圖8是云霧遮擋情況下艦船檢測結果對比,表3表示兩種方法在相同測試集條件下進行艦船檢測性能表現(xiàn)。
圖5 Mask R-CNN兩階段目標檢測
圖6 改進Mask R-CNN艦船檢測結果
圖7 Mask R-CNN艦船檢測結果
圖8 云霧遮擋情況下船檢測結果
表3 模型性能對比
與Mask R-CNN方法相比,本文改進方法對遙感圖像中的艦船有更好的檢測效果。如圖6(a)中3 點鐘位置的兩艘船由于靠得太近,小船的邊緣特征和大船的邊緣特征產生的重疊,使得大小船不能很好地識別和分割出來,只檢測到大游輪而漏檢了和它相鄰的小窗,而本文改進的Mask R-CNN 算法在一定程度上克服了這個缺陷,如圖6(a)所示在把兩艘船都檢測出來的同時,通過不同顏色的掩碼將它們和海洋背景區(qū)分開實現(xiàn)了實例分割。由于增強了旋轉前后艦船特征的聯(lián)系,在訓練集樣本不是特別豐富的情況下盡可能多地提取描述性強的艦船特征,一定程度上克服了不同艦船由于具有不同外形導致的長寬比不同帶來的檢測效率的下降。如圖6(b)中,改進的Mask R-CNN 方法將和碼頭形狀相似的登陸艦檢測出來,而沒有漏檢。
以往的艦船檢測算法對于理想條件下的圖像可以取得較好的結果。然而實際成像復雜多樣,特別是天氣狀況、氣候條件、太陽角度、海面狀況等因素影響光學遙感成像質量,導致檢測失敗。如圖8(a)在雨霧遮擋情況下,傳統(tǒng)Mask R-CNN 檢測失敗,改進的方法檢測出了兩艘靠岸艦船如圖8(b)所示。對比兩幅圖片可以看出,改進方法的適應能力更強。
準確率(precision)、召回率(recall)和平均精度(AP)是衡量模型性能的重要指標,計算公式如下:
其中,TP 表示正樣本被識別為正樣本,F(xiàn)P 表示負樣本被識別為正樣本,F(xiàn)N 表示正樣本被識別為負樣本。
如表3 所示提出的方法在檢測時間幾乎不增加的基礎上,實現(xiàn)了準確率由73%上升到了81%,說明艦船檢測準確度有所升高,召回率從86%降低到了74%,表示在準確度提高的同時錯檢測也下降,平均精度AP 從80%上升到85%,表示提出方法的精度和魯棒性有提升。
針對遙感圖像中艦船朝向不確定性和海上及港口復雜環(huán)境造成艦船檢測性能下降的問題。本文研究了基于旋轉不變和Fisher 判別的目標檢測算法,在Mask R-CNN 目標檢測模型的基礎上嵌入顯著特征判別層,優(yōu)化了新的目標函數(shù),用旋轉判別正則化器和Fisher判別正則化器解決艦船旋轉和艦船類內多樣性導致的檢測性能下降問題,通過在Kaggle艦船檢測比賽數(shù)據集上的實驗證明,改進的方法較Mask R-CNN模型對遙感圖像中艦船檢測的精度更高,有魯棒性,同時不增加檢測時間。