邵 翔,魏國亮,張 彬,王建華
(上海理工大學 光電信息與計算機工程學院,上海 200093)
基于Raspberry Pi和Haar分類器的AUV目標搜尋
邵 翔,魏國亮,張 彬,王建華
(上海理工大學 光電信息與計算機工程學院,上海 200093)
文中使用Raspberry Pi開源硬件平臺搭建了水下機器人視覺系統(tǒng),通過OpenCV對所要搜尋的特定目標物體進行Haar分類器訓練,AUV在進行特定目標搜尋任務(wù)時加載訓練文件,并通過所開發(fā)程序在嵌入式視覺系統(tǒng)上完成了水下特定目標的搜尋任務(wù)。文中對訓練流程進行了分析,并對分類器做出了評價,通過實際的水下實驗,驗證了所用訓練分類器具有較低的誤檢率和較高的檢測率,同時,所搭建的視覺系統(tǒng)具有較好的實時性。
Raspberry Pi;Haar分類器;OpenCV;AUV;Adaboost檢測算法
自主式水下機器人(AUV)在軍事與民用方面其有重要用途。通常情況下,水下機器人需要在惡劣環(huán)境下執(zhí)行任務(wù),視覺系統(tǒng)給機器人提供了大量的有用信息,且能夠使其完成對特定目標的搜尋任務(wù),因此,水下機器人的視覺系統(tǒng)的研究將成為AUV智能化的重要環(huán)節(jié)。
從智能機器人的研究領(lǐng)域來看,目標自動識別能力是評價系統(tǒng)智能化的重要指標,其一直是一個重要的研究課題[1]。對水下目標正確識別的關(guān)鍵是識別目標的特征好壞,目前在水下目標特征選擇中應(yīng)用的方法有遺傳算法、前向順序搜索、后向順序搜索以及基于粗糙集的方法,這些算法均能有效地降低維數(shù)、提高分類器的性能[2]。研究目標自動識別的一般做法是運用各種方法提取眾多的水下目標特征參數(shù),通過增加特征維數(shù)來提高識別效果,但是,特征維數(shù)越多,獲取的代價也就越大,并且在實際問題中,并非特征數(shù)目越多分類性能就越好。本文選用在人臉檢測的研究中已經(jīng)非常成熟且具有較好的實時性、魯棒性和實用性的Haar特征和Adaboost迭代算法。本文將給出該算法的詳細設(shè)計思路和實際中基于OpenCV的分類器訓練過程,以及在實際中AUV目標自動識別的具體實施步驟。
機器視覺是一項通過計算機讓機器擁有人眼的視覺功能,從而可以實現(xiàn)對客觀世界中物體的各種檢測、識別、測量等功能。與傳統(tǒng)的光學傳感設(shè)備不同,水下機器人的視覺系統(tǒng)不僅需要具有獲取光學圖像和視頻信息的能力,而且應(yīng)該具備對圖像和視頻信息進行處理、特征提取以及分類識別的能力。在智能水下機器人的研究中,視覺系統(tǒng)的目標是:快速、準確地獲取水下目標的相關(guān)信息,并對信息進行實時處理,且將處理的結(jié)果反饋給機器人,從而指導水下機器人能夠正確地執(zhí)行任務(wù)[3]。
1.1 視覺系統(tǒng)的硬件組成
水下機器人的視覺系統(tǒng)采用搭載4核Broadcom BCM2836芯片的Raspberry Pi,同時也采用了配套的CSI(Camera Serial Interface,相機串行接口)攝像頭來采集數(shù)據(jù),在確保圖像清晰和視頻流暢的同時又節(jié)省了硬件接口的數(shù)目。此視覺系統(tǒng)的攝像頭采用官方的RPi Camera,可以提供500萬像素的圖像,并且支持1 080p30, 720p60以及640×480p60/90視頻錄像,相比于普通網(wǎng)絡(luò)攝像頭,此攝像頭有著更高的帶寬,同時具有強大的視頻處理能力?;赗aspberry Pi的機器視覺系統(tǒng)具有體積小巧、易于安裝、硬件接口豐富和易于開發(fā)等諸多優(yōu)點。與此同時,此攝像頭可以通過有線方式或者插入無線網(wǎng)卡的方法來實現(xiàn)與水下機器人控制系統(tǒng)相連接的功能。
1.2 視覺系統(tǒng)的軟件體系
Raspberry Pi是沒有預裝操作系統(tǒng)(OS)的,需下載一個OS到SD卡,然后插到樹莓派上重啟以完成OS的安裝。Raspbian是Raspberry Pi的專屬操作系統(tǒng),Raspbian是一個基于Debian的自由操作系統(tǒng),它的硬件驅(qū)動程序也是根據(jù)Raspberry Pi的硬件而優(yōu)化,目的是為Raspberry Pi打造一個穩(wěn)定和快速的系統(tǒng)平臺。在固件、核心、應(yīng)用方面,OS都做了改進,是最適合普通用戶使用的OS。Raspbian預搭載的編程開發(fā)環(huán)境是Python語言。Python是一種面向?qū)ο蟆⒅弊g式計算機編程語言,已有近20年的發(fā)展歷史,包含了一組完善而且容易理解的標準庫,能夠完成多種常見任務(wù)。
OpenCV是一個基于開源發(fā)行的跨平臺計算機視覺庫,可以運行在Linux、Windows和MacOS操作系統(tǒng)上,對跨平臺支持良好。它輕量級而且高效,提供了大量圖像特征檢測的算法函數(shù),執(zhí)行效率高、使用方便。因此在Raspberry Pi運行的Raspbian操作系統(tǒng)上安裝OpenCV,并使用Python語言做開發(fā)。
水下目標識別技術(shù)是隨著聲納技術(shù)、信號檢測及處理、計算機技術(shù)和人工智能等技術(shù)的發(fā)展而逐漸發(fā)展起來的[4]。目標識別能力的大小決定了機器人在水下環(huán)境的理解程度和作業(yè)實施的成功與否。由于水下環(huán)境的復雜和水介質(zhì)對光的吸收和散折射的影響,使得水下圖像質(zhì)量嚴重地下降,同時,使得目標識別中可供利用的圖像信息大量減少。在成像過程中,噪聲的引入對圖像特征的提取會造成一定的干擾。圖像特征提取的困難勢必使得在后續(xù)的分類器設(shè)計過程中得不到目標物準確而全面的識別特征。因此,在復雜的海洋水域中,將水下目標識別的核心技術(shù),即特征提取技術(shù)和分類器設(shè)計技術(shù),應(yīng)用于智能水下機器人系統(tǒng)仍是一個亟待解決的難題[5]。
特征一般是通過對需要分類的對象所擁有的知識進行編碼后得到的。在物體識別領(lǐng)域,特征的設(shè)計始終扮演著重要的角色,之所以采用特征形式作為分類的依據(jù),是因為特征與原始像素相比,特征可以表達區(qū)域之間的關(guān)聯(lián)信息,這是用有限的單個、獨立的原始像素所無法表示的。采用特征對圖像進行建模,有利于減小待分類對象的類內(nèi)距離,同時可以增加待分類對象的類間距離,這樣有利于建立更有效的判別函數(shù)。特征更容易形式化,而形式化了的特征計算起來更加迅速,有利于提高識別速度。尤其對于實時圖像中物體識別來說,基于特征的識別要比基于像素的識別快的多。在采用特征形式作為分類依據(jù)之前,需要解決特征值的計算復雜度問題。實時物體識別算法需要掃描大量的窗口,對每個窗口對應(yīng)的子圖像都要計算相應(yīng)的特征值,所以,擁有快速的特征計算方法后,才能滿足識別系統(tǒng)的實時性要求[6]。
本文采用Haar-Like特征來表述特定目標,是因為這種特征表示的形式簡單、計算速度快、形式多樣,這些矩形特征原型可派生出豐富的矩形特征。AUV對特定目標搜尋任務(wù)的流程圖如圖1所示。機器視覺系統(tǒng)與AUV主控的交互實現(xiàn)方式如圖2所示。確定好所要搜尋的目標后,制作所要識別目標的正、負樣本圖片,然后使用PC機端的OpenCV中的AdaBoost算法做Haar特征分類器訓練,生成針對于該目標的分類器xml文件,并將該文件發(fā)送給嵌入式機器視覺系統(tǒng),同樣采用開源計算機視覺庫OpenCV,并以該xml文件為基礎(chǔ)對實時視頻中的特定目標進行檢測。水下自主機器人搭載機器視覺系統(tǒng)在確定水域中進行特定目標的搜尋,其下潛到固定深度后進行Z字型地毯式搜索。當特定目標被所搭載的視覺系統(tǒng)捕獲并識別出來,水下機器人停止掃描并上浮到水面。
圖1 AUV特定目標搜尋任務(wù)流程
圖2 AUV各部分通信方式
3.1 使用Haar-Like特征做檢測
Haar-Like特征是Viola等提出的一種簡單矩形特征,因類似于Haar小波而得名。矩形特征的值是指圖像上兩個或者多個形狀大小相同的矩形內(nèi)部所有像素灰度值之和的差值。擴展后的Haar特征分為3類:邊緣特征、線性特征和中心特征,如圖3所示。將矩形黑色覆蓋的圖像區(qū)域像素灰度值總和與白色覆蓋的圖像區(qū)域像素灰度值總和求差即為所求特征值,它反映了圖像局部的灰度變化[7-9]。本文實驗采用擴展后的Haar特征,這種特征表示的形式簡單,計算速度快、形式多樣,由這些矩形特征原型可派生出豐富的矩形特征。
圖3 擴展后的Haar特征
3.2 對Haar-like特征求值進行加速
當使用 Haar-Like進行目標檢測時,必須將每一個Haar特征在待檢測圖像子窗口中逐漸移動以便獲得更多的Haar-Like特征,從而能夠更加準確地對圖像進行檢測,由上述檢測方法可知,假設(shè)選用分辨率為24×24的圖像作為訓練樣本,那么每張這樣的圖像樣本將得到超過18萬個Haar-Like特征。在目標檢測過程中,為加快人臉檢測的速度,在對Haar-Like特征進行計算時,Viola等提出了積分圖像的定義。積分圖是一種能夠描述全局信息的矩陣表示方法
(1)
積分圖的構(gòu)造方式是位置(i,j)處的值ii(i,j)是原圖像(i,j)左上角方向所有像素的和。逐行掃描圖像,遞歸計算每個像素(i,j)行方向的累加和s(i,j)和積分圖像ii(i,j)的值。掃描圖像一遍,當?shù)竭_圖像右下角像素時,積分圖像ii即構(gòu)造完成。積分圖僅遍歷一次圖像即可求出圖像中所有區(qū)域像素和的快速算法,大幅提高了圖像特征值計算的效率。
3.3 AdaBoost算法
AdaBoost是最優(yōu)秀的Boosting算法之一,有著堅實的理論基礎(chǔ),在實踐中得到了很好的推廣和應(yīng)用[10]。AdaBoost算法實質(zhì)是一種分類器算法,核心是通過迭代的方法從大量的Haar-Like特征中找到小部分關(guān)鍵的特征,并用其產(chǎn)生一些有效的分類器,利用大量分類能力一般的弱分類器,以一定的方法疊加起來構(gòu)成一個分類能力較強的分類器,最后級聯(lián)這些分類器得到強分類器。只要每個弱分類器的分類能力比隨機猜測的效果強,那么當將無窮多個弱分類器進行疊加時,強分類器的分類能力將無限接近100%準確[11]。該算法在實際應(yīng)用時,在人臉檢測速度和檢測精度方面都取得了理想的效果,是目前相對比較適用的人臉檢測算法。另外,所有弱分類器中的特征可以通過積分圖的方法進行計算,進一步降低計算量,加快檢測速度[12]。
一個弱分類器對應(yīng)一個Haar-Like矩形特征,由弱學習算法來訓練,找到一個分類錯誤最小的最佳閾值。判斷特征f的值vi大于某個閾值ti,當大于時則表示特定目標,當小于時則表示非搜尋的特定目標
(2)
大多情況下,一個弱分類器無法滿足識別目標的要求,因此,必須提升算法迭代地建立一個由許多弱分類器的加權(quán)和組成的強分類器
F=sign(w1f1+w2f2+…+wnfn)
(3)
加權(quán)和若<0,則符號函數(shù)返回-1,加權(quán)和等于0,則符號函數(shù)返回0。加權(quán)和大于0,則符號函數(shù)返回1。由此可以看出當符號函數(shù)返回值為1時,即找到要搜尋的目標。
級聯(lián)分類器的每一層都是一個強分類器,這些強分類器形成一種多層分類結(jié)構(gòu)。調(diào)整分類器的參數(shù),可以使每層都通過幾乎全部的正樣本,而拒絕大量的負樣本,從而在有可能存在待檢目標的區(qū)域花費較多時間,降低總體計算時間。只有被前一層的分類器判別為人臉圖像的子窗口,才會被傳到下一個分類器并進行處理。如果被判斷為非人臉,就結(jié)束對該子窗口的檢測,檢測下一個子窗口。級聯(lián)分類器的最終目的是希望得到盡可能高的檢測率和盡可能低的誤檢率[13]。
3.4 使用OpenCV進行Haar特征分類器訓練
利用OpenCV訓練Haar特征分類器,總體上包括3步:準備正負樣本圖片、然后對正樣本圖片進行裁剪和歸一化;用CreateSamples程序建正樣本集;用 HaarTraining程序訓練,得到最終的分類器模型xml文件。HaarTraining程序訓練流程如圖4所示。
圖4 級聯(lián)分類器訓練流程圖
對于正樣本,通常的做法是先把所有正樣本裁切好,并對尺寸做規(guī)整即縮放至指定大小由于HaarTraining 訓練時輸入的正樣本是vec文件,所以需要使用OpenCV自帶的CreateSamples程序?qū)蕚浜玫恼龢颖巨D(zhuǎn)換為vec文件。負樣本圖像的大小只要不小于正樣本即可,同時不能包括所要識別的目標,負樣本中如果含有所要識別正樣本的特征信息,必然導致分類器訓練失敗,或者訓練出的分類器的識別性能較差。準備好正樣本集即samples.vec文件,負樣本集及其描述文件后,接口進行訓練。
本文正樣本的數(shù)目為823,大小為24×24,格式為jpg。負樣本數(shù)目為4 121,大小為120×120,格式為jpg。正負樣本比例1∶4或者1∶5訓練出來的分類器要優(yōu)于1∶1或1∶10。正負樣本比例接近1∶1時,對負樣本的看中程度較低,在實際生活中負樣本是遠多于正樣本的。因此只能盡可能地保證在不過分看中負樣本的情況下,盡量增加負樣本的個數(shù)。許多分類器訓練失敗,絕大多數(shù)是因為負樣本數(shù)目過少,導致OpenCV訓練Haar特征分類器算法進入死循環(huán)。也有因為負樣本之間重復部分過多,或者正樣本的尺寸過大,導致訓練分類器內(nèi)存溢出。
圖5 訓練過程截圖
訓練過程截圖如圖5所示,POS后第一項為取出的正樣本數(shù),第二項為查詢過的正樣本數(shù)。NEG后第一項為負樣本個數(shù),第二項為虛警率。N為當前分類器所使用的特征數(shù),HR(Hit Rate)即為基于當前分類器閾值的命中率,F(xiàn)A(False Alarm Rate)表示基于當前分類器閾值的錯誤報警率。
3.5 嵌入式OpenCV實時檢測
圖6 檢測基本流程
檢測基本流程如圖6所示,將訓練生成的specific_target.xml文件放入Raspberry Pi對應(yīng)的文件夾下,運行所編寫的OpenCV-Python代碼,進行特定目標檢測,使用CascadeClassifier這個級聯(lián)分類器類檢測視頻流中的目標。其中,detectMultiScale函數(shù)在輸入圖像的不同尺度中檢測物體。
圖7 所選特定目標的正樣本
圖8 設(shè)定的訓練參數(shù)
圖9 訓練生成的分類器文件
圖9為生成的訓練分類器文件。訓練得到的分類器以xml形式保存,整體上來說,它包括stageType、featureType、height、width、stageParams、featureParams、stages、features幾個節(jié)點。圖10為實際測試結(jié)果的截圖,圖中可以看到?jīng)]有任何誤檢,檢測率較高,檢測速度約300 ms,可以滿足實際需求。
圖10 實驗測試結(jié)果
通過對特定目標的訓練,可以得到分類器模型文件,在實驗中可以較好地識別出物體,同時具有良好的實時性。但在實測中,發(fā)現(xiàn)目標旋轉(zhuǎn)角度較大時檢測效果并不理想,所以應(yīng)該擴大正樣本中旋轉(zhuǎn)目標個數(shù)或者專門對旋轉(zhuǎn)目標進行訓練。此外,由于每次對特定目標訓練的時候都需要收集和整理該相關(guān)目標的
樣本,而且其訓練過程花費的時間也較長,本文對特定目標手槍的訓練在4核8 GB內(nèi)存電腦上花費了35個小時。由于是進行水下的特定目標搜尋,所選取的樣本最好是根據(jù)具體場景而采集的,且由于所選搜尋目標的多樣化,急需實現(xiàn)在線Adaboost學習,在訓練過程中使用云計算來加速。如果能在線學習更新分類器,或者根據(jù)具體場景對正負樣本進行學習,這樣將大幅滿足實際應(yīng)用中對搜尋目標多樣化的要求。
[1] 楊宏輝,孫進才.基于支持向量機集成的水下目標自動識別系統(tǒng)[J].測控技術(shù),2006,25(12):14-16.
[2] 趙妮,梁峰.基于BPSO的水下目標特征選擇方法[J].計算機仿真,2008, 25(1):196-199.
[3] Balasuriya A,Ura T.Vision-based underwater cable detection and following using AUVs[C].Piscataway,NJ,USA:Proceedings of the Oceans 2002 Conference and Exhibition,2002.
[4] 邱政,汪鋒,潘元璋.一種基于頻譜細化技術(shù)的水下目標識別方法[J].電子科技,2015,28(7):56-59.
[5] 張麗.基于單視覺的水下目標識別與三維定位技術(shù)研究[D].哈爾濱:哈爾濱工程大學,2010.
[6] 王剛,王朝立,杜慶輝,等.未知視覺參數(shù)下的移動機器人動力學魯棒鎮(zhèn)定[J].上海理工大學學報,2015,37(4):368-373.
[7] Viola P,Jones M.Rapid object detection using a boosted cascade of simple features [C]. CA,USA:IEEE CVPR,2001.
[8] Viola P,Jones M.Robust real-time face detection[J].International Journal of Computer Vision, 2004,57(2):137-154.
[9] Lienhaa R, Maydt J.An extended set of Haar-like features for rapid object detection[C].TX,USA:IEEE ICIP ,2002.
[10] 王毅,王創(chuàng)新,盧進,等.基于HSV模型和改進AdaBoost算法的車牌檢測[J].電子科技,2015,28(2):107-111.
[11] 王尋,趙懷勛,劉錫蔚.基于膚色及改進的Adaboost算法的人臉檢測[J].電子科技,2013,26(9):18-21.
[12] 嚴云洋,郭志波,楊靜宇.基于特征空間劃分的AdaBoost人臉檢測算法[J].小型微型計算機系統(tǒng),2007, 28(11): 2107-2109.
[13] 張書勤.人臉級聯(lián)分類器的性能分析 [D].武漢:華中師范大學,2009.
[14] 劉紀紅,李中帆.基于視頻的人眼跟蹤方法研究[J].小型微型計算機系統(tǒng),2012,33(9): 2087-2090.
AUV Specific Target Search Based on Raspberry Pi and Haar Classifiers
SHAO Xiang,WEI Guoliang,ZHANG Bin,WANG Jianhua
(School of Optical-Electrical and Computer Engineering, University of Shanghai for Science and Technology,
Shanghai 200093, China)
The realization of autonomous underwater vehicle (AUV) identification of underwater specific targets has important practical value and research significance. This paper uses the Raspberry Pi open source hardware platform to build underwater robot vision system, and the Haar classifier training for specific target object to be searched by OpenCV. The AUV automatically loads the file in performing a specific task and complete the specific target of underwater search task through the developed program in the embedded vision system. This paper analyzes the training process and evaluated the classifier. Actual underwater experiment shows that the classifier generated by training has higher detection rate and lower error rate. The good real-time performance of the proposed scheme is also verified.
Raspberry Pi; Haar classifier; OpenCV; AUV; Adaboost algorithm
2016- 05- 16
邵翔(1991-),男,碩士研究生。研究方向:機器視覺,機器人。
10.16180/j.cnki.issn1007-7820.2017.02.034
TP368
A
1007-7820(2017)02-130-05