黃致君,桑慶兵
江南大學 物聯網工程學院,江蘇 無錫214122
船舶對于海上交通運輸起著重要作用,有效地監(jiān)測海上的船舶情況,可以幫助監(jiān)測人員及時進行預警、援救等工作,這對于海洋經濟[1]的發(fā)展有著深遠影響。目前國內外在船舶識別方向的研究主要是圍繞合成孔徑雷達(synthetic aperture radar,SAR)[2]開展研究,其原因在于云霧與光照等自然環(huán)境的因素容易影響到光學遙感圖像。然而,與SAR 圖像相比,光學圖像分辨率更高,具有更強的目視判讀能力,更易于解譯等特點。隨著遙感衛(wèi)星技術的不斷加強,其分辨率也會更高,細節(jié)部分特征抓取更豐富,因此光學圖像下的船舶檢測可以作為基于SAR 圖像研究下的重要補充。
早期主流的船舶識別都是基于SAR 圖像,并且使用的方法多以傳統方法為主,以機器學習的基本理論開展的傳統的目標檢測方法有很多,能夠概括為兩部分:一是提取船舶目標候選區(qū)域;二是鑒別船舶候選區(qū)域。提取候選區(qū)域方面:Yang 等[3]學者提出的方法能夠快速提取船舶目標候選區(qū)域,即灰度直方圖統計。由于船舶的邊緣信息等特性在光學圖像中更顯著,Zhu 等[4]在此特性的基礎上,再根據形狀分析提取特征。鑒別候選區(qū)域方面:張雷等[5]采取的是多向量綜合的方式,Wang 等[6]針對不同種類的軍艦則采用了貝葉斯網絡來做分類的工作。此外,支持向量機(support vector machine,SVM)[7]、迭代器(AdaBoost)[8]等方法[9-15]是分類鑒別過程中采取的主要的傳統方法。然而船舶的目標檢測和其他應用場景面臨著同樣的問題,即傳統的目標識別方法泛化能力差,在處理特定的識別任務時,無法適應通用性及魯棒性等特征。因此在解決實際問題時,過分依賴人工對特征進行設計,那么傳統機器學習的方法在目標檢測方面便遇到瓶頸,同時深度學習也在快速發(fā)展中,特別是在圖像領域不斷取得好的效果,更多的研究人員開始采取深度學習的方法進行圖像處理與目標檢測的工作。
在目標檢測方面,2014 年,Girshick 等人在CVPR(computer vision and pattern recognition)大會上第一次提出R-CNN(region-convolutional neural networks)[16]網絡,該網絡將一個空間金字塔添加在全連接層之前,由于不需要將歸一化的圖像尺寸輸入到全連接層,因此更好的尺度不變性則起到了降低過擬合的作用,而在VOC 2012 數據集的表現上,平均準確率(map)則提升到了53.3%。之后Fast R-CNN[17]和Faster R-CNN[18]在2015 年被相繼提出,檢測速度與準確率都有了提高。2016 年,YOLO v1[19]與YOLO v2[20]被Redmon 等人相繼提出,相比于YOLO v1,YOLO v2 將map 值提升到了78.6%,實時檢測速率也達到了67 frame/s 的效果。之后基于區(qū)域卷積神經網絡[21]以及區(qū)域全卷積神經網絡(regional fully convolutional networks,R-FCN)[22-23]的提出,大幅降低了目標標記的成本。根據目標識別的相關流程,結合船舶識別過程中的特性,圖1 為遙感圖像下的基于深度學習的目標檢測系統流程,其中Liu 等[24]在CNN(convolutional neural networks)基礎上改進的RR-CNN 能夠準確提取候選區(qū)域特征,Zou 等[25]提出的SVD 網絡是根據卷積神經網絡與奇異值分解提出的,Zhang 等提出的S-CNN[26](ship model CNN)模型能夠解決當面臨船舶目標多類別、多尺度的情況下,檢測情況差的問題。經實驗證實,在多復雜背景的場景下以及多方式的船舶??康惹闆r下,具備高魯棒性。
Fig.1 Ship detection flow chart based on deep learning圖1 基于深度學習的船舶識別流程圖
本文主要根據區(qū)域全卷積網絡(R-FCN)開展研究并根據船舶識別的特性進行模型的改進。實驗表明,本文設計的針對光學圖像的船舶識別模型在識別精度上的表現要優(yōu)于目前主流的目標檢測算法,如Faster R-CNN、YOLO V3、R-FCN 等。
區(qū)域全卷積網絡R-FCN 的網絡結構設計適用于通用的目標檢測數據集PASCAL VOC[27],該數據集中的檢測目標加上背景一共有21 類。R-FCN 的特征提取網絡所提取的Feature Map 個數是由R-FCN 中的位置敏感區(qū)域池化層PSRoIPooling(position-sensitive region of interest pooling layer)所決定的,PSRoIPooling會根據檢測的類別個數來決定特征提取網絡提取的Feature Map 個數,檢測類別越多,網絡提取的Feature Map 個數也越多。而本文的船舶目標加上背景只有4 類,遠小于PASCAL VOC 中的類別數,繼續(xù)用原始的R-FCN 會導致網絡的畸形。因此,如何對原始的R-FCN 進行改進并在船舶識別上獲得較好的效果是本文的目標所在。
圖2 為改進后的R-FCN 算法模型示意圖,主要分為兩部分:(1)特征提取網絡;(2)改進的區(qū)域全卷積網絡。在特征提取階段,使用現有的全卷積神經網絡自動提取原始圖像的高維空間特征信息;接著使用改進后的R-FCN 在特征提取網絡得到的Feature Map 上回歸出船舶在原始圖像中的位置并進行船舶分類,將Feature Map 與ROIs(regions of interest)位置結合能夠提高特征提取效率,如果和原圖再結合就會增加計算量,提取不必要的特征。
由于船舶識別類別個數遠小于PASCAL VOC 數據集的檢測類別個數,會造成特征提取網絡提取的Feature Map 個數也會遠小于在PASCAL VOC 數據集上進行檢測的R-FCN,從而使整個網絡架構處于畸形狀態(tài)。針對這一問題,本文改進位置敏感區(qū)域池化層,將其在船舶識別上提取的特征Feature Map個數和PASCAL VOC 數據集檢測上提取的Feature Map 個數保持一致,使得改進后的R-FCN 在船舶檢測上的性能能夠完全發(fā)揮。
在特征提取階段,本文選取在ImageNet 數據集上已經預訓練過的ResNet50[28]自動進行提取船舶圖像特征,圖像通道數定為3,圖像尺寸為600 像素×1 000 像素。將該網絡最后一層的卷積層得到的特征圖高寬為35×63(約為原圖的1/16)自動提供給網絡的第二部分,用來回歸出船舶的位置并進行分類。
Fig.2 Improved R-FCN schematic diagram圖2 改進的區(qū)域全卷積網絡示意圖
由于原始R-FCN 中的位置敏感區(qū)域池化層的特殊性,原始R-FCN 生成的Feature Map 的通道數根據檢測類別數來確定,在PASCAL VOC 數據集中,20 是其目標檢測數,因此在原始R-FCN 中的c+1=21,若用R-FCN 對船舶進行檢測,則c+1=4 會造成特征Feature Map 的通道數變?yōu)樵瓉淼?/5,整個網絡架構相對于原始的R-FCN 將會變得非?;?。本文嘗試將c減小,發(fā)現模型失調,并且不能提取足夠的特征用以識別船舶,無法用于船舶識別。
因此本文對位置敏感區(qū)域池化層進行了更適合船舶檢測的優(yōu)化改進,如圖3 所示,通過RPN(region proposal network)能夠得到ROIs 的位置。此步驟完成后,將Feature Map 與該位置結合,對位置敏感區(qū)域池化層進行改進,同時生成位置敏感分數圖(positionsensitive score maps),通道數為k2(c+1),且c=20,與原始R-FCN 的c數量保持一致。再對位置敏感分數圖做全局最大值池化(Maxpooling),得到長度為k2(c+1)的Feature Vector。最后對Feature Vector 做全連接操作后放入SoftMax 中進行分類。在這一基礎上,又將原本的ROIPooling 層改為了ROIAlign,該方法取消量化操作,使用雙線性內插的方法獲得坐標為浮點數的像素點上的圖像數值,從而將整個特征聚集過程轉化為一個連續(xù)的操作。
改進后的位置敏感區(qū)域池化層具體操作是:對于1 個大小為w×h的ROI,將該ROI 分割成k2個寬高分別為w/k、h/k的矩形方塊,并使用(i,j)來表示ROI 和位置敏感分數圖的每個分塊的位置,且(i,j)取值范圍(0 ≤i≤k-1,0 ≤j≤k-1)。具體操作如式(1):
式中,rc(i,j|θ)為位置敏感分數圖第c個通道中k2個分塊中的第(i,j)個分塊,Zi,j,c為Feature Map 中第c通道的Map,且c的取值范圍為0 ≤c≤k2(c+1)。bin(i,j)代表ROI 中k2個分塊中第(i,j)個分塊對應在Feature Map 中位置集合,(x0,y0) 表示ROI 的左上角坐標,(x,y)表示ROI 中以(x0,y0)為原點時每個元素的坐標值,且(x,y)的取值范圍為i×w/h≤x≤(i+1)×w/h,n表示第(i,j)個塊里的像素總數,且θ表示網絡的參數。
接著對通道數為k2(c+1)的位置敏感分數圖做最大值池化操作,如式(2)所示:
式(2)中的Vc(θ)表示Feature Vector。Max 表示每個位置敏感分數圖中的最大值。然后對向量做Fully Connect,如式(3)所示:
最后對特征向量做Softmax 分類操作,如式(4)所示:
在網絡訓練階段,采用梯度下降的訓練方法,總的損失函數為每個ROI 的交叉熵損失以及邊界框回歸損失之和,如式(5)所示:
Fig.3 Improved position-sensitive ROI pooling layer圖3 改進的位置敏感興趣區(qū)域池化層
上述公式中λ=1,c*表示ROI的類標(c*=0 時,表示這個ROI是背景類),Lreg中的表示真實的回歸框的參數,由RPN 得到的回歸框的參數用t=(tx,ty,tw,th)表示,并且t*和t與faster R-CNN 中的邊界回歸框的參數相同。損失函數R為SmoothL1(x)如式(6)所示:
相比于L1與L2,SmoothL1在趨近于0時表現得更平滑,能夠使得模型更加穩(wěn)定。簡而言之,SmoothL1“光滑”后的L1保留了L1Loss 中梯度穩(wěn)定的特點,同時吸取了L1Loss 中中心點不可求導的缺陷,引入了L2Loss 中的中心點附近的部分作為分段函數,并克服了L2Loss 在數據較大時梯度很大的缺陷,使Loss函數更具魯棒性。對比圖如圖4 所示。
Fig.4 Comparison of 3 loss functions圖4 3 種損失函數對比
原版的R-FCN 使用的是ROIPooling,類比于ROIPooling,ROIAlign 的反向傳播則進行了修改:在ROIAlign 中,由前向傳播計算后,xi*(r,j)表示的是浮點數的坐標位置(采樣點),在池化前的特征圖中,每一個與xi*(r,j)橫縱坐標均小于1 的點都應該接受與此對應的點yij回傳的梯度,故ROIAlign 的反向傳播如式(7)所示:
在傳統的以Faster-RCNN 檢測框架為基礎的網絡結構中,由于步長(Stride)的存在,故使得每次縮放之后的邊長均有可能出現小數,若此時使用量化操作,在映射回原圖像時,特征圖上很小的誤差經過步長放大之后會使得誤差變大,導致與原圖不匹配的情況,故本文使用了雙線性內插的方式代替了原有的量化操作,即不對浮點數進行邊界量化操作,而是直接使用雙線性內插對候選區(qū)域進行插值計算,用以減小縮放導致的誤差。
本實驗選擇的數據集是2017 年CCF 大數據與計算智能大賽(big data & computing intelligence,BDCI)主辦方方一信息科技公司提供的海上船舶圖像。分辨率為1 024×1 024,場景分為兩類,清晰和非清晰,船舶共有3 類,游輪、游艇以及貨船。筆者經過篩選,提取了其中有標簽并可以用于訓練與測試的圖片共5 560 張,4 448 張作為訓練樣本,1 112 張作為測試樣本。圖5 顯示的是該數據集部分用于測試的原圖,可以看到背景復雜,存在云、霧等元素。
本文實驗是在Windows 10 系統下,使用Visual Studio 2013進行的,采用Anaconda+Pycaffe 框架,Python為2.7,GPU是GTX 1080,CPU是Intel Core i7。
本文采用準確率(Precision)、召回率(Recall)、平均準確率(average precision,AP)和平均準確率均值(mean average precision,mAP)等多個參數來綜合衡量檢測算法的效果。式(8)和式(9)分別是準確率和召回率的計算公式,其中PR表示準確率,RR表示召回率,TP表示正確識別的目標數量,FP表示錯誤判斷為目標的數量,FN表示漏檢目標數量。
本文中的召回率與準確率的計算方式如下,比如對參照貨船分析,測試集圖像共有貨船K個,訓練好的模型檢測的目標數為N個,其中確實為貨船的有M個,因此召回率和準確率定義為:召回率Recall=M/K,準確率Precision=M/N。
Fig.5 Part of original images of test dataset圖5 部分測試數據集原圖
Fig.6 Part of test results images圖6 部分測試結果圖
圖6 為本文改進的R-FCN 與圖5 中相對應的檢測結果,分別用紅色、綠色以及藍色來區(qū)分三種船舶的類別,紅色代表貨船,綠色代表游輪,藍色代表游艇,每個船舶的匹配率也在圖上進行了標注。
在目標檢測中,主要通過召回率-準確率(P-R)曲線衡量一個分類器的性能指標,橫縱軸分別為Recall和Precision,式(10)中,PR、RR分別表示準確率和召回率。衡量一個學習器是否比另一個更優(yōu),則觀察PR圖呈現的效果可以得出結論,AP越大,即兩個參數的曲線和坐標軸之間的面積越大,代表檢測器的檢測效果越好。若A學習器可以完全包住B學習器,則A的性能優(yōu)于B。
Fig.7 Cargo ships’P-R image圖7 貨船的P-R 圖
Fig.8 Cruise ships'P-R image圖8 游輪的P-R 圖
Fig.9 Yachts'P-R image圖9 游艇的P-R 圖
為了更直觀地驗證目標檢測網絡的性能,檢測性能的衡量標準使用PASCAL VOC 競賽的衡量標準mAP。圖7~圖9 分別是貨船、游輪以及游艇的P-R圖,圖中實線代表初始的R-FCN(已做防止過擬合處理);虛線代表第一次改進的R-FCN,命名為improved-R-FCN-1,這里c=21,將原版的平均池化層改成了最大池化層;點線代表第二次改進的R-FCN,命名為improved-R-FCN-2,這里c=21,在improved-R-FCN-1 的基礎上,將ROIPooling 改成ROIAlign。三個模型在三種船舶上AP的表現在圖的最上方也進行了標注。
通過直觀的比對可以看出,圖7 和圖8 中貨船和游輪的AP的提升幅度較小,但本文中改進的兩個版本基本完全包住了原始的R-FCN,因此本文模型在貨船和游輪的表現上的性能更優(yōu)。圖9 中,improved-R-FCN-1中游艇的AP比原始的R-FCN 提升了4.08個百分點,而improved-R-FCN-2 相比于improved-R-FCN-1又提升了8.78 個百分點,比原版的R-FCN 提升了近13 個百分點,并且本文中兩個模型的曲線完全包住了原始的R-FCN。由于游艇的體積相比另外兩種船舶體積很小,本文認為全局最大值池化以及ROIAlign 這兩個變化使得本文模型在小目標的檢測表現上更優(yōu)。
Table 1 Experimental results of each target detection method表1 各目標檢測方法實驗效果
本文還與其他目前深度學習的目標檢測方法進行了對比。如表1所示,在本實驗條件下,設定IOU>0.5即目標檢測正確,對比的算法有YOLO 系列模型、Faster-RCNN,可以看出本文模型在該數據集上mAP值的表現要更好,Faster-RCNN 的mAP 為66.7%,YOLO 系列方面,最新的YOLO v3 的mAP 為78.4%。本文模型與原始的R-FCN 相比,mAP 從83.6%提升到了87.2%。本文采用每秒幀數指標來衡量算法的時效性。從表1 中可以看出,本文模型的檢測速率與其他方法基本持平,但識別精度更高。因此,實驗結果表明,本文模型能夠解決船舶識別過程中因船舶過小而識別率過低的問題,并且在較大船舶的識別上也能完成準確率的提升以及性能的優(yōu)化。
本文模型在光學圖像上的船舶識別表現優(yōu)于其他深度學習的算法,在此數據的表現上,將mAP 值提高到了87.2%,同時在測算速率上也與其他主流方法基本持平,通過分析實驗結果,總結以下四點因素使得本文模型在船舶識別上表現更優(yōu):(1)結合船舶識別與R-FCN 的特性,在ROIPooling 之前,使得特征層數量達到c+1=21 層,避免了模型在層數過低的情況下有可能出現的過擬合及模型失調等情況。(2)將ROIPooling 由全局平均池化改為全局最大值池化,提升了顯著特征的保留數量,同時也避免了部分由于卷積層參數的誤差而導致的均值偏移。(3)ROIAlign對于原ROIPooling,提出了取消量化操作,使用雙線性內插法進行特征點的計算,從而將特征提取過程轉化為一個連續(xù)的特征采樣過程。通過在映射過程取消了取整操作的做法,變相提升了采樣點的數量。(4)SmoothL1的特性是在x較小時,x梯度很小,避免了等梯度(L1)條件下x極小時梯度保持不變的缺陷,在x很大時(otherwise),x梯度上限為1,避免了過大梯度導致的網絡參數失調,即有效避免了梯度爆炸(L2),使模型穩(wěn)定性更高。隨著大數據與云計算的不斷發(fā)展,船舶檢測上的研究也會不斷深入,監(jiān)測船舶的效率與準確度,反饋數據的真實性與實效性都對海洋經濟起到積極的作用。