劉振耀,李瑞東,潘軍道
(中國科學(xué)院空天信息研究院,北京100094)
導(dǎo)航定位是基于位置服務(wù)研究的熱點,當(dāng)前室外GNSS定位已經(jīng)足以提供成熟的定位服務(wù),但室內(nèi)定位技術(shù)仍處于起步階段,尚沒有一種技術(shù)占據(jù)絕對的優(yōu)勢[1]。根據(jù)應(yīng)用需求的不同,室內(nèi)定位技術(shù)分為消費級和工業(yè)級兩種[2]。消費級的定位精度要求在1~3 m,要求與移動智能終端兼容;工業(yè)級的定位精度要求在厘米到分米級,一般不考慮與現(xiàn)有的智能終端兼容。室內(nèi)定位技術(shù)種類眾多,主要包括基于無線信號的定位、慣性導(dǎo)航和基于視覺的定位等?;跓o線信號的定位包括UWB定位、RFID定位、偽衛(wèi)星定位、地磁定位、WiFi指紋等[3]。基于無線信號的定位方式容易受到復(fù)雜室內(nèi)環(huán)境的干擾和非視距誤差的影響等,穩(wěn)定性能差,而且往往需要架設(shè)基站或建立指紋數(shù)據(jù)庫,限制了應(yīng)用場景。慣性導(dǎo)航[4]通過內(nèi)置傳感器可以實現(xiàn)自主導(dǎo)航,但限制了移動終端的行動,且低成本的MEMS用于獨立的導(dǎo)航漂移誤差太大,一般不用于單獨的移動終端的定位導(dǎo)航。
基于視覺的定位方法定位精度高,能夠提供豐富的場景信息,避免了無線信號受非視距誤差的影響,且能夠與移動智能終端更好地兼容,成為眾多室內(nèi)定位方式中消費級應(yīng)用較為新穎的模式之一。深度學(xué)習(xí)算法是當(dāng)前計算機視覺領(lǐng)域主流的目標檢測算法,它依賴多層神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)圖像的層次化特征表示,與傳統(tǒng)檢測方法相比,可以實現(xiàn)更高的準確率[5]。傳統(tǒng)的基于目標檢測的室內(nèi)定位是將目標的位置信息作為拍攝者的位置,本質(zhì)上屬于鄰近定位的一種,存在較大的位置誤差。因此本文提出一種基于目標檢測和PnP(perspective-n-point)相結(jié)合的移動終端室內(nèi)定位方法,通過Mask-RCNN網(wǎng)絡(luò)實現(xiàn)目標檢測,然后采用PnP算法求取相機準確的位姿信息,最后給出基于以上原理的定位系統(tǒng)設(shè)計和實現(xiàn)方案。
目標檢測是計算機視覺中常見的問題之一,近年來隨著人工智能和深度學(xué)習(xí)的興起,基于深度學(xué)習(xí)的目標檢測方法在識別準確率、速度、性能等方面都有了極大的改善[6],而這些突破性進展背后的主要技術(shù)支持正是深度學(xué)習(xí)中的卷積神經(jīng)網(wǎng)絡(luò)。卷積神經(jīng)網(wǎng)絡(luò),主要包括輸入層、卷積層、池化層、全連接層和Softmax層5個部分[7]。一些經(jīng)典的卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)可以用公式表示為
輸入層→(卷積層+→池化層?)+→全連接層+
式中,“卷積層+”表示一層或多層卷積層;“池化層?”表示沒有或有一層池化層。卷積層和池化層的組合也可以是一個或多個,在多輪卷積層和池化層之后,卷積神經(jīng)網(wǎng)絡(luò)可以跟隨一層或多層全連接層,最后通過Softmax層輸出目標識別結(jié)果概率分布。
在CVPR 2014年中文獻[8]提出了R-CNN,使用了卷積神經(jīng)網(wǎng)絡(luò)進行特征提取,并使用邊框回歸進行目標包圍框的修正。R-CNN顛覆了以往的目標檢測方案,精度大大提升;但訓(xùn)練煩瑣,對時間和內(nèi)存的消耗很大。
文獻[9]于2015年提出Fast R-CNN,對R-CNN進行了改進,取代R-CNN的串行特征提取方式,直接采用一個神經(jīng)網(wǎng)絡(luò)對全圖提取特征,除了選擇性搜索(selective search),其他部分都可以合在一起訓(xùn)練,但耗時的selective search依舊存在。
Faster R-CNN[10]繼承于Fast R-CNN,通過引入?yún)^(qū)域建議網(wǎng)絡(luò)Region Proposal Network(RPN)取代selective search,提高了區(qū)域提取的精度及網(wǎng)絡(luò)訓(xùn)練速度,是當(dāng)時應(yīng)用較廣的檢測框架。
Mask-RCNN[11]是基于Faster-RCNN架構(gòu)擴展出的卷積網(wǎng)絡(luò),該網(wǎng)絡(luò)結(jié)構(gòu)較容易實現(xiàn)和訓(xùn)練,可以很方便地應(yīng)用于目標檢測和分割中,彰顯了機器學(xué)習(xí)計算機視覺領(lǐng)域在2017年的最新成果。Mask-RCNN不僅保留了Faster-RCNN從端到端的網(wǎng)絡(luò)結(jié)構(gòu)優(yōu)勢,而且在每個興趣點ROI上加一個用于預(yù)測分割掩碼的分層,稱為掩碼層(mask branch),并改良了ROI Pooling,提出了ROI Align,使該層并行于已有邊界層和分類層,提高了檢測精度[12-13]。Mask-RCNN訓(xùn)練簡單,只需要在Faster-RCNN的基礎(chǔ)上增加一個較小的開銷,運行速度可達5FPS,網(wǎng)絡(luò)框架結(jié)構(gòu)如圖1所示。
PnP求解算法是指通過多對3D與2D匹配點,在已知或未知相機內(nèi)參的情況下求解相機外參的算法。PnP問題有很多求解的方法,如P3P、直接線性變換(DTL)、EPnP、UPnP等, 以及構(gòu)建最小二乘問題并迭代求解[5]。EPnP需要4對不共面的3D與2D匹配點,是目前較好的PnP求解方法。本文采用EPnP[14]算法進行試驗。
參考點與控制點在世界坐標系下的關(guān)系為
(1)
式中,αij為齊次重心坐標。由線性關(guān)系在歐氏變化下的不變形可得
(2)
設(shè)K為相機的內(nèi)參矩陣,可以通過標定獲得。設(shè){μi}i=1,2,…,n為參考點{pi}i=1,2,…,n的像素坐標,則
(3)
(4)
因此可得
(5)
(6)
MX=0
(7)
式中,X的解為矩陣M的核空間,即
(8)
式中,Vi為MTM對應(yīng)零特征值的特征向量;N為MTM核空間的維數(shù);βi為待定系數(shù)。對于透視投影模型,N=1,求得其零空間特征向量,可以得到虛擬控制點的相機平面坐標
X=βV
(9)
(10)
其中控制點之間的距離關(guān)系可表示為
(11)
(12)
求解得到4個虛擬控制點在相機參考坐標下的坐標,計算3D參考點在相機參考坐標系下的坐標,然后使用迭代最近點(iterative closest point,ICP)算法即可求出相機位姿。
本文提出的室內(nèi)定位方法分為前期目標數(shù)據(jù)庫的構(gòu)建和后期目標檢測及終端定位兩個階段。前期通過采集含有各種目標的視頻或圖像信息得到滿足要求的神經(jīng)網(wǎng)絡(luò)參數(shù)模型,同時采集含有目標圖像的RGBD信息,用于后期的PnP算法。后期借助前期得到的參數(shù)模型對待定位圖像進行目標檢測,如果確認圖像含有某個目標信息,則通過調(diào)用該目標的RGBD信息,利用PnP算法得到待求圖像的準確的位姿信息,如圖2所示。
前期目標數(shù)據(jù)庫的構(gòu)建階段主要包括以下幾個步驟:
(1) 建立統(tǒng)一的室內(nèi)坐標系統(tǒng),測量得出目標的位置及深度相機拍攝點位置。
(2) 利用已知位姿的深度相機采集含有目標圖像的RGBD信息并保存,用于后期的PnP的算法;深度相機位置信息通過步驟(1)得出,姿態(tài)信息可以通過慣導(dǎo)模塊求解。
(3) 采集場景中可識別目標的圖像信息。
(4) 用深度學(xué)習(xí)框架對采集得到的圖像信息進行訓(xùn)練并得到滿足要求的參數(shù)模型。
后期目標檢測及終端定位階段主要包括以下幾個步驟:
(1) 輸入待定位的圖像。
(2) 用深度學(xué)習(xí)框架借助之前得到的參數(shù)模型對輸入的圖像進行目標檢測,得到檢測結(jié)果。
(3) 如果含有目標信息,則通過調(diào)用該目標的RGBD信息,利用PnP算法得到待求圖像的準確的位姿信息;如包含多個目標,則取各目標計算出的位置均值為終端的位置。
(4) 將圖像的位置信息在底圖上渲染后返回或根據(jù)起點/終點信息進行路徑規(guī)劃,并將路徑規(guī)劃結(jié)果在底圖上渲染后返回。
本目標檢測試驗的數(shù)據(jù)集利用自采的新技術(shù)基地圖片。數(shù)據(jù)集共有4類目標,訓(xùn)練圖片1095張,測試圖像50張;訓(xùn)練使用的GPU型號為Nvidia 1080Ti,顯存11 GB,訓(xùn)練160輪次。目標檢測結(jié)果如圖3所示。
準確率是對目標檢測結(jié)果的總體評價,等于被正確檢測的目標個數(shù)與測試圖像總數(shù)的比值,準確率越高說明算法檢測效果越好。設(shè)準確率為P,則計算公式為
(13)
式中,Ni為目標檢測正確的圖像個數(shù);N為圖像總數(shù)。
結(jié)果分析:測試圖像50張共包含測試樣本數(shù)62個,準確識別出的測試樣本數(shù)為61個,檢測準確率為98.3%。
基于以上原理在安卓和IOS開發(fā)了源起導(dǎo)航APP,目前主要基于新技術(shù)基地綜合樓進行室內(nèi)定位,功能和場景較為單一,后續(xù)需要在此基礎(chǔ)上進行完善,同時研究如何減少數(shù)據(jù)采集的工作量。如圖4所示。
4.2.1 數(shù)據(jù)1
數(shù)據(jù)1為基于TUM rgbd_dataset_freiburg1_xyz數(shù)據(jù)集圖片數(shù)據(jù)。TUM是機器視覺和SLAM經(jīng)典的數(shù)據(jù)集,自帶ground-truth軌跡,可以進行誤差比對。本文試驗截取4張含有相同目標(電腦)照片的RGBD信息,以及其已知真實位姿。在該方法中,姿態(tài)信息可以求出,但對基于移動終端的室內(nèi)定位來說,姿態(tài)并不是重要的信息。本文試驗重點關(guān)注位置信息,姿態(tài)信息的相關(guān)數(shù)據(jù)及比對不包含在試驗內(nèi)。如圖5所示。
真實的位置信息及以第1張為基準的位置差見表1。
表1 真實的位置信息及以第1張為基準的位置差
以各單張圖片的位姿作為轉(zhuǎn)化參數(shù),通過PnP算法計算出其他各張圖片在世界坐標系下的位置及位置誤差的結(jié)果,見表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é)果分析:將測量值與真實值在3個軸方向進行比較可知,X軸最大誤差為0.30 m,Y軸最大誤差為0.05 m,Z軸最大誤差為0.02 m內(nèi),滿足移動終端室內(nèi)定位的需求。
4.2.2 數(shù)據(jù)2
數(shù)據(jù)2為真實場景試驗。在中科院新技術(shù)基地綜合樓四樓實驗室采集了一組數(shù)據(jù)進行真實場景試驗,采用的設(shè)備為Kinect2深度相機,基于SDK編寫同時采集配準的彩色圖和深度圖信息。
采集的試驗數(shù)據(jù)如圖6所示。R_1.png、R_2.png和R_3.png采集電腦周圍局部的RGBD信息。為簡化試驗,以拍攝R_1.png時相機坐標系作為世界坐標系。結(jié)果見表6、表7。
相片xyzR_1.png000R_2.png-0.50-0.65R_3.png00-0.65
表7 PnP算法結(jié)算出的結(jié)果
由表可知,通過PnP算法求解出的位置與真實位置單軸最大差值在0.35 m以內(nèi),綜合考慮試驗過程中基準位置誤差、深度信息采集誤差等,對于手持式移動終端來說,該結(jié)果滿足室內(nèi)定位1~3 m的要求。
本文提出了一種基于目標檢測和PnP相結(jié)合的移動終端室內(nèi)定位方法,對于消費級的移動終端是一種簡單有效的室內(nèi)定位手段。但本文試驗較為簡單,PnP解算中相片采用同一個設(shè)備,且Kinect相機經(jīng)過嚴格的標定。后續(xù)將針對智能終端設(shè)備進行試驗,同時考慮將該方案在終端APP中進行實現(xiàn)。