吳映錚, 楊柳濤
(上海船舶運輸科學(xué)研究所 航運技術(shù)與安全國家重點實驗室,上海 200135)
隨著航運業(yè)的發(fā)展和海上貿(mào)易量的增加,在航船舶的數(shù)量不斷增多,海上交通密度不斷增大,海上意外事故發(fā)生率日趨升高,嚴(yán)重影響著船舶的安全航行。據(jù)統(tǒng)計,大量的海上意外事故都是由人為因素造成的,因此提高船舶的安全航行水平尤為緊迫。通過對船舶安全航行技術(shù)進行研究,人們已在船舶識別技術(shù)方面取得很多重要成果。依靠現(xiàn)代化的船舶識別技術(shù)能在一定程度上解決船舶間和船岸間信息交流不準(zhǔn)確的問題,極大地降低船舶碰撞事故發(fā)生率,提升船舶監(jiān)管效率[1]。
近年來,船舶交通管理系統(tǒng)(Vessel Traffic Service, VTS)在船舶航行領(lǐng)域得到廣泛應(yīng)用。VTS是一種旨在提高船舶交通安全程度和工作效率,保護海洋環(huán)境,為在海上航行的船舶提供信息服務(wù)、導(dǎo)航援助服務(wù)和交通組織服務(wù)的系統(tǒng)。在船舶航行期間應(yīng)用VTS,有利于優(yōu)化海洋環(huán)境、改善船舶交通秩序、提高船舶交通安全性能和船舶交通效率及減少海上意外事故發(fā)生次數(shù)。近年來,雷達識別系統(tǒng)、自動雷達標(biāo)繪儀(Automatic Radar Platting Aid, ARPA)、電子海圖顯示與信息系統(tǒng)(Electronic Chart Display and Information System, ECDIS)和船舶自動識別系統(tǒng)(Automatic Information System, AIS)等系統(tǒng)在VTS上得到廣泛應(yīng)用,其中:雷達識別系統(tǒng)和ARPA能為船舶航行提供避碰保障;ECDIS可為船舶操作人員提供各種信息查詢功能并在CRT(Cathode Ray Tube)屏幕上顯示本船的位置。但是,這3種系統(tǒng)主要以船舶定位為主,無法實現(xiàn)船舶類型識別。AIS是一種相對新型的船舶避碰設(shè)備,與雷達目標(biāo)跟蹤相比,改變了船舶獲取避碰信息的手段[2]。2000年,國際海事組織(International Maritime Organization, IMO)海上安全委員會審議并通過了SOLAS公約,在《船用導(dǎo)航系統(tǒng)和設(shè)備裝配要求》中明確提出從2002年起,300總噸以上的船舶和VTS必須安裝AIS。VTS雖然能為船舶的安全航行提供保障,但由于技術(shù)等方面的原因,存在一些缺陷。例如,在某些情況下AIS不能使用,且很多300總噸以下的船舶并未安裝AIS。此外,現(xiàn)在仍有不少VTS依靠甚高頻(Very High Frequency, VHF)通信實現(xiàn)船舶識別,這樣不僅消耗人力,而且效率不高[3]。
為彌補傳統(tǒng)的船舶識別手段存在的缺陷,基于計算機視覺技術(shù)的船舶類型識別與分類技術(shù)成為當(dāng)前船舶安全航行領(lǐng)域的研究熱點。金雪丹[2]提出采用BP(Back Propagation)神經(jīng)網(wǎng)絡(luò)算法對船舶特征進行分類處理,試驗結(jié)果表明,BP神經(jīng)網(wǎng)絡(luò)的引入能顯著提高船舶識別率。趙亮等[4]采用卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)自動提取特征,并結(jié)合方向梯度直方圖(Histogram of Oriented Gradients,HOG)特征提取算法和HSV(Hue, Saturation, Value)算法提取邊緣特征和顏色特征,輸入支持向量機(Support Vector Machine,SVM)分類器進行分類,試驗結(jié)果顯示識別準(zhǔn)確率達到93.55%。
本文采用DALAL等[5]提出的HOG特征提取算法與SVM分類器相結(jié)合的船舶分類方法實現(xiàn)船舶分類。首先,利用HOG算法對船舶訓(xùn)練圖庫中的船舶圖集進行圖像預(yù)處理并提取船舶的邊緣特征;其次,通過SVM分類器對利用HOG算法提取到的特征進行訓(xùn)練,得到SVM分類器模型;最后,對船舶測試圖庫中的圖片進行分類預(yù)測并記錄準(zhǔn)確率。相對于傳統(tǒng)的船舶識別方法,本文的方法有以下優(yōu)勢:
1)HOG具有幾何和光學(xué)轉(zhuǎn)化不變性,容易提取,有利于表現(xiàn)圖像的原始特征;
2)采用SVM分類器,分類效果更好,能降低計算的復(fù)雜度,提高魯棒性[4]。
圖1 HOG特征提取算法基本流程
HOG特征提取算法是DALAL等[5]提出的一種特征提取算法,在行人檢測中得到廣泛應(yīng)用,且其準(zhǔn)確性已得到有效驗證,核心思想是所檢測物體圖像的局部可用邊緣的和梯度方向的分布密度來表示。該算法首先將圖像分成很小的細胞單元(cell),隨后采集每個細胞單元中各像素點梯度的或邊緣的方向直方圖,最后將這些直方圖組合起來構(gòu)成HOG描述器[6]。圖1為HOG特征提取算法基本流程。
方向梯度直方圖特征提取的具體步驟如下:
1)受光照、局部陰影和噪聲等因素的影響,在提取HOG特征之前需對顏色空間進行規(guī)范化,包括圖像灰度化和Gamma處理2個過程。
(1) 圖像灰度化。對于原圖(即彩色圖像),圖像灰度化就是將RGB(Red, Green, blue)分量轉(zhuǎn)化為灰度圖像,轉(zhuǎn)化公式為
Gray=0.3R+0.59G+0.11B
(1)
式(1)中:R、G、B分別為紅、綠、藍等3個顏色通道。
(2) Gamma處理。由于圖像照度存在不均勻性,通過Gamma處理可提高或降低圖像的整體亮度。在實際應(yīng)用中,通常采用平方根法或?qū)?shù)法進行Gamma處理。本文采用的是平方根法,表達式為
I(x,y)=I(x,y)CGamma
(2)
式(2)中:I(x,y)為圖像;CGamma為校正值,本文取CGamma=0.5。
2)要獲得HOG特征,首先需獲得水平方向和垂直方向的梯度??赏ㄟ^水平方向模板K=[-1,0,1]及其轉(zhuǎn)置來過濾圖像,從而很容易地完成水平方向和垂直方向梯度的計算,表達式[7]為
gx=I(x+1,y)-I(x-1,y)
(3)
gy=I(x,y+1)-I(x,y-1)
(4)
式(3)和式(4)中:gx為x方向的方向梯度;gy為y方向的方向梯度;I(x,y)為像素點(x,y)的像素值。
由此,像素點(x,y)處的梯度幅值和梯度方向的計算式分別為
(5)
(6)
式(5)和式(6)中:▽g(x,y)為梯度幅值;θ為梯度方向。
3)構(gòu)建細胞單元的方向梯度直方圖。細胞是算法分解處理圖片過程中的最小統(tǒng)計和處理單元。將梯度方向量化為9個直方圖通道(代表9個不同的梯度方向),基于這9個直方圖通道對細胞單元中的各像素點進行加權(quán)投票;將梯度的大小作為投影,依次以投影量為權(quán)值疊加到這9個梯度方向代表的直方圖上[6]。圖2為梯度直方圖方向塊,即[0,20]度數(shù)范圍統(tǒng)計為一個直方圖。
圖2 梯度直方圖方向塊
4)由于圖像中的光照情況和背景變化多樣,梯度值的變化范圍會比較大,因此良好的特征標(biāo)準(zhǔn)化對于提高檢測率而言較為重要[8]。特征標(biāo)準(zhǔn)化的核心思路是將細胞單元(例如3×3個或2×2個細胞單元)組合成1個塊(block)的特征描述符(descriptor),以1個滑動窗口步長掃描所有圖像,將所有的塊組合成整幅圖片的特征描述符。需注意,塊內(nèi)的細胞單元之間沒有像素重疊,但塊間的細胞單元之間會有像素重疊。
SVM[9]是一種以結(jié)構(gòu)風(fēng)險最小化為理論基礎(chǔ)的新型機器學(xué)習(xí)算法,本質(zhì)上是核函數(shù)方法,通常用來解決二分類問題,也可用來解決多分類問題,對解決非線性、小樣本、高維度和局部極小值等問題十分有效。
SVM是一種監(jiān)督學(xué)習(xí)算法,通常用來分析線性可分問題,即將線性不可分問題在高維空間內(nèi)轉(zhuǎn)化成線性可分問題,構(gòu)造出最優(yōu)分類面[10-11]。對于二值分類問題,由于分割超平面能“容忍”訓(xùn)練樣本的局部干擾,因此需尋找“容忍”性能最好的位于2類訓(xùn)練樣本正中間的分割超平面。
在訓(xùn)練樣本集合中,分割超平面可表示為
ωTx+b=0
(7)
式(7)中:ω=(w1,w2,…,wd)為法向量,決定超平面的方向;b為位移項,決定超平面與原點之間的距離[12]。由式(7)可知,分割超平面由法向量ω和位移b共同確定,即可將分割超平面記為(ω,b)。因此,訓(xùn)練樣本集合中點x與分割超平面(ω,b)之間的距離可表示為
(8)
假設(shè)分割超平面(ω,b)能正確分類樣本集,即對于(xi,yi)∈D:若yi=+1,則有ωTxi+b>0;若yi=-1,則有ωTxi+b<0。令
(9)
圖3為支持向量與間隔,當(dāng)式(9)中的等號成立時,距離分割超平面最近的訓(xùn)練樣本點稱為“支持向量”,2個“異類”支持向量到超平面的距離總和為
(10)
式(10)中:γ為“間隔”。
圖3 支持向量與間隔
若要使分割超平面具有“最大間隔”,不僅要求參數(shù)ω和b滿足式(9)的條件,而且要求γ的值最大,即
(11)
(12)
這就是SVM的基本數(shù)學(xué)模型。
本文設(shè)計的基于HOG和SVM的船舶圖像分類模型見圖4,主要分為訓(xùn)練階段和測試階段2個過程。
圖4 基于HOG和SVM的船舶圖像分類模型
1) 訓(xùn)練階段:將訓(xùn)練船舶圖庫中帶標(biāo)簽的圖像輸入HOG特征提取模型,通過圖像灰度化、Gamma處理和尺寸規(guī)范化等一系列操作得到訓(xùn)練船舶圖像的HOG特征;同時,結(jié)合標(biāo)簽和訓(xùn)練SVM分類器得到完成訓(xùn)練的SVM分類模型。
2) 測試階段:提取測試船舶的HOG特征,通過訓(xùn)練好的SVM分類模型,輸出預(yù)測結(jié)果并計算準(zhǔn)確率。
試驗所處的硬件環(huán)境是Dell臺式電腦,主要配置為Inter Core i5-6500 CPU(3.2 GHz)和8 GB運行內(nèi)存,操作系統(tǒng)為Windows 7系統(tǒng)(64位),仿真運行工具為MATLAB 2017b版。采用的SVM工具箱為LIBSVM庫,該庫具有程序小、開源等特點,廣泛應(yīng)用于機器學(xué)習(xí)工具的開發(fā)研究中。
試驗測試的船舶圖集是從百度圖庫和谷歌圖庫中收集到的,分為帆船、集裝箱船、軍艦、漁船和郵船等5類,其中,訓(xùn)練樣本713張,測試樣本270張,訓(xùn)練樣本量與測試樣本量的比例接近7∶3。
由第1節(jié)的理論分析可知,在進行HOG特征提取之前,需進行圖像預(yù)處理,包括圖像灰度化、Gamma處理和圖像尺寸規(guī)范化。MATLAB程序中采用以下語句:
imdsTrain=imageDatastore('F:vm_images rain_images','IncludeSubfolders',true,'LabelSource','foldernames');
imageSize = [256,256];
image1 = readimage(imdsTrain,1);
image1 =rgb2gray(image1);
image1 =double(image1);
scaleImage = imresize(image1,imageSize)
img=sqrt(scaleImage);
…
…
圖5為MATLAB輸出的集裝箱船、軍艦和郵船的原圖、灰度化處理和Gamma處理效果對比。
a) 集裝箱船原圖
b) 集裝箱船灰度化處理
c) 集裝箱船Gamma處理
d) 軍艦原圖
e) 軍艦灰度化處理
f) 軍艦Gamma處理
g) 郵船原圖
h) 郵船灰度化處理
i) 郵船Gamma處理
由于在識別船舶類型的研究中顏色信息對船舶分類的影響不大,因此圖像預(yù)處理的第一步通常是將原圖轉(zhuǎn)化為灰度圖,從而減少需處理的數(shù)據(jù)量。圖5b、圖5e和圖5h為經(jīng)過灰度化處理的圖像,可看出灰度化處理后的圖像依舊可反映出原圖的整體分布特征,且能減少后續(xù)數(shù)據(jù)的處理量和計算量。圖5c、圖5f和圖5i為經(jīng)過Gamma處理的圖像,可看出圖像經(jīng)過Gamma處理之后提高了整體亮度,有效地減少了光照變化和局部陰影,減弱了光照因素對圖像的影響,有利于后續(xù)船舶HOG特征的提取。
在圖像預(yù)處理完成之后,得到規(guī)范化圖像的尺寸為256×256像素;細胞單元的尺寸設(shè)定為8×8像素,即1個細胞單元的像素大小為64;塊的尺寸設(shè)定為2×2個細胞單元,即大小為16×16像素。由第1節(jié)的理論分析可知,每個細胞單元具有9維的特征向量,由此得到整幅圖像的HOG特征向量的總維數(shù)為34 596維。參數(shù)設(shè)置完畢之后即可調(diào)用MATLAB中內(nèi)置的HOG特征提取函數(shù)extractHOGFeatures()進行HOG特征的提取和計算。圖6為集裝箱船、軍艦和郵船的原始圖像與HOG特征可視化對比。
a) 集裝箱船原圖
b) 集裝箱船HOG
c) 軍艦原圖
d) 軍艦HOG
e) 郵船原圖
f) 郵船HOG
由圖6可知,提取到的HOG特征基本上能反映船舶的邊緣特征,且船舶輪廓特征與背景陰影特征對比較為明顯,總體上能辨別出梯度大小和梯度方向的分布情況。
對于船舶圖像的訓(xùn)練,需調(diào)用LIBSVM工具箱中的svmtrain()函數(shù)進行,程序語句格式為train_model=svmtrain(trainlabels,trainfeatures,options),其中svmtrain()的輸入?yún)?shù)包括訓(xùn)練集標(biāo)簽、訓(xùn)練集數(shù)據(jù)(特征)、核函數(shù)和懲罰系數(shù)等。試驗中默認選擇RBF核函數(shù),并調(diào)用SVMcg()函數(shù)進行參數(shù)尋優(yōu),程序語句格式為[bestacc,bestc,bestg]=SVMcg(trainlabels,trainfeatures,0,10),該函數(shù)返回懲罰系數(shù)bestc和Gamma系數(shù)bestg的最優(yōu)化值。采用的參數(shù)搜索方法為網(wǎng)格尋優(yōu),即在懲罰系數(shù)c和Gamma系數(shù)g組成的二維數(shù)組中依次檢驗每組參數(shù)的效果。該過程耗費的時間取決于圖片的特征維度和迭代參數(shù)等因素,能獲得全局最優(yōu)解。
船舶圖像訓(xùn)練階段結(jié)束之后即可對船舶圖像進行分類測試。調(diào)用svmpredict()函數(shù),程序語句格式為[predictlabel,accuracy,prob_estimates]=svmpredict(testlabels,testfeatures,train_model),其中輸入?yún)?shù)包括測試標(biāo)簽、測試數(shù)據(jù)(特征)和訓(xùn)練模型。圖7為MATLAB中函數(shù)預(yù)測和訓(xùn)練過程。
圖7 MATLAB中函數(shù)預(yù)測和訓(xùn)練過程
由圖7可知,首先調(diào)用svmtrain()函數(shù)并設(shè)置相應(yīng)的參數(shù)為“-t2 -c1 -g0.02”,其中:-t設(shè)置為2表示核函數(shù)選擇為RBF核函數(shù);-c設(shè)置為1表示設(shè)置C-SVC的參數(shù)(損失函數(shù))為1;-g設(shè)置為0.02表示核函數(shù)中的Gamma參數(shù)設(shè)置為0.02。輸出的結(jié)果為SVM的模型,其中:iter表示迭代次數(shù);obj表示SVM問題轉(zhuǎn)為二次規(guī)劃求解得到的最小值;rho表示決策函數(shù)中的常數(shù)項相反數(shù);nSV表示標(biāo)準(zhǔn)支持向量個數(shù);nBSV表示邊界的支持向量個數(shù)。其次調(diào)用svmpredict()函數(shù),并代入svmtrain()函數(shù)生成的SVM模型中,輸出的準(zhǔn)確率為84.814 8%,即270張測試樣本圖像中有229張圖像的預(yù)測分類結(jié)果與預(yù)先的分類標(biāo)簽相符,相比傳統(tǒng)的船舶識別手段,實現(xiàn)了船舶類型的分類,且具有較高的準(zhǔn)確度。
該模型還存在以下不足:
1)SVM使用的核函數(shù)除了RBF核以外,還有Sigmoid核和拉普拉斯核等。本文直接使用RBF核函數(shù),未來可采用其他核函數(shù)進行對比,以優(yōu)化算法,提高算法的準(zhǔn)確率。
2)采用HOG特征提取算法提取到的特征維度比較大,試驗中達到34 596維,且存在大量的重復(fù)特征,可考慮采用PCA算法進行降維處理,簡化計算。
船舶圖像分類研究是利用計算機視覺技術(shù)識別圖像中的船舶并對其進行分類,該技術(shù)的研究與應(yīng)用對船舶安全航行、海洋經(jīng)濟貿(mào)易發(fā)展和船舶智能感知系統(tǒng)研發(fā)具有重要意義,如何提高船舶識別的準(zhǔn)確率已成為智能航行研究中的重要課題。
本文提出了一種基于HOG和SVM的船舶分類算法模型,由試驗過程和結(jié)果分析可知,采用HOG特征提取算法提取到的船舶邊緣特征對表征原始圖像具有優(yōu)良的特性,利用SVM分類器訓(xùn)練得到的SVM分類模型具有較高的分類準(zhǔn)確率。試驗結(jié)果表明,SVM分類模型對測試船舶集中的圖像預(yù)測的準(zhǔn)確率達到84.81%,基本滿足對船舶類型的識別要求。