李山坤,陳立偉,李 爽
(1.哈爾濱工程大學(xué) 信息與通信工程學(xué)院,黑龍江 哈爾濱 150001;2.衛(wèi)星導(dǎo)航系統(tǒng)與裝備技術(shù)國家重點(diǎn)實(shí)驗(yàn)室,河北 石家莊050081)
近年來,隨著科學(xué)技術(shù)的迅猛發(fā)展,圖像作為現(xiàn)實(shí)生活中容易獲取、包含豐富信息的一種數(shù)據(jù),對圖像信息的處理已經(jīng)成為信息科學(xué)的一個重要研究領(lǐng)域。
雙目視覺作為機(jī)器視覺的一個重要分支,具有效率高、精度合適、系統(tǒng)結(jié)構(gòu)簡單和成本低等優(yōu)點(diǎn),在虛擬現(xiàn)實(shí)、機(jī)器人導(dǎo)航及非接觸式測量等許多方向均極具應(yīng)用價值[1]。利用雙目視覺來實(shí)現(xiàn)特定目標(biāo)測距也已經(jīng)成為了一個重要研究方向。WANG[2]等人提出了基于YOLO的雙目特征點(diǎn)匹配和目標(biāo)識別定位研究方法,他們首先通過YOLO進(jìn)行目標(biāo)檢測和識別,并針對相同物體利用加速穩(wěn)健特征匹配算法(SURF)特征點(diǎn)進(jìn)行匹配,并且針對物體紋理少,不能實(shí)現(xiàn)有效定位的問題,提出了多特征點(diǎn)融合算法,將Canny邊緣檢測算法和FAST角點(diǎn)算進(jìn)行結(jié)合,使得物體可以檢測目標(biāo)的邊緣信息,從而提高紋理少物體的匹配點(diǎn)的數(shù)量。然而,由于YOLO檢測網(wǎng)絡(luò)屬于目標(biāo)檢測模型,并且提取信息是基于邊框內(nèi)部的物體特征,會提取到與目標(biāo)無關(guān)的特征點(diǎn),從而影響定位精度。
為解決這樣的問題,本文引入了Mask R-CNN(Mask Region with Convolution Neural Network Feature)網(wǎng)絡(luò)模型[3],并通過SURF來實(shí)現(xiàn)雙目視覺的物體識別和定位。Mask R-CNN是完成對圖像的將目標(biāo)檢測與分割并行計(jì)算的神經(jīng)網(wǎng)絡(luò)模型,該檢測網(wǎng)絡(luò)能夠快速確定圖像中的目標(biāo)位置,經(jīng)網(wǎng)絡(luò)訓(xùn)練選取出區(qū)域建議框,在此基礎(chǔ)上進(jìn)行像素級別的分割,具有較高的檢測性能。實(shí)驗(yàn)結(jié)果證明,應(yīng)用結(jié)合相較于單獨(dú)的目標(biāo)檢測任務(wù)效果更好。
雙目視覺定位系統(tǒng)流程如圖1所示。
圖1 Mask R-CNN雙目視覺定位系統(tǒng)流程Fig.1 Mask R-CNN binocular vision positioning system
基于Mask R-CNN的雙目神經(jīng)網(wǎng)絡(luò)與雙目視覺物體識別與定位的系統(tǒng)實(shí)現(xiàn),通過雙目相機(jī)采集雙目左右圖像,并且利用Matlab工具包對相機(jī)進(jìn)行標(biāo)定,獲取相機(jī)內(nèi)參和外參,然后根據(jù)獲取的參數(shù)對圖像去畸變和極線校正。以左相機(jī)圖像為參考進(jìn)行分割,然后利用SURF算法進(jìn)行特征點(diǎn)匹配[4],根據(jù)特征點(diǎn)的視差值計(jì)算出物體相對相機(jī)的位置。但在對相機(jī)標(biāo)定的過程中,受到相機(jī)標(biāo)定精度、圖像去畸變和極線校正精度的影響,在遠(yuǎn)距離情況下,計(jì)算距離會出現(xiàn)明顯偏差,為此采用最小二乘法對相機(jī)參數(shù)和位置信息進(jìn)行擬合校正,提高定位精度。
Mask R-CNN是REN等人在Faster R-CNN[5]基礎(chǔ)上進(jìn)行完善的深度神經(jīng)網(wǎng)絡(luò)模型,在對圖像物體識別和分割任務(wù)上具有重大的開創(chuàng)性意義。該網(wǎng)絡(luò)模型主要由5部分組成:特征提取網(wǎng)絡(luò)、特征組合網(wǎng)絡(luò)[6]、區(qū)域建議網(wǎng)絡(luò)(Region Proposal Network,RPN)、感興趣區(qū)域?qū)R操作(RoIAlign)和全連接網(wǎng)絡(luò)(FCN)[7-8]。
Mask R-CNN繼承了Faster R-CNN的網(wǎng)絡(luò)結(jié)構(gòu),在Faster R-CNN網(wǎng)絡(luò)架構(gòu)的基礎(chǔ)上進(jìn)行了改進(jìn),采用了深度卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行圖像底層特征提取得到特征映射,由區(qū)域建議網(wǎng)絡(luò)計(jì)算得到感興趣區(qū)域(RoI),并且使用ROIAlign替代了感興趣池化操作(RoIPool),取消了量化操作,解決了輸入輸出像素不對齊的問題,并采用雙線性插值的方法獲得確定位置的像素,輸出固定尺寸的特征圖,在輸出特征圖后面連接全連接網(wǎng)絡(luò)層進(jìn)行分類和檢測回歸,另一分支連接FCN進(jìn)行圖像像素級別的語義分割,由此,實(shí)現(xiàn)了對圖像的檢測和分割,即實(shí)現(xiàn)了實(shí)例分割。Mask R-CNN網(wǎng)絡(luò)流程如圖2所示。
圖2 Mask R-CNN網(wǎng)絡(luò)流程Fig.2 Mask R-CNN network flow chart
RPN的產(chǎn)生需要在卷積的特征圖上進(jìn)行網(wǎng)格滑動,利用n*n的網(wǎng)格框與輸入的卷積特征映射圖進(jìn)行全連接,將滑動窗口映射到低維的向量,通常映射的維度為256維或512維。利用2個全連接層分別對該向量進(jìn)行分類和邊框回歸,為使輸入圖像的有效區(qū)域達(dá)到最大值,將n值設(shè)為3,將網(wǎng)絡(luò)結(jié)構(gòu)在圖中表示出來,在全連接層中,為實(shí)現(xiàn)空間位置的權(quán)值共享,采用了滑動窗口的方式進(jìn)行計(jì)算。該結(jié)構(gòu)是由一個n*n的卷積層進(jìn)行卷積變換,然后再由2個1*1的滑動卷積層進(jìn)行處理。區(qū)域推薦網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示。
圖3 區(qū)域推薦網(wǎng)絡(luò)結(jié)構(gòu)Fig.3 Region proposal network structure
在每個滑動窗口的位置上,可以同時預(yù)測k個推薦區(qū)域,區(qū)域回歸層會產(chǎn)生k個框的4k個坐標(biāo)編碼。分類層會針對每個推薦區(qū)域統(tǒng)計(jì)的目標(biāo)概率輸出2k個評分。這些被參數(shù)化后的參考框點(diǎn)成為錨點(diǎn)。每個錨點(diǎn)都集中在識別問題的滑動窗口中間。通常使用3個尺度和3個長寬比。使用該方法的主要原因是在計(jì)算錨和其相關(guān)的函數(shù)時都具有平移不變形。這樣可以保證在對圖像預(yù)測時,當(dāng)目標(biāo)位置發(fā)生了變化時,推薦目標(biāo)也隨之發(fā)生變化,函數(shù)可以計(jì)算出任意位置的推薦目標(biāo)區(qū)域。
最小化Fast R-CNN[9]的多任務(wù)損失函數(shù),對于一張圖片的損失函數(shù)定義為:
(1)
在Faster R-CNN的檢測網(wǎng)絡(luò)中,分支RoIpool對生成的每個RoI提取小特征的映射。RoIPool首先將浮點(diǎn)數(shù)RoI量化為特征映射的離散粒度,然后將量化的RoI細(xì)分為自身量化的空間區(qū)間,最后聚合每個區(qū)間覆蓋的特征值,在量化過程中將浮點(diǎn)數(shù)量化為整數(shù),這樣直接舍棄小數(shù)部分輸出像素值就會導(dǎo)致像素偏差,被稱為“不匹配問題”[10]。但是對于語義分割來說,對預(yù)測各個物體精確的像素掩碼有較大影響,為了解決這個問題,便引入了RoIAlign層。
RoIAlign 從RoIpool的局限性源頭出發(fā),取消了對RoI邊界和區(qū)間的嚴(yán)格量化操作,采用雙線性插值[9]的方法獲得坐標(biāo)為浮點(diǎn)數(shù)的像素點(diǎn)上的圖像數(shù)值,從而將整個特征聚集過程轉(zhuǎn)化為一個連續(xù)的操作,這樣可以保證提取到的特征與輸入是相互對齊的。RoIAlign原理如圖4所示。
圖4 RoIAlign原理Fig.4 Schematic diagram of RoIAlign
圖4中,底部的虛線網(wǎng)格表示提取到的特征映射圖,黑色線框表示ROI區(qū)域,區(qū)域大小為2×2,包含4個單元,在實(shí)驗(yàn)過程中,采樣點(diǎn)設(shè)置為4會得到最佳結(jié)果。因此在每個單元中設(shè)置4個采樣點(diǎn),將每個單元劃分為4個子單元,并且計(jì)算每個子單元中心點(diǎn)的像素值對應(yīng)的概率值,但是該像素點(diǎn)大概率會是一個浮點(diǎn)數(shù),但在圖像上的浮點(diǎn)是沒有像素值的,這個值由相鄰最近的整數(shù)像素點(diǎn)通過雙線性插值計(jì)算得到。然后進(jìn)行最大池化或者均值池化操作得到固定維度的輸出。
整個網(wǎng)絡(luò)任務(wù)包括識別[11]、檢測和分割3個分支,因此損失函數(shù)包含分類誤差、檢測誤差和分割誤差,即:
L=Lcls+Lbox+Ls,
(2)
式中,Lcls,Lbox分別表示分類損失和回歸損失,利用全連接預(yù)測出每個RoI的所屬類別及其矩形框在圖中的坐標(biāo)位置。分割分支采用FCN對每個RoI有k×n×n(n表示RoIAlign特征圖的大小,k表示類別數(shù))維度的輸出,對每一個像素應(yīng)用sigmoid函數(shù)進(jìn)行分類,然后取RoI上所有像素的交叉熵的平均值作為Ls[12]。
SURF算法是以尺度不變特征轉(zhuǎn)換(SIFT)算法為基礎(chǔ)提出的一種快速魯棒性特征提取的配準(zhǔn)算法。該算法不僅對圖像旋轉(zhuǎn)、縮放具有極強(qiáng)的適應(yīng)性,而且圖像在光照變化、視角變化和噪聲的情況下也具有一定程度的穩(wěn)定性能[13]。
SURF算法對特征點(diǎn)檢測基于Hessian矩陣,圖像上的每一個像素點(diǎn)都采用Hessian矩陣進(jìn)行計(jì)算,對于給定積分圖像上的一點(diǎn)f(x,y)在點(diǎn)f處[14],尺度為σ的Hessian矩陣H(x,σ)的函數(shù)表達(dá)式為:
(3)
構(gòu)建尺度空間的過程為在圖像上下采樣,然后將其與各尺度的二維高斯函數(shù)進(jìn)行卷積操作。在進(jìn)行卷積時,SURF算法使用盒子濾波器代替二階高斯濾波,大大提高了卷積計(jì)算速度[15],從而降低了算法的運(yùn)行時間,簡化后的Hessian矩陣行列式為:
Δ(H)=Dxx*Dyy-(0.9*Dxy)2,
(4)
式中,Δ(H)為點(diǎn)I(x,y)周圍鄰域的盒子濾波器響應(yīng)值;Dxx,Dxy,Dyy為模板與圖像卷積的結(jié)果。特征點(diǎn)的判斷通過比較極值點(diǎn)的鄰域信息進(jìn)行確定,在一個以某極值點(diǎn)為中心的3*3*3的立方體鄰域內(nèi),與相鄰的上下尺度和該尺度周圍的26個鄰域值進(jìn)行比較,尋找極值點(diǎn)作為最終的特征點(diǎn)。盒子濾波高斯二階微分模板簡化模型如圖5所示。
圖5 盒子濾波高斯二階微分模板簡化模型Fig.5 Box-filter Gaussian second-order differential template simplified model
檢測到特征點(diǎn)之后,以特征點(diǎn)為圓心,6σ為半徑的區(qū)域內(nèi)計(jì)算水平方向和垂直方向的加權(quán)Haar小波響應(yīng),然后采用60°的扇形區(qū)域遍歷圓形區(qū)域,將由扇形模板內(nèi)Haar小波在x,y方向響應(yīng)的累計(jì)之和構(gòu)成一個局部區(qū)域矢量,將最大的累加和對應(yīng)的方向作為該特征點(diǎn)基準(zhǔn)方向[16]。
選取基準(zhǔn)方向后,以特征點(diǎn)為中心將坐標(biāo)軸旋轉(zhuǎn)至基準(zhǔn)方向,沿基準(zhǔn)方向選取長為20σ*20σ的正方形區(qū)域,將該正方形區(qū)域劃分為4*4的子區(qū)域,每個子區(qū)域利用尺寸為2σ*2σ的Haar模板進(jìn)行響應(yīng)值計(jì)算,進(jìn)行25次采樣,分別得到沿基準(zhǔn)方向的dy和垂直于基準(zhǔn)方向的dx,統(tǒng)計(jì)每個子區(qū)域響應(yīng)值,得到V=(∑dx,∑dy,∑|dx|,∑|dy|)特征矢量,即該子區(qū)域的描述符。所有子區(qū)域的向量構(gòu)成該點(diǎn)的特征向量,得到維度為4*4*4=64維的特征向量。特征描述符的生成過程如圖6所示。
圖6 特征描述符的生成過程Fig.6 Feature descriptor generation process
同一場景下,由于目標(biāo)遠(yuǎn)近原因會使同一物體在2張圖像上的成像位置有所不同,這也就構(gòu)成了物體的視差,利用視差可以計(jì)算出相機(jī)相對于相機(jī)模型的位置信息。雙目相機(jī)經(jīng)過標(biāo)定之后,可以得到相機(jī)參數(shù),經(jīng)過圖像校正和極線約束后,左右視圖在同一平面上[17-18]。雙目視圖測距原理如圖7所示。
圖7 雙目視覺模型Fig.7 Binocular vision model
圖7中,Ol,Or為兩相機(jī)坐標(biāo)系的原點(diǎn),基線的距離為B,兩相機(jī)在同一時刻拍攝特征點(diǎn)P(X,Y,Z),點(diǎn)P對應(yīng)坐標(biāo)系點(diǎn)的原點(diǎn)在左相機(jī)的光心Ol。P點(diǎn)在左相機(jī)的像素坐標(biāo)系為Pl=(xl,yl),在右相機(jī)的坐標(biāo)像素Pr=(xr,yr),視差值d=xl-xr,點(diǎn)P的三維坐標(biāo)為:
(5)
但是在實(shí)際測量的過程,受到相機(jī)參數(shù)標(biāo)定及相機(jī)硬件等因素的影響,測量值與真實(shí)值會存在一定偏差,通過實(shí)驗(yàn)觀察,隨著目標(biāo)距離相機(jī)位置的距離和偏移量增加,誤差會進(jìn)一步擴(kuò)大。為此,提出利用獲取到的真實(shí)坐標(biāo)值進(jìn)行參數(shù)擬合,對相機(jī)進(jìn)行二次校正[19],獲取坐標(biāo)計(jì)算模型:
X′=g(x,d)+X,
(6)
提高定位精度。
通過構(gòu)造代價函數(shù):
(7)
并且利用梯度下降法迭代運(yùn)算,即尋求代價函數(shù)最小的時的參數(shù)值:
(8)
系統(tǒng)實(shí)驗(yàn)環(huán)境為Ubuntu 16.04系統(tǒng),處理器型號為 Intel i7-7700,顯卡型號為GeForce GTX1070,顯存為8 GB,內(nèi)存為16 GB,相機(jī)型號為STEREOLABS ZED雙目攝像頭,基于Python語言,在PyCharm平臺,Tensorflow,Keras深度學(xué)習(xí)框架下實(shí)現(xiàn)系統(tǒng)整體流程。
實(shí)例分割實(shí)驗(yàn):目標(biāo)實(shí)例分割結(jié)果如圖8所示,圖像中檢測到目標(biāo)的標(biāo)簽為‘person’,置信度為1.00,在圖像分割區(qū)域進(jìn)行掩碼操作,填充上顏色。
圖8 實(shí)例分割圖Fig.8 Example segmentation diagram
特征點(diǎn)匹配實(shí)驗(yàn):以左視圖為基準(zhǔn),利用SURF算法提取左視圖內(nèi)的分割區(qū)域的特征點(diǎn),并利用KNN算法與右視圖進(jìn)行特征點(diǎn)匹配,剔除部分誤匹配特征點(diǎn)匹配結(jié)果如圖9所示。
圖9 SURF特征點(diǎn)匹配圖Fig.9 SURF feature point matching
雙目定位實(shí)驗(yàn):特征點(diǎn)匹配后計(jì)算特征點(diǎn)視差,利用三角測量法計(jì)算得到目標(biāo)相對相機(jī)位置。其中,x表示偏移量,z表示目標(biāo)距離相機(jī)的深度值。雙目視差計(jì)算結(jié)果如圖10所示,目標(biāo)距離相機(jī)2.678 m,偏移相機(jī)距離為0.707 m。
圖10 雙目視差計(jì)算結(jié)果Fig.10 Binocular parallax calculation results
實(shí)驗(yàn)場地大小為4.8 m*4.8 m,由于相機(jī)視角的原因,將相機(jī)距離測試場景2.4 m,因此測試距離最遠(yuǎn)為7.2 m,以80 cm為間隔進(jìn)行數(shù)據(jù)采集,在進(jìn)行數(shù)據(jù)采集時以左相機(jī)為基準(zhǔn),將試驗(yàn)場地中心線呈現(xiàn)在圖像的中心位置。在每個樣本點(diǎn)位置采集大約100個特征點(diǎn)數(shù)。所選取的實(shí)驗(yàn)環(huán)境示意如圖11所示。
圖11 實(shí)驗(yàn)環(huán)境示意Fig.11 Schematic diagram of the experimental environment
圖12表示的是在實(shí)驗(yàn)環(huán)境內(nèi)采集的各個樣本點(diǎn)定位數(shù)據(jù)的均值。由圖12可以看出,隨著目標(biāo)距離相機(jī)的深度值和偏移距離的逐漸增大,計(jì)算出來的位置偏離真實(shí)樣本點(diǎn)值的距離也逐漸變大。經(jīng)過視差擬合處理后的結(jié)果如圖13所示。
圖12 實(shí)驗(yàn)數(shù)據(jù)Fig.12 Experimental data
圖13 擬合曲線對比Fig.13 Fitting curve comparison
將擬合后的數(shù)值與計(jì)算值相比較,無論在深度值方向上還是偏移量方向上,擬合后的計(jì)算值與樣本點(diǎn)距離整體比原始計(jì)算值更近,尤其是在偏移量方向上,擬合后的曲線總體上與原始樣本點(diǎn)在同一條直線上,表明經(jīng)過擬合,擬合后的計(jì)算值準(zhǔn)確度有了顯著提高,將原始計(jì)算值、擬合后的值與樣本點(diǎn)值的誤差值分別做成距離誤差圖和誤差分布累計(jì)圖進(jìn)行誤差分析,如圖14和圖15所示。
圖14 誤差對比Fig.14 Error contrast
圖15 誤差累計(jì)分布曲線Fig.15 Error cumulative distribution curve
由圖14可以看出,擬合后的誤差值與原始誤差值相比,幅度有了明顯降低,誤差分布較為均勻。由圖15可以看出,擬合后的誤差曲線收斂更加快速,表明誤差范圍縮小,最大誤差由0.385 m降低到0.294 m,平均誤差值由0.183 m降低到0.106 m,定位結(jié)果有了明顯改善,滿足了精準(zhǔn)定位的需求。
針對雙目視覺利用目標(biāo)檢測方法定位不準(zhǔn)確問題,本文采用了Mask R-CNN實(shí)例分割網(wǎng)絡(luò),在檢測目標(biāo)的同時,對目標(biāo)進(jìn)行語義分割,提取左右圖像分割區(qū)域的物體特征點(diǎn)計(jì)算視差值,進(jìn)一步提高了提取物體特征點(diǎn)的準(zhǔn)確性,并針對雙目相機(jī)標(biāo)定后的誤差,對實(shí)驗(yàn)結(jié)果和相機(jī)參數(shù)進(jìn)行擬合,提高物體定位精度。本文提出的雙目定位系統(tǒng),在定位精度上滿足了實(shí)用性要求。在未來的工作,應(yīng)該進(jìn)一步優(yōu)化網(wǎng)絡(luò),提高物體識別和分割速度,實(shí)現(xiàn)更高的計(jì)算速度和效率,實(shí)現(xiàn)在更多的使用場景中的應(yīng)用。