蔣強衛,甘興利,李雅寧
(1.哈爾濱工程大學 信息與通信工程學院,黑龍江 哈爾濱 150000; 2.衛星導航系統與裝備技術國家重點實驗室,河北 石家莊 050081)
物體識別和定位是機器人視覺導航、智能監控、服務型機器人、工業自動化和汽車安全駕駛等領域的非常關鍵的技術,與之相關的技術也得到了前所未有的發展和重視。近幾年興起的深度學習是研究的熱點[1],在無人駕駛和機器人等方面應用廣泛。卷積神經網絡作為深度學習的重要分支,通過大量的樣本數據訓練,學習到物體相應特征,從而實現高效的物體識別。雙目立體視覺定位因其具有較大測量范圍、較高的測量精度和低成本,成為機器人視覺定位、無人駕駛等領域最常用的一種方法。
目前有許多方法用于檢測障礙物和測距(傳統的目標測量方法,如激光雷達、紅外測距和超聲波測距等),但這些傳統測距技術所用的傳感器容易受到其他傳感器的影響和環境干擾,導致測距不準,存在的一個最大缺點是不能檢測與識別目標物體[2]。

圖1 基于CNN雙目視覺物體識別和定位算法流程
據此,本文提出了基于CNN雙目視覺物體識別與定位的方法,其實現流程如圖1所示。在特征點匹配算法的研究中發現,SURF算法[3]是一種有效的特征點提取和匹配的算法[4],相比于傳統的SIFT算法具有更高的效率和穩定性[5]。在雙目三維重建中,重投影矩陣Q隨著目標與攝像頭的距離變化也會發生相應的變化[6],進而影響到定位精度,通過采樣大量數據,通過最小二乘法擬合位置和視差模型。實驗結果表明,改進后的三維重建模型有效提高了雙目視覺目標定位的精度。
物體識別,有時又叫做目標檢測[7],其任務有2個:① 在給定的測試圖片的情況下,預測其中包含的物體實例的類別;② 預測給定測試圖像中物體的位置,用矩形框畫出來,效果如圖2所示。

圖2 物體識別實例
卷積神經網絡是由Lencun在1989年提出的一種網絡結構,現已成為語言分析和圖像識別領域研究的熱點。它的權值共享網絡和生物神經網絡類似,降低了網絡的復雜度,減少權值的數量。從結構上看,CNN是一個多層的神經網絡,主要有輸入層、卷積層、池化層和全連接層組成。每層由多個二維平面組成,而每個平面是由多個獨立的神經元組成,經典的LeNet-5結構如圖3所示。

圖3 LeNet-5卷積神經網絡模型結構
輸入層:通常是輸入為二值圖像或RGB彩色圖像,在輸入之前對圖像濾波[8]、尺寸修改等預處理操作以提高網絡識別結果。
卷積層:使用卷積層的原因是通過卷積運算,可以使原信號特征增強,并且降低噪音[9]。
池化層:也叫降采樣層,根據圖像局部相關性原理,對圖像進行子采樣,以減少計算量,同時保持圖像旋轉不變性[10],還可以混淆特征的具體位置。因為某個特征找出來后,它的具體位置已經不重要了,只需要這個特征與其他的相對位置。
全連接層:一般采用softmax全連接[11],得到的激活值即CNN提取到的圖片特征,在整個CNN中起到“分類器”的作用,即全連接層將學到的“分布式特征表示”映射到樣本標記空間。
采用由北卡羅來納大學教堂山分校的Weiliu博士提出的物體識別模型(Single Shot MultiBox Detector,SSD),它既保證了速度,又保證了精度,與現有的檢測模型一樣,將檢測過程整合成一個單一的深度神經網絡,便于訓練和優化,同時提高了精度。該網絡綜合了Faster R-CNN[12]的anchor box和YOLO[13]的單個神經網絡檢測思路,既有Faster R-CNN的準確度,又有YOLO的檢測速度,可以實現高準確度的實時檢測。目標檢測算法性能對比如表1所示。
表1目標檢測算法性能對比

目標檢測算法準確率/%幀率/FPSFast R-CNN(VGG-16)73.27Faster R-CNN62.1 17YOLO63.4 45Fast YOLO52.7155SSD30071.2 58SSD50075.1 23
SSD是一種多尺度特征圖檢測模型,其檢測網絡模型如圖4所示。將輸入圖像resize到300*300,再將圖像輸入到VGG卷積神經網絡中提取特征,然后添加額外的卷積層,這些卷積層的大小是逐層遞減的,可以在多尺度下進行目標檢測。模型選擇的特征圖包括:38*38(block4),19*19(block7),10*10(block8),5*5(block9),3*3(block10),1*1(block11)。每一個block中包含物體實例的可能性,進行一個非極大值抑制(Non-maximum suppression)得到最終的置信度。本文采用PASCLA VOC數據集訓練自己的網絡,包括20類物體,加上背景一共21類。

圖4 SSD多尺度特征檢測模型
SURF算法是對SIFT算法的改進和優化。SURF借鑒了SIFT中的簡化近似思想,將DoH中的高階二階微分模板進行近似簡化,用積分圖像提高卷積的運算速度,犧牲很小的精度為代價,獲得更快的特征點匹配運算速度。SURF特征點匹配主要包括3個步驟:
① 特征點提取。計算圖像的積分圖像,采用方框濾波近似代替二階高斯濾波[14],計算待候選點和周圍點的Hessian值[15],判斷候選點與周圍的值是否最大,如果是最大,則為特征點。
② 特征點描述。在檢測到的特征點周圍小區域上計算Haar小波[16],并計算其4種和以構建特征描述。
③ 利用特征點描述向量的匹配。
SURF算法對特征點檢測基于Hessian矩陣,給定積分圖像中的一點x(x,y)在點x處,尺度為σ的Hessian矩陣H(x,σ)定義如下:
(1)

為了將模板與圖像的卷積轉化為盒子濾波(Box Filter)運算,需要對高斯二階微分模板進行簡化,簡化后的模板由幾個矩形區域組成,矩形區域內填充同一值,如圖5所示,在簡化模板的白色區域的值為1,黑色區域的值為-1,灰色區域的值為0。對于σ=1.2的高斯二階微分濾波,設定模板的大小為9*9,并用它作為最小的尺度空間值對圖像進行濾波和斑點檢測。使用Dxx、Dyy和Dxy表示模板與圖像進行卷積的結果,這樣,便可將Hessian矩陣的行列式做如下簡化:
Det(Happrox)=DxxDyy-(0.9Dxy)2,
(2)
使用近似的Hessian矩陣行列式來表示圖中的某一點的斑點響應值,遍歷圖像中所有的像素點,使用不同的模板尺寸,便形成了尺度的斑點響應的金字塔圖像,利用這一金字塔圖像,在三維(x,y,σ)空間中,每個3*3*3的區域進行非極大值抑制,選取比相鄰的26個點響應值都大的點作為斑點的特征點,即可得到穩定的SURF特征點的位置和尺度值。

(a) Lxx的簡化模型

(b) Lxy的簡化模型
通過上一步檢測出來的特征點,對每一個特征點為圓心和6σ為半徑的圓形區域計算x和y方向的Haar小波響應[17]。Haar小波響應模型如圖6所示,以特征點為中心對這些響應進行高斯加權。采用張角為π/3的扇形區域的滑動窗口,并對滑動窗口內圖像Haar小波x和y方向的響應進行累加,得到一個局部的方向向量,轉動扇形遍歷整個圓,選擇最長的方向作為特征點的主方向。

圖6 Haar濾波器模型
以特征點為中心,將坐標軸旋轉到主方向,即
(3)
沿特征點的主方向將20*20的圖像劃分為4*4的子塊,每個子塊利用2 s的Haar小波模板進行響應值計算,然后對響應值進行統計(∑dx,∑dy,∑|dx|,∑|dy|)形成特征矢量。所有子區域的向量構成該點的特征向量,得到長度4*4*4=64維的特征向量。
得到左右2幅圖的特征點后,采用歐式距離來判斷匹配特征點,為了剔除誤匹配的點,以左圖為參考圖像,因為左右圖像經過矯正后幾乎是平行的,所以檢索的時候,只檢索右邊圖像[y-3,y+3]垂直范圍[18],提高了檢索效率和匹配精度。
雙目立體視覺三維重建是基于視差原理,以左相機為參考,左圖像上的任意一點要能在右圖像上找到對應的匹配點,就可以確定出該點的三維信息,上面闡述了采用SURF特征點匹配算法,識別檢測圖像的特征點和匹配,通過神經網絡到目標的區域,計算區域內的匹配點的視差,從而得到目標的三維信息。工作原理如圖7所示。

圖7 雙目定位場景模型
由三角測量原理,即由2臺攝像機的圖像平面和被測物體之間構成一個三角形,如果已知2臺攝像機之間的位置關系,便可以通過三角幾何關系求解空間物體特征點的三維坐標。以左攝像機的O1為原點坐標系,通過相機標定和矯正,得出重映射矩陣Q,得到世界坐標系和相機坐標系關系,進而計算場景點P1(x1,y1,z1)的計算關系式如下:
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)
實際實驗過程中發現,導致的誤差與相機標定誤差和匹配點誤差有關[19],通過均值濾波,濾除一些異常匹配點,計算均值作為目標視差。距離和視差并非完全符合以上關系式,采用最小二乘曲線擬合,對距離和視差非線性優化,提高定位精度。
下面開展物體識別、特征點匹配和物體定位的綜合實驗。卷積神經網絡算法是基于Caffe(Converlution Architecture for Fast Feature Embedding)框架編寫,特征點匹配和定位算法是C++編寫,通過Python腳本調用這2個功能模塊。開發環境采用Ubuntu系統。實驗中采用2個Logitech C992攝像頭,DELL電腦(Intel i7、GTX960,內存4G,顯存4G),組成平行雙目視覺系統。系統實物圖如圖8所示。

圖8 雙目視覺目標識別與定位系統
目標識別實驗:采用PASCLA VOC數據集訓練自己的網絡,一共包括20類物體。單一目標識別實驗如圖9所示,該系統識別到顯示器,置信度達到了0.997。目標像素中心采樣結果如圖10所示。實驗結果表明,目標中心變動范圍在(-2,2),識別目標穩定,保證后續目標定位穩定性。

圖9 目標識別實驗

圖10 目標像素中心采樣結果
特征點匹配實驗:通過SURF特征點匹配算法,得到目標左右圖像的匹配點,如圖11所示。

圖11 SURF特征點匹配結果
計算目標區域類的視差值如圖12所示,通過中值濾波后的視差值,去除了異常點視差,穩定在(68,74)范圍,可以提高后續的定位精度。

(a) 未濾波的視差

(b) 濾波后的視差值圖12 目標范圍內計算的視差值
目標識別與定位實驗:選取單一的目標進行目標識別與定位實驗。視差和距離(z軸方向)的關系,如圖13所示。

(a) 視差值/距離分布

(b) 擬合視差值/距離曲線圖13 視差/距離分布
通過對比擬合和濾波后測距誤差明顯減少,從而提高定位精度和穩定性,如圖14所示。

(a) 實測數據/真實數據對比

(b) 擬合、濾波后實測數據/真實數據對比圖14 測距誤差對比
該系統能夠精準地實現目標識別與定位,實測結果如圖15所示。

圖15 實測結果
實驗結果表明,通過擬合后的雙目立體模型定位精度明顯提高,基于CNN雙目特征點匹配目標檢測與定位系統,能夠很好地實現目標識別與定位。
針對傳統的物體識別算法識別物體類別單一、基于物體特定特征實現識別的精度不高等問題,本文采用CNN改進雙目物體識別與定位系統實現物體識別類別多樣,識別精度也有所提高。針對雙目標定誤差,對誤差進行分析,對實驗結果和標定相機參數進行擬合,濾除實驗異常點,提高物體定位精度。提出的CNN和雙目視覺原理結合以實現物體識別和定位,識別速度、精度和定位精度達到實用性要求,可以廣泛應用于機器人視覺方面。在未來的工作中,通過GPU加速,提高匹配速度,實現在更高要求的實用場景中應用。