一.技術背景
增強現實(AR)技術想必大家都不陌生了,2016年,由任天堂制作的AR手遊Pokeman Go橫空出世,一度造成萬人空巷,大家在全世界各個角落都開始拿着手機“抓怪獸”的盛況。但是唯獨在國内的小夥伴們無法享受到這款遊戲的樂趣,為什麼呢?這要從這款遊戲的技術背景說起,Pokeman Go看起來是一個場景巨大到全世界的AR遊戲,但其實它依賴的技術卻并不複雜,如果簡單來說,就是基于Google Map的定位,地面檢測,局部的相機姿态跟蹤以及渲染能力。
首先,利用Google Map提供的手機位置資訊,玩家就可以随時遇見事先被放置好的“怪獸”,為了增強遊戲的趣味性,遊戲公司會特意在特定的地方(比如公園)放置稀有“怪獸”,吸引玩家集中到某個地方來抓。當玩家用手機發現“怪獸”後,通過手機配置的攝像頭與慣性測量傳感器,算法會大緻推斷地面的位置,之後将怪獸的三維模型放到地面上,并計算手機相對于怪獸的姿态,最後像拍照一樣,把怪獸實時地渲染到手機螢幕上,玩家就能看到一個栩栩如生的怪獸出現在前方草地上了。

圖一:五千人在芝加哥街頭用手機抓“怪獸”
圖二:AR手遊:Pokeman Go
其實,以上描述的“抓怪獸的過程”,就是目前應用最廣泛的AR技術基礎鍊路。首先,全局定位能力(Global Localization)。我們需要設定一個場景,并且,我們需要具備在這個場景中自我定位的能力。在Pokeman Go這款遊戲中,可以認為場景就是背靠Google Map的全世界(除中國大陸地區)。在戶外,定位能力就是Google Map結合GPS信号等資訊提供手機位置的能力。第二,簡單的場景了解能力(Scene Understanding)。遊戲中,算法利用手機上的傳感器計算出地面的大緻三維位置,就可以将任意的虛拟三維模型放置在地面上方恰當的地方。第三,求解手機攝像頭與虛拟三維模型之間的相對姿态(位置和角度)。這是一種利用圖像間的特征比對和手機上的慣性測量單元(IMU),進行實時手機姿态解算的能力,此處就不展開讨論了,感興趣的讀者可以搜尋關鍵字(Visual inertial odometry). 最後,渲染能力(Rendering)将虛拟物體與真實場景疊加,顯示在手機螢幕上。
讀到這裡,讀者應該知道為什麼我們在大陸地區沒法最好地體驗這款遊戲了。因為Google Map在國内無法通路。這,也就引出了目前AR應用的一個核心問題。在搭建任何AR應用前,我們都需要一張地圖,在室外,目前的地圖服務商Google Map,高德,百度幫我們提供了地圖和定位能力。那如果是在無法擷取GPS的室内,或者GPS信号較弱的市區,商圈,景區呢?一個可以支援AR應用的地圖從何而來呢?對于目前規模越來越大的城市建築,如何在保證一定地圖精度的同時,達到高效地地圖采集呢?在這篇文章裡,我們想和大家分享,阿裡雲人工智能實驗室在向大規模AR應用邁進的道路上,對高效建構精确AR地圖的探索。
二. 全局定位技術概述
在講述如何建構AR地圖之前,我們需要弄清楚什麼是AR地圖。在上一節中,我們講到,AR應用的基礎是全局定位功能,也就是說,AR地圖必須要服務于定位能力。是以,我們有必要簡單介紹一下定位算法。定位算法的輸出,根據不同的場景,各有不同。對于簡單的戶外遊戲應用,GPS提供的經緯度和海拔資訊可能就足夠了。但是,對于複雜的室内場景應用,如AR導航,我們通常需要得到相機六個自由度的位姿資訊 (在三維空間,六個自由度包括三個坐标軸上的平移與旋轉角度資訊。)
那麼如何得到相機六個自由度的位姿呢?下方圖三是相機成像原理的簡化示意圖,圖四是更加複雜的相機投影數學模型。在這裡,我們先略過數學原理,簡要來說,我們借助三維重建技術,如果已知(圖三中)真實空間中大樹的頂端和底端的三維位置,以及對應圖像中,樹頂和樹根的圖像坐标,我們就可以通過一種被稱之為Perspective-n-Points(PnP)的方法求解得到拍攝這張圖像的相機位姿。當然,實際情況比這裡描述的過程複雜得多,問題在于兩點:一,我們怎麼擷取一張圖檔上的圖像坐标和三維空間位置的對應關系呢?二,我們怎麼知道大樹頂端和底端的真實三維位置呢?
圖三:相機成像原理示意圖
圖四:相機投影數學模型
定位算法試圖解決的,就是第一個問題。而通過建構圖像坐标到三維位置對應關系,來求解相機位姿的定位方法,我們可以稱之為“基于結構的”定位方法(structure-based) (另外一種“基于回歸的”定位方法(regression-based)利用神經網絡“記住”場景,并通過傳入的圖像直接回歸相機位姿。這裡不做展開,感興趣的同學可以參閱[3,4,5])。如果繼續細分,“基于結構的”定位方法又可以分為兩種技術路線:
a. 稀疏特征比對(sparse feature matching)。如圖五所示,稀疏圖像特征,也就是一張圖檔中極具特點(distinctive)的像素點。如圖五中所示,目前基于SuperPoint神經網絡[1]提取到的特征點,以及經過深度學習訓練的特征比對器SuperGlue[2],已經可以在光照環境,拍攝視角迥異的兩張圖檔中,找到對應特征點,如果我們已知,右圖中特征點對應的三維位置,我們就可以以之為中介,得到左圖的特征點對應的三維位置,進而求解左圖的相機位姿。
b. 稠密場景坐标回歸(dense scene coordinate regression)。如圖六所示,這種方法利用一個場景中,事先采集的圖檔與三維資訊對神經網絡進行訓練,使得神經網絡對輸入的彩色圖像可以直接估算稠密的三維坐标。注意,是對每一個像素點,都利用網絡回歸出它的三維資訊,進而通過稠密的圖像坐标與三維坐标對應關系,求解相機的位姿。
圖五:基于CNN網絡的Sparse feature matching
圖六:稠密場景坐标回歸方案
三. 什麼是AR地圖
上一節中,我們花了一些篇幅介紹了前沿的視覺定位算法,我們發現要滿足定位需求,所需要的輸入資訊包括:特定場景中采集的彩色圖檔,以及它們對應的三維資訊以及相機位姿。我将這些資訊的集合稱為AR地圖。當然,AR地圖是滿足定位需求的最小集合,我們也可以以此為基礎,加入其他可以用來輔助定位的資訊,比如場景中的語義資訊等。我們定義了AR地圖的主要元素,并不代表我們就能制作滿足條件的AR地圖,還需要回答下面三個問題:
1.如何高效地采集并且更新AR地圖,來應對變換頻繁的室内場景?
2.如何設計一套建圖算法,來保證AR地圖的精度?
3.如何有效地評估AR地圖,是否達到了AR應用對于地圖的要求?
接下來,我們就圍繞這三個問題,來介紹我們的AR地圖建構方法。
四. AR地圖資料采集
在AR地圖中,最為重要的是和彩色圖檔對應的三維資訊。那麼,我們目前是通過什麼手段擷取三維資訊的呢。如圖七中所示,我們是通過不同的傳感器,擷取到不同類型的三維資料,再經過算法的加工,最後将三維世界數字化的。這些傳感器各有特點,也各有利弊。比如,多線雷射雷達通過旋轉的雷射發射器,直接擷取周圍環境的深度資訊,但是由于造價和工藝結構的限制,單個雷達能掃描到的範圍非常有限,深度值測量也很離散。彩色相機雖然可以捕捉到場景中大範圍的色彩資訊,但是需要複雜的算法流程才能恢複出三維資訊。而且相機常常受到光照變化和運動模糊的影響。慣導裝置IMU可以測量自身感受到的加速度和角速度等資訊,但是由于IMU一般存在較大的累積漂移誤差,也不能直接用來測量自身的三維位姿。是以将不同傳感器進行組合,才能以最優的方式擷取到場景的精确三維資訊。
圖七:我們通過不同傳感器擷取真實三維世界的資料,然後利用算法建構AR地圖中的三維資料
是以,我們自研了一款以背包為形态(如圖八所示),搭載多種傳感器的移動掃描裝置。這款裝置裝配有全景相機,雷射雷達,慣性測量單元(IMU)。所有傳感器通過我們自研的時間同步闆進行同步。在對特定的場景進行掃描的時候,使用者背負着背包掃描裝置,并且手持搭載有采集程式的平闆電腦進行資料采集。采集過程中,雷射雷達不停旋轉掃描,擷取原始掃描點雲資料,當需要采集全景圖時,使用者會停止走動,通過采集程式中的采集按鈕,進行全景圖圖像采集。因為拍攝全景圖檔所需時間很短,我們可以在場景中的任意位置密集采樣全景圖。當對某個場景的資料采集完成後,我們得到的是背包裝置輸出的原始資料,這些資料包括全景相機的圖檔,雷射雷達的單幀點雲,以及IMU的原始測量資料。
圖八:背包結構示意圖
借助自研背包掃描裝置以及掃描距離達到150米的雷射雷達,我們就能按照正常的行走速度在大場景裡面進行高效資料采集了。然而,我們擷取的原始資料還需要建圖算法的加工,才能生成包括三維模型和相機位姿在内的三維資料。我們首先通過一套自研的多傳感器标定算法,将背包上各個傳感器的相對位姿求解出來。這套标定算法克服了傳統方法需要反複采集多個點位資料,以及傳感器間必須保證視角重疊區域的限制。隻需要一個點位的采集資料,就可以得到多相機與多雷達間的相對關系。感興趣的讀者請關注我們團隊關于多傳感器标定的文章。
五. AR地圖生産流程
圖九:AR地圖的生産流程圖
如圖九所示,AR地圖的生産流程主要包括五個子子產品:雷達位姿解算,全局優化,穩定地圖生産,彩色圖檔位姿計算和深度圖渲染。以下對這五個子子產品進行描述:
1.雷達位姿解算:根據輸入的連續的單幀雷達點雲資料,求解相鄰兩幀點雲資料之間的位姿轉換關系,該轉換關系包括相鄰兩幀雷達資料的平移與旋轉關系。通過不斷積累兩幀之間的轉換關系,得到每一幀雷達在全局坐标系下的位置與旋轉資訊。
背包掃描裝置上裝配的兩個16線雷射雷達,掃描平面呈25度。每個雷達連續旋轉掃描,在0.1秒内旋轉360度,并産生75個資料包(data packet),我們稱0.1秒的雷達資料為單幀掃描點雲。雷達位姿解算就是通過求解連續兩幀的雷達點雲相對關系,來推算雷達的位姿。這裡我們通常用到的算法稱之為ICP-Iterative closest point. 通過查找兩幀點雲中的最近點,疊代地優化雷達在兩幀間的相對位姿(如下圖十)。但是由于每幀點雲的數量很大,ICP中的最近鄰查詢算法會非常耗時。是以2014年的RSS上,Zhang JI提出了經典的LOAM算法 [6],通過計算局部點雲的分布情況(圖十一),提取單幀點雲中的平面點與角點 (planar feature and corner feature), 這樣減少了相鄰兩幀點雲的比對關系數量,提高了位姿解算的效率。
圖十:二維和三維點雲的ICP比對示意圖
圖十一:LOAM中的點雲特征點提取
我們利用在每一幀點雲中提取得到的平面點(藍色)與角點(紅色),與上一幀點雲中“平面”和“邊緣”建立對應關系,通過最小化“點到平面”與“點到線”的距離,優化得到兩幀間的相對位姿。邊緣點特征是通過計算相鄰點的相對距離來決定的,與相鄰點重心距離較大的點,會被提取為邊緣特征 (如圖十中所示)。但是由于室内場景複雜,常常因為遮擋,噪聲,以及深度不連續的問題,會引入不少“僞”特征點(如圖十二所示)。這些“僞”特征點會形成錯誤的特征比對關系,影響位姿估計。為了消除“僞”特征帶來的影響,我們設計的“僞”特征過濾機制(公式一),可以過濾掉大部分的“僞特征”。
圖十二:“僞”特征點生成的三種方式:離群點,深度不連續,以及遮擋導緻的不連續。
公式一:“僞”特征過濾機制
如圖十三所示,在戶外場景中,草地往往會引入大量的“僞”邊緣點,影響位姿的估算,針對性的實驗證明,我們的過濾機制可以去除這些噪聲。
圖十三:僞邊緣點的去除
2.全局優化:由于相鄰兩幀雷達的相對位姿解算存在誤差,經過長時間積累得到的全局位姿會存在較大的累積誤差,全局優化子產品通過回環檢測對所有雷達位姿進行優化,減小累積誤差。我們在傳統的位姿圖優化的基礎上,加入了保持相鄰子點雲地圖間,點雲一緻性的限制,使得全局優化後的點雲地圖仍然能保持較好的局部一緻性(圖十四)。
圖十四:不加入與加入點雲一緻性的全局優化結果對比,注意左側的點雲存在較大分層現象,右側的點雲結構更加清晰。
3.穩定地圖生産:在得到所有單幀雷達點雲的位姿後,我們可以将點雲拼接得到場景完整的三維點雲模型。由于場景中的動态物體會引入雜點,我們通過過濾雜點,得到穩定完整的三維點雲(圖十五)。我們稱之為穩定地圖點生成子產品。
圖十五:在繁忙室内環境的點雲地圖結果,人來人往,帶入了很多雜點,右側是經過雜點過濾的點雲地圖,消除了動态點引入的噪聲。
4.彩色圖檔位姿計算:我們最終需要得到彩色圖檔對應的的相機位姿,通過事先标定得到的雷達與全景相機的轉換關系,我們将雷達的位姿轉換得到對應時刻的相機位姿。
5.深度圖渲染:如圖十六所示,在得到完整的三維點雲與彩色圖檔相機位姿之後,我們可以通過投影渲染的方式得到對應的深度圖。深度圖可以用來快速索引彩色圖檔上某一點的三維坐标。
圖十六:兩個大型商場AR地圖中的彩色圖檔,深度圖,以及基于三維點雲生成的三維模型。
六. AR地圖的評估
我們生産的AR地圖中主要包含的是場景三維模型與彩色圖檔的位姿資訊。是以,我們從兩個方面對AR地圖的精度進行評估:1. 點雲地圖的精度;2. 彩色圖檔位姿與深度圖的精度。
首先,為了評估點雲地圖的精度,我們利用工業級的掃描裝置Leica BLK360對場景進行掃描,再将其生成的點雲地圖作為參考真值,評估背包掃描地圖的精度(圖十七)。
圖十七:在辦公室與戶外園區場景下,Leica BLK360與背包裝置生成點雲地圖的對比。
表格一:在三個不同場景Office,Campus Building, Campus Outdoor的點雲地圖精度評測結果。
其次,為了統計局部圖像位姿與深度的一緻性,我們計算了圖像間特征比對(圖十八)的重投影誤差e1與對極限制誤差e2。
圖十八:圖像間的特征點比對
表格二:在西湖與西城兩個場景中,圖像間的特征重投影誤差均值和中位數。
最後,我們用iPhone11在場景中随機采集圖像,并利用AR地圖進行定位(圖十九),在全部110張手機圖像中,97張(88.2%)可以被成功定位, 也證明了AR地圖在定位子產品中的可用性。
圖十九:在大型商場場景中的定位結果。第一行為AR地圖中的示例圖檔以及場景中的位姿。第二行為iphone11采集得到的查詢圖檔,以及在AR地圖中的定位結果。
七. 更多應用案例:VR内容生産
我們生産的AR地圖同樣可以用于VR的内容生成。我們采集了辦公室,商場,園區,地下管廊等場景的AR地圖,并通過我們團隊的“萬花筒”VR漫遊生産系統,生成VR漫遊效果。
圖二十:EFC商場(上圖)以及辦公室(下圖)的VR漫遊效果。
八. 總結
無論是增強現實(AR)或是虛拟現實(VR),都将在未來成為人們與真實世界互動的新方式。在這篇文章中,我們介紹了阿裡雲人工智能實驗室在建構大場景室内AR/VR地圖資料上的探索。我們提供了一套從高效硬體采集裝置,AR地圖建構算法,到評估體系的全鍊路解決方案。這套解決方案能在包括大型商場,園區等場景高效建構精确的AR地圖資料,也為我們之後能支援大場景下的AR應用,打下了堅實的基礎。
參考文獻
[1] DeTone, Daniel, Tomasz Malisiewicz, and Andrew Rabinovich. "Superpoint: Self-supervised interest point detection and description."Proceedings of the IEEE conference on computer vision and pattern recognition workshops. 2018.
[2] Paul-Edouard Sarlin, Daniel DeTone, Tomasz Malisiewicz, and Andrew Rabinovich. Superglue: Learning feature matching with graph neural networks. In Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition, pages 4938–4947, 2020. 1, 2, 5, 6
[3] Alex Kendall and Roberto Cipolla. Modelling uncertainty in deep learning for camera relocalization. In 2016 IEEE international conference on Robotics and Automation (ICRA), pages 4762–4769. IEEE, 2016. 1, 2
[4] Alex Kendall and Roberto Cipolla. Geometric loss functions for camera pose regression with deep learning. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 5974–5983, 2017. 1, 2
[5] Alex Kendall, Matthew Grimes, and Roberto Cipolla. Posenet: A convolutional network for real-time 6-dof camera relocalization. In Proceedings of the IEEE international conference on computer vision, pages 2938–2946, 2015. 1, 2, 5
[6] Zhang, Ji, and Sanjiv Singh. "LOAM: Lidar Odometry and Mapping in Real-time."Robotics: Science and Systems. Vol. 2. No. 9. 2014.
歡迎掃碼加入社群