方夢梁,黃 剛
(南京郵電大學 計算機學院,江蘇 南京 210023)
近年來,光學遙感成像技術發(fā)展迅速,光學遙感圖像分辨率不斷提升,相比其他類型遙感圖像如高光譜。合成孔徑雷達(SAR),高分辨率光學遙感圖像有著獨特的優(yōu)勢。在民用與軍事領域,基于光學遙感圖像的研究和應用都受到廣泛關注。船舶是重要的海上目標,船舶目標自動檢測是海洋環(huán)境監(jiān)測、漁業(yè)管理、搶險救災、軍事偵察等任務中重要的一環(huán),也是遙感信息處理的重要內容。在基于深度學習的檢測方法興起以前,船舶目標檢測依賴于手工設計特征,往往需要專門的先驗知識,適用范圍窄,實時性差,不適用于當前數(shù)據(jù)量巨大、分辨率高的光學遙感圖像[1]。近年來,基于深度學習的方法利用深度神經網絡自適應地分層學習對象的特征,相比以往模式識別中人工設計的特征提取模型,特征表達能力更強,獲取的特征語義更豐富,具有較好的光照、幾何、位置不變性,泛化能力更強[2]。基于深度學習的目標檢測方法典型代表有R-CNN[3]、Faster R-CNN[4]、YOLO[5]和SSD[6]等,這些方法在自然場景圖像的目標檢測任務中取得了巨大的成功。
最近,已有一些研究將基于深度學習的目標檢測方法應用到遙感圖像船舶檢測任務中[7-12],但多是針對SAR圖像,對光學遙感圖像的比較少;或是直接基于卷積神經網絡(CNN)構造模型,沒有很好地利用已有的高性能目標檢測框架,在時間效率和通用性上還有改進空間?,F(xiàn)有的深度學習目標檢測方法中Faster R-CNN或基于此的改進算法實時性較好,對小而密集的目標檢測有更高的精度。文中提出了一種基于深度學習的光學遙感圖像船舶檢測方法,通過圖像上采樣,在不改變卷積神經網絡基本結構的情況下,增大卷積層輸出的特征圖分辨率;同時利用特征金字塔結合高層與低層的特征,在保持高層特征圖語義信息不損失的同時增強其細節(jié)信息,提高了原始Faster R-CNN算法對小目標的檢測能力,應用于光學遙感圖像船舶檢測中取得了較好的效果。
Faster R-CNN檢測目標的主要流程為:利用多層卷積神經網絡提取待檢測圖特征得到特征圖;特征圖被送入?yún)^(qū)域提議網絡(region proposal network,RPN)得到一定數(shù)量的候選框;在特征圖上取候選框對應的特征片,經興趣區(qū)域池化層(RoI pooling)得到固定尺寸的特征圖,使用分類器判別是否屬于某個特定類;對于屬于某一非背景類的候選框,用回歸器進一步精調其位置。其中多層卷積神經網絡提取的特征被RPN和RoI pooling共享,其質量十分關鍵。當前的特征提取網絡可以有多種選擇,如AlexNet。GoogLeNet。VGGNet。ResNet等。這些網絡的主干都是多個卷積層和多個池化層的組合,由于池化層降低圖像規(guī)模和分辨率,故層級越高圖像分辨率越低;同時CNN的網絡結構決定了層級越高的特征圖感受野越大,更傾向于檢測大的目標。卷積網絡的這種特性,導致對小目標檢測的不利。以經典的VGG16為例,用于Faster R-CNN共享特征提取時只用到VGG16的前5個卷積塊,包含4個最大池化層,每次池化操作(2×2下采樣)圖像規(guī)模減小50%,最后特征圖(Conv5_3)尺寸只有原輸入圖像的1/16。當原圖中目標尺度低于16像素時,特征圖上幾乎沒有對應的定位和分類信息,自然難以被檢測到。從感受野的角度也可以看到這種不足,多層CNN卷積層感受野的計算公式如下:
(1)
其中,RFk為第k層卷積層的感受野大??;fk為當前層卷積核尺寸;Si為卷積步長。層級越高,感受野越大,目標檢測區(qū)分性越弱,不利于對小目標的檢測。
從卷積神經網絡提取到的各層特征來看,層級越高語義信息越豐富,特征越抽象、越全局化,但分辨率越來越低,幾何細節(jié)信息和位置信息越來越少,適合大目標檢測及復雜目標區(qū)分;而低層級的特征分辨率高,幾何輪廓和位置信息豐富,對目標定位和小目標檢測更有利。故為了提高對小目標的檢測性能,常常將高低層次的特征結合起來或者在多個層級的特征圖上做目標檢測[13-17],而不是只使用某一層的特征圖。
在自然場景圖像的目標檢測中,F(xiàn)aster R-CNN算法性能優(yōu)異,目前基于此模型的應用及其改進算法還在不斷涌現(xiàn)[18],在很多場景仍然是精度最高的模型。為了保證足夠高的召回率和準確度,文中提出的船舶檢測方案就基于Faster R-CNN框架。然而,由于遙感圖像和自然場景圖像之間存在明顯的差異,直接將現(xiàn)有算法用于遙感圖像船舶檢測的漏檢率比較高,需要繼續(xù)改進。
自然場景圖像往往尺寸較小,背景比較干凈,分辨率較高,包含的目標數(shù)量較少,最重要的是待檢測目標尺寸大或者說占整幅圖的比例很大。當前通用的目標檢測或識別模型所針對的數(shù)據(jù)集,如PASCAL VOC和ImageNet ILSVRC都是如此,有數(shù)據(jù)顯示ImageNet中超過80%的目標平均尺寸都超過40 pixel[19]。
光學衛(wèi)星遙感圖像尺寸大,視場大而分辨率相對較低,背景復雜,包含的對象數(shù)量眾多,待檢測目標尺寸小,有的場景中小目標密集聚在一起難以區(qū)分;另外還存在目標旋轉與仿射等現(xiàn)象以及云霧、海面波紋、陰影、光照與拍攝角度等影響。對大量的光學衛(wèi)星遙感圖像中海面船舶尺寸做了統(tǒng)計,尺寸分布如圖1所示。以矩形標注框的短邊來看,其中存在大量的短邊尺寸不足32 pixel甚至小于16 pixel的船舶目標。
圖1 光學遙感圖像數(shù)據(jù)集中船舶目標尺寸分布
當前深度學習目標檢測的典型算法都是針對自然場景圖像的通用模型,即便是應用到含大量小尺寸目標的其他自然場景圖像檢測任務上,如小人臉檢測[19],效果也明顯不足。由于自然圖片與光學遙感圖像的顯著差異,尤其大量小尺寸船舶目標的存在,直接用Faster R-CNN框架進行遙感圖像船舶檢測的效果較差。經自然圖片數(shù)據(jù)集如ImageNet預訓練的模型遷移到遙感圖像船舶檢測時更需要專門數(shù)據(jù)集進行充分訓練,模型的改進應該關注提高對小目標的檢測能力。
基于前面分析,為改善特征提取網絡輸出的特征圖缺失底層細節(jié)特征、分辨率過小的不足,在不改變現(xiàn)有Faster R-CNN基本架構的前提下提高其對小目標的檢測性能,使其適用于光學遙感圖像船舶檢測,提出了兩種改進策略:通過輸入圖像上采樣提高特征提取網絡輸出的特征圖分辨率,并利用特征金字塔融合高低層的特征,在經特征融合后的多個層次的特征圖上進行檢測。系統(tǒng)主流程如圖2所示。
圖2 方案整體框架
文中專注于光學遙感中的民船檢測,且不細分類型諸如游艇、游輪、貨船、軍用艦船等,相當于只檢測一類目標,將分類網絡最后一個全連接層輸出維度改為2,模型類別數(shù)量改為2,對應判別兩種類型:船舶、背景。特征提取網絡采用中型的網絡VGG16。由于太淺的網絡提取的特征不足,目標檢測效果差,在復雜圖像分類與檢測等任務上已很少被使用,而更深的網絡如ResNet、DenseNet等結構復雜,最終的特征圖感受野更大,對小目標檢測識別不利。已有的一些研究[14]表明,在存在大量密集小目標的場合,更復雜的網絡檢測結果并沒有較淺的VGG16效果好。
為了進一步增加特征圖分辨率以提高小目標檢測性能,有的研究中用更淺層的特征提取網絡或刪減網絡的最尾部的卷積層和池化層,然而更高層特征經過多次最大池化處理后有著更強的平移不變性和形變不變性,對于該任務中背景復雜的遙感圖像檢測很重要。為了不刪減VGG16卷積層、保留Conv5特征,同時提高其特征圖分辨率,將圖像2倍上采樣后再送入網絡,相當于特征提取網絡中各層的特征圖分辨率提高到原來的2倍,比如Conv5_3輸出的特征圖由原圖尺寸的1/16增大到1/8,其細節(jié)特征更豐富,提高了小目標的區(qū)分度。為保證圖像有較高的質量,插值方式選擇雙三次插值法(bicubic interpolation)。
輸入圖像尺寸的增大能提高檢測準確度,但所需內存將急劇增大。為平衡準確度和占用內存,在測試和驗證階段,原始圖像進入網絡之前需要先進行縮放,使圖像的長邊達到1 000 pixel或者短邊達到800 pixel。同樣2倍放大后的圖像先切分為4等份,與原圖尺寸相同,然后將這5塊分別送入網絡檢測。在結果融合操作之前5塊圖像的檢測步驟并行執(zhí)行,縮短檢測時間。各切片上的檢測結果框的位置坐標是基于各自切片坐標系的,而最終檢測結果應該都是在原圖上標記的。另外,圖片被切分后,有的目標被切分到多個切片中,可能會導致一個目標被檢測多次,產生多個檢測框,這些屬于同一目標的檢測框需要被合并。為了方便邊框合并去重,將原圖也送入網絡進行檢測。所有切片上的檢測結果邊框需先映射到相對于原圖的坐標和尺寸,然后將所有切片上的和原圖上的檢測結果通過非極大值抑制方式(NMS)合并,得到最終的原圖級別的檢測結果。整個過程以端到端的方式完成。另外該方法在兩種尺寸的圖像上檢測,使得網絡在預定義錨框的基礎上可以捕獲更大尺度變化范圍內的候選區(qū)域,從而提高了多尺度檢測的魯棒性。
基于前面的分析,卷積神經網絡的低層和高層特征有互補的特點,對于目標檢測都很重要,尤其對于小目標檢測更應該利用好低層特征。目前已有多種高低層特征融合的方式,如HyperNet[17]、RON[18],但Tsung-Yi Lin等[20]的實現(xiàn)方式操作簡單、代價小、效果良好。作者利用多層卷積神經網絡多層池化操作后特征圖尺寸逐級減小,自然形成了多尺度多層級的類金字塔結構構造特征金字塔(feature pyramid networks,F(xiàn)PN),只需很小的額外計算量便巧妙融合了從低層到高層多尺度的特征,并且在各層上相對地預測候選框,結構示意如圖3所示。
圖3 特征金字塔網絡結構示意
特征金字塔網絡中的特征數(shù)據(jù)流有三個路徑,分別是自底向上,自頂向下,橫向連接。自底向上即卷積神經網絡的前向過程,左邊各框分別是取自卷積神經網絡各卷積塊最后的輸出特征,每經過一卷積塊特征圖分辨率減少1/2。自頂向下即對上一層特征圖進行2倍最鄰近上采樣,然后將其與橫向連接的本層特征圖(經過1×1卷積以降低維度)通過逐元素相加方式進行融合,再采用3×3的卷積核對每個融合結果進行卷積操作以消除上采樣的混疊效應,生成與本層原特征相同尺寸的特征圖,在此稱為超特征。特征金字塔每一層特征經過其上的所有層特征的累加,包含不同分辨率、不同語義強度的特征,自上至下各層特征不斷豐富。FPN具有很好的泛化能力,將其應用到一些基于深度神經網絡的圖像處理方法中可帶來顯著的性能改善甚至是速度的提升,包括目標檢測、實例分割等。同時,由于該方法只是在原網絡基礎上加上了數(shù)個額外的跨層連接和簡單的特征融合,故額外增加的時間和計算消耗很小。
將FPN與Faster R-CNN相結合,并稱改進后的網絡為FPRCNN,如圖4所示。該方法使用的特征提取網絡VGG16有5個卷積塊,將各卷積塊的輸出,即Conv1_2,Conv2_2,Conv3_3,Conv4_3,Conv5_3的輸出分別記為{C1,C2,C3,C4,C5}??紤]到C1特征圖尺寸大導致內存消耗很大且語義值太低,對目標分類不利,在生成超特征時沒有使用,只用{C2,C3,C4,C5}自上至下生成超特征{P2,P3,P4,P5},與原特征一一對應,尺寸相同。
圖4 FPRCNN結構示意
各個區(qū)域建議網絡RPN在特征金字塔各個特征圖{P2,P3,P4,P5}上獨立進行候選框RoI的生成,不同尺度的RoI使用不同特征層對應的特征片作為ROI Pooling層的輸入。根據(jù)RoI尺寸選擇特征映射的具體公式為:
(2)
其中,w和h為RoI的寬和高;k0=5,k對應FPN中的Pk層。
所以,若某個RoI尺寸為56*56,則k=3,將選擇從特征金字塔中的P3上提取特征片,隨后的步驟與原始Faster R-CNN一樣,即RoI池化、類別判定與邊框回歸。
由于特征金字塔各層固有的多級尺度,且該方法在各層上運行RPN做區(qū)域建議操作,不需要像原Faster R-CNN一樣為了實現(xiàn)多尺度檢測而在單個尺度的特征圖檢測時RPN網絡需要設置多種不同的錨框尺寸,只需在每個層級上的RPN設置單一尺寸的錨框。另外根據(jù)圖1對遙感圖像中船舶尺寸的統(tǒng)計數(shù)據(jù),改小RPN中錨框的尺寸,故分別對{P2,P3,P4,P5}上的RPN設置錨框尺寸為(162,322,642,1282)。鑒于遙感圖像中船舶目標具有方向多變、高長寬比的特點,將錨框的長寬比設為5類{1∶1,1∶2,1∶3,1∶4,1∶6,2∶1,3∶1,4∶1,6∶1},這種尺寸設置更有利于對船舶這一特定目標檢測。為縮短模型訓練和檢測時間,各個層級上的分類器和回歸器共享相同的卷積參數(shù)。
文中專注于檢測光學遙感中的船舶目標,由于沒有專門的公開數(shù)據(jù)集,自己制作了數(shù)據(jù)集。從NWPU VHR-10和DOTA數(shù)據(jù)集中選取了部分圖片,另外從Google Earth上獲取了100張遙感圖像,原圖像總共400張,尺寸都剪裁至1 000×1 000左右。為了擴充訓練樣本,并考慮到實際場景遙感圖像中的目標存在視角變化。方向變化的影響,故對圖像進行了旋轉和翻轉操作。對于每個訓練樣本,以順時針方向旋轉3個角度{90°,180°,270°};隨后對所有圖像進行水平翻轉,同時這些圖像的原始標注數(shù)據(jù)做相應轉換,例如原始圖像某標注框坐標為:左上[xl0,yl0],右上[xr0,yr0],左下[xl1,yr1]和右下[xr1,yr1],做順時針90°旋轉后坐標變?yōu)椋鹤笊蟍xl1,yr1],右上[xl0,yl0],左下[xr1,yr1]和右下[xr0,yr0],以此類推。從Google Earth采集的圖像通過人工標注,旋轉和翻轉及坐標轉換操作通過編程自動完成,訓練樣本擴充到原來的8倍。取其中2 000張包含船舶目標的作為正樣本,訓練集與測試集比例為7∶3。所有正樣本都人工標注其中船舶目標的邊界框。
為了方便訓練,把標注好的數(shù)據(jù)做成PASCAL VOC格式。由于基于TensorFlow Object Detection API構建網絡,按TensorFlow框架要求,還需將PASCAL VOC格式數(shù)據(jù)集轉換成TFRecord格式。
本實驗的網絡訓練采用遷移學習策略,共享的特征提取網絡為VGG16,已經過ImageNet數(shù)據(jù)集的預訓練,在此基礎上,繼續(xù)在該遙感船舶數(shù)據(jù)上微調參數(shù)。在訓練過程中,設置初始學習速率為0.000 1,每迭代2 000次學習速率減為1/10。多次迭代,每5 000次保存一個模型,選擇損失小的在測試集圖上做檢測試驗。其他參數(shù)遵循原Faster R-CNN[3],如NMS的IoU閾值為0.7。采用端到端(end-to-end)的方式來訓練主干網絡VGG16和RPN區(qū)域推薦網絡。
在實際場景中,不同船舶之間體型區(qū)別及遙感圖像地面采樣距離(GSD)的差異導致船舶目標也存在較大的尺度變化,為了強化模型的多尺度魯棒性,在訓練階段采用多尺度訓練方式。每隔10輪隨機改變輸入的訓練圖像的尺寸,圖像縮放到原尺寸的1.0+0.2(1-k)倍,k隨機取值{0,1,2,3},即原圖的{0.6,0.8,1.0,1.2}倍,模型在原圖的這4種縮放比例上有更充分地訓練。
為方便起見,基于Google開源的TensorFlow Object Detection API構建該模型。實驗平臺:Ubuntu 14.04.5,Xeon E5-2690v4 CPU,NVIDIA GK110 BGL GPU。
實驗中,用準確率(precision)和召回率(recall)來評判檢測效果,其中召回率描述被正確檢測到的船舶數(shù)與圖像中實際總數(shù)量的比率,表明所希望被檢索到的船舶目標多大程度上被系統(tǒng)檢索到了。準確率衡量正確檢測數(shù)量與全部識別出目標數(shù)量的比值,即檢索到的對象里有多少是真正的船舶目標。
(3)
(4)
圖5是測試集的一個檢測結果示例,可以看到圖中絕大部分船舶都被成功正確地檢測出,有較好的多尺度適應性。
圖5 檢測結果示例
圖中上部有幾艘緊貼另一艘大船的船沒有被檢測到,推測其原因應該是本方法基于常見的水平邊界框檢測,船只方向多變,候選框往往不能很好地貼合瘦長形的船只,容易出現(xiàn)緊靠在一起的多個候選框高度重合在PRN網絡中被合并。故對于這種尺寸差別明顯且密集緊貼的多個目標難以區(qū)分,需要繼續(xù)改進。
如表1數(shù)據(jù)顯示,無論是基于區(qū)域建議的Faster R-CNN還是基于回歸的SSD,基于深度學習的方法在在遙感圖像船舶目標檢索上的性能都超過了傳統(tǒng)的基于手工特征的HOG+SVM方法,顯示出了良好的泛化能力。表中“Faster R-CNN+FPN”指僅僅使用特征金字塔改進Faster R-CNN的方法,對比最后三行數(shù)據(jù)可看到,該方法提出的兩個策略:圖像上采樣、特征金字塔FPN對提升召回率都有明顯的幫助。與原始Faster R-CNN相比,文中方法的船舶目標召回率提高了約11個百分點,說明文中方法能在背景復雜、目標尺度多變的遙感圖像中檢測出更多的小目標。
表1 不同方法的召回率對比
表2是不同方法在文中數(shù)據(jù)集上檢測的準確度結果對比,同樣可以看到提出的兩個策略對檢測的準確率都有提升,改進后Faster R-CNN目標檢測準確度提高了8.6%。
表2 不同方法的準確率對比
綜合上述結果,提出的改進方法檢測光學遙感圖像船舶小目標相比原始的Faster R-CNN在準確率、召回率上均有明顯提高,也超過了傳統(tǒng)的基于手工特征模式識別方法和SSD算法。
首先將自然場景圖像深度學習目標識別算法運用到了遙感圖像船舶目標檢測上,將通用的多類別目標檢測算法Faster R-CNN用于單類目標的檢測,把目標的檢測問題轉換為二分類問題(船舶和背景)。分析了高分辨率遙感圖像與自然場景圖像的差別及原始Faster R-CNN算法檢測小目標的不足之處,提出圖像上采樣與特征金字塔網絡結合的策略。改進后的模型在遙感圖像海面船舶檢測任務中表現(xiàn)出更好的性能,表明了用于自然圖像中的深度學習目標檢測算法應用到遙感圖像處理的可行性和優(yōu)越性。該方法召回率有顯著提升,但是離實際應用需求還有距離,有待繼續(xù)提高;另外該方法使用傳統(tǒng)的水平邊界框做檢測,導致少數(shù)密集緊貼的多個目標候選框易高度重合而被非極大值抑制方法錯誤地拋棄,若使用任意方向的邊界框替代水平邊界框可能會有改善,下一步將在這兩方面做進一步研究。