熊詠平,丁 勝,鄧春華,方國康,龔 銳
(1.武漢科技大學 計算機科學與技術學院,武漢 430065; 2.智能信息處理與實時工業(yè)系統(tǒng)湖北省重點實驗室,武漢 430065)(*通信作者電子郵箱dchzx@wust.edu.cn)
遙感圖像中的艦船檢測問題一直是圖像處理和模式識別領域的熱門課題,在軍用和民用領域都有廣闊的應用前景。由于光學遙感圖像容易受光照和云霧等影響,目前基于遙感圖像的艦船檢測主要圍繞著合成孔徑雷達(Synthetic Aperture Radar, SAR)[1]展開。然而,光學圖像的細節(jié)特征豐富,隨著光學遙感衛(wèi)星的分辨率不斷提高,在海域艦船小目標檢測、識別方面具有SAR圖像不能比擬的優(yōu)勢,同時可以作為SAR圖像目標檢測的重要補充。
海洋經(jīng)濟[2]是21世紀人類發(fā)展的主要支撐點之一,由于海洋上作業(yè)的風險巨大,為了保證船只作業(yè)安全,利用衛(wèi)星成像技術和人工智能技術對海上目標進行快速有效的識別,是人類有效利用海洋資源的一項基本能力,因此,開展海上船只目標自動檢測的研究具有重要意義。
傳統(tǒng)的目標檢測方法借助機器學習基本理論,首先通過對目標特征,如梯度方向直方圖(Histogram of Oriented Gradients, HOG)[3]、尺度不變特征轉換(Scale Invariant Feature Transform, SIFT)[4]特征等進行提取,并將提取到的特征輸入到如支持向量機(Support Vector Machine, SVM)[5]、迭代器(AdaBoost)[6]等分類器進行分類識別。這些提取的圖像特征本質上是一種手工設計的特征,針對不同的圖像檢測問題,提取到的特征好壞對檢測性能有著直接的影響,因此,需要研究人員針對所要解決的問題領域設計出適應性更好的特征;但由于針對某個特定的識別任務,泛化能力較差,難以在實際應用問題中設計出具有通用性和魯棒性的特征。此外,傳統(tǒng)機器學習方法從提取圖像底層特征到提取表觀特征流程相對復雜,并且嚴重依賴于人工的特征設計,因此,基于傳統(tǒng)的機器學習方法的目標檢測遇到瓶頸,期待更有效的方法提取圖像特征。
近年來深度學習在圖像識別領域取得了很好的效果[7],與傳統(tǒng)的機器學習相比,深度學習方法通過多層網(wǎng)絡直接對圖像卷積和池化操作來提取圖像本質特征,在圖像識別領域優(yōu)勢明顯,并取得了突破性進展;深度學習的發(fā)展,特別是卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network, CNN)[8]的出現(xiàn),為圖像特征提取帶來全新的解決方法。CNN是局部連接網(wǎng)絡,在CNN中,圖像中小塊區(qū)域作為底層輸入數(shù)據(jù),信息通過前向傳播經(jīng)過網(wǎng)絡中各個層,在每一層中都由過濾器構成,以便能獲得觀測數(shù)據(jù)的一些顯著特征,其層次間的緊密聯(lián)系和空間信息使其特別適用于圖像處理和理解,并能自動從圖像中抽取出豐富的相關特性,因此通過CNN能更好地提取圖像特征。
2014 年,Girshick等[9]在CVPR(IEEE conference on Computer Vision and Pattern Recognition)大會上提出了R-CNN(Region with CNN feature)網(wǎng)絡,該網(wǎng)絡在全連接層前加了一個空間金字塔(spatial pyramid pooling)[10]層,使得該網(wǎng)絡在全連接層輸入不需要歸一化圖像尺寸,從而使得提取的特征有更好的尺度不變性,降低了過擬合的可能,在 VOC(Visual Object Classes) 2012 數(shù)據(jù)集上,將目標檢測的平均準確率(mean Average Precision, mAP)提升到53.3%。2015 年Girshick[11]和Ren等[12]又相繼提出了 Fast R-CNN和 Faster R-CNN, 提高了準確率和檢測速度; 2016 年Redmon等[13]提出的YOLO (You Only Look Once) v1以 45 FPS(Frames Per Second)真正達到了可以檢測視頻的速度,這為快速檢測視頻運動目標指明了方向; Liu等[14]提出了SSD(Single Shot multibox Detector)物體檢測模型,在實時性和準確率都高于YOLO v1,在VOC數(shù)據(jù)集測試,mAP達到了74.3%,速度達到了46 FPS;隨后,Redmon等[15]又提出了YOLO v1升級版YOLO v2,在VOC數(shù)據(jù)集上測試,將mAP提升至78.6%,并且大幅提高了檢測速度,達到了67 FPS的實時檢測的效果;同年,基于區(qū)域的CNN目標檢測[16]和基于耦合CNN的弱監(jiān)督學習[17]也被提出來,使得標記成本大幅降低,近幾年目標檢測方法在速度和準確率不斷取得新的突破。本文在深度學習模型YOLO v2基礎上,設計了自動判別惡劣天氣模糊和良好天氣清晰圖像的算法,提出了適合小目標檢測的多尺度算法,并針對遙感圖像中的艦船特點改進YOLO網(wǎng)絡中的非極大值抑制方法,結合顯著性和自適應分割算法進一步提高檢測精度。實驗表明,設計的海上艦船檢測模型能夠克服YOLO算法小目標識別效果差的缺點,有效對復雜海情環(huán)境下的不同類別和尺度的艦船進行檢測和識別。
本文采用YOLO v2為基礎的目標檢測模型,首先,通過卷積和池化自動提取目標的本質特征,在此基礎上,本文對YOLO v2模型結構進行了改進,通過增加多尺度檢測、改進非極大值抑制和顯著性檢測的圖像分割等步驟,提高目標檢測的精度,特別是小目標檢測能力。本文海上船只目標檢測模型的框架,由兩個階段組成,首先用YOLO v2模型自動提取海上船只的本質特征,然后利用這些特征進行目標檢測。海上船只目標檢測的框架如圖1所示。
圖1 海上船只目標檢測框架Fig. 1 Marine ship target detection framework
使用batch normalization穩(wěn)定模型的訓練,最終得到了基礎模型Darknet-19,本文是將Darknet19-448的模型作為初始模型進行訓練的。檢測過程和YOLO類似,按照如下操作訓練:
1)將待檢測圖像縮放成416×416的大小,并將圖像分割成13×13的網(wǎng)格;
2)利用CNN進行特征提取,然后全連接部分則用來負責預測;
3)利用非極大值抑制(Non-Maximum Suppression, NMS)過濾多余的邊框bounding box,保留置信度最高的邊框。
其實現(xiàn)的基本原理是:一幅圖像被分割成13×13的網(wǎng)格,某個物體的中心如果落在此網(wǎng)格中那么此網(wǎng)格就負責預測該物體。最終輸出為一個13×13×n的張量,每一個1×1×n的維度就對應原圖13×13個網(wǎng)格中的一個,1×1×n中包含了類別預測和bounding box坐標預測。
實驗采用的數(shù)據(jù)是2017年中國計算機學會大數(shù)據(jù)與計算智能大賽主辦方方一信息科技公司提供的海上船只圖像,分辨率為1 024×1 024,圖像分為清晰和非清晰兩種場景,共有3類船只,分別是貨船、游艇、游輪,比賽數(shù)據(jù)庫一共有17 085張圖片,其中13 668張作為訓練樣本,3 417張作為測試樣本,其圖片主要場景為云、雨、霧和干擾島嶼等,如圖2所示。
為了保證訓練模型魯棒性,在訓練之前首先需要將圖像篩選為清晰和不清晰兩個類別,然后對不清晰圖像采用去霧算法得到清晰圖像??紤]到訓練圖像數(shù)量大,人工篩選清晰和非清晰圖像工作量巨大,本文設計了一個新的分類算法自動區(qū)分清晰和非清晰兩個類別的圖像,對于清晰圖像直接進行訓練, 而對于不清晰圖像采用去霧算法后進行訓練。本文結合暗通道先驗去霧算法[18]的基本物理特征和亮度值差異以及由此產(chǎn)生的顯著性特征,對清晰和非清晰圖像進行分類,整個圖像自動篩選算法流程如圖3所示?;具^程如下:
1) 從圖像顯著性角度分析,非清晰圖像背景和目標差別不明顯,表現(xiàn)出來的亮度變化不敏感,因此圖像的顯著性差異較小。從信息論角度分析,信息可分為冗余部分和變化部分,人們的視覺對變化部分更敏感,因此本文采用基于譜殘差模型的顯著性區(qū)域檢測算法[19],由于該算法針對不同顏色和模式的區(qū)域對應顯著性值更高,而均勻或模糊區(qū)域的顯著性值更低,因此可以從該圖像的譜殘差模型顯著性特征出發(fā),首先將圖像分塊(本文為16),然后計算每塊的殘差值作為顯著性特征,并將殘差值作為顯著性特征組合疊加,以對清晰和非清晰圖像進行劃分。
圖2 遙感場景圖Fig. 2 Remote sensing scene images
2)對于非清晰圖像,亮度值較高,像素區(qū)域中亮度值相差不大,因此,整體上圖像相關性較高;而清晰圖像,像素區(qū)域亮度值差異更大,其相關性較低。因此,可以將相關系數(shù)的值作為分類器區(qū)分兩類圖像的一個特征,其過程是將圖像分為若干塊(本文為16),對這些塊求其協(xié)方差矩陣,計算各塊之間的相關性特征,然后取相關性最小值作為圖像的相關系數(shù),作為相關性特征。
3)根據(jù)暗通道先驗理論:非清晰圖像亮度值普遍較高;而清晰圖像某一些像素區(qū)域總會有至少一個顏色通道具有很低的值,即存在某些區(qū)域,該區(qū)域的亮度值很小,接近于0。因此通過計算估計的圖像的透射率,作為分類器區(qū)分兩類圖像的一個特征,其公式為:
(1)
4)對于非清晰圖像,其亮度值較高,而清晰圖像亮度值較低,故可以將圖像的亮度值作為篩選的特征。采用RGB圖像對應的YCbCr色彩空間,其中Y為顏色的亮度成分,而Cb和Cr則是藍色和紅色的濃度偏移量成分。將Y計算分離出來,由于非清晰的圖像亮度值較大,反映到數(shù)據(jù)上就是Y值偏大,而清晰圖片由于背景是海,所以其亮度值較小,直觀感受就是圖片偏暗,反映到數(shù)據(jù)上就是Y值偏小。因此,可以把圖像在色彩空間YCbCr中的Y提取出來作為分類的特征。
圖3 圖像自動篩選算法流程Fig. 3 Flow of automatic image filtering algorithm
YOLO v2在檢測目標時將原始圖像先劃分為13×13的網(wǎng)格,能實現(xiàn)大尺寸的目標檢測,但是每個網(wǎng)格有目標的兩個候選框,但在本實驗中即使是劃分了13×13網(wǎng)格也不能保證檢測完全,因為實驗中有很多極小的船只,而原圖分辨率為1 024×1 024,劃分為網(wǎng)格后這些小船只依然很小,容易漏檢。本文采用多尺度對不同尺大小的船只目標檢測,其基本思想是:首先分別通過不同尺度大小的窗口在遙感圖像滑動假設圖像大小為H×W,尺度大小為S×S,則令窗口步長為2S/3,記作stride。當窗口滑出圖像之外時將窗口的外邊界與圖像的外邊界重合,以防止圖像信息的漏檢或冗余檢測,如圖4所示。
圖4 窗口滑動示意圖Fig. 4 Schematic diagram of window sliding
此時窗口數(shù)目計算如下:
(2)
(3)
其中:row為窗口垂直滑動的個數(shù),col為窗口水平滑動的個數(shù)。最終得到的總窗口數(shù)為row×col。
將不同的尺度的所有候選框匯總,按照IOU將概率低的候選框去掉,保留概率最高的候選框。多個尺度的檢測信息共享一個坐標系,最后會去掉大量的無效框,保證檢測結果的準確性。具體算法如下:
輸入 圖片大小H×W,尺度大小S×S,步長stride;
輸出 滑窗后所有候選框集合。
1)
初始化dis_ver=0,dis_hor=0,flag_ver=0,flag_hor=0
2)
WHILE 窗口垂直滑動距離dis_ver 3) dis_hor=0,flag_hor=0 4) WHILE 窗口水平滑動距離dis_hor 5) 將窗口得到的候選框保存 6) IFflag_hor=1 DO 7) BREAK 8) dis_hor=dis_hor+stride 9) IFdis_hor+S≥WDO 10) 將窗口滑動到W-S,dis_hor=W-S 11) flag_hor=1 12) IFflag_ver=1 DO 13) BREAK 14) dis_hor=dis_hor+stride 15) IFdis_ver+S>WDO 16) 將窗口滑動到W-S,dis_ver=W-S 17) flag_ver=1 18) return 候選框集合 在YOLO v2中默認存在多物體交疊的現(xiàn)象,傳統(tǒng)的非極大值抑制(NMS)是針對一個類別,因此NMS會對屬于同一類的目標進行抑制,而屬于不同類的目標則不抑制;而本文研究對象是遙感影像中海上船只識別,船只分布較為稀疏,不存在多條船只交疊現(xiàn)象,一個檢測得到的邊框值只對應一個類別,這樣就不會出現(xiàn)同一個框檢測對應兩個不同類別的物體而造成的誤檢。因此,實驗可以對所有檢測到的不同類別的船只一并進行NMS,而無需對每個類別分別進行非極大值抑制,進一步提高海上船只目標檢測的精度。 在對圖像目標檢測后仍然會有小的誤差,如圖5所示,該圖是從1 024×1 024圖像上截取的部分區(qū)域。可以看出檢測結果和真實標記位置還有一定的誤差,反映到數(shù)據(jù)上就是檢測區(qū)域和真實區(qū)域重疊率不高,即IOU偏小。為了使目標檢測區(qū)域更精準,考慮到目標區(qū)域和其周邊區(qū)域存在的差異程度較大,表現(xiàn)出目標顯著性特征明顯,因此,本文引入圖像顯著性區(qū)域檢測方法。顧及到圖像目標的空間信息,本文采用基于上下文感知顯著性檢測算法[20]將已檢測到的目標區(qū)域提取對應顯著性特征圖,在此基礎上采用自適應閾值的圖像分割方法,可以將目標定位得更精準,進一步提高準確率。 圖5 圖像初步檢測結果Fig. 5 Preliminary image detection results 本文圖像分割分4步處理: 1)采用視覺顯著性算法對目標圖像處理,計算顯著性特征,提取目標區(qū)域,得到顯著圖; 2)使用拉普拉斯算子對顯著圖像進行銳化,并對圖像進行閉運算,更有利于前景和背景分離,使輪廓更清晰; 3)采用OTSU自適應閾值分割算法[21],并將所得圖像二值化; 4)計算輪廓的邊界,通過對像素值的遍歷來找到能完全包含目標的最小矩形,得出的最小矩形即為檢測圖像修正后的輪廓。 如圖6所示:圖6(a)為目標檢測得到的示意圖,可以看到邊界框過大;為了提高檢測精度,需要進一步縮小邊界框范圍,圖6(b)是經(jīng)過顯著性算法處理后得到的結果,可以看出貨船的大致輪廓可以得到,但是邊界變得模糊不清;這個對后續(xù)計算會造成一定的誤差,因此在顯著性算法處理的結果上進行拉普拉斯算子銳化處理,然后對圖像進行閉運算,得到二值圖像;最后通過遍歷圖像素得到輪廓的邊界,最終效果如圖6(d)所示,邊界框為最終目標框。 圖6 圖像顯著性處理效果對比Fig. 6 Effect of image saliency processing 本實驗采用的是64位Ubuntu操作系統(tǒng),硬件配置為 Intel Xeon E5-2620 v2 處理器,GPU型號為NVIDIA GeForce GTX 960,顯存為6 GB,在darknet平臺上使用YOLO v2進行訓練,訓練樣本13 668張,測試樣本3 417張。 實驗首先在訓練樣本中采用自動篩選算法,得到9 513張清晰圖像和4 155張非清晰圖像,對非清晰圖像,采用暗通道去霧算法得到清晰圖像,然后對所有圖片進行訓練,由于訓練的圖片中含有各種氣象和環(huán)境場景的圖片,根據(jù)CNN的特性,光照、海面環(huán)境等重要影響因素會被模型自動學習,另外,由于本文訓練過程中包含了批量歸一化(Batch Normalization)操作,因此能大幅提高模型的泛化能力,從而有效克服不同光照強度等影響。當?shù)螖?shù)為8 500時,模型的平均損失值loss基本穩(wěn)定在0.2附近,圖7顯示的是訓練過程中迭代6 000~8 500次的平均損失曲線圖,實驗發(fā)現(xiàn),訓練迭代8 500次后隨著迭代次數(shù)增加,平均損失函數(shù)值基本不變,表明訓練過程收斂。 召回率-準確率曲線衡量一個分類器的性能指標,以貨船為例,測試集圖像總共有貨船K個,而訓練好的模型檢測到的貨船目標數(shù)為N個,其中確實為貨船的有M個,則召回率和準確率定義如下: 召回率:recall=M/K 準確率:precision=M/N 圖8~10是普通非極大值和改進的非極大值抑制情況下召回率與準確率的關系曲線的對比,其中AP(Average Precision)表示目標檢測的平均準確率。 圖7 訓練6 000~8 500次平均損失曲線Fig. 7 Average loss curve for training from 6 000 to 8 500 times 圖8 貨船召回率-準確率曲線對比Fig. 8 Comparison of recall-precision curve of cargo ship 實驗設定IOU為0.7,采用4個尺度檢測船只,分別是300、500、700和1 024。通過圖8~10比較可以看出,隨著尺度的增加,船只檢測上準確率和召回率所圍成的面積是依次提高,反映到數(shù)據(jù)上為AP逐漸提高,當采用3個尺度(500、700和1 024)檢測時,游輪和貨船的檢測效果會逐步提升,這表明在一定范圍內,隨著尺度的縮小,目標檢測的精度會進一步提高,但并不是越多越好,對300尺度來說,游艇這樣的小目標檢測,有更好的效果。對貨船和游輪而言,由于目標本身比較大,因此尺度設置小對檢測效果的提升沒那么顯著,但對游艇而言,由于其尺寸相對較小,因此增加300這樣的小尺度,能檢測到目標較小的游艇,因而游艇檢測效果提升幅度相對更高。 從YOLO v2結構上分析,原因是游艇的尺寸較小,而YOLO對大目標的檢測更為精確,因此大目標會將與之重疊率較高但置信度不高的小游艇抑制掉,這些被抑制掉的游艇大都不是游艇,反映到數(shù)據(jù)上就是準確率提高了。貨船、游輪和游艇這三類目標在不同尺度下檢測的mAP如圖11所示,可以看到,隨著尺度增加,總的平均精度mAP隨著尺度增加均有不同程度的增長,同時表明,改進的非極大值抑制后mAP相對于原始非極大值抑制精度也有提高。 圖9 游輪召回率-準確率曲線對比Fig. 9 Comparision of recall-precision curve of cruise ship 圖10 游艇召回率-準確率曲線對比Fig. 10 Comparision of recall-precision curve of yacht 圖11 綜合評價曲線mAPFig. 11 Comprehensive evaluation curve of mAP 圖12為3種算法的檢測效果對比圖,圖12(b)與圖12(a)相比,雖然多尺度檢測會導致重框,但是相比之前的單一尺度檢測,增加了多尺度檢測后其框的準確性提高了,圖12(a)中的框只框中了一部分,漏掉了圖像頂部的小目標,但是在圖12(b)中框被拉長,從而將整只貨船框中,此外圖12(b)比圖12(a)多檢測出了一只游艇,圖12(c)則消除了多余的重框,并且保證概率大的,即框選更準確的框得以保留下來。 圖12 不同算法檢測效果對比Fig. 12 Comparison of detection results by different algorithms 如圖13所示為經(jīng)過顯著性圖像分割后得到的結果對比。 圖13 圖像分割前后邊界對比Fig. 13 Boundary comparison before and after image segmentation 由圖13可以看出,經(jīng)過顯著性檢測結合圖像分割后,其框的準確性得到了明顯提高。 為了說明本文方法的有效性,實驗還與其他一些常用的深度學習檢測算法對比,在本實驗條件下,約定IOU>0.7為目標檢測正確,結果如表1所示,采用基于深度學習的目標檢測算法Fast R-CNN、Faster R-CNN、YOLO v1和YOLO v2作實驗對比,mAP和FPS作為性能指標比較參數(shù)。 表1 不同檢測算法對比Tab. 1 Comparison of different detection algorithms 以上實驗中YOLO采用的初始模型均為darknet19模型,F(xiàn)aster R-CNN初始模型為ResNet50。從表1可以看出,用去模糊算法處理圖片后進行訓練對YOLO和Faster R-CNN的模型精度均有較大提高,而顯著性對YOLO算法效果提升相比Faster R-CNN更為明顯,分析原因為Faster R-CNN對目標檢測已經(jīng)較為精準了,再進行修正其結果提升空間不大,而YOLO v2目標框沒有Faster R-CNN那么精細,因此通過顯著性修正的提升空間更大。最重要的方法是多尺度檢測,通過多尺度滑窗可以大幅提高YOLO v2算法檢測精度,分析原因為YOLO v2算法最大的缺陷在于小目標檢測效果較差,而采用多尺度滑窗檢測則正好彌補了這個缺陷??傊m然改進的檢測算法速度有所減緩,但是檢測精度大幅提高,簡而言之,本算法通過犧牲了小部分的速度來大幅提高檢測的精度,比原始的YOLO v2檢測算法能夠更加有效地對復雜海情環(huán)境下的不同類別的船艦進行識別。 本文以YOLO v2網(wǎng)絡為基礎,建立針對復雜海情和氣象條件下對船只檢測的端到端的快速檢測網(wǎng)絡,為了提高船只特別是小船只的檢測精度,本文通過改進的非極大值抑制、多尺度檢測和圖像分割等方法來改進檢測效果。實驗結果表明,在復雜海情船只檢測中將mAP從72.7%提高到84.5%,說明了本文提出的目標檢測方法有效性;但是由于遙感影像中背景復雜,類別之間差異不明顯,仍然存在部分誤檢現(xiàn)象,今后可在檢測網(wǎng)絡的基礎上建立識別網(wǎng)絡,對誤檢船只進行二次判斷,進一步提高目標檢測精度;另外,隨著YOLO版本升級,將繼續(xù)深入研究YOLO v3[22]對海上船只檢測。2.3 改進的非極大值抑制算法
2.4 結合顯著性檢測的圖像分割方法
3 實驗結果分析
3.1 數(shù)據(jù)訓練
3.2 實驗結果分析
3.3 效果對比
3.4 不同方法對比實驗
4 結語