卞賢掌 費(fèi)海平 李世強(qiáng)
摘要
增強(qiáng)現(xiàn)實(shí)(AR)通過分析場景特征,將計(jì)算機(jī)生成的幾何信息通過視覺融合方法添加到真實(shí)環(huán)境中,以增強(qiáng)對(duì)環(huán)境的感知。其中圖像配準(zhǔn)技術(shù)是AR技術(shù)的核心問題之一,即在三維環(huán)境中估計(jì)視覺傳感器的姿態(tài)并理解場景中的對(duì)象。近年來,計(jì)算機(jī)視覺領(lǐng)域取得了巨大的進(jìn)步,但是AR系統(tǒng)在三維場景中基于自然特征點(diǎn)的配準(zhǔn)技術(shù)仍然是一個(gè)嚴(yán)重的挑戰(zhàn)。由于不穩(wěn)定因素的影響,在三維場景中精確計(jì)算移動(dòng)相機(jī)的姿態(tài)還存在較大的困難,如圖像噪聲,光照變化和復(fù)雜的背景圖案。因此,設(shè)計(jì)一種穩(wěn)定、可靠、高效的場景識(shí)別算法仍然是一項(xiàng)非常具有挑戰(zhàn)性的工作。本文提出了一種結(jié)合視覺同步定位與地圖構(gòu)建(SLAM)和基于深度卷積神經(jīng)網(wǎng)絡(luò)(語義分割)的語義分割算法來提高AR圖像配準(zhǔn)性能?;谡Z義分割的語義分割是一種計(jì)算量較大的預(yù)測任務(wù),其目的是在應(yīng)用AR圖像配準(zhǔn)時(shí)預(yù)測圖像中每個(gè)像素的類別,并能夠縮小兩幀之間特征點(diǎn)的搜索范圍,從而提高系統(tǒng)的穩(wěn)定性。實(shí)驗(yàn)結(jié)果表明,語義分割的場景信息將大幅提高AR圖像配準(zhǔn)技術(shù)的性能。
【關(guān)鍵詞】語義分割 SLAM 深度學(xué)習(xí) 增強(qiáng)現(xiàn)實(shí)
1 介紹
增強(qiáng)現(xiàn)實(shí)技術(shù)(AR)是一種新型的人機(jī)交互技術(shù),它利用計(jì)算機(jī)系統(tǒng)提供信息來增強(qiáng)人們對(duì)真實(shí)環(huán)境的感知。真實(shí)場景將疊加計(jì)算機(jī)生成的虛擬場景、對(duì)象或系統(tǒng)信息,實(shí)現(xiàn)對(duì)現(xiàn)實(shí)的增強(qiáng)。AR技術(shù)強(qiáng)調(diào)現(xiàn)有虛擬世界與虛擬世界的融合,強(qiáng)調(diào)真實(shí)對(duì)象與虛擬對(duì)象的共存與互補(bǔ)。其中圖像配準(zhǔn)是AR技術(shù)的關(guān)鍵內(nèi)容之一。
如圖1所示,目前大多數(shù)川之應(yīng)用都是通過相機(jī)識(shí)別已知的標(biāo)記來計(jì)算三維配準(zhǔn)的空間位置,將虛擬模型疊加在真實(shí)場景中。然而,一般在行業(yè)應(yīng)用中不允許使用標(biāo)記,因此使用自然特征點(diǎn)進(jìn)行三維配準(zhǔn)是AR應(yīng)用的必然趨勢。
目前,基于自然特征點(diǎn)的三維配準(zhǔn)技術(shù)主要采用視覺同步定位與地圖構(gòu)建(SLAM)算法[1][2]。圖2是視覺SLAM的示意圖。利用機(jī)器視覺提取圖像特征點(diǎn),計(jì)算描述符和匹配特征點(diǎn)。相機(jī)捕捉相鄰幀的連續(xù)視頻序列并匹配關(guān)鍵點(diǎn),并根據(jù)相機(jī)姿態(tài)的匹配結(jié)果,最終實(shí)現(xiàn)AR的3D配準(zhǔn)。
然而,基于自然特征點(diǎn)的三維配準(zhǔn)算法目前還不成熟。很容易匹配錯(cuò)誤的特征點(diǎn),從而限制了AR應(yīng)用的推廣。造成不匹配的主要原因是場景中有很多特征點(diǎn),并且有很多相似的特征,這時(shí)當(dāng)相機(jī)采集圖像并匹配像素點(diǎn)時(shí),就很容易混淆。本文研究了一種基于語義分割的強(qiáng)魯棒場景感知技術(shù),在對(duì)自然特征點(diǎn)進(jìn)行匹配的同時(shí)對(duì)匹配區(qū)域進(jìn)行限制。首先將相機(jī)拍攝的場景進(jìn)行語義分割,即根據(jù)對(duì)象本身的含義將各階段的對(duì)象進(jìn)行分割。當(dāng)對(duì)三維配準(zhǔn)的自然特征進(jìn)行匹配時(shí),相鄰幀的匹配結(jié)果僅限于同一對(duì)象的像素區(qū)域。
如圖3所示,當(dāng)相鄰幀特征點(diǎn)匹配,桌子和椅子分別對(duì)應(yīng),如果匹配特征點(diǎn)是放在桌子上,其余的是在椅子上,我們可以判斷哪些是錯(cuò)誤匹配點(diǎn)并刪除它們,這將提高自然特征點(diǎn)匹配精度。
2 相關(guān)研究
基于自然特征點(diǎn)的AR尚處于初始階段,大多數(shù)基于自然特征點(diǎn)的AR應(yīng)用配準(zhǔn)都使用了視覺SLAM算法。Castle等人[3]的作品是最早將物體識(shí)別和單眼關(guān)鍵幀與SLAM相結(jié)合的作品之一。在檢測到兩幀圖像中的物體后,他們?cè)诘貓D上計(jì)算出物體的位置。但與我們的方法不同,它們只關(guān)注點(diǎn)的幾何意義,對(duì)AR三維配準(zhǔn)的語義信息和優(yōu)化不感興趣。
Bao等人[4]是第一個(gè)從運(yùn)動(dòng)(SSFM)中應(yīng)用語義結(jié)構(gòu)的研究員。SLAM執(zhí)行視頻流使得點(diǎn)云和關(guān)鍵幀的映射逐漸遞增,而SSFM可以同時(shí)處理所有幀,SSFM的重構(gòu)與識(shí)別是分離與獨(dú)立的,SSFM使用邊框搜索對(duì)象并專注于重建。
Fioraio等人[5]展示了一個(gè)新的SLAM系統(tǒng),該系統(tǒng)將3D對(duì)象添加到地圖中,并通過調(diào)整來優(yōu)化它們的姿態(tài)。他們建立了含有7個(gè)對(duì)象的數(shù)據(jù)庫來描述這些對(duì)象,這些對(duì)象采用RGB-D攝像機(jī)在幾個(gè)尺度上獲得三維特征,并為每個(gè)尺度創(chuàng)建了獨(dú)立的索引。通過尋找3D到3D的對(duì)應(yīng)關(guān)系,實(shí)現(xiàn)了目標(biāo)識(shí)別,并采用RANSAC算法進(jìn)行濾波。雖然它們可以生成房間大小的地圖,但是它們的應(yīng)用程序不會(huì)實(shí)時(shí)運(yùn)行。
Salas-Moreno等人[6]提出了一種結(jié)合了RGB-D地圖重建和目標(biāo)識(shí)別的新型視覺SLAM系統(tǒng)。他們用KinectFusion預(yù)建對(duì)象數(shù)據(jù)庫,用點(diǎn)來描述對(duì)象的幾何形狀。這些點(diǎn)都由哈希表索引,并通過計(jì)算hough投票來標(biāo)識(shí)。但它對(duì)數(shù)百個(gè)對(duì)象的可擴(kuò)展性尚不清楚。
Abhishek Anand等人[7]提出了一種通過檢測點(diǎn)云來獲取語義對(duì)象的方法。他們訓(xùn)練相應(yīng)對(duì)象的特征點(diǎn),并匹配新幀的幾何信息。Liefeng Bo等人[8]提出了一種利用特征點(diǎn)與RGB-D信息匹配來檢測目標(biāo)的方法。DanielMaier等人[9]利用NAO機(jī)器人攜帶AsusXtion Pro實(shí)時(shí)傳感器,實(shí)現(xiàn)了機(jī)器人在3D環(huán)境下的定位和障礙物識(shí)別,重建了3D點(diǎn)云環(huán)境,但缺乏場景的語義信息。
為了理解場景,語義分割起著至關(guān)重要的作用,引起了越來越多研究者的興趣[10-13]。在現(xiàn)有的方法中,卷積神經(jīng)網(wǎng)絡(luò)(neural network,CNN)在利用RGB圖像進(jìn)行語義分割方面具有很大的優(yōu)勢。典型的CNN,稱為全卷積神經(jīng)網(wǎng)絡(luò)(FCN),在過去幾年中已經(jīng)取得了重要的進(jìn)展。文獻(xiàn)[14]采用以不同層間融合為代表的編碼器式FCNs,大大提高了預(yù)測精度的密度。為了在不丟失分辨率的情況下擴(kuò)展接收域,并在多個(gè)分割任務(wù)中獲得更好的性能,擴(kuò)展卷積算子取代了碼譯碼器體系結(jié)構(gòu)。盡管做了很多努力去改進(jìn),但效果仍然不令人滿意,尤其是在物體的邊界上。為了解決這個(gè)問題,研究者們開始將基于全連通條件隨機(jī)場(allconnectedconditions random field,CRFs)的RGB模型與CNN相結(jié)合,并進(jìn)行了改進(jìn)[15][16]。然而,這些方法很難應(yīng)用于室內(nèi)環(huán)境中顏色相近的物體。
3 系統(tǒng)設(shè)計(jì)
在本節(jié)中,我們將從兩個(gè)部分介紹我們的方法,視覺SLAM和語義分割。圖4是這個(gè)系統(tǒng)的簡圖。本文關(guān)注SLAM和語義分割,而不是g2o庫的優(yōu)化。AR的圖像配準(zhǔn)主要分為語義分割和視覺slam兩部分。
3.1 視覺SLAM
可以使用類似于depth camera Kinect的微軟Hololens進(jìn)行圖像采集,得到每個(gè)像素的RGB和depth值。我們假設(shè)坐標(biāo)系如圖5所示。
如圖5所示,o-xyz是圖像的坐標(biāo),o-xyz是攝像機(jī)的坐標(biāo)。假設(shè)圖中的點(diǎn)為(u,v),對(duì)應(yīng)的3D點(diǎn)為(x,y,z),則它們的坐標(biāo)變換如式(1)。
首先,我們得到地圖的深度數(shù)據(jù)來代替Z,計(jì)算出x和y,其中f代表焦距,c代表中心點(diǎn)。然后,當(dāng)我們得到圖像中每個(gè)點(diǎn)的位置時(shí),由于相鄰幀之間的差異,我們可以計(jì)算出相機(jī)的位移和旋轉(zhuǎn)。
在圖6中,很容易看出這兩個(gè)數(shù)字已經(jīng)轉(zhuǎn)向了一個(gè)特定的角度。但它會(huì)轉(zhuǎn)多少度呢?這個(gè)問題被稱為相機(jī)相對(duì)姿態(tài)估計(jì)。經(jīng)典的算法是迭代最近點(diǎn)(ICP)。該算法需要兩個(gè)圖像的特征點(diǎn)。我們使用OpenCV進(jìn)行特征點(diǎn)匹配。這樣就可以用PnP算法預(yù)測攝像機(jī)的姿態(tài)。如式(2)所示。
R是攝像機(jī)的姿態(tài),C是攝像機(jī)的標(biāo)定矩陣。R是連續(xù)變化值,C是穩(wěn)定常數(shù)。一般情況下,只要有四組匹配點(diǎn),就可以計(jì)算出模型。圖7為本次實(shí)驗(yàn)的圖片,結(jié)果顯示相鄰兩幀檢測到的特征點(diǎn)有317個(gè),出現(xiàn)大量誤匹配特征點(diǎn)。
理論上,只要不斷地比較新幀和舊幀,就可以解決定位問題。然后,把這些關(guān)鍵點(diǎn)放在一起,就可以生成地圖。當(dāng)然,如果slam如此簡單,那就不值得學(xué)習(xí)超過30年。這主要是由于相鄰幀之間有大量相似的特征點(diǎn),噪聲處理非常復(fù)雜,導(dǎo)致了不匹配。因此,我們提出了一種優(yōu)化匹配誤差的方法。
3.2 語義分割
本方法需要圖像的語義信息的目的是當(dāng)相鄰的幀特征點(diǎn)匹配時(shí),合格的匹配點(diǎn)在同一個(gè)像素區(qū)域,根據(jù)語義分割信息進(jìn)行篩選。語義分割主要采用全卷積神經(jīng)網(wǎng)絡(luò)。全卷積神經(jīng)網(wǎng)絡(luò)輸入一個(gè)圖像得到與原始相同大小的輸出圖像,輸出圖像具有像素到像素的映射,這是一個(gè)像素級(jí)的識(shí)別,輸出圖像中每個(gè)像素的輸入圖像在原始圖像上都有相應(yīng)的標(biāo)記,表示什么對(duì)象最有可能是對(duì)象或類別。
Jiang[17]提出了一個(gè)RGB-D FCN體系結(jié)構(gòu)(DFCN)來生成每個(gè)像素上每個(gè)類的一元可能性的響應(yīng)。如圖8所示,DFCN部分主要有兩個(gè)模塊:
(1)三個(gè)向下樣本池的卷積層,用于特征提取和深度融合;
(2)用于上下文推理和稠密預(yù)測的膨脹卷積層。
它使用了16層的VGG net第一層 Conv1到Conv4作為基本框架。該基本結(jié)構(gòu)適用于RGB通道和深度通道的特征提取。在網(wǎng)絡(luò)的兩個(gè)分支的每次池化之前都將它們與元素求和。然后,在主分支的每個(gè)池化層之前添加融合層。為了防止函數(shù)映射的進(jìn)一步減少,VGG-16中的第4池化層被替換為一次最大池化,而第五池化層被替換為一次最大池化和一次平均池化。為了使兩個(gè)分支中的值兼容并更易于訓(xùn)練,它對(duì)深度通道進(jìn)行了規(guī)范化,深度通道的初始范圍從0到65535到相同的彩色圖像范圍從0到255。
4 實(shí)驗(yàn)評(píng)價(jià)
在我們的設(shè)計(jì)中,利用語義分割的輸出來限定兩個(gè)視頻幀之間的匹配點(diǎn)。具體來說,我們將這兩種技術(shù)的結(jié)合定義為式(3)。p和Q是連續(xù)幀圖像m和n中的特征點(diǎn),R和t是旋轉(zhuǎn)矩陣和位移向量,PRGB-m和QRGB-n是三個(gè)通道在語義分割圖對(duì)應(yīng)特征點(diǎn)上的RGB值。
我們使用開放數(shù)據(jù)集SUN RGBD進(jìn)行測試。它包含NYUv2圖像及其像素級(jí)語義注釋的數(shù)據(jù)。在TensorFlow框架中實(shí)現(xiàn)了DFCN-DCRF架構(gòu),并使用隨機(jī)梯度下降(SGD)進(jìn)行端到端訓(xùn)練。如圖9所示,左邊的RGB,深度在中間和右邊的語義分割和不同顏色代表了不同場景的對(duì)象??梢?,目前顯著的目標(biāo)分割效果是理想的。然而,小對(duì)象的分割并不理想
假設(shè)有兩個(gè)相鄰的幀圖像F1、F2和兩組對(duì)應(yīng)的特征點(diǎn),如式(4)所示。
我們的目標(biāo)是算出位移矢量的旋轉(zhuǎn)矩陣R和t,如式(5)所示。
然而,在現(xiàn)實(shí)中,由于誤差的存在,不可能得到等號(hào),所以我們通過最小化誤差來求解,如式(6)所示。
這個(gè)問題可以用經(jīng)典的ICP算法來解決。其核心是奇異值分解(SVD)。我們將調(diào)用OpenCV中的函數(shù)來解決這個(gè)問題。接下來,我們將簡要介紹實(shí)現(xiàn)過程。由于我們需要匹配兩個(gè)圖像并計(jì)算它們的旋轉(zhuǎn)和位移關(guān)系,所以我們分三部分來做。首先,使用SIFT算法提取圖像特征點(diǎn),用這些關(guān)鍵點(diǎn)周圍的像素計(jì)算描述子。其次,在前面的描述的基礎(chǔ)上,使用快速最近似近鄰搜索庫(FLANN)進(jìn)行圖像特征匹配,返回DMatch結(jié)構(gòu),包括queryldx(上一個(gè)關(guān)鍵幀)、trainldx(下一個(gè)關(guān)鍵幀)、距離。然后根據(jù)經(jīng)驗(yàn)值將距離大于最小范圍4倍的點(diǎn)移除。最后,根據(jù)語義分割的結(jié)果,對(duì)匹配的特征點(diǎn)進(jìn)行RGB值的過濾,保持顏色相同的特征點(diǎn)即相同的對(duì)象,反之亦然。最后,用PnP算法估計(jì)攝像機(jī)的姿態(tài),得到旋轉(zhuǎn)矩陣和位移向量。
5 結(jié)果評(píng)價(jià)
將視覺slam和語義分割相結(jié)合是利用視覺SLAM圖像處理方法得到的特征匹配結(jié)果,判斷下一幀匹配的特征點(diǎn)是否在同一目標(biāo)像素區(qū)域內(nèi)。如果不在同一區(qū)域內(nèi),則判斷為不匹配并刪除。圖7所示,這是只使用自然特征點(diǎn)為特征點(diǎn)匹配,很明顯,有很多錯(cuò)配的結(jié)果,一些房子的匹配點(diǎn)誤以為傘,一些墻壁誤以為路面等等。在使用過本文新的方法后如圖10中,我們刪除一些相鄰幀處在不相同的像素區(qū)域內(nèi)的匹配點(diǎn),結(jié)果明顯好了很多。我們的方法在一定程度上提高了匹配的準(zhǔn)確性,提高了增強(qiáng)現(xiàn)實(shí)圖像配準(zhǔn)的準(zhǔn)確性。
如表1所示,兩幀的特征點(diǎn)總數(shù)為317,兩個(gè)匹配特征點(diǎn)之間的最小距離為6.7像素。沒有語義信息的匹配特征點(diǎn)有114個(gè),有語義信息的匹配特征點(diǎn)有87個(gè)。也就是說,當(dāng)我們使用語義信息時(shí),我們可以減少21個(gè)不匹配特征點(diǎn)。盡管進(jìn)行了篩選,但仍然存在不匹配的可能性。
本文提出了一種結(jié)合語義分割的圖像配準(zhǔn)方法來提高視覺SLAM的準(zhǔn)確性,進(jìn)而提高增強(qiáng)現(xiàn)實(shí)圖像配準(zhǔn)的準(zhǔn)確性。圖像特征匹配限制在同一物體在不同幀中的像素區(qū)域,以減少噪聲對(duì)特征匹配的影響。當(dāng)然,當(dāng)前的語義分割在場景中不能被充分識(shí)別。本文僅在一定程度上提高了SLAM匹配精度。隨著語義分割準(zhǔn)確率的逐步提高,對(duì)階段的感知將逐步增強(qiáng),用于AR的圖像配準(zhǔn)技術(shù)將變得更加智能化。
參考文獻(xiàn)
[1]趙洋,劉國良,田國會(huì),羅勇,王梓任,張威,李軍偉.基于深度學(xué)習(xí)的視覺SLAM綜述[J].機(jī)器人,2017,39(06).
[2]江宛諭.基于深度學(xué)習(xí)的物體檢測分$1[J].電子世界,2018,15(05).
[3]R.O.Castle,G.Klein and D.W,Murray,Combining monoSLAM withobject recognition for sceneaugmentation using a wearablecamera,Image Vis.Comput.28(11)(2010)1548-1556.
[4]S.Y.Bao and S.Savarese,Semanticstructure from motion,Comput.Vis.Pattern Recognit.,20-25 June 2011,Providence,R1 pp.2025-2032.
[5]N.Fioraio,G.Cerri and L.Di Stefano,Towards semanticKinectFusion,Lecture Notes inComputer Science(includingsubseries Lecture Notes in Arti cialIntelligence and Lecture Notes inBioinformatics)8157 LNCS(PART 2)(2013)299-308.
[6]R.F.Salas-Moreno,R.A.Newcombe,A.J.Davison and P.H.J.Kelly,SLAM++:Simultaneous localisation andmAPPing at the level of objects,inIEEE Int.Conf.Comput. Vis.PatternRecogni.23-28 June,Portland,OR
[7]A.Anand,H.S.Koppula,T.Joachimsand A. Saxena,Contextually guidedsemantic labeling and search for 3Dpoint clouds,Int.i.Robot.Res,32(1)(2013)19-34.
[8]L.Bo,X.Ren and D.Fox,Learninghierarchical sparse features forRGB-(D)object recognition,Int.J.Robot.Res.33(4)(2014)581-599.
[9]D.Maier,A.Hornung and M.Bennewitz,Real-time navigationin 3d environments based on depthcamera data,in 2012 12th IEEE-RASInt.Conf.Humanoid Robots(Humanoids2012),2012,pp.692-697.
[10]梁明杰,閔華清,羅榮華.基于圖優(yōu)化的同時(shí)定位與地圖創(chuàng)建綜述[J].機(jī)器人,2013,35(04):500-512.
[11]王浩.基于視覺的行人檢測技術(shù)研究[D].遼寧工業(yè)大學(xué),2018.
[12]嚴(yán)超華.深度語義同事定位與建圖[D].浙江大學(xué),2018.
[13]付夢印,呂憲偉,劉形,楊毅,李星河,李玉.基于RGB-D數(shù)據(jù)的實(shí)時(shí)SLAM算法[J].機(jī)器人,2015.
[14]V.Badrinarayanan,A.Kendall and R.Cipolla,Segnet:A deep convolutionalencoderdecoder architecture forscene segmentation,IEEE Trans.Pattern Anal.Mach.Intell.39(12)(2017)2481-2495.
[15]L.-C.Chen,G.Papandreou,I.Kokkinos,K.Murphy and A.L.Yuille,Deeplab:Semantic image segmentationwith deep convolutional nets,atrousconvolution,and fully connectedcrfs,arXiv:1606.00915.
[16]J.Dai,K.He and J.Sun,Boxsup:Exploiting bounding boxes tosupervise convolutional networks forsemantic segmentation,in Proc.IEEEInt.Conf.Comput.Via.2015,pp.1635-1643.
[17]J. Jiang,Z. Zhang,Y. Huang andL.Zheng,Incorporating depth intoboth CNN and CRF for indoor semanticsegmentation,arXiv:1705.07383.