蔣強衛(wèi),甘興利,李雅寧
(1.哈爾濱工程大學(xué) 信息與通信工程學(xué)院,黑龍江 哈爾濱 150000; 2.衛(wèi)星導(dǎo)航系統(tǒng)與裝備技術(shù)國家重點實驗室,河北 石家莊 050081)
物體識別和定位是機器人視覺導(dǎo)航、智能監(jiān)控、服務(wù)型機器人、工業(yè)自動化和汽車安全駕駛等領(lǐng)域的非常關(guān)鍵的技術(shù),與之相關(guān)的技術(shù)也得到了前所未有的發(fā)展和重視。近幾年興起的深度學(xué)習(xí)是研究的熱點[1],在無人駕駛和機器人等方面應(yīng)用廣泛。卷積神經(jīng)網(wǎng)絡(luò)作為深度學(xué)習(xí)的重要分支,通過大量的樣本數(shù)據(jù)訓(xùn)練,學(xué)習(xí)到物體相應(yīng)特征,從而實現(xiàn)高效的物體識別。雙目立體視覺定位因其具有較大測量范圍、較高的測量精度和低成本,成為機器人視覺定位、無人駕駛等領(lǐng)域最常用的一種方法。
目前有許多方法用于檢測障礙物和測距(傳統(tǒng)的目標測量方法,如激光雷達、紅外測距和超聲波測距等),但這些傳統(tǒng)測距技術(shù)所用的傳感器容易受到其他傳感器的影響和環(huán)境干擾,導(dǎo)致測距不準,存在的一個最大缺點是不能檢測與識別目標物體[2]。
圖1 基于CNN雙目視覺物體識別和定位算法流程
據(jù)此,本文提出了基于CNN雙目視覺物體識別與定位的方法,其實現(xiàn)流程如圖1所示。在特征點匹配算法的研究中發(fā)現(xiàn),SURF算法[3]是一種有效的特征點提取和匹配的算法[4],相比于傳統(tǒng)的SIFT算法具有更高的效率和穩(wěn)定性[5]。在雙目三維重建中,重投影矩陣Q隨著目標與攝像頭的距離變化也會發(fā)生相應(yīng)的變化[6],進而影響到定位精度,通過采樣大量數(shù)據(jù),通過最小二乘法擬合位置和視差模型。實驗結(jié)果表明,改進后的三維重建模型有效提高了雙目視覺目標定位的精度。
物體識別,有時又叫做目標檢測[7],其任務(wù)有2個:① 在給定的測試圖片的情況下,預(yù)測其中包含的物體實例的類別;② 預(yù)測給定測試圖像中物體的位置,用矩形框畫出來,效果如圖2所示。
圖2 物體識別實例
卷積神經(jīng)網(wǎng)絡(luò)是由Lencun在1989年提出的一種網(wǎng)絡(luò)結(jié)構(gòu),現(xiàn)已成為語言分析和圖像識別領(lǐng)域研究的熱點。它的權(quán)值共享網(wǎng)絡(luò)和生物神經(jīng)網(wǎng)絡(luò)類似,降低了網(wǎng)絡(luò)的復(fù)雜度,減少權(quán)值的數(shù)量。從結(jié)構(gòu)上看,CNN是一個多層的神經(jīng)網(wǎng)絡(luò),主要有輸入層、卷積層、池化層和全連接層組成。每層由多個二維平面組成,而每個平面是由多個獨立的神經(jīng)元組成,經(jīng)典的LeNet-5結(jié)構(gòu)如圖3所示。
圖3 LeNet-5卷積神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)
輸入層:通常是輸入為二值圖像或RGB彩色圖像,在輸入之前對圖像濾波[8]、尺寸修改等預(yù)處理操作以提高網(wǎng)絡(luò)識別結(jié)果。
卷積層:使用卷積層的原因是通過卷積運算,可以使原信號特征增強,并且降低噪音[9]。
池化層:也叫降采樣層,根據(jù)圖像局部相關(guān)性原理,對圖像進行子采樣,以減少計算量,同時保持圖像旋轉(zhuǎn)不變性[10],還可以混淆特征的具體位置。因為某個特征找出來后,它的具體位置已經(jīng)不重要了,只需要這個特征與其他的相對位置。
全連接層:一般采用softmax全連接[11],得到的激活值即CNN提取到的圖片特征,在整個CNN中起到“分類器”的作用,即全連接層將學(xué)到的“分布式特征表示”映射到樣本標記空間。
采用由北卡羅來納大學(xué)教堂山分校的Weiliu博士提出的物體識別模型(Single Shot MultiBox Detector,SSD),它既保證了速度,又保證了精度,與現(xiàn)有的檢測模型一樣,將檢測過程整合成一個單一的深度神經(jīng)網(wǎng)絡(luò),便于訓(xùn)練和優(yōu)化,同時提高了精度。該網(wǎng)絡(luò)綜合了Faster R-CNN[12]的anchor box和YOLO[13]的單個神經(jīng)網(wǎng)絡(luò)檢測思路,既有Faster R-CNN的準確度,又有YOLO的檢測速度,可以實現(xiàn)高準確度的實時檢測。目標檢測算法性能對比如表1所示。
表1目標檢測算法性能對比
目標檢測算法準確率/%幀率/FPSFast R-CNN(VGG-16)73.27Faster R-CNN62.1 17YOLO63.4 45Fast YOLO52.7155SSD30071.2 58SSD50075.1 23
SSD是一種多尺度特征圖檢測模型,其檢測網(wǎng)絡(luò)模型如圖4所示。將輸入圖像resize到300*300,再將圖像輸入到VGG卷積神經(jīng)網(wǎng)絡(luò)中提取特征,然后添加額外的卷積層,這些卷積層的大小是逐層遞減的,可以在多尺度下進行目標檢測。模型選擇的特征圖包括:38*38(block4),19*19(block7),10*10(block8),5*5(block9),3*3(block10),1*1(block11)。每一個block中包含物體實例的可能性,進行一個非極大值抑制(Non-maximum suppression)得到最終的置信度。本文采用PASCLA VOC數(shù)據(jù)集訓(xùn)練自己的網(wǎng)絡(luò),包括20類物體,加上背景一共21類。
圖4 SSD多尺度特征檢測模型
SURF算法是對SIFT算法的改進和優(yōu)化。SURF借鑒了SIFT中的簡化近似思想,將DoH中的高階二階微分模板進行近似簡化,用積分圖像提高卷積的運算速度,犧牲很小的精度為代價,獲得更快的特征點匹配運算速度。SURF特征點匹配主要包括3個步驟:
① 特征點提取。計算圖像的積分圖像,采用方框濾波近似代替二階高斯濾波[14],計算待候選點和周圍點的Hessian值[15],判斷候選點與周圍的值是否最大,如果是最大,則為特征點。
② 特征點描述。在檢測到的特征點周圍小區(qū)域上計算Haar小波[16],并計算其4種和以構(gòu)建特征描述。
③ 利用特征點描述向量的匹配。
SURF算法對特征點檢測基于Hessian矩陣,給定積分圖像中的一點x(x,y)在點x處,尺度為σ的Hessian矩陣H(x,σ)定義如下:
(1)
為了將模板與圖像的卷積轉(zhuǎn)化為盒子濾波(Box Filter)運算,需要對高斯二階微分模板進行簡化,簡化后的模板由幾個矩形區(qū)域組成,矩形區(qū)域內(nèi)填充同一值,如圖5所示,在簡化模板的白色區(qū)域的值為1,黑色區(qū)域的值為-1,灰色區(qū)域的值為0。對于σ=1.2的高斯二階微分濾波,設(shè)定模板的大小為9*9,并用它作為最小的尺度空間值對圖像進行濾波和斑點檢測。使用Dxx、Dyy和Dxy表示模板與圖像進行卷積的結(jié)果,這樣,便可將Hessian矩陣的行列式做如下簡化:
Det(Happrox)=DxxDyy-(0.9Dxy)2,
(2)
使用近似的Hessian矩陣行列式來表示圖中的某一點的斑點響應(yīng)值,遍歷圖像中所有的像素點,使用不同的模板尺寸,便形成了尺度的斑點響應(yīng)的金字塔圖像,利用這一金字塔圖像,在三維(x,y,σ)空間中,每個3*3*3的區(qū)域進行非極大值抑制,選取比相鄰的26個點響應(yīng)值都大的點作為斑點的特征點,即可得到穩(wěn)定的SURF特征點的位置和尺度值。
(a) Lxx的簡化模型
(b) Lxy的簡化模型
通過上一步檢測出來的特征點,對每一個特征點為圓心和6σ為半徑的圓形區(qū)域計算x和y方向的Haar小波響應(yīng)[17]。Haar小波響應(yīng)模型如圖6所示,以特征點為中心對這些響應(yīng)進行高斯加權(quán)。采用張角為π/3的扇形區(qū)域的滑動窗口,并對滑動窗口內(nèi)圖像Haar小波x和y方向的響應(yīng)進行累加,得到一個局部的方向向量,轉(zhuǎn)動扇形遍歷整個圓,選擇最長的方向作為特征點的主方向。
圖6 Haar濾波器模型
以特征點為中心,將坐標軸旋轉(zhuǎn)到主方向,即
(3)
沿特征點的主方向?qū)?0*20的圖像劃分為4*4的子塊,每個子塊利用2 s的Haar小波模板進行響應(yīng)值計算,然后對響應(yīng)值進行統(tǒng)計(∑dx,∑dy,∑|dx|,∑|dy|)形成特征矢量。所有子區(qū)域的向量構(gòu)成該點的特征向量,得到長度4*4*4=64維的特征向量。
得到左右2幅圖的特征點后,采用歐式距離來判斷匹配特征點,為了剔除誤匹配的點,以左圖為參考圖像,因為左右圖像經(jīng)過矯正后幾乎是平行的,所以檢索的時候,只檢索右邊圖像[y-3,y+3]垂直范圍[18],提高了檢索效率和匹配精度。
雙目立體視覺三維重建是基于視差原理,以左相機為參考,左圖像上的任意一點要能在右圖像上找到對應(yīng)的匹配點,就可以確定出該點的三維信息,上面闡述了采用SURF特征點匹配算法,識別檢測圖像的特征點和匹配,通過神經(jīng)網(wǎng)絡(luò)到目標的區(qū)域,計算區(qū)域內(nèi)的匹配點的視差,從而得到目標的三維信息。工作原理如圖7所示。
圖7 雙目定位場景模型
由三角測量原理,即由2臺攝像機的圖像平面和被測物體之間構(gòu)成一個三角形,如果已知2臺攝像機之間的位置關(guān)系,便可以通過三角幾何關(guān)系求解空間物體特征點的三維坐標。以左攝像機的O1為原點坐標系,通過相機標定和矯正,得出重映射矩陣Q,得到世界坐標系和相機坐標系關(guān)系,進而計算場景點P1(x1,y1,z1)的計算關(guān)系式如下:
tempx=Q[0][0]×x1+Q[0][3],
(4)
tempy=Q[1][1]×y1+Q[1][3],
(5)
temp=Q[2][3],
(6)
temp=Q[3][2]×(u1-u2)+Q[3][3],
(7)
(8)
實際實驗過程中發(fā)現(xiàn),導(dǎo)致的誤差與相機標定誤差和匹配點誤差有關(guān)[19],通過均值濾波,濾除一些異常匹配點,計算均值作為目標視差。距離和視差并非完全符合以上關(guān)系式,采用最小二乘曲線擬合,對距離和視差非線性優(yōu)化,提高定位精度。
下面開展物體識別、特征點匹配和物體定位的綜合實驗。卷積神經(jīng)網(wǎng)絡(luò)算法是基于Caffe(Converlution Architecture for Fast Feature Embedding)框架編寫,特征點匹配和定位算法是C++編寫,通過Python腳本調(diào)用這2個功能模塊。開發(fā)環(huán)境采用Ubuntu系統(tǒng)。實驗中采用2個Logitech C992攝像頭,DELL電腦(Intel i7、GTX960,內(nèi)存4G,顯存4G),組成平行雙目視覺系統(tǒng)。系統(tǒng)實物圖如圖8所示。
圖8 雙目視覺目標識別與定位系統(tǒng)
目標識別實驗:采用PASCLA VOC數(shù)據(jù)集訓(xùn)練自己的網(wǎng)絡(luò),一共包括20類物體。單一目標識別實驗如圖9所示,該系統(tǒng)識別到顯示器,置信度達到了0.997。目標像素中心采樣結(jié)果如圖10所示。實驗結(jié)果表明,目標中心變動范圍在(-2,2),識別目標穩(wěn)定,保證后續(xù)目標定位穩(wěn)定性。
圖9 目標識別實驗
圖10 目標像素中心采樣結(jié)果
特征點匹配實驗:通過SURF特征點匹配算法,得到目標左右圖像的匹配點,如圖11所示。
圖11 SURF特征點匹配結(jié)果
計算目標區(qū)域類的視差值如圖12所示,通過中值濾波后的視差值,去除了異常點視差,穩(wěn)定在(68,74)范圍,可以提高后續(xù)的定位精度。
(a) 未濾波的視差
(b) 濾波后的視差值圖12 目標范圍內(nèi)計算的視差值
目標識別與定位實驗:選取單一的目標進行目標識別與定位實驗。視差和距離(z軸方向)的關(guān)系,如圖13所示。
(a) 視差值/距離分布
(b) 擬合視差值/距離曲線圖13 視差/距離分布
通過對比擬合和濾波后測距誤差明顯減少,從而提高定位精度和穩(wěn)定性,如圖14所示。
(a) 實測數(shù)據(jù)/真實數(shù)據(jù)對比
(b) 擬合、濾波后實測數(shù)據(jù)/真實數(shù)據(jù)對比圖14 測距誤差對比
該系統(tǒng)能夠精準地實現(xiàn)目標識別與定位,實測結(jié)果如圖15所示。
圖15 實測結(jié)果
實驗結(jié)果表明,通過擬合后的雙目立體模型定位精度明顯提高,基于CNN雙目特征點匹配目標檢測與定位系統(tǒng),能夠很好地實現(xiàn)目標識別與定位。
針對傳統(tǒng)的物體識別算法識別物體類別單一、基于物體特定特征實現(xiàn)識別的精度不高等問題,本文采用CNN改進雙目物體識別與定位系統(tǒng)實現(xiàn)物體識別類別多樣,識別精度也有所提高。針對雙目標定誤差,對誤差進行分析,對實驗結(jié)果和標定相機參數(shù)進行擬合,濾除實驗異常點,提高物體定位精度。提出的CNN和雙目視覺原理結(jié)合以實現(xiàn)物體識別和定位,識別速度、精度和定位精度達到實用性要求,可以廣泛應(yīng)用于機器人視覺方面。在未來的工作中,通過GPU加速,提高匹配速度,實現(xiàn)在更高要求的實用場景中應(yīng)用。