(1.上海海洋大學(xué) 工程學(xué)院,上海 201306; 2.鈺清(上海)信息科技有限公司,上海 201306)
在海洋戰(zhàn)略的引領(lǐng)之下,大水域環(huán)保和無人船自動駕駛都成為新的研究方向。面對大水域中的垃圾處理問題,當(dāng)下主要是人工清理,效率不高且危險系數(shù)高。若要開發(fā)垃圾自動回收裝置和無人船自動駕駛裝置,首要任務(wù)是識別出水面目標(biāo)物。近年來,水面目標(biāo)識別的研究也在逐步發(fā)展。莊佳園等人提出了嵌入式雷達圖像采集處理系統(tǒng)的體系結(jié)構(gòu)[1];曾文靜采用改進的Mean-shift圖像分割方法[2]對目標(biāo)進行檢測等。以上各研究都起到很好的推動作用,為了面對多目標(biāo)物的檢測,孟慶昕提出小樣本分類器算法提高了在復(fù)雜水域環(huán)境下基于雷達被動目標(biāo)檢測的準(zhǔn)確性[3],米禹豐采用衛(wèi)星遙感技術(shù)對水面船舶目標(biāo)進行識別檢測[4]。但是對于比較小的目標(biāo)物,雷達很難準(zhǔn)確確定其類型,而遙感很難準(zhǔn)確定位目標(biāo)物。相比之下,視覺圖像信息包含更多的信息,有助于多種目標(biāo)物的識別。謝娜娜采用視頻流的方法對船舶旗幟進行目標(biāo)識別[5],馬忠麗提出機器視覺識別出海島、礁石和船只[6],識別類型比較單一,算法很難推廣,尤其是在高反光性的水面,高反面具有鏡面效應(yīng),前景易被識別成障礙物。文欣雨提出基于Canny算子和SVM的瓶蓋缺陷檢測系統(tǒng)研究[7],在缺陷識別方面做出很大的貢獻,對水面目標(biāo)檢測也有很大借鑒意義。金琳提出面向光照魯棒的目標(biāo)識別的方法可以對于高反光的水面進行很好的預(yù)處理[8],對水面目標(biāo)識別的研究起著一定推動作用,但是并未在預(yù)處理圖像之后提出比較好的目標(biāo)識別算法。隨著人工智能的發(fā)展,機器視覺技術(shù)開始應(yīng)用在各個領(lǐng)域。目標(biāo)描述則是目標(biāo)識別和跟蹤的基礎(chǔ),準(zhǔn)確有效的目標(biāo)描述將是識別算法的第一步。為使目標(biāo)表示更加準(zhǔn)確,特征提取方法也獲得了較大發(fā)展。常見的局部特征描述算子有HAAR-LIKE特征等。 HAAR-LIKE特征最早由Papageorgiou等人提出[9],然后經(jīng)Viola提出積分圖像法快速計算特征個數(shù),最后Lienhart用對角特征對HAAR特征進行拓展[10]。而在訓(xùn)練器方面,F(xiàn)reund和Schapire提出了一個實際可用的自適應(yīng)Boosting算法AdaBoost(Adaptive Boosting),為基于圖像的特征識別奠定了基礎(chǔ)[11]。隨后Viola改進了AdaBoost算法[12],使得算法的速度加快。但是這些方法在水面目標(biāo)識別的方面應(yīng)用較少,本文借助機器視覺算法的優(yōu)勢,采用基于OpenCV(Open Source Computer Vision Library)框架的HAAR級聯(lián)分類器進行機器學(xué)習(xí)[13],以常見的水面障礙物作為訓(xùn)練樣本,根據(jù)畢校偉的水面無人船框架[14]設(shè)計開發(fā)無人船實驗平臺,將學(xué)習(xí)的結(jié)果進行實驗驗證,可以很好地識別出目標(biāo)物體。本文還通過利用水面鏡像特點,采用相位相關(guān)度法求出水岸線,避免了把岸上目標(biāo)物也當(dāng)成識別對象的問題??梢詫Υd垃圾自動清理裝置和自動航行系統(tǒng)等的設(shè)計有很好的理論基礎(chǔ)和數(shù)據(jù)支撐。
基于OpenCV進行機器學(xué)習(xí)環(huán)境搭建,然后利用OpenCV庫在Qt[15]編譯軟件上建立視覺處理框架進行樣本訓(xùn)練和結(jié)果驗證。
HAAR-LIKE特征(也稱HAAR特征)是計算機視覺領(lǐng)域比較常見的一種算子。HAAR特征單元在樣本圖片中進行遍歷,計算出特定圖像面積內(nèi)的特征值個數(shù)。Lienhart.R在文章中指出具體特征值個數(shù)計算法[10]。假設(shè)一張24×24大小的訓(xùn)練樣本圖片,根據(jù)特征值個數(shù)計算法共有115984種HAAR特征用于特征訓(xùn)練。在得到樣本圖片的特征數(shù)量之后,為了提高訓(xùn)練過程中的訓(xùn)練速度,Viola等提出了積分圖計算方法[12]。HAAR-LIKE特征都是矩形特征,在建立積分坐標(biāo)系后,可以很快地計算出積分值,即計算出每個特征所有灰度值之和。
級聯(lián)分類器是由若干個強分類器級聯(lián),而強分類器由若干個弱分類器組成。AdaBoost算法可以通過一系列弱分類器的線性組合得到一個強分類器,HAAR特征級聯(lián)分類器中的AdaBoost算法是Viola改進后的一種AdaBoost算法,用viola表示,加入積分計算和級聯(lián)的概念,使得算法的效率得以提高,效率提升效果如表,采用MIT+CMU測試集進行測試,以Rowley-Baluja-Kanade做比對,簡稱RBK。得出不同誤識別情況下的識別率的大小,見表1??梢钥闯鲈诟倪M算法后識別率得以提升。訓(xùn)練時需要正負樣本同時參與訓(xùn)練,正樣本為目標(biāo)識別物,負樣本為非目標(biāo)識別物。
表1 不同識別個數(shù)下的識別率對比
Step1:給出樣本(x1,y1),(x2,y2),…,(xN,yN)正樣本l個,負樣本m個,定義正樣本的響應(yīng)值為1,負樣本的響應(yīng)值為0。
Step2:為樣本初始化權(quán)值,第i個樣本的權(quán)值為w1,i。
(1)
Step3:迭代循環(huán)t=1,…,T。
① 歸一化權(quán)值:
(2)
② 為每一個特征j,訓(xùn)練一個分類器hj,即hj只能用于特征j,而該特征j的基于權(quán)值的誤差εj為
(3)
③ 在所有誤差中最小的那個誤差εt所對應(yīng)的分類器作為此次迭代得到的弱分類器ht。
④ 更新權(quán)值:
(4)
式中,
(5)
Step4:得到最終的強分類器:
(6)
式中,
(7)
AdaBoost算法的流程主要是首先取正負樣本進行HAAR-LIKE特征采集,然后用AdaBoost算法對特征值進行篩選,直到達到自己預(yù)設(shè)的閾值,如果達到則建立強分類器,否則繼續(xù)訓(xùn)練。
訓(xùn)練時會帶來兩個問題:① 在實際運行過程中非目標(biāo)障礙物的數(shù)量會遠大于目標(biāo)障礙物,分類器會把大量時間用來剔除非目標(biāo)障礙物,導(dǎo)致效率低;② 在不斷提高每一個強分類器的識別率的過程中,也會造成虛警率上升。
為了解決以上問題引入了級聯(lián)分類器的概念,級聯(lián)分類器實際上就是多個強分類器級聯(lián)的結(jié)果。強分類器只會把它認為正確的樣本傳遞給下一級,認為錯誤的直接丟棄。
HAAR特征級聯(lián)分類器訓(xùn)練時需要正負樣本若干,正樣本和負樣本的比值決定著強分類器訓(xùn)練時的初始權(quán)值,這兩個變量會直接決定最后機器學(xué)習(xí)的準(zhǔn)確率、虛警率和機器學(xué)習(xí)時間。主要采用了633張泡沫樣本、512張塑料瓶樣本和757張電浮標(biāo)樣本,都處理成統(tǒng)一背景,樣本圖片大小則采用4種不同尺寸進行研究;而負樣本的數(shù)量則是根據(jù)不同正樣本數(shù)量來確定,以便來控制不同初始權(quán)重比。
樣本準(zhǔn)備好之后開始進行樣本訓(xùn)練,本文采用HAAR級聯(lián)分類器對正負樣本訓(xùn)練。首先初始化權(quán)值,然后為所有目標(biāo)正負樣本的每一個HAAR特征訓(xùn)練一個弱分類器,訓(xùn)練時會采用不同閾值進行訓(xùn)練,每一次訓(xùn)練后會根據(jù)式(3)計算出誤差結(jié)果εj,取εj最小的情況下對應(yīng)的閾值,建立弱分類器。對于訓(xùn)練樣本的每一個小區(qū)域來說,如果誤差εj越小,則計算出權(quán)值wi+1,j減少,否則權(quán)值增加,更新后的權(quán)值會用于下一個HAAR特征的弱分類器訓(xùn)練,一直到訓(xùn)練完所有HAAR特征為止。而對于每一個弱分類器來說,誤差εj越小,則計算出強分類中的比例系數(shù)αi增加,如式(6)可知,所有HAAR特征弱分類器與對應(yīng)的比例系數(shù)的乘積做累加,然后將累加結(jié)果作為符號函數(shù)的閾值建立HAAR特征強分類器C(x)。當(dāng)強分類器都被建立之后,對所有強分類器進行級聯(lián)進而建立級聯(lián)分類器,自此目標(biāo)樣本的訓(xùn)練完成。
在訓(xùn)練時有兩個參數(shù)minHitRate和maxFalseAlarmRate,分別為最小識別率和最大虛警率,此兩個參數(shù)需要提前設(shè)定,設(shè)定值的大小直接影響最后訓(xùn)練的識別率和虛警率的大小。
由于級聯(lián)分類器是由各個強分類器級聯(lián)而成,識別率和虛警率都是所有層級的乘積。一般訓(xùn)練時級數(shù)設(shè)置太少導(dǎo)致虛警值過高,太多導(dǎo)致識別率下降,本文的層級設(shè)為10級。分析了預(yù)設(shè)最大識別率分別為:0.99,0.991,0.992,0.993,0.994,0.995,0.996,0.997,0.998,0.999的情況下,最終的理想識別率。經(jīng)乘積運算分析可得,在級數(shù)設(shè)為10級時,每一訓(xùn)練層級的預(yù)設(shè)識別率最低在0.995以上,才能保證最終有0.95以上的識別率,所以minHitRate小值設(shè)為0.995;同理可以分析出maxFalseAlarmRate對級數(shù)不是很敏感,只是設(shè)置大于0.6之后虛警率才有明顯上升,所以maxFalseAlarmRate的最大值設(shè)置為0.5。此時既可以滿足級聯(lián)后對虛警率低的要求,又不會因為過小致每一級強分類器訓(xùn)練失敗。
很多情況下岸上也會存在目標(biāo)物,但是并不希望該系統(tǒng)識別,否則會造成計算量增大甚至實驗失敗,所以需要計算出河岸線來排除河岸線以上的障礙物,提高識別的效率。由于水岸各種各樣,采用機器學(xué)習(xí)來識別,樣本過于巨大,而且不具有普遍性,識別度不高。本文通過對水面和岸上的特征進行分析。觀察水的鏡面性可以在水域形成岸上物體的倒影,即使在水質(zhì)并不是很清的情況下,也會有很明顯的倒影輪廓,所以本文利用這種特性來識別出河岸線。假設(shè)一張原始圖片設(shè)為f1(x,y),然后對其180°翻轉(zhuǎn)得出其翻轉(zhuǎn)圖片設(shè)為f2(x,y),由于倒影與岸上實物有很高的輪廓重合度,所以可以假設(shè)f1(x,y)是f2(x,y)平移得來的結(jié)果,其兩者關(guān)系可以如式(8)表示:
f1(x,y)=f2(x-x0,y-y0)
(8)
根據(jù)相位相關(guān)性法[17],平移量可以直接由其互功率譜的相位直接算出。由式(9)、式(10)和式(11)可以分別算出f1(x,y)和f2(x,y)的傅里葉變換[18]和互功率譜:
(9)
(10)
(11)
其中F*是F的共軛復(fù)數(shù)。對互功率譜求其傅里葉逆變換得:
(12)
由式(12)可以看出,在(x0,y0)處出現(xiàn)了單位沖擊響應(yīng)函數(shù),理論上說在(x0,y0)處不為0,其他地方都為0。理想條件下只需要找出不為零的位置,即是原圖像和翻轉(zhuǎn)圖像的偏移處,但是實際情況下很難出現(xiàn)只有一處不為0的地方,所以實際實驗時是尋找最大值即為偏移處。
當(dāng)求出來偏移位置的時候,便可以分析出岸邊的大致位置。如圖1所示,設(shè)實驗攝像頭在計算機界面上顯示高度為H,偏移量為y0,河岸線的高度為h,根據(jù)式(13)便可得出河岸線位置。
(13)
圖1 偏差與河岸線關(guān)系分析圖
將上述理論轉(zhuǎn)化成C++語言在Qt上進行了編程實驗,并且輸出x0和y0的值。本實驗基于無人船平臺完成。無人船采用無線通信模式,主要由AP基站、上位機控制、無人船三大部分組成。AP基站的建設(shè)采用TP-LINK TL-AP450GP全向無線AP,可以在半徑450 m進行通信,船載攝像頭采用??礐3W高清攝像頭,監(jiān)視范圍為120°,安裝高度為20 cm,此外還有GPS、電子羅盤等輔助感知設(shè)備。該無人船裝置是通過無線模塊,由PC端的上位機控制系統(tǒng)傳輸指令給主控芯片STM32,根據(jù)系統(tǒng)控制要求,通過驅(qū)動電機來控制無人船運動,并可在PC端遠程監(jiān)控航行信息,遠程控制其航向航速。實驗船如圖2所示,實驗攝像頭的輸出畫面大小為764×428,得出偏移量x0=0,y0=11.0259;最終的結(jié)果如圖3所示。當(dāng)識別出水岸線之后,在目標(biāo)識別過程中,只需識別目標(biāo)區(qū)域的最低端在水岸線以下的目標(biāo),以上目標(biāo)自動過濾,提高了無人船的識別準(zhǔn)確度和效率。
前面分析了HAAR級聯(lián)分類器進行目標(biāo)識別時,不僅級聯(lián)級數(shù)大小、虛警值和識別率的設(shè)定值會影響機器學(xué)習(xí)的學(xué)習(xí)時間和準(zhǔn)確度,而且正負樣本的尺寸和比例也會影響機器學(xué)習(xí)的學(xué)習(xí)時間和準(zhǔn)確度,下面進行具體分析。
訓(xùn)練時間是實際操作中一個很值得關(guān)注的因素,時間過短導(dǎo)致識別率降低,如果時間過長會因為不穩(wěn)定因素導(dǎo)致訓(xùn)練失敗。正負訓(xùn)練樣本的尺寸大小不同,特征點的個數(shù)也不相同。本實驗以泡沫作為目標(biāo)識別物,分別選取20×20,24×24,30×30,40×40,50×50五種尺寸,取正樣本633個,負樣本1899個。如表2所示,根據(jù)Lienhart的特征值計算法[10]分別計算出各個尺寸的特征點個數(shù),實驗得出不同訓(xùn)練樣本尺寸下的訓(xùn)練時間和識別率。
圖2 無人船實物圖
圖3 水岸線識別結(jié)果
表2 訓(xùn)練樣本尺寸大小與識別率和訓(xùn)練時間的關(guān)系
由此可以看出隨著正樣本的尺寸增加,特征點的個數(shù)增加,識別率和訓(xùn)練時間都增加。由于水岸線的識別降低了運算量,進而也提高了識別率,由表2可以看出50×50尺寸時識別率達91.98%,效果好于利用Henriques提出的KCF目標(biāo)跟蹤算法[19]進行同樣實驗得出87.56%的識別率。
不同正負樣本比例下正負樣本的數(shù)量不同,機器學(xué)習(xí)的時間也不同。本實驗以泡沫、塑料瓶和電浮標(biāo)為樣本,采用40×40大小的圖像,計算不同正負樣本比例下的具體訓(xùn)練時間如表3所示,訓(xùn)練時間趨勢變化如圖4所示,具體的識別結(jié)果如圖5所示。
由圖4可知,隨著比例的增大,訓(xùn)練時間不斷增加,這跟負樣本的數(shù)目增加有關(guān),且訓(xùn)練的時間增加。電浮標(biāo)的訓(xùn)練時間最長,泡沫次之,塑料瓶最短,主要原因是訓(xùn)練數(shù)量不同,訓(xùn)練時間與樣本數(shù)量大致成正比。
由式(1)可知,樣本初始權(quán)值取決于正負樣本的比例。需要注意的是負樣本的個數(shù)過少,會導(dǎo)致訓(xùn)練過程中程序陷入死循環(huán)最終訓(xùn)練失敗,與此相反,如果負樣本過多,會導(dǎo)致在訓(xùn)練后期沒有正樣本參與訓(xùn)練,訓(xùn)練的精確度不高。因此,本實驗將負樣本與正樣本的比例設(shè)定為:1.8,2.2,2.6,3.0,3.4,3.8,4.2,4.6,5.0,5.4,5.8,6.2;分別求出3種目標(biāo)識別物的識別率和虛警率,實驗結(jié)果如圖6所示。共有8條曲線,分別表示塑料瓶、泡沫及電浮標(biāo)的識別率和虛警率,此外還有識別率和虛警率的理論值。
表3 不同正負樣本比例下的訓(xùn)練時間
圖4 3種目標(biāo)物在不同正負樣本比例的訓(xùn)練時間比較
圖5 障礙物識別結(jié)果示意圖
經(jīng)分析可知:
① 真實的識別率比理論值低,虛警率比理論值高。
② 正負樣本的比例在3.0~4.2之間時,識別率比較高,虛警率比較低。
③ 不同的目標(biāo)識別率不同。塑料瓶的識別率最高,泡沫次之,電浮標(biāo)最差,主要原因是塑料瓶的結(jié)構(gòu)更規(guī)矩,復(fù)雜度也不高。
④ 不同的目標(biāo)識別物的虛警率不同。電浮標(biāo)的虛警率最低,泡沫次之,塑料瓶最差,主要原因是電浮標(biāo)雖然結(jié)構(gòu)復(fù)雜,但是和周圍環(huán)境的相似度很低,背景不易被識別成目標(biāo)物,而塑料瓶的兩端都是透明的,和周圍環(huán)境的相似度過高。
圖6 3種目標(biāo)物的識別率與虛警率比較
所提出的在不同樣本正負比例和不同目標(biāo)的情況下提高識別率和降低虛警率,但是經(jīng)過不同組的對比實驗得知此算法仍有很大改進空間,首先應(yīng)該在樣本的種類和更復(fù)雜的目標(biāo)物進行訓(xùn)練,這樣更能夠提高算法的魯棒性。
本文設(shè)計無人船作為實驗平臺采集實驗樣本,采用OpenCV視覺處理框架,運用HAAR級聯(lián)分類器進行機器學(xué)習(xí),分別對泡沫、塑料瓶和浮標(biāo)三種水上目標(biāo)物進行了識別。
在識別訓(xùn)練過程中:① 級聯(lián)分類器的級數(shù)、最小識別率和最大虛警值的設(shè)定都會影響機器學(xué)習(xí)的時間和識別率,經(jīng)分析得出在10級級聯(lián)訓(xùn)練時,最小識別率設(shè)為0.995,最大虛警值需設(shè)為0.5以下;② 正負樣本的尺寸和比例會影響機器學(xué)習(xí)的時間和準(zhǔn)確度,隨著尺寸大小的變化訓(xùn)練時間接近指數(shù)增長,隨著訓(xùn)練數(shù)目等比例增加,訓(xùn)練時間也接近比例增長,正負樣本比值在3.0~4.2之間為最佳比例范圍,此時識別率較高虛警率較低。另外在無人船自動行駛時,利用水面的鏡面特性,采用基于相位相關(guān)性法的水岸線識別算法求出水岸線,準(zhǔn)確識別出河岸線,提高了水中目標(biāo)物的識別效率。并且以上算法皆具有很強的可移植性,只要有足夠多類型的樣本訓(xùn)練空間,便可以準(zhǔn)確地判斷出水面的目標(biāo)物。
所設(shè)計的基于機器學(xué)習(xí)的無人船目標(biāo)識別系統(tǒng),為無人船自動巡航和避障系統(tǒng)、船載自動垃圾回收裝置、河流水質(zhì)污染監(jiān)測無人船等設(shè)計提供了解決方案。當(dāng)然本文只是在最適設(shè)定范圍內(nèi)有效性較好,若遇到更復(fù)雜的環(huán)境,希望能針對特征的提取對水面目標(biāo)要更有針對性,更好地去觀察并提取相似特征,此外也要更深度地降低水面的鏡面性所帶來的影響。