劉振耀,李瑞東,潘軍道
(中國(guó)科學(xué)院空天信息研究院,北京100094)
導(dǎo)航定位是基于位置服務(wù)研究的熱點(diǎn),當(dāng)前室外GNSS定位已經(jīng)足以提供成熟的定位服務(wù),但室內(nèi)定位技術(shù)仍處于起步階段,尚沒(méi)有一種技術(shù)占據(jù)絕對(duì)的優(yōu)勢(shì)[1]。根據(jù)應(yīng)用需求的不同,室內(nèi)定位技術(shù)分為消費(fèi)級(jí)和工業(yè)級(jí)兩種[2]。消費(fèi)級(jí)的定位精度要求在1~3 m,要求與移動(dòng)智能終端兼容;工業(yè)級(jí)的定位精度要求在厘米到分米級(jí),一般不考慮與現(xiàn)有的智能終端兼容。室內(nèi)定位技術(shù)種類(lèi)眾多,主要包括基于無(wú)線(xiàn)信號(hào)的定位、慣性導(dǎo)航和基于視覺(jué)的定位等。基于無(wú)線(xiàn)信號(hào)的定位包括UWB定位、RFID定位、偽衛(wèi)星定位、地磁定位、WiFi指紋等[3]。基于無(wú)線(xiàn)信號(hào)的定位方式容易受到復(fù)雜室內(nèi)環(huán)境的干擾和非視距誤差的影響等,穩(wěn)定性能差,而且往往需要架設(shè)基站或建立指紋數(shù)據(jù)庫(kù),限制了應(yīng)用場(chǎng)景。慣性導(dǎo)航[4]通過(guò)內(nèi)置傳感器可以實(shí)現(xiàn)自主導(dǎo)航,但限制了移動(dòng)終端的行動(dòng),且低成本的MEMS用于獨(dú)立的導(dǎo)航漂移誤差太大,一般不用于單獨(dú)的移動(dòng)終端的定位導(dǎo)航。
基于視覺(jué)的定位方法定位精度高,能夠提供豐富的場(chǎng)景信息,避免了無(wú)線(xiàn)信號(hào)受非視距誤差的影響,且能夠與移動(dòng)智能終端更好地兼容,成為眾多室內(nèi)定位方式中消費(fèi)級(jí)應(yīng)用較為新穎的模式之一。深度學(xué)習(xí)算法是當(dāng)前計(jì)算機(jī)視覺(jué)領(lǐng)域主流的目標(biāo)檢測(cè)算法,它依賴(lài)多層神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)圖像的層次化特征表示,與傳統(tǒng)檢測(cè)方法相比,可以實(shí)現(xiàn)更高的準(zhǔn)確率[5]。傳統(tǒng)的基于目標(biāo)檢測(cè)的室內(nèi)定位是將目標(biāo)的位置信息作為拍攝者的位置,本質(zhì)上屬于鄰近定位的一種,存在較大的位置誤差。因此本文提出一種基于目標(biāo)檢測(cè)和PnP(perspective-n-point)相結(jié)合的移動(dòng)終端室內(nèi)定位方法,通過(guò)Mask-RCNN網(wǎng)絡(luò)實(shí)現(xiàn)目標(biāo)檢測(cè),然后采用PnP算法求取相機(jī)準(zhǔn)確的位姿信息,最后給出基于以上原理的定位系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)方案。
目標(biāo)檢測(cè)是計(jì)算機(jī)視覺(jué)中常見(jiàn)的問(wèn)題之一,近年來(lái)隨著人工智能和深度學(xué)習(xí)的興起,基于深度學(xué)習(xí)的目標(biāo)檢測(cè)方法在識(shí)別準(zhǔn)確率、速度、性能等方面都有了極大的改善[6],而這些突破性進(jìn)展背后的主要技術(shù)支持正是深度學(xué)習(xí)中的卷積神經(jīng)網(wǎng)絡(luò)。卷積神經(jīng)網(wǎng)絡(luò),主要包括輸入層、卷積層、池化層、全連接層和Softmax層5個(gè)部分[7]。一些經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)可以用公式表示為
輸入層→(卷積層+→池化層?)+→全連接層+
式中,“卷積層+”表示一層或多層卷積層;“池化層?”表示沒(méi)有或有一層池化層。卷積層和池化層的組合也可以是一個(gè)或多個(gè),在多輪卷積層和池化層之后,卷積神經(jīng)網(wǎng)絡(luò)可以跟隨一層或多層全連接層,最后通過(guò)Softmax層輸出目標(biāo)識(shí)別結(jié)果概率分布。
在CVPR 2014年中文獻(xiàn)[8]提出了R-CNN,使用了卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行特征提取,并使用邊框回歸進(jìn)行目標(biāo)包圍框的修正。R-CNN顛覆了以往的目標(biāo)檢測(cè)方案,精度大大提升;但訓(xùn)練煩瑣,對(duì)時(shí)間和內(nèi)存的消耗很大。
文獻(xiàn)[9]于2015年提出Fast R-CNN,對(duì)R-CNN進(jìn)行了改進(jìn),取代R-CNN的串行特征提取方式,直接采用一個(gè)神經(jīng)網(wǎng)絡(luò)對(duì)全圖提取特征,除了選擇性搜索(selective search),其他部分都可以合在一起訓(xùn)練,但耗時(shí)的selective search依舊存在。
Faster R-CNN[10]繼承于Fast R-CNN,通過(guò)引入?yún)^(qū)域建議網(wǎng)絡(luò)Region Proposal Network(RPN)取代selective search,提高了區(qū)域提取的精度及網(wǎng)絡(luò)訓(xùn)練速度,是當(dāng)時(shí)應(yīng)用較廣的檢測(cè)框架。
Mask-RCNN[11]是基于Faster-RCNN架構(gòu)擴(kuò)展出的卷積網(wǎng)絡(luò),該網(wǎng)絡(luò)結(jié)構(gòu)較容易實(shí)現(xiàn)和訓(xùn)練,可以很方便地應(yīng)用于目標(biāo)檢測(cè)和分割中,彰顯了機(jī)器學(xué)習(xí)計(jì)算機(jī)視覺(jué)領(lǐng)域在2017年的最新成果。Mask-RCNN不僅保留了Faster-RCNN從端到端的網(wǎng)絡(luò)結(jié)構(gòu)優(yōu)勢(shì),而且在每個(gè)興趣點(diǎn)ROI上加一個(gè)用于預(yù)測(cè)分割掩碼的分層,稱(chēng)為掩碼層(mask branch),并改良了ROI Pooling,提出了ROI Align,使該層并行于已有邊界層和分類(lèi)層,提高了檢測(cè)精度[12-13]。Mask-RCNN訓(xùn)練簡(jiǎn)單,只需要在Faster-RCNN的基礎(chǔ)上增加一個(gè)較小的開(kāi)銷(xiāo),運(yùn)行速度可達(dá)5FPS,網(wǎng)絡(luò)框架結(jié)構(gòu)如圖1所示。
PnP求解算法是指通過(guò)多對(duì)3D與2D匹配點(diǎn),在已知或未知相機(jī)內(nèi)參的情況下求解相機(jī)外參的算法。PnP問(wèn)題有很多求解的方法,如P3P、直接線(xiàn)性變換(DTL)、EPnP、UPnP等, 以及構(gòu)建最小二乘問(wèn)題并迭代求解[5]。EPnP需要4對(duì)不共面的3D與2D匹配點(diǎn),是目前較好的PnP求解方法。本文采用EPnP[14]算法進(jìn)行試驗(yàn)。

參考點(diǎn)與控制點(diǎn)在世界坐標(biāo)系下的關(guān)系為
(1)
式中,αij為齊次重心坐標(biāo)。由線(xiàn)性關(guān)系在歐氏變化下的不變形可得
(2)
設(shè)K為相機(jī)的內(nèi)參矩陣,可以通過(guò)標(biāo)定獲得。設(shè){μi}i=1,2,…,n為參考點(diǎn){pi}i=1,2,…,n的像素坐標(biāo),則
(3)
(4)
因此可得
(5)
(6)
MX=0
(7)
式中,X的解為矩陣M的核空間,即
(8)
式中,Vi為MTM對(duì)應(yīng)零特征值的特征向量;N為MTM核空間的維數(shù);βi為待定系數(shù)。對(duì)于透視投影模型,N=1,求得其零空間特征向量,可以得到虛擬控制點(diǎn)的相機(jī)平面坐標(biāo)
X=βV
(9)
(10)
其中控制點(diǎn)之間的距離關(guān)系可表示為
(11)
(12)
求解得到4個(gè)虛擬控制點(diǎn)在相機(jī)參考坐標(biāo)下的坐標(biāo),計(jì)算3D參考點(diǎn)在相機(jī)參考坐標(biāo)系下的坐標(biāo),然后使用迭代最近點(diǎn)(iterative closest point,ICP)算法即可求出相機(jī)位姿。
本文提出的室內(nèi)定位方法分為前期目標(biāo)數(shù)據(jù)庫(kù)的構(gòu)建和后期目標(biāo)檢測(cè)及終端定位兩個(gè)階段。前期通過(guò)采集含有各種目標(biāo)的視頻或圖像信息得到滿(mǎn)足要求的神經(jīng)網(wǎng)絡(luò)參數(shù)模型,同時(shí)采集含有目標(biāo)圖像的RGBD信息,用于后期的PnP算法。后期借助前期得到的參數(shù)模型對(duì)待定位圖像進(jìn)行目標(biāo)檢測(cè),如果確認(rèn)圖像含有某個(gè)目標(biāo)信息,則通過(guò)調(diào)用該目標(biāo)的RGBD信息,利用PnP算法得到待求圖像的準(zhǔn)確的位姿信息,如圖2所示。
前期目標(biāo)數(shù)據(jù)庫(kù)的構(gòu)建階段主要包括以下幾個(gè)步驟:
(1) 建立統(tǒng)一的室內(nèi)坐標(biāo)系統(tǒng),測(cè)量得出目標(biāo)的位置及深度相機(jī)拍攝點(diǎn)位置。
(2) 利用已知位姿的深度相機(jī)采集含有目標(biāo)圖像的RGBD信息并保存,用于后期的PnP的算法;深度相機(jī)位置信息通過(guò)步驟(1)得出,姿態(tài)信息可以通過(guò)慣導(dǎo)模塊求解。
(3) 采集場(chǎng)景中可識(shí)別目標(biāo)的圖像信息。
(4) 用深度學(xué)習(xí)框架對(duì)采集得到的圖像信息進(jìn)行訓(xùn)練并得到滿(mǎn)足要求的參數(shù)模型。
后期目標(biāo)檢測(cè)及終端定位階段主要包括以下幾個(gè)步驟:
(1) 輸入待定位的圖像。
(2) 用深度學(xué)習(xí)框架借助之前得到的參數(shù)模型對(duì)輸入的圖像進(jìn)行目標(biāo)檢測(cè),得到檢測(cè)結(jié)果。
(3) 如果含有目標(biāo)信息,則通過(guò)調(diào)用該目標(biāo)的RGBD信息,利用PnP算法得到待求圖像的準(zhǔn)確的位姿信息;如包含多個(gè)目標(biāo),則取各目標(biāo)計(jì)算出的位置均值為終端的位置。
(4) 將圖像的位置信息在底圖上渲染后返回或根據(jù)起點(diǎn)/終點(diǎn)信息進(jìn)行路徑規(guī)劃,并將路徑規(guī)劃結(jié)果在底圖上渲染后返回。
本目標(biāo)檢測(cè)試驗(yàn)的數(shù)據(jù)集利用自采的新技術(shù)基地圖片。數(shù)據(jù)集共有4類(lèi)目標(biāo),訓(xùn)練圖片1095張,測(cè)試圖像50張;訓(xùn)練使用的GPU型號(hào)為Nvidia 1080Ti,顯存11 GB,訓(xùn)練160輪次。目標(biāo)檢測(cè)結(jié)果如圖3所示。
準(zhǔn)確率是對(duì)目標(biāo)檢測(cè)結(jié)果的總體評(píng)價(jià),等于被正確檢測(cè)的目標(biāo)個(gè)數(shù)與測(cè)試圖像總數(shù)的比值,準(zhǔn)確率越高說(shuō)明算法檢測(cè)效果越好。設(shè)準(zhǔn)確率為P,則計(jì)算公式為
(13)
式中,Ni為目標(biāo)檢測(cè)正確的圖像個(gè)數(shù);N為圖像總數(shù)。
結(jié)果分析:測(cè)試圖像50張共包含測(cè)試樣本數(shù)62個(gè),準(zhǔn)確識(shí)別出的測(cè)試樣本數(shù)為61個(gè),檢測(cè)準(zhǔn)確率為98.3%。
基于以上原理在安卓和IOS開(kāi)發(fā)了源起導(dǎo)航APP,目前主要基于新技術(shù)基地綜合樓進(jìn)行室內(nèi)定位,功能和場(chǎng)景較為單一,后續(xù)需要在此基礎(chǔ)上進(jìn)行完善,同時(shí)研究如何減少數(shù)據(jù)采集的工作量。如圖4所示。
4.2.1 數(shù)據(jù)1
數(shù)據(jù)1為基于TUM rgbd_dataset_freiburg1_xyz數(shù)據(jù)集圖片數(shù)據(jù)。TUM是機(jī)器視覺(jué)和SLAM經(jīng)典的數(shù)據(jù)集,自帶ground-truth軌跡,可以進(jìn)行誤差比對(duì)。本文試驗(yàn)截取4張含有相同目標(biāo)(電腦)照片的RGBD信息,以及其已知真實(shí)位姿。在該方法中,姿態(tài)信息可以求出,但對(duì)基于移動(dòng)終端的室內(nèi)定位來(lái)說(shuō),姿態(tài)并不是重要的信息。本文試驗(yàn)重點(diǎn)關(guān)注位置信息,姿態(tài)信息的相關(guān)數(shù)據(jù)及比對(duì)不包含在試驗(yàn)內(nèi)。如圖5所示。
真實(shí)的位置信息及以第1張為基準(zhǔn)的位置差見(jiàn)表1。

表1 真實(shí)的位置信息及以第1張為基準(zhǔn)的位置差
以各單張圖片的位姿作為轉(zhuǎn)化參數(shù),通過(guò)PnP算法計(jì)算出其他各張圖片在世界坐標(biāo)系下的位置及位置誤差的結(jié)果,見(jiàn)表2—表5。

表2 以1.png位姿為轉(zhuǎn)化參數(shù)的PnP算法結(jié)算結(jié)果

表3 以2.png位姿為轉(zhuǎn)化參數(shù)的PnP算法結(jié)算結(jié)果

表4 以3.png位姿為轉(zhuǎn)化參數(shù)的PnP算法結(jié)算結(jié)果

表5 以4.png位姿為轉(zhuǎn)化參數(shù)的PnP算法結(jié)算結(jié)果
結(jié)果分析:將測(cè)量值與真實(shí)值在3個(gè)軸方向進(jìn)行比較可知,X軸最大誤差為0.30 m,Y軸最大誤差為0.05 m,Z軸最大誤差為0.02 m內(nèi),滿(mǎn)足移動(dòng)終端室內(nèi)定位的需求。
4.2.2 數(shù)據(jù)2
數(shù)據(jù)2為真實(shí)場(chǎng)景試驗(yàn)。在中科院新技術(shù)基地綜合樓四樓實(shí)驗(yàn)室采集了一組數(shù)據(jù)進(jìn)行真實(shí)場(chǎng)景試驗(yàn),采用的設(shè)備為Kinect2深度相機(jī),基于SDK編寫(xiě)同時(shí)采集配準(zhǔn)的彩色圖和深度圖信息。
采集的試驗(yàn)數(shù)據(jù)如圖6所示。R_1.png、R_2.png和R_3.png采集電腦周?chē)植康腞GBD信息。為簡(jiǎn)化試驗(yàn),以拍攝R_1.png時(shí)相機(jī)坐標(biāo)系作為世界坐標(biāo)系。結(jié)果見(jiàn)表6、表7。

相片xyzR_1.png000R_2.png-0.50-0.65R_3.png00-0.65

表7 PnP算法結(jié)算出的結(jié)果
由表可知,通過(guò)PnP算法求解出的位置與真實(shí)位置單軸最大差值在0.35 m以?xún)?nèi),綜合考慮試驗(yàn)過(guò)程中基準(zhǔn)位置誤差、深度信息采集誤差等,對(duì)于手持式移動(dòng)終端來(lái)說(shuō),該結(jié)果滿(mǎn)足室內(nèi)定位1~3 m的要求。
本文提出了一種基于目標(biāo)檢測(cè)和PnP相結(jié)合的移動(dòng)終端室內(nèi)定位方法,對(duì)于消費(fèi)級(jí)的移動(dòng)終端是一種簡(jiǎn)單有效的室內(nèi)定位手段。但本文試驗(yàn)較為簡(jiǎn)單,PnP解算中相片采用同一個(gè)設(shè)備,且Kinect相機(jī)經(jīng)過(guò)嚴(yán)格的標(biāo)定。后續(xù)將針對(duì)智能終端設(shè)備進(jìn)行試驗(yàn),同時(shí)考慮將該方案在終端APP中進(jìn)行實(shí)現(xiàn)。