周佳樂,朱兵,吳芝路
(哈爾濱工業(yè)大學 電子與信息工程學院,黑龍江 哈爾濱 150001)
相機位姿估計是機器人應用、自主導航以及增強現(xiàn)實中的關(guān)鍵技術(shù),其目的是通過當前相機所采集的圖像信息,以及已知環(huán)境的先驗信息,來估計出當前相機設(shè)備在三維真實場景中的位置和姿態(tài),由于相機的位姿信息包含六個自由度,因此也稱為相機的六自由度估計。隨著自動駕駛、精確定位導航等領(lǐng)域?qū)Χㄎ坏木纫蟛粩嗵岣?,僅僅使用二維圖像已經(jīng)無法對現(xiàn)實的三維世界進行準確描述,因此包含深度信息的三維場景點云成為了定位技術(shù)更為關(guān)注的重點,通過三維場景點云以及圖像處理的相關(guān)算法可以實現(xiàn)更加精確的應用,這也成為了相機位姿估計技術(shù)的一個發(fā)展方向。
近年,相機位姿估計技術(shù)在國內(nèi)外發(fā)展迅速,傳統(tǒng)的相機位姿估計方法首先采用SFM(Structure From Motion)算法對圖像數(shù)據(jù)庫構(gòu)建三維點云數(shù)據(jù),同時將每一個3D點云與特征算子相關(guān)聯(lián)。對于查詢圖像,提取其特征描述子并與三維點云匹配,使用PnP(Perspective-n-Point)位姿求解算法解得最終的位姿[1-4]。這種方法稱為基于結(jié)構(gòu)的相機位姿估計。然而這種方法存在較大局限,一旦點云與特征描述符的關(guān)系確定,對于位姿查詢圖像,只能提取特定的特征描述符來進行2D-3D匹配,這種構(gòu)建2D-3D匹配點的思路在關(guān)聯(lián)特征描述符不易提取的情況下表現(xiàn)往往較差。因此本文結(jié)合圖像檢索的思路與特征匹配算法,充分利用深度圖像信息,在2D-3D匹配點構(gòu)建思路上進行改進;同時提出位姿優(yōu)化目標函數(shù),對PnP位姿解算的結(jié)果進行進一步優(yōu)化,提出多階段的相機位姿估計方法。
隨著深度學習方法的廣泛應用,大量學者投身于采用深度學習的方式來解決相機位姿估計問 題。Kendall等 人[5]將GoogleNet網(wǎng) 絡(luò) 進 行 改進,使用神經(jīng)網(wǎng)絡(luò)直接預測相機的六自由度位姿,然而該方法最終的相機位姿估計精度較低,文獻[6]進一步證明了直接使用神經(jīng)網(wǎng)絡(luò)估計相機位姿的方法準確率只能逼近使用圖像檢索的方法[7]。Li等人[8]通過孿生神經(jīng)網(wǎng)絡(luò)來擬合查詢圖像與參考圖像之間的相對位姿關(guān)系,進一步實現(xiàn)相機的位姿估計,由于圖像中并不包含場景的三維場景信息,因此單獨使用圖像進行位姿估計的誤差較大。Tang等人[9]利用深度檢索算法得到參考圖像,在查詢圖像與參考圖像之間構(gòu)建一個損失向量訓練神經(jīng)網(wǎng)絡(luò)并獲得稠密場景匹配,進一步實現(xiàn)相機位姿估計,其本質(zhì)是采用神經(jīng)網(wǎng)絡(luò)擬合查詢圖像與參考圖像的關(guān)系,因此前端圖像檢索中存在較大誤差時,其位姿估計精度往往較差。總之,目前將神經(jīng)網(wǎng)絡(luò)模型直接用于相機位姿估計的端到端學習方式,由于網(wǎng)絡(luò)模型參數(shù)的有限性,無法完全擬合所有的三維場景信息,導致其位姿估計結(jié)果的精度較低或速度較差。為實現(xiàn)更加精確且高效的相機位姿估計方法,本文將深度學習算法用于傳統(tǒng)基于結(jié)構(gòu)的相機位姿估計算法當中,設(shè)計卷積神經(jīng)網(wǎng)絡(luò)用于獲得更為稠密的2D-3D匹配點,提出基于稠密場景回歸的多階段相機空間位姿估計方法,以此提高相機位姿估計算法的精確性。
不同的真實場景對相機位姿估計算法精度的影響較大,為推進特定場景下相機位姿估計算法的研究,本文首先構(gòu)建相機位姿估計數(shù)據(jù)集。
本文基于二維圖像和三維點云對單目相機進行空間位姿估計,數(shù)據(jù)集中包含了單目相機的RGB圖像以及RGB圖像所對應的三維空間坐標信息。在三維圖像處理中要考慮到2個三維坐標系和2個二維坐標系。這4個坐標系互相嵌套,相機坐標系以世界坐標系為基礎(chǔ),圖像坐標系以相機坐標系為基礎(chǔ),像素坐標系則以圖像坐標系為基礎(chǔ)。世界坐標系一旦確定則不會變化,而相機坐標系一直相對世界坐標系發(fā)生變換,圖像坐標系則相對相機坐標系保持穩(wěn)定不變。圖1為各個坐標系之間的關(guān)系:
圖1 各坐標系間的關(guān)系Fig.1 Relationship between coordinate systems
圖中,Ow-Xw,Yw,Zw為世界坐標系,原點可以認為是相機的真實世界坐標;Oc-Xc,Yc,Zc為相機坐標系,原點為相機的光心;o-x,y為圖像坐標系。
3個坐標系的變換關(guān)系可以通過外參矩陣以及內(nèi)參矩陣來進行描述,外參矩陣是相機相對起始點的位置與姿勢的變化,用來描述世界坐標系和相機坐標系之間的轉(zhuǎn)換關(guān)系;內(nèi)參矩陣是相機本身的固定參數(shù),是指相機坐標系下的物體投影到圖像平面下的內(nèi)部參數(shù),通常用來描述相機坐標系和圖像坐標系之間的關(guān)系。通過坐標系關(guān)系轉(zhuǎn)換,可以得到像素坐標系與世界坐標系的關(guān)系為:
在這種轉(zhuǎn)換關(guān)系中,內(nèi)參矩陣可以通過相機標定的方式精準獲得,在相機應用環(huán)境不發(fā)生變化時,可認為其不發(fā)生變化。然而,在相機位姿發(fā)生變化時,其外參矩陣也將發(fā)生變化。本文的目標是通過模型估計出當前相機的外參矩陣,因此數(shù)據(jù)集中包括相機所獲得的RGB圖像(像素坐標)、RGB圖像所對應的相機外參矩陣以及相機所處場景的三維真實場景信息(世界坐標)。
通過分析像素坐標和世界坐標之間的關(guān)系,可以知道構(gòu)建數(shù)據(jù)集的關(guān)鍵是獲得單張RGB圖像的外參矩陣以及相機所處場景的三維真實場景。本文采用SFM算法對相機所拍攝場景進行三維重建,并獲得重建后每一張RGB圖在三維場景中的外參信息。SFM算法是一種基于各種收集到的無序圖片進行三維重建的離線算法,通過相機的移動采集不同視角的圖像,求解相機的相對位姿信息并恢復出場景的三維信息。通過SFM算法,可以求解得到每一張RGB圖像的三維稀疏點云數(shù)據(jù)以及其相對于該三維稀疏點云下的位姿信息,圖2是采用該算法進行三維重建的效果示意圖(彩圖見期刊電子版),圖中紅色軌跡為每一張RGB圖像所對應的真實相機位姿,黑色點為三維稀疏點云:
圖2 三維稀疏點云重建及位姿數(shù)據(jù)集構(gòu)建Fig.2 3D sparse point cloud reconstruction and pose dataset construction
基于SFM算法進行三維重建的三維點云是由特征匹配所提供的,由于這些匹配點的提取是稀疏的,因此采用SFM算法進行三維重建得到的點云數(shù)據(jù)也將是稀疏的。為了研究更加精準的位姿估計算法,本文在構(gòu)建數(shù)據(jù)集的時還需產(chǎn)生稠密的點云數(shù)據(jù)。SFM算法可以解算得到每一幀RGB圖像在當前三維稀疏點云下的位姿矩陣,為得到圖像的稠密三維坐標信息,還需要采用深度相機同步采集每一幀RGB圖像的深度信息[10],通過前述三維重建過程中得到的位姿以及坐標間的變換關(guān)系,求解出場景的稠密三維點云。本文實驗使用Astra Mini深度相機作為RGB圖像以及深度圖像采集設(shè)備。經(jīng)過實際標定實驗,該深度相機的深度有效測量范圍為0.6~8 m,其精度為±(1~3)mm/m,深度圖像數(shù)據(jù)為16位深度值,其深度值為相機與物體的實際距離,單位為mm。由于實驗中不可避免存在無效的測量深度值(深度圖像中黑色邊緣部分),在實際實驗過程中,將有效深度值對RGB圖像進行掩摸處理,舍棄無效的深度值。本文對實驗室進行采集,最終重建的結(jié)果如圖3所示。
圖3 稠密點云數(shù)據(jù)構(gòu)建Fig.3 Dense point cloud data construction
通過以上方法,構(gòu)建得到最終的數(shù)據(jù)集,該數(shù)據(jù)集包含4 000張RGB圖像、深度圖以及每張RGB圖像對應的位姿信息,本文采集的數(shù)據(jù)為連續(xù)幀圖像,將圖像以1 000幀為單位劃分為4個序列,其中1,3序列作為訓練集,2,4序列作為測試集,具體信息如表1所示。
表1 Labcore數(shù)據(jù)集Tab.1 Detail of labcore dataset
傳統(tǒng)基于結(jié)構(gòu)的相機位姿估計方法是找到2D-3D匹配點,通過PnP位姿求解算法求解方程,以解算得到當前相機的具體位姿[1-4],該方法在構(gòu)建點云數(shù)據(jù)時將3D點與特定的2D特征點進行關(guān)聯(lián),一旦數(shù)據(jù)構(gòu)建完成,其特征描述符便無法更換,而不同場景下采用不同特征描述符所得的位姿估計結(jié)果差異較大,這也成為其在特征描述符不易提取的環(huán)境中表現(xiàn)較差的主要原因。因此本文首次將圖像檢索算法引入2D-3D匹配點的構(gòu)建當中,并采用傳統(tǒng)基于結(jié)構(gòu)算法的相機位姿估計思路,同時構(gòu)建目標函數(shù)優(yōu)化位姿估計結(jié)果,提出基于多階段的相機位姿估計方法,該方法結(jié)合圖像檢索方法與基于結(jié)構(gòu)相機位姿估計方法的優(yōu)勢,提升了2D-3D匹配點的匹配速度與精度,具體過程為:第一階段,構(gòu)建2D-3D匹配點,采用深度圖像檢索算法檢索出查詢圖像的最近鄰幀作為參考圖像,通過特征匹配算法及坐標映射關(guān)系找到用于位姿解算的2D-3D匹配點;第二階段,粗位姿求解并剔除外點,使用PnP位姿求解算法求解相機位姿,對求解得到的位姿進行評分,采用隨機抽樣一致(Random Sample Consensus,RANSAC)算法的思路剔除誤匹配點,得到初始位姿估計;第三階段,位姿對齊優(yōu)化,將前一階段求解的位姿作為初始位姿,設(shè)計目標函數(shù),用三維點云將查詢圖像位姿與參考圖像位姿對齊,采用最小二乘法對初始位姿估計結(jié)果進行進一步優(yōu)化,得到最佳位姿估計結(jié)果。圖4是整個算法的流程圖。
圖4 多階段相機位姿估計方法流程Fig.4 Flow of multistage camera pose estimation
為檢索得到查詢圖像的最近鄰圖像(與查詢圖像真實位姿最接近的圖像),本文采用卷積神經(jīng)網(wǎng)絡(luò)對查詢圖像以及已知位姿圖像數(shù)據(jù)庫的全局特征進行提取。采用VGG網(wǎng)絡(luò)結(jié)構(gòu)進行卷積神經(jīng)網(wǎng)絡(luò)的搭建,為了使得深度圖像檢索算法能夠適應大部分的圖像場景,將VGG網(wǎng)絡(luò)在ImageNet數(shù)據(jù)集上進行預訓練,通過一個全連接層對圖像數(shù)據(jù)庫以及查詢圖像的每一張圖像提取出一個1×512的圖像全局特征向量。在圖像檢索階段,將圖像數(shù)據(jù)庫中與查詢圖像相似度最高的圖像作為參考圖像。
完成最近鄰幀檢索之后,對查詢圖像及參考圖像進行特征匹配以進一步找到2D-3D匹配點。為了進一步分析不同特征描述子對特征匹配結(jié)果及最終的位姿解算結(jié)果的影響,本文分別采用ORB(Oriented Fast and Rotated Brief)算 子、SIFT(Scale Invariant Feature Transform)算子以及SURF(Speeded-Up Robust Features)算 子[11]對圖像的特征進行提取,并使用暴力匹配法進行匹配。
使用特征匹配算法對查詢圖像及參考圖像的特征點進行匹配,并計算像素和世界坐標間的坐標映射關(guān)系獲得2D-3D匹配點,利用PnP算法對2D-3D匹配點進行位姿解算得到當前相機具體位姿。然而實際上特征匹配算法的匹配結(jié)果中可能存在誤匹配點,導致最終使用PnP算法進行位姿求解時的結(jié)果誤差較大,為了進一步剔除誤 匹 配 點,本 文 采 用RANSAC算 法[1-3,13]的思 想對相機位姿估算的結(jié)果進行進一步的優(yōu)化。圖5是采用RANSAC算法思想進行位姿估計結(jié)果優(yōu)化的流程圖。
圖5 RANSAC算法流程Fig.5 Flow of RANSAC algorithm
模型估計:在特征匹配算法得到的2D-3D特征匹配點中選取一定數(shù)量的點對作為PnP求解問題的輸入,并采用PnP求解算法解得相機位姿假設(shè)。
模型評價:為了判斷樣本數(shù)據(jù)點是樣本內(nèi)點還是樣本外點,定義重投影誤差作為判斷依據(jù),重投影誤差的定義如式(2):
式中:pi為查詢二維圖像中第i個像素在圖像中的2D位置,C為相機的內(nèi)參矩陣,hJ為相機位姿假設(shè)數(shù)學模型,yi為pi對應的三維場景坐標真實值。由此,設(shè)置誤差閾值τ,本文實驗中τ=5,如果ei<τ,則稱對應點對pi-yi為內(nèi)點;反之,對應點pi-yi為外點。記錄每個數(shù)學模型的內(nèi)點數(shù)量作為模型的評分s(hJ)。
模型篩選:重復以上步驟直至抵達迭代次數(shù)(本文實驗設(shè)置為10 000次)上限或所有匹配點的重投影誤差均小于預設(shè)閾值。統(tǒng)計不同的位姿假設(shè)數(shù)學模型下的樣本內(nèi)點數(shù)量,樣本內(nèi)點數(shù)量最多,即模型的評分最大的模型作為最佳數(shù)學模型,保留所有樣本內(nèi)點,剔除樣本外點,并將剔除外點后的對應點對用于下一步的點云配準操作。
位姿優(yōu)化的目標是尋找最優(yōu)的相機估計位姿(R?,T?),使得估計的位姿矩陣與真實位姿矩陣的誤差達到最小。光束平差法(Bundle Adjustment,BA)是相機位姿優(yōu)化領(lǐng)域的一個經(jīng)典方法,該方法在大量文獻[11-16]中的應用也已證明其位姿優(yōu)化的有效性。因此本文參考文獻[16]的優(yōu)化目標函數(shù),設(shè)計目標函數(shù)構(gòu)建一個光束平差問題來優(yōu)化第二階段中相機位姿估計結(jié)果,使得三維點云對于查詢圖像q與參考圖像r的重投影差異最小化,定義的目標函數(shù)如式(3)所示:
式中:piq=ChJ yi為參考圖像r視場范圍內(nèi)的第i個3D點yi在當前相機位姿估計下的重投影坐標值,[?]為亞像素級別插值,本文實驗過程中采用線性插值,Iq為當前像素點的歸一化像素值。在歐式群SE(3)中,采用對應的李代數(shù)對位姿更新δ∈R6進行參數(shù)化[13]。本文采用高斯牛頓法來解決上述最小二乘問題,雅克比矩陣和黑塞矩陣計算如式(4)所示:
通過雅克比矩陣和黑塞矩陣計算位姿更新:
則最終的位姿更新為:
采用上述過程對估計的相機位姿(?)進行更新,直到位姿更新量δ足夠小時停止更新,本文 實 驗 中 當dT<0.005,dR<0.05時 停 止更新。
第3節(jié)中所述采用深度圖像檢索及特征匹配算法來確定2D-3D匹配點,進一步實現(xiàn)相機的空間位姿估計。然而當圖像中特征點不易提取以及查詢圖像與參考圖像場景變化較大的情況下,該方法存在大量的誤匹配點,導致最終的位姿解算結(jié)果誤差較大甚至出現(xiàn)錯誤。同時由于特征匹配點較少,當存在大量誤匹配點時,通過RANSAC算法剔除了異常點[17],便無法得到足量用于PnP解算的2D-3D匹配點。然而特征點在每一幀圖像像素點中占比其實是較少的,即提取的特征點相對與圖像像素點來說是稀疏的,獲得的2D-3D匹配點也是稀疏的。為了獲得稠密的2D-3D匹配點,以此來提高相機空間位姿估計的精度,本文采用卷積神經(jīng)網(wǎng)絡(luò)對輸入的RGB圖像進行場景坐標回歸,構(gòu)建稠密的2D-3D匹配點,以實現(xiàn)第3節(jié)所述多階段相機位姿估計方法中的第一階段2D-3D匹配點的構(gòu)建,提出基于稠密場景回歸的多階段相機位姿估計方法。
本文采用ResNet神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),在保證網(wǎng)絡(luò)深度的同時防止網(wǎng)絡(luò)的退化。為實現(xiàn)相機稠密坐標回歸并減少計算量,對ResNet網(wǎng)絡(luò)結(jié)構(gòu)進行改進,將全連接層刪除,構(gòu)建全卷積神經(jīng)網(wǎng)絡(luò),通過卷積層輸出一個3通道的特征圖作為最終的預測結(jié)果,網(wǎng)絡(luò)輸出為160×120的三維場景坐標回歸,即是輸入圖像下采樣后的三維場景坐標。圖6是本文構(gòu)建的稠密場景回歸網(wǎng)絡(luò)結(jié)構(gòu)。
圖6 稠密場景回歸網(wǎng)絡(luò)結(jié)構(gòu)Fig.6 Structure dense scene regression network
采用以上神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)對查詢圖像的三維坐標值進行回歸,首先通過4個卷積層對圖像的特征進行提取,之后經(jīng)過3個殘差網(wǎng)絡(luò)結(jié)構(gòu)對場景回歸進行更好地擬合,通過卷積層輸出最終的三維坐標預測值。本文的Loss函數(shù)定義如公式(7)[18]:
式中:gt_coords表示查詢圖像每一個像素區(qū)域?qū)娜S坐標真實值,pred_coords表示網(wǎng)絡(luò)模型對查詢圖像每一個像素區(qū)域(4×4像素點區(qū)域)三維坐標的預測值,Norm(·)為歸一化函數(shù),s為損失因子,i表示第i個像素區(qū)域,n為像素區(qū)域總數(shù)。
本文采用訓練完成后的網(wǎng)絡(luò)對數(shù)據(jù)集下的測試圖像進行場景回歸。本文將真實場景坐標以及預測的場景坐標的三維信息(x,y,z)映射到圖像的RGB三通道,以RGB圖像進行展示,各數(shù)據(jù)集下回歸的結(jié)果如圖7所示。
圖7 各場景下場景回歸的結(jié)果Fig.7 Result of scene regression
由場景回歸的結(jié)果可以看出,采用神經(jīng)網(wǎng)絡(luò)對圖像的三維坐標進行回歸結(jié)果邊緣信息丟失較為嚴重,這是由于本文為了減少后續(xù)位姿求解過程的計算量,將圖像劃分成像素區(qū)域,對每一個像素區(qū)域的三維坐標真實值進行回歸,即是原始圖像三維坐標下采樣后的結(jié)果,因此丟失了大部分邊緣信息;而對于其余部分,在本文實驗的大部分場景下,圖像的三維坐標預測值和三維坐標真實值基本一致。
采用卷積神經(jīng)網(wǎng)絡(luò)對圖像中的像素點進行三維坐標回歸也可能存在一定錯誤,因此在回歸得到查詢圖像場景坐標的基礎(chǔ)上,本文采用隨機抽樣的方式,隨機抽取回歸結(jié)果中一定數(shù)量的場景坐標預測值作為PnP求解過程的輸入,解得一組相機的位姿假設(shè)hi。重復以上步驟構(gòu)造n組位姿假設(shè)集合(本文實驗過程中n=64),通過第三節(jié)中的RANSAC算法思路對位姿假設(shè)進行篩選,同時采用位姿對齊對估計位姿進行優(yōu)化,得到最終的相機位姿估計結(jié)果。
本文在公開數(shù)據(jù)集7scenes[14]以及自建數(shù)據(jù)集Labcore下對網(wǎng)絡(luò)參數(shù)進行訓練,其中7scenes數(shù)據(jù)集涵蓋了7種不同的室內(nèi)場景,是用于相機位姿估計的一個標準數(shù)據(jù)集。實驗選取的硬件工作平臺為臺式計算機,配有NVIDIA3090顯卡一張,網(wǎng)絡(luò)模型通過PyTorch平臺搭建。
相機位姿估計結(jié)果的精度可用位姿估計誤差低于誤差閾值(同時滿足平移誤差閾值和旋轉(zhuǎn)誤差閾值)幀數(shù)所占總幀數(shù)的百分比以及位姿估計誤差中值來進行評價[15-16,19-20]。首先利用隨 著誤差閾值增大時,位姿估計誤差低于誤差閾值數(shù)所占測試集總數(shù)的百分比來衡量相機位姿估計的準確性。圖8為本文所提方法在自建數(shù)據(jù)集Labcore以及公開數(shù)據(jù)集7scenes上實驗的相機位姿估計準確率結(jié)果。從圖中可以看出,采用多階段相機位姿估計方法的過程中,對于大部分場景,使用SIFT算子以及SURF算子作為特征點提取時位姿估計準確率較高,在位姿估計誤差閾值為5 cm/5°的范圍內(nèi),自建數(shù)據(jù)集Labcore上的估計精度最大為87.3%,公開數(shù)據(jù)集7scenes上,數(shù)據(jù)集中環(huán)境變化較大時其表現(xiàn)較差(后3個場景);同時,將稠密場景回歸網(wǎng)絡(luò)引入多階段相機位姿估計方法,以此構(gòu)建更為稠密的2D-3D匹配點之后,不論在自建數(shù)據(jù)集還是在公開數(shù)據(jù)集上相機位姿估計的精度均有大幅度提升。
圖8 位姿估計精度隨誤差閾值變化Fig.8 Accuracy of pose estimation varies with the error threshold
圖9為引入稠密場景回歸后多階段相機位姿估計方法與其他方法在公開數(shù)據(jù)集以及自建數(shù)據(jù)集上的位姿估計準確率對比(誤差閾值范圍為5 cm/5°,7Scenes下為7個場景的平均準確率,Labcore下為單個場景準確率)??梢钥吹皆诠_數(shù)據(jù)集下,本文方法的位姿估計準確率為82.7%,優(yōu)于DSM[9],DSAC[12],DSAC++[15],SANet[20],Pixloc[16],同時本文將現(xiàn)存幾種位姿估計較為優(yōu)越的方法在自建數(shù)據(jù)集上進行估計,結(jié)果表明本文方法能達到94.8%的位姿估計準確率,較其余方法更加優(yōu)越。其中DSAC++在自建數(shù)據(jù)集上表現(xiàn)相對較差,這是由于自建數(shù)據(jù)集環(huán)境變化較大,該網(wǎng)絡(luò)無法完全擬合數(shù)據(jù)集中的場景。
圖9 位姿估計準確率對比(5 cm/5°)Fig.9 Pose estimation accuracy comparison(5 cm/5°)
其次用平移誤差和旋轉(zhuǎn)誤差中值來衡量相機位姿估計算法的精度。圖10是本文方法在自建數(shù)據(jù)集Labcore以及7scenes數(shù)據(jù)集上進行位姿估計后的估計誤差中值結(jié)果。從圖中可以看出,對于大部分場景,本文方法的位姿估計誤差中值小于5 cm/5°。為了驗證本文提出方法的精度,根據(jù)平移誤差和旋轉(zhuǎn)誤差中值來與其他相機位姿估計方法相比較,表2為本文方法以及其他相機位姿估計方法的相機位姿估計精度,表格中的數(shù)據(jù)均來自于原始論文,加粗部分為取得各對比算法中最優(yōu)的結(jié)果。從表2可以看出,采用相機位姿估計的誤差中值作為評價標準時,相較于其余相機位姿估計方法,本文方法在大部分場景中位姿估計精度均有所提升。
圖10 各場景下的中值誤差結(jié)果Fig.10 Results of median localization Errors
表2 相機位姿估計算法性能對比Tab.2 Performance comparison of camera pose estimation algorithms
為對本文方法進行位姿估計的實時性進行評估,本文實驗中在7scenes數(shù)據(jù)集上17 000張用于測試的場景圖像進行位姿估計,并取位姿估計耗時均值作為評價指標。表3列出了本文方法與DSM[9],DSAC++[15],Pixloc[16]對單幀場景圖像進行位姿估計時每個步驟的耗時均值,實驗環(huán)境均為5.1節(jié)中所述。
表3 相機位姿估計算法時耗對比Tab.3 Time consumption comparison of camera pose estimation algorithms (s)
本文通過單目相機采集的RGB數(shù)據(jù)及先驗的三維點云信息,實現(xiàn)相機位姿估計。首先根據(jù)深度圖像及SFM算法,構(gòu)建稠密的相機位姿估計數(shù)據(jù)集。然后將深度檢索算法與基于結(jié)構(gòu)的算法相結(jié)合,提出多階段相機位姿估計方法。最后,采用全卷積神經(jīng)網(wǎng)絡(luò)回歸圖像的稠密場景信息,提出基于稠密場景回歸的多階段相機位姿估計算法。
實驗結(jié)果證明:
1.在自建數(shù)據(jù)集Labcore下,多階段相機位姿估計方法位姿估計中值誤差為平移誤差1.5 cm、旋轉(zhuǎn)誤差0.70°,且位姿估計準確率為87.3%(誤差閾值為5 cm/5°時);基于稠密場景回歸的多階段相機位姿估計算法位姿估計中值誤差為平移誤差0.3 cm、旋轉(zhuǎn)誤差0.60°,位姿估計準確率為94.8%(誤差閾值為5 cm/5°時)。
2.在公開數(shù)據(jù)集7Scenes下,多階段相機位姿估計的中值誤差受場景變化影響較大,引入稠密場景回歸后,位姿估計的精度大幅度提高,7個公開場景下的中值誤差均小于5 cm/5°,同時平均位姿估計準確率為82.7%(誤差閾值為5 cm/5°時)。相比于目前的相機位姿估計算法,本文算法在位姿估計環(huán)節(jié)耗時更短;在位姿估計精度上,不論從位姿估計準確率還是中值誤差角度進行評價,本文所提算法均有顯著的性能提升。由于本文在圖像檢索以及場景回歸階段均采用了卷積神經(jīng)網(wǎng)絡(luò)模型,因此在位姿估計的總時耗上相對較長。后續(xù)工作將進一步考慮實際應用的具體需求,通過簡化網(wǎng)絡(luò)模型的復雜度,提升本文位姿估計方法的效率。
從表3可以看出,本文在單幀場景圖像位姿估計的計算階段耗時為0.18 s,相比于其他3種方法來說耗時較短;同時,相比其余存在圖像檢索的相機位姿估計算法,本文方法相機位姿估計的總耗時最短。然而相比于文獻[15]中的DSAC++,由于本文增加了圖像檢索階段,因此相機位姿估計總耗時更長。本文方法耗時主要源于在圖像檢索以及位姿估計階段均使用了卷積神經(jīng)網(wǎng)絡(luò),復雜的網(wǎng)絡(luò)結(jié)構(gòu)造成了大量耗時。因此在后續(xù)工作中,綜合實際應用場景的精度及時耗需求,通過簡化圖像檢索以及場景回歸階段的網(wǎng)絡(luò)模型,可提升本文位姿估計方法的效率。