姚 堯,張 生
(上海理工大學光電信息與計算機工程學院,上海 200093)
隨著計算機視覺技術的飛速發(fā)展,雙目視覺系統(tǒng)成為一大研究熱點,在機器人視覺、軍事技術、三維重建等領域發(fā)揮著重要作用[1]?;诔暡ā⒗走_、紅外等技術的測距方法很早就應用在移動機器人領域中,與這些主動測距技術相比,雙目視覺測距具有成本低、魯棒性強、抗干擾性能強的優(yōu)點。
雙目測距的原理是基于物體在雙目相機左右成像平面上的視差,通過相似三角形原理計算物體的真實深度。因此,對物體在左右相機成像平面的投影進行正確匹配是雙目測距系統(tǒng)精度的重要保證。目前,傳統(tǒng)的雙目圖像匹配技術包括基于全局特征匹配的GC(Garbage Collection)算法、基于半全局匹配的SGBM(Semi-global Block Matching)算 法[2]、基于局部特征的SIFT(Scale-invariant Feature Transform)算 法[3]、SURF(Speeded Up Robust Features)算法[4]以及ORB(Oriented FAST and Rotated BRIEF)算法[5]。雖然全局與半全局匹配算法能構建出完整的視差圖像,但運行速度較慢且精度較差?;诰植刻卣鞯腛RB 算法運行快,但提取特征點匹配性能較差,存在大量誤匹配現(xiàn)象。
近年來,深度學習方法因其對深層特征有優(yōu)越的學習和表達能力而被廣泛應用于計算機視覺的各個領域。例如,基于卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)的圖像處理方法已經(jīng)在圖像匹配領域嶄露頭角并取得了成效。深度學習在圖像匹配中最合理的應用便是直接從包含相同或相似結(jié)構內(nèi)容的圖像對中學習到像素級別的匹配關系,其主要形式是以深度學習的方法替換傳統(tǒng)匹配算法中的一個或多個環(huán)節(jié),或直接設計一個端到端的匹配網(wǎng)絡,從圖像中學習每個特征點的主要方向、尺度以及更具有匹配能力的描述符,代表方法包 括LIFT[6]、UCN[7]、LF-Net[8]、R2D2[9]、Superpoint[10]等。
針對雙目圖像的特征匹配,本文提出一種自監(jiān)督學習的圖像特征提取網(wǎng)絡模型,該模型由一個編碼層與兩個解碼層構成。從雙目相機獲得的兩張圖像分別進入模型提取特征點,隨后根據(jù)特征點的描述符進行匹配并計算視差,進而獲得目標深度。實驗結(jié)果表明,本文提出的特征提取網(wǎng)絡具有良好性能,在雙目測距實驗中精度較高。
目前,基于深度學習的圖像特征匹配方法已經(jīng)逐漸取代傳統(tǒng)方法。例如,Detone 等[10]基于全卷積神經(jīng)網(wǎng)絡建立了Superpoint 模型,主要功能為提取圖像的特征點并獲得對應的特征點描述符。該模型的訓練分為兩個部分,第一部分是采用監(jiān)督學習方法在一個幾何模型數(shù)據(jù)集中訓練特征點檢測器;第二部分是采用預訓練完的檢測器對訓練集進行標注,獲得偽真值點標簽,再以自監(jiān)督方法訓練檢測器并同時學習描述符;Truong 等[11]提出一種采用單應性變化方法訓練的特征點檢測器GLAMpoint,運用非極大值抑制方法提取圖形特征點,并結(jié)合SURF的描述符實現(xiàn)了特征點匹配功能;Jakab 等[12]提出一種自監(jiān)督學習的特征點檢測器,利用圖像生成的方法獲得同一物體不同視角或不同相機位姿的圖片對,分別輸入神經(jīng)網(wǎng)絡提取特征并計算損失;宋超群等[13]對ORB 算法進行了改進,在測量階段采用二維二次函數(shù)擬合的方法獲得特征點的亞像素坐標,通過三角測量原理獲得對應特征點的空間三維坐標,從而得到被測物體的尺寸;楊潔等[14]對SURF 算法進行了優(yōu)化,運用FLANN 算法與PROSAC 算法進行匹配與去誤,再應用于目標測距系統(tǒng)中。上述研究中均是改進的傳統(tǒng)匹配方法,雖然運行速度較快,但提取特征點質(zhì)量不高、測距精度較低。在立體匹配領域,Godard 等[15]提出的AnyNet 網(wǎng)絡利用U-net 特征提取4 個尺寸的特征圖,可直接通過網(wǎng)絡輸出圖像的視差圖,不過該類方法往往需要耗費較長的運行時間才能獲取可靠的深度數(shù)據(jù)。
基于以上分析,雙目測距特征匹配方法需要具備檢測性能強、特征點覆蓋全面、特征點匹配可靠、運行速度適宜等特性。受Superpoint 啟發(fā),本文網(wǎng)絡模型也選用類似的自監(jiān)督學習方法,不過訓練過程比Superpoint 簡化許多,去除了預訓練和對訓練集進行標注兩個步驟,模型直接采用真實圖像進行訓練。
本文建立的圖像特征提取網(wǎng)絡包括一個共享的類VGG 卷積網(wǎng)絡編碼層[16]與兩個解碼層,分別為特征點檢測器解碼層和描述符解碼層。參考Superpoint的網(wǎng)絡模型結(jié)構,保留了編碼層與描述符的部分,對激活函數(shù)進行了改進,檢測器解碼層、訓練過程與損失函數(shù)亦不相同。整體網(wǎng)絡框架如圖1 所示。
2.1.1 編碼層
使用一個類VGG的卷積骨干網(wǎng)絡作為編碼器,作用是使圖片降維,便于提取特征。編碼層包括卷積網(wǎng)絡層、池化層與非線性激活函數(shù)。編碼層使用3 個最大池化(maxpooling)層,使原圖片的尺寸H×W變?yōu)镠c=H/8 和Wc=W/8。激活函數(shù)選用leaky ReLU[17]的激活函數(shù)。
Fig.1 Architecture of the feature extraction network圖1 特征提取網(wǎng)絡框架
2.1.2 特征點檢測器解碼層
特征點檢測器解碼層對共享的特征圖進行兩層卷積操作,將特征圖變?yōu)镠/8 ×W/8 × 64。經(jīng)過Softmax的操作使特征圖取值介于0~1 之間,特征點取值接近于1 說明該位置是真實的特征點。然后經(jīng)過維度變換,輸出與原圖像尺寸一致的特征點圖,用于計算特征點檢測層的損失函數(shù)。
2.1.3 描述符解碼層
描述符解碼層對描述符的特征圖進行3 次插值上采樣,再使用L2 范數(shù)將特征圖取值規(guī)范為單位長度,輸出H/8 ×W/8 × 256的稠密描述符,配合特征點檢測器輸出的特征圖進行描述符的損失計算。
模型的訓練基于圖片的單應性變換以及噪聲添加進行。單應性變化即一個平面到另一個平面的映射關系,包括仿射變化、透視變換等。對原圖I進行隨機單應性變化得到Ih,再對兩者計算損失函數(shù),達到自監(jiān)督學習的效果。損失函數(shù)表示為:
式中,λ1、λ2為權重參數(shù),P、Ph為原圖I和變換后Ih的特征圖,D、Dh為兩圖的描述符,Ld、Lp分別為描述符及檢測器的損失函數(shù)。經(jīng)過變換后,對I和Ih增加隨機噪聲,包括高斯噪聲、隨機亮度變化、椒鹽噪聲、模糊處理,以增強模型性能。
特征點的訓練原理來自于最大期望(Expectation Maximization,EM)算法,主要步驟如圖2 所示。訓練過程中需要對目標特征點進行以下處理:①在原圖I中檢測到點K,根據(jù)施加的單應性變換,將點K投射到Ih上,形成Kproj;②采用兩種方式對經(jīng)過變換的點Kproj與Ih上檢測到的點Kh進行匹配,分別為2D 坐標和描述符,均采用最鄰近匹配的方式形成兩對匹配點集;③通過匹配好的點集形成目標點K′h,再根據(jù)單應性變換的逆變換投射到原圖I形成K′,與K′h組成一對點集,用于計算損失函數(shù)。
Fig.2 Feature training procedures圖2 特征點訓練步驟
檢測器部分的損失函數(shù)應用負對數(shù)似然的方法,表示為:
式中,P[K′]、Ph[K′h]分別表示I與Ih上檢測到的特征點分布。
給定待訓練的I與Ih兩幅圖片,通過以下步驟提取出真實特征點K′、K′h:
(1)通過兩種不同的池化操作從圖中提取出特征點集合K與Kh,分別表示為:
采用32×32、16×16 兩種不同大小的區(qū)域選擇特征點,可使特征點分布覆蓋全圖但不會過于稠密。圖像經(jīng)過池化操作返回特征點的坐標數(shù)組(xi,yi)。
(2)對K進行單應性變換,超出圖像邊界的點則被舍棄,Dproj、Dh為Kproj與Kh的描述符。
(3)在Ih上分別根據(jù)描述符和坐標關系進行匹配,表示為:
式中,matchgeom的作用是根據(jù)歐氏距離對Kproj和Kh進行最鄰近匹配,返回匹配點之間的距離以及點的索引。idxdesc給出了Kproj在描述符上最匹配點的索引。
(4)Ih上可能的真實特征點坐標表示為:
從上式可以看出,可能的真實特征點K′h由Kproj與相匹配的Kh取均值獲得,再對此進行單應性變換的逆變換,投射回原圖上,獲得K′。經(jīng)過上述步驟后得到的K′、K′h用于計算損失函數(shù)式(2)。
描述符部分的損失函數(shù)包括兩個部分,表示為:
Lwrong的作用恰好相反,目的是使錯誤匹配特征點描述符的相似度最小,表示為:
雙目相機由放置在同一水平線上的兩個單目相機組成,根據(jù)物體在左右成像平面上的像素差進行深度距離測量。圖3 為雙目相機測距模型,其中b 為雙目相機的基線,f為相機焦距。假設物體的真實深度為z,距離左相機光學中心的距離為x,物體在左右相機成像平面上投影后的距離XL、XR 分別表示為:
獲得XL、XR 后即可計算視差,進而計算深度,表示為:
式中,disp=XL-XR。通過式(13)即可得到物體與相機平面間的距離z。
Fig.3 Binocular camera ranging model圖3 雙目相機測距模型
使用PyTorch 框架搭建本文網(wǎng)絡模型,訓練時采用的優(yōu)化算法為AdamW[18],學習率為0.000 5,數(shù)據(jù)集為MSCOCO[19]。將訓練集轉(zhuǎn)換為灰度圖,圖片大小縮放為256×256,同時將尺度變換、旋轉(zhuǎn)變換和透視變換相結(jié)合,構成隨機的單應性變換。實驗硬件平臺為Intel Core i7-8700 3.2GHz CPU,NVIDIA RTX 2080 GPU,操作系統(tǒng)為64 位Windows10。評價數(shù)據(jù)集為KITTI 雙目數(shù)據(jù)集[20],包括stereo2012 和stereo2015 兩部分。評價指標為重復性(Repeatability)和匹配度(Matching Score)。評價時需要設置正確匹配閾值?,? 越小表示對特征點是否匹配的判斷越嚴格,本次實驗將? 設為1px。
選取兩個傳統(tǒng)圖像特征提取方法SIFT 和ORB,以及基于深度學習的Superpoint 算法,與本文模型進行性能比較,結(jié)果如圖4(彩圖掃OSID 碼可見,下同)所示。
Fig.4 Matching result圖4 匹配結(jié)果
通過重復性指標評價各模型在相同條件下圖像特征提取結(jié)果的相似程度,結(jié)果如表1 所示。本文算法在重復性的表現(xiàn)上優(yōu)于Superpoint,與SIFT 持平,但不及ORB 算法。原因可能是ORB 算法提取的特征點往往十分稀疏,但在提高可重復性的同時降低了挖掘特征點的能力,這點在圖4 中可以看出。
使用匹配度評價各模型的特征點不變性和辨別力,結(jié)果如表2 所示。可以看出,本文算法的匹配性能優(yōu)于其余3種算法,提取到的特征點十分可靠,具有良好的不變性,為后續(xù)計算視差與深度奠定了基礎。
Table 1 Repeatability compaison of different methods表1 不同算法重復性比較
Table 2 Matching score comparison of different methods表2 不同算法匹配度比較
雙目視覺測距實驗流程包括相機標定、圖像預處理、特征匹配、計算視差等。實驗選用的雙目相機型號為HBV-1780-2,設備與實驗環(huán)境如圖5 所示,白色的點即為提取出的可用于計算視差的特征點。
Fig.5 Instrument and measuring environment圖5 設備與實驗環(huán)境
相機的標定至關重要,目的是建立相機的像素坐標與空間真實坐標之間的關系,確定相機內(nèi)參(焦距、扭曲因子、主點位置)和外參(平移矩陣、旋轉(zhuǎn)矩陣)。本文使用張正友標定法進行標定[21],標定板使用11×8的黑白棋盤格,單元格邊長為15mm。使用MATLAB 完成相機標定,基線距離為117.645 2mm,其余參數(shù)如表3、表4 所示。
Table 3 Internal parameters of the binocular camera表3 雙目相機內(nèi)參
Table 4 External parameters of the binocular camera表4 雙目相機外參
設計試驗比較本文方法與其余兩種方法的性能:方法一為基于優(yōu)化SURF 特征點的深度測距法,采用FLANN 算法與PROSAC 算法對提取到的SURF 特征點進行去誤;方法二為基于AnyNet的立體匹配網(wǎng)絡。硬件環(huán)境準備完成后,在真實距離20~150cm的范圍內(nèi),通過測量目標物體與相機間的距離,得到3 種方法的精度。其中,AnyNet 算法從生成的視差圖中直接讀取深度信息,本文方法和SURF 需要對匹配完成的特征點計算視差,并通過相機標定得到的參數(shù)將視差轉(zhuǎn)換為真實深度值。表5 為3 種算法的測距精度比較。
Table 5 Measuring accuracy comparison表5 測距精度比較
從表5 可以看出,在20~150cm的范圍內(nèi),本文方法的平均絕對誤差為0.58%,SURF 為1.22%,AnyNet 為1.46%。實驗過程中發(fā)現(xiàn),在50cm 以內(nèi)的距離,采用SURF 方法提取到的特征點數(shù)量較少,再經(jīng)過一系列去誤后導致可用于計算的特征點數(shù)量不足,誤差較大。AnyNet 方法在近距離內(nèi)的表現(xiàn)優(yōu)秀,但隨著測量距離增大,誤差變化明顯,在大于120cm的距離上已經(jīng)無法滿足測距要求。相比之下,本文特征提取網(wǎng)絡能夠提供穩(wěn)定的特征點數(shù)量,且誤匹配現(xiàn)象較少。結(jié)果表明,本文方法在雙目測距中有較好的精度與魯棒性。
本文提出一種自監(jiān)督學習的圖像特征提取網(wǎng)絡模型,并將其應用于雙目視覺測距中。該模型以編碼—解碼的構造以及單應性變化的方式從圖片集中學習特征點提取的功能,其在KITTI 數(shù)據(jù)集上的表現(xiàn)優(yōu)于一些常用測距方法。同時,在雙目測距實驗中,本文方法具有較高的精度與魯棒性,在20~150cm的范圍內(nèi)平均誤差為0.58%。后續(xù)將考慮優(yōu)化整個網(wǎng)絡模型性能以提高訓練效率,并在保證特征點匹配精度的同時減少網(wǎng)絡參數(shù)量,以提高模型運行速度。