王璽坤,姜宏旭,林珂玉
(北京航空航天大學 數字媒體北京市重點實驗室,北京100083)
隨著遙感技術的發展,遙感圖像處理的研究越來越受到重視。雖然之前已經提出了許多艦船檢測算法,但由于存在諸如艦船密度、圖像亮度等不確定性因素,如何提高艦船檢測的準確率仍然是一個巨大的挑戰。此外,遙感圖像幅員遼闊,其幅寬可達50~100 km,其中的艦船尺寸非常小且密集分布,具有體積小、數量多、位置多樣、地物干擾性大等特點,不同于PASCAL VOC數據集中大而突出的檢測目標。遙感圖像中艦船之類的小目標,即使在最高分辨率下,每個艦船的范圍也只有約15個像素。
在過去的幾年中,已經提出了一些傳統的艦船檢測算法。有些算法采用以下思路:基于圖像中梯 度 直 方 圖 的SIFT[1](Scale-Invariant Feature Transform)和HOG[2](Histogram of Oriented Gradient)特征提取方法,利用滑動窗口找出艦船目標的潛在區域提取特征信息,再利用SVM[1]和Adaboost[3]等分類器對目標特征進行識別和分類檢測。有些算法[4]使用自下而上的視覺注意機制在整個檢測場景中選擇突出的候選區域。雖然這些算法表現出很好的性能,但復雜的場景下實用性很差,在實際任務中難以達到足夠的精度。特別地,基于滑動窗口的艦船潛在區域選擇策略會進行大量重復計算,無法滿足艦船實時監測的要求。
自從在ImageNet競賽中引入卷積神經網絡(CNN)以來,深度學習技術得到了快速的發展。與傳統的艦船檢測算法相比,目標檢測算法能夠通過卷積神經網絡對訓練的遙感圖像進行學習,自動地從圖像中提取出艦船的特征,學習能力強且識別速度快、精度高。目前流行的目標檢測算法可以分為兩類:一類是基于區域的目標檢測算法,如Fast R-CNN、Faster R-CNN[5]、Mask R-CNN等,這些算法將特征提取、區域建議網絡、邊界框回歸與分類整合在一個網絡中,提高了檢測精度,但檢測速度很慢,無法滿足實時檢測的要求;另一類是基于回歸的目標檢測算法,如YOLO[6](You Only Look Once)、SSD[7](Single Shot MultiBox Detector)等算法,這些算法直接在原始圖像上完成輸入到目標位置和類別的輸出,卷積神經網絡經過一次推理,就能得到圖像中目標的位置和所屬類別以及相應的置信概率,而且其檢測速度可以滿足實時檢測的要求。上述深度學習算法在目標檢測數據集PASCAL VOC 2007和2012上取得了很好的檢測效果,可以檢測到人、車、動物等目標,通常這些目標會占據圖像的大部分空間;而在遙感圖像中艦船通常只占據10~32像素,深度學習算法對艦船的檢測精度很低,如果在遙感圖像中出現多個密集的艦船目標,則無法檢測出來。
本文以基于回歸的YOLOv3-Tiny算法為基礎,將遙感圖像中的艦船作為檢測目標,在YOLOv3-Tiny算法的網絡模型中引用殘差網絡,提高了特征提取網絡的檢測性能,同時增加特征映射模塊,為預測層提供豐富的語義信息,從而有效提取艦船特征。
近年來,遙感圖像艦船檢測領域已經提出了各種方法。本節將簡要回顧現有的基于深度學習的目標檢測算法和基于深度學習的艦船檢測算法。
在基于深度學習的目標檢測領域中,特征提取階段主流的方法是基于區域和回歸的目標檢測算法。R-CNN、Fast R-CNN、Faster R-CNN[5]等目標檢測算法,主要是通過區域建議產生大量的可能包含檢測對象的潛在邊界框,再用分類器去判斷每個邊界框里面是否包含對象,以及對象所屬類別的概率和置信度。YOLO[6]不同于這些目標檢測算法,其將目標檢測任務當做一個回歸問題來處理,使用一個卷積神經網絡,直接從一整張圖像來預測出邊界框的坐標,邊界框中包含物體的置信度和概率。SSD[7]沿用了YOLO基于回歸的思想,結合Faster R-CNN的候選框,提出預設框和加入特征金字塔,直接估計對象區域并真正實現實時檢測。特征金字塔網絡[8](Feature Pyram id Networks,FPN)采用多尺度特征金字塔形式,開發了一種具有橫向連接的自上而下的架構,用于在所有尺度上構建高級語義特征圖,并充分利用特征圖來獲得更好的檢測結果。R-FCN[9](Region-based Fully Convolutional Networks)構建了一個基于區域的完全卷積網絡,幾乎所有計算都在整個圖像上共享,從而大大減少了參數數量,提高了檢測速度,并具有良好的檢測效果。
上述目標檢測算法也廣泛用于遙感圖像艦船檢測。文獻[10]提出了一種基于卷積神經網絡的艦船檢測新方法(S-CNN),從測試圖像中提取的線段定位船舶建議,并結合改進的顯著性檢測算法挑選尺寸相對較小的近海船舶。然而在處理不同復雜場景下的船舶時,其檢測準確率很低。文獻[11]采用傳統的恒虛警率(CFAR)將現有的目標檢測算法Faster R-CNN修改為CFAR算法,將Faster R-CNN生成的對象建議作為CFAR算法的保護窗口,然后獲取小尺寸目標,重新評估檢測網絡中分類得分相對較低的邊界框,但是在檢測具有多尺度特征的艦船時存在嚴重的信息丟失問題。文獻[12]提出了一種基于海陸分割的卷積神經網絡的艦船檢測框架(SLS-CNN),試圖將SLS-CNN探測器、顯著性計算和角落特征結合起來。然而在現實生活中,對于具有大縱橫比的艦船,一旦角度傾斜,冗余區域將相對較大,并且不利于非最大抑制的操作,經常導致檢測丟失。文獻[13]提出了一種基于YOLOv2[14]算法的船舶檢測算法YOLT(You Only Look Twice),YOLT框架使用單個卷積神經網絡來預測類別和邊界框,借鑒GoogleNet網絡結構,以實時速度運行網絡結構測試輸入圖像。YOLT在訓練和測試時能檢測到整個圖像,大大改善了背景差異,網絡可以為每個對象編碼上下文信息。然而YOLT的特征融合方法,具有較小的感受野,缺乏豐富的語義信息,會造成小目標的語義特征丟失嚴重,在檢測密集較小的艦船時有不利的影響。
YOLO算法經過優化和迭代,在檢測性能上都優于SSD、Faster R-CNN等算法。在網絡結構上,YOLOv3融合了YOLOv2、Darknet-19以及其他新型殘差網絡,由連續的3×3和1×1卷積層組合而成。因為一共有 53 個卷積層,稱為Darknet-53。
YOLOv3網絡首先把遙感圖像進行預處理縮放到416×416,并送入卷積神經網絡進行推理,根據網絡模型的置信度對檢測結果進行非極大值抑制和分類識別。YOLOv3網絡將輸入圖像劃分成S×S個網格,如果某網格的中心內落有某目標物體,則這個網格就負責預測這個物體。每個網格預測出檢測物體邊界框的4個偏移坐標(tx,ty,tw,th)以及置信度得分。YOLOv3網絡在3種不同的規模上進行預測,分別為13×13、26×26和52×52,每種規模預測3個邊界框。在COCO數據集實驗中,YOLOv3算法分別為每種規模各預測了3個邊界框,所以得到的張量是S×S×[3×(4+1+80)],其中包含4個邊界框的坐標(tx,ty,tw,th)、1個目標預測以及80種分類預測。假設以圖像左上角頂點為坐標原點,則單元格相對于圖像的坐標為(x0,y0),且先驗邊界框(Bounding Box Prior)具有寬度pw和高度ph,那么預測出的檢測框可以表示為

式中:(bx,by)為檢測框的中心坐標;σ()表示將tx和ty歸一化為0~1;bw和bh分別為檢測框的寬度和高度。
如圖1所示,YOLOv3網絡在3個不同尺度上進行預測。預測層用于在3個不同大小的特征圖上執行預測,特征圖步幅分別是32、16、8。這意味著,當輸入圖像大小是416×416時,YOLOv3網絡在尺度13×13、26×26和52×52上執行檢測。該網絡在第一個檢測層之前對輸入圖像執行下采樣,檢測層使用步幅為32的層的特征圖執行檢測。隨后在執行因子為2的上采樣后,并與前一個層的特征圖(特征圖大小相同)拼接。另一個檢測在步幅為16的層中執行。重復同樣的上采樣步驟,最后一個檢測在步幅為8的層中執行。在每個尺度上,每個單元使用3個錨點預測3個邊界框,錨點的總數為9(不同尺度的錨點不同)。YOLOv3在多個尺度的特征圖上做檢測,對于小目標的檢測效果提升還是明顯的。

圖1 YOLOv3網絡模型Fig.1 YOLOv3 network architecture
YOLOv3-Tiny網絡是YOLOv3網絡的簡化,并且結合了FPN和FCN算法,模型結構輕量化,檢測精度有了很大提高。YOLOv3-Tiny融合了2個尺度(13×13、26×26),在2個尺度的融合特征圖上分別獨立做檢測,同時上采樣可以幫助該網絡學習細粒度特征,幫助檢測較小目標。
為了對比YOLOv3和YOLOv3-Tiny算法對小目標的檢測能力,分別利用YOLOv3和YOLOv3-Tiny對PASCAL VOC數據集中的20類目標進行檢測,并計算各類目標的檢測準確率和20類目標的平均檢測準確率(mAP),結果如表1所示。
為了比較YOLOv3和YOLOv3-Tiny算法艦船遙感數據集上的檢測準確率(AP),本文算法基于遙感數據集對其2個網絡進行訓練,數據集類別為1(艦船類)。訓練時,初始階段學習率為0.001,衰減系數為0.000 5,在訓練迭代次數為40 000次和45 000次時,分布將學習率降低為0.0001和0.000 01,使損失函數進一步收斂。大約經過45 000次迭代之后,各參數變化基本穩定。
訓練結束后,分別利用YOLOv3和YOLOv3-Tiny對遙感數據集中的艦船類目標進行檢測,并計算艦船類目標的檢測準確率,結果如表2所示。

表1 PASCAL VOC數據集算法結果對比Table 1 Com parison of PASCAL VOC dataset algorithm resu lts
由表1和表2可知,在通用數據集PASCAL VOC上,YOLOv3算法的平均檢測準確率高于YOLOv3-Tiny算法,而在遙感數據集上,YOLOv3-Tiny算法的檢測準確率卻比YOLOv3算法提高2.55%。
通常,在通用目標檢測數據集PASCAL VOC上,人、車、動物等目標會占據圖像的大部分空間,YOLOv3算法比YOLOv3-Tiny算法會取得更好的檢測結果。而在遙感圖像中,艦船通常只占據10~32像素,YOLOv3由于網絡結構復雜,網絡層次深,故YOLOv3算法對艦船的檢測精度很低。YOLOv3-Tiny網絡模型輕量化,往往在檢測一類微小目標時,其檢測能力很強。其次,YOLOv3網絡中存在著大量的下采樣層,這些下采樣層會導致對象的相對過程特征分離。假如遙感圖像中艦船類目標只有幾個像素的范圍,在YOLOv3網絡結構中該網絡縮減32倍并返回13×13的預測網格時,如果艦船類目標在遙感圖像中不足32個像素,會導致該類目標在預測網格中丟失。所以在遙感數據集針對小目標的檢測時,YOLOv3網絡的檢測準確率遠遠低于YOLOv3-Tiny網絡。

表2 艦船數據集算法對比結果Table 2 Ship dataset algorithm comparison results
基于以上YOLOv3和YOLOv3-Tiny網絡對遙感圖像艦船目標的檢測結果分析,本文基于YOLOv3-Tiny網絡設計了改進型YOLO網絡結構(Modified YOLO,M-YOLO)。M-YOLO網絡結構如圖2所示,M-YOLO網絡包括18個卷積層、6個Maxpool下采樣層、3個Route layer層、1個Upsample層、2個YOLO層。
為了提高M-YOLO網絡對艦船小目標的檢測能力,M-YOLO設置其卷積層的下采樣率為32,在416×416像素大小的輸入分辨率下,經過特征提取后,得到的2個特征圖的大小為13×13和26×26。
輸入416×416的遙感圖像后,M-YOLO網絡會得到13×13和26×26兩種不同尺度的特征圖,并且為每個特征圖的每個網格單元設置3個先驗框。每個網格單元預測先驗框的坐標值(tx,ty,tw,th),以及每個先驗框的置信度分數和N個類別預測(N為檢測目標的所屬類別),由于本文只針對艦船類檢測,因此N的取值為1。每一個網格單元的張量為3×(4+1+1)=18,由此得到總的網格單元的張量為13×13×18+26×26×18=15 210。
如圖2所示,M-YOLO網絡從第12層卷積層Conv8開始分為2條路徑,將低層的特征直接連接到高層,增加了高層特征圖的語義信息。M-YOLO網絡采用了3個Route layer層,其作用主要把對應的輸入層連接在一起,而且要求其輸入層的圖像寬度和高度必須相等;如果不相等,則把Route layer層的輸出寬度W、高度H、通道數C都設置為0。
M-YOLO采用了殘差網絡,在第2個和第3個下采樣層之后分別加入殘差學習單元,使某一層的輸出可以直接跨過幾層作為后面某一層的輸入,提高了網絡的預測性能。其次在預測目標部分,M-YOLO網絡在第11個卷積層之后使用了由3×3卷積層和1×1卷積層構成的特征映射模塊,以增加網絡上下層的語義信息和提高對艦船小目標的檢測性能。

圖2 M-YOLO網絡結構Fig.2 M-YOLO network architecture
YOLOv3-Tiny網絡采用上采樣和融合的做法,融合了尺度1(13×13)和尺度2(26×26)2個尺度的特征融合層,在2個尺度的融合特征圖上分別做獨立檢測。對于尺度2,從尺度1中之前的2層獲取特征圖,將其上采樣2倍,并與網絡中較早的相同大小的卷積特征連接,形成26×26的特征圖。這種架構雖然在預測中獲得了更細粒度的特征圖,但這種設計具有較小的感受野,缺乏豐富的語義信息。因此,M-YOLO網絡引入了特征映射模塊,如圖3所示。
M-YOLO網絡模型主要由卷積層和池化層構成,其卷積層采用了3×3卷積和1×1卷積,每個卷積層后添加批標準化層,加速了網絡的收斂。在圖3中,不同的卷積運算如1×1和3×3的卷積核可以獲得遙感圖像中不同感受域的信息,匯集這些卷積運算的結果可以獲得豐富的語義信息,非常適合多尺度特征的提取。
在特征映射模塊中,M-YOLO使用2種不同大小的卷積核1×1和3×3,從而將網絡的低級特征和高級特征連接起來。1×1卷積核只有一個參數,相當于原始特征圖的縮放,實現跨通道信息的整合和通道數量的改變。3×3卷積核在26×26特征圖上占有25%以上的比例,對其改變特征圖的大小,提取艦船特征,在為艦船小目標提供語義信息方面非常有效。圖3中,3×3卷積層之前是1×1卷積層,這減少了輸入通道和網絡參數的數量并增加了網絡的深度。
M-YOLO網絡輸入416×416的遙感圖像后,在圖3中其高級特征映射的大小為52×52×128,低級特征映射的大小為52×52×256,則連接后的特征映射的大小為52×52×384。多級特征映射提供了不同的感知域和有意義的語義信息,有利于艦船密集小目標的檢測。

圖3 特征映射模塊Fig.3 Feature mapping module
在卷積神經網絡中,增加網絡的寬度和深度可以很好地提高網絡的性能,層數深的網絡一般比層數淺的網絡效果好。但隨著網絡層數的加深,卷積神經網絡在反向傳播中容易出現梯度彌散和梯度爆炸問題,抑制了淺層網絡參數的收斂,當反向梯度消失后,整個網絡的權重參數就無法得到更新和優化,網絡模型的性能就會飽和。當網絡層數達到一定的數目以后,網絡的性能就會開始退化,但這種退化并不是由過擬合引起的,而是由網絡層數變深引起的。
為了解決網絡深度變深以后的性能退化問題,提出了殘差網絡[15](ResNet)。在整個網絡中每隔3層使用一次快捷連接(Shortcut Connection),把第1層的輸出特征加至第3層特征層中,這樣梯度在反向傳播時就不可能變為0,從而能夠有效地訓練整個神經網絡。殘差網絡的出現確實有助于解決梯度消失和梯度爆炸的問題,在訓練更深網絡的同時,又能保證良好的性能。
殘差網絡由殘差模塊構成,如圖4所示。假設在殘差學習模塊中,當輸入為x時其基礎映射記為H(x),現在希望其學習到的殘差函數為F(x)=H(x)-x,這樣輸出的學習特征為F(x)+x。當殘差為0時,此時構建模塊只做了恒等映射,網絡模型的檢測精度至少不會損失。實際上為0的殘差函數不可能存在,這會使得殘差學習單元在恒等映射的基礎上學習到新的特征信息,從而提高了網絡學習效率。
殘差網絡的公式為

式中:x和y分別為殘差模塊中的輸入和輸出;F(x,{Wi})為后期需要訓練的殘差映射函數;Wi和Ws為輸入參數。由圖4可以看到,在快捷連接中加入了特征層x,殘差模塊不僅便于實現,而且也較容易比較相同層的殘差層和基本網絡層之間的優劣。因為F(x,{Wi})和x都是同維度的矩陣,但是在矩陣線性運算時必須具有相同深度,因此需要使用線性映射來調整x的通道數。

圖4 殘差模塊Fig.4 ResNet module
本文M-YOLO網絡模型采用了基于三層殘差學習單元的網絡結構。殘差網絡在解決了阻礙更深層次網絡優化的梯度消失和梯度爆炸問題后,通過快捷連接在某一層獲得激活,然后迅速反饋給另外一層或者更深層,提高了網絡檢測性能。殘差網絡可以訓練更深層次乃至幾千層的網絡模型并取得更高的精確度,現已在檢測、分割、識別等領域被廣泛應用。
實驗從Google Earth上搜集了10 013幅可見光遙感圖像,制作了艦船目標遙感數據集,數據集中只包含艦船一種類別,數據集的格式為PASCAL VOC。為了減少訓練過程中網絡過擬合的風險,對數據集采用數據增廣方法實現樣本擴充,分別采用旋轉和翻轉 2 種方式對包含1001幅可見光遙感圖像進行6倍擴充從而得到60 078幅擴充圖像。首先對原圖像進行上下翻轉操作,同時圖像中的艦船目標框也做翻轉操作,從而得到原圖像和翻轉圖像2幅圖像;再對以上2幅圖像分別做旋轉90°和180°的操作,得到額外4幅不同的圖像。經過以上操作后,數據集得到了6倍擴充。
本文使用開源工具LabelImg對數據集中的遙感圖像進行了人工標注,圖片標注后,都會對應生成相同文件名且后綴為.xm l的文件,該文件記錄了標注框的位置和目標類別等信息。數據集中含有60 078張圖片,分辨率為768×768,如表3所示。
本文采用深度學習框架Darknet搭建實驗運行環境,并在GPU服務器GeForce GTX TITAN Xp的CUDA環境中進行GPU并行加速計算。具體配置如表4所示。

表3 艦船檢測數據集Table 3 Ship detection dataset
本文算法基于上述遙感數據集進行訓練,類別為1,訓練階段初始學習率為0.001,衰減系數為0.000 5,在訓練迭代次數為80 000次和95 000次時,分布將學習率降低為0.000 1和0.000 01,使損失函數進一步收斂。大約經過95 000次迭代之后,各參數變化基本穩定,最后的loss值下降到0.2左右,平均交并比(Avg IOU)逐漸接近1,最終穩定在0.9左右。從此參數的收斂情況分析,M-YOLO 網絡的訓練結果比較理想。M-YOLO網絡訓練過程中檢測準確率和召回率的曲線如圖5所示。
圖5為本文算法在訓練過程中的接受者操作特性(ROC)曲線,其中AP為ROC曲線下的面積,本文中類別為1。

表4 實驗環境Table 4 Lab environment

圖5 ROC曲線Fig.5 ROC curve
在M-YOLO網絡模型成功訓練后,即可得到最終艦船檢測模型,將待測試艦船圖片輸入MYOLO模型,即可完成檢測,測試結果如圖6所示。由圖中可以看出,所有的艦船目標都能夠被完整檢測出來,目標包圍框能夠準確框出艦船目標。
實驗采用檢測準確率作為艦船檢測的結果評價指標。檢測準確率的定義為對每張圖片上的檢測準確率Precisionc求和后除以包含該類別的總圖片數Nc:

數據集中艦船目標的檢測準確率Precisionc等于在一張圖片上網絡模型正確檢測出的樣本數N(True)c與總樣本數(包括正確檢測出的樣本數N(True)c和錯誤檢測出的樣本數N(False)c)之比:

為了驗證M-YOLO算法的檢測性能,本文將實驗結果與SSD、YOLOv3、YOLOv3-Tiny等目標檢測算法進行對比,實驗結果如表5所示。
表5給出了本文算法與其他目標檢測算法在艦船數據集上的測試性能對比,本文算法的檢測準確率為94.12%,分別比SSD、YOLOv3提高了11.11%、9.44%,得益于M-YOLO網絡具有提取深層特征的能力。檢測速度分別提高了13.1、10.7幀/s。與YOLOv3-Tiny算法相比,其檢測準確率也提高了6.89%,主要原因是本文算法采用了特征映射模塊和殘差網絡模塊,可以獲得豐富的語義信息。對比以上算法,M-YOLO網絡能夠保持較高分辨率,具有開闊的感受野,提高了對艦船小目標的檢測能力。本文算法的檢測速度達到54.1幀/s,較YOLOv3-Tiny算法降低了1.5幀/s,主要由于本文算法采用了殘差網絡,加深了特征提取網絡的深度,從而降低了檢測速度。雖然M-YOLO網絡的檢測速度有所下降,但檢測準確率得到了提高,且滿足高于25幀/s的實時檢測要求。

圖6 艦船檢測結果Fig.6 Ship detection results

表5 實驗對比結果Table 5 Experimental comparison results
本文將M-YOLO網絡模型應用到遙感技術中的艦船檢測領域,實現了對遙感圖像中艦船目標的有效檢測。針對艦船密集小目標難檢測的問題,本文在YOLOv3-Tiny網絡模型的基礎上,增加了特征映射模塊對特征提取網絡進行優化,同時采用殘差網絡提高了對艦船的檢測性能。本文算法在自制的艦船數據集上進行訓練及對比測試,實驗表明:本文算法較大地改善了艦船小目標的檢測效果,相比于SSD、YOLOv3等目標檢測算法,本文算法的檢測準確率提高了11.11%、9.44%,檢測速度提高了13.1、10.7幀/s。但本文算法在模糊的小目標艦船方面仍有不足,這也是后續的研究方向。