本文由 Matt Miesnieks 發(fā)表于 Super Ventures Blog, Matt Miesnieks 目前為投資公司 Super Venture 合伙人,曾任職于三星、Dekko、Layar 等公司。
通過這篇文章,我們能了解到:
- ARKit的基本技術(shù)原理:視覺慣性測量(VIO)系統(tǒng)、平面檢測
- ARKit的兩大神秘之處:單目攝像機3D成像、計量尺度獲取
- ARKit、Tango、Hololens技術(shù)對比
- 開發(fā)人員如何使用ARKit
全文整理如下。
今年,蘋果公司在 WWDC 大會上發(fā)布的 ARKit 在整個 AR 生態(tài)中引起巨大轟動。開發(fā)者發(fā)現(xiàn),這是他們第一次能將一款強大的 AR SDK 廣泛使用于自己的應(yīng)用,不再需要什么標(biāo)記點、初始化、深度攝像頭,甚至是專門的創(chuàng)作工具。毫不意外,ARKit 讓開發(fā)者們集體開啟各種 AR demo 秀。
但是,很多開發(fā)者不清楚 ARKit 如何工作,也不了解為什么 ARKit 比于其他 SDK 更好。從底層技術(shù)看ARKit,可以幫助大家了解當(dāng)前版本 ARKit 能做什么,了解 ARKit 需要改進的地方以及為什么需要改進,并且還可以幫助我們預(yù)測未來何時, Android 系統(tǒng)及頭戴式顯示器(VR 或 AR)可以支持 ARKit 類似的功能。
目前為止,我在 AR 領(lǐng)域工作 9 年了,過去曾研發(fā)出與 ARKit 相似的技術(shù),但當(dāng)時并沒有合適的硬件可支持這個技術(shù)。作為內(nèi)部人士,我了解這些系統(tǒng)是如何構(gòu)建的,以及為什么構(gòu)建成現(xiàn)在的樣子。
這篇博文試圖向那些非技術(shù)人群解釋一些專業(yè)的技術(shù)問題,并不是面向計算機視覺工程師。文中,我用簡單的話來解釋 ARKit,但不一定 100% 符合科學(xué)的解釋,不過我希望至少可以幫助人們加深對于 ARKit 的理解。
ARKit 基于什么樣的技術(shù)?
技術(shù)上,ARKit 配備視覺慣性測量(VIO)系統(tǒng),帶有簡單的 2D 平面檢測。具體來說,VIO 系統(tǒng)會實時追蹤你在空間中的位置,也就是 6 自由度(DoF)動作,比如說,屏幕每幀畫面刷新之間,你的動作會被重新計算,畫面的刷新率為每秒 30fps 或以上,而且這些計算會同時進行兩次。
第一次是,通過將現(xiàn)實世界中的點與攝像頭傳感器每幀畫面像素點相匹配,你的動作會被視覺系統(tǒng)追蹤,進行一次計算。第二次是你的動作被慣性系統(tǒng)追蹤,主要通過加速度計和陀螺儀兩個慣性測量單元(IMU)實現(xiàn)。
然后,卡爾曼濾波器(Kalman Filter)將 VIO 系統(tǒng)和慣性系統(tǒng)的輸出進行整合,從而預(yù)測出你的最佳“真實”位置(稱為Ground Truth),并且由 ARKit SDK 發(fā)布你的最新定位。就像汽車的里程表顯示車輛的駕駛距離一樣,VIO 系統(tǒng)記錄 iPhone 手機在 6 DoF 空間中經(jīng)過的距離。6 DoF 表示沿著 xyz 三個方向的平動,加上繞三個軸的俯仰、偏轉(zhuǎn)及滾動。
VIO 系統(tǒng)最大的優(yōu)勢就是,即使用戶動作加速的情況下,IMU 依舊可以每秒讀數(shù) 1000 次。IMU 每次讀數(shù)之間,航位推算法被用來計算設(shè)備的運動。這時,航位推算法更像是一種猜測,就像是,我讓你往前買一步,然后猜猜這個步子有多大,你便會用航位推算法來預(yù)測步子的距離。(后面我將詳細(xì)介紹這種預(yù)測是如何實現(xiàn)高度準(zhǔn)確性的。)慣性系統(tǒng)產(chǎn)生的誤差會隨時間累積,所以,IMU 每幀畫面所間隔的時間越長或者慣性系統(tǒng)使用時間越長,而且還沒有 VIO 系統(tǒng)配合的時候,動作的追蹤也將越來越偏離實際的動作情況。
視覺/光學(xué)測量以相機畫面幀速率進行,通常為 30fps,并且基于每幀場景變化的距離。光學(xué)系統(tǒng)通常會隨著距離的增加,而不斷積累誤差,時間也會一定程度上影響光學(xué)系統(tǒng)的準(zhǔn)確性。所以你行動的距離越遠,時間越久,誤差越大。好消息是,一個追蹤系統(tǒng)的優(yōu)勢可以抵消另一個系統(tǒng)的劣勢。
視覺和慣性跟蹤系統(tǒng)是完全不同的測量系統(tǒng),沒有相互依賴關(guān)系。這意味著相機可能被遮蓋,或者可能看到的是幾乎沒有光學(xué)特征的場景,例如一面白墻,而慣性系統(tǒng)這時可以“加載”幾幀畫面。相對地,設(shè)備處于靜止的狀態(tài)下,視覺系統(tǒng)提供的動作追蹤信息比慣性系統(tǒng)更加穩(wěn)定。卡爾曼濾波器不斷選擇最佳動作信息,追蹤效果也就更加穩(wěn)定。
VIO 系統(tǒng)已經(jīng)出現(xiàn)很多年了,在行業(yè)中的認(rèn)可度很高,并且市場上不少設(shè)備也配備了 VIO 系統(tǒng)。
所以蘋果 ARKit 使用 VIO 系統(tǒng)并不意味著創(chuàng)新。那么到底是什么技術(shù)讓 ARKit 變得如此強大呢?
ARKit 的第二個關(guān)鍵點是配備簡單的平面檢測。這個技術(shù)十分必要,你需要地面作為參照物來表示位置信息,否則物體會漂浮在空中。任何 3 個點可以定義一個平面,根據(jù)光學(xué)系統(tǒng)檢測到的特征點(demos 中看到的點),通過算法將特征點平均化,便得到了參照平面。
如果光學(xué)系統(tǒng)選取的特征點足夠多的話,你便能預(yù)測到真實的平面。這些特征點通常被稱為“點云”,所有的特征點形成稀疏的點云,用于光學(xué)跟蹤。稀疏點云僅僅需要少量的存儲內(nèi)存、短暫地使用 CPU。在慣性系統(tǒng)的支持下,光學(xué)系統(tǒng)即使檢測少量的特征點,也可以正常工作。點云和密集點云是不同的,密集點云看起來更加接近真實感(目前有人正在研究的使用密集點云進行跟蹤,這更復(fù)雜)。
ARKit 的兩大“神秘之處”
有人會把 ARKit 稱為 SLAM ,或者使用術(shù)語 SLAM 來指位置跟蹤。在此澄清一下,SLAM 是一個相當(dāng)廣泛的術(shù)語,就像“多媒體”這個術(shù)語一樣?!白粉櫋北旧砭褪且粋€通用的術(shù)語,使用“測距”更具體,但在 AR 領(lǐng)域,使用“追蹤”來表達即可。有很多方法可以實現(xiàn) SLAM,追蹤蹤只是 SLAM 系統(tǒng)的一個組成部分。 我認(rèn)為 ARKit 是一個輕型或簡單的 SLAM 系統(tǒng)。Tango 或 Hololens 的 SLAM 系統(tǒng)除了距離測量外,還有其他很多其他特征。
ARKit 存在兩大“神秘之處”:
一是,如何通過單目鏡頭獲得 3D 效果;二是,如何獲得計量尺度(像那個卷尺測量 demo 一樣)。答案在于“非常好地”移除 IMU 產(chǎn)生的誤差,即讓航位推算法實現(xiàn)高精度地預(yù)測。當(dāng)實現(xiàn)這點后,便會發(fā)生以下的效果:
為獲得 3D 效果,需要從不同角度獲得 2 個場景視圖,進而通過立體計算得到你所在的空間位置。這就是雙眼如何看到 3D 圖像,以及為什么一些跟蹤器要要依靠立體攝像機。如果有兩臺攝像機,可以容易計算攝像機之間的距離,同時捕獲幀畫面。
ARKit 為什么僅僅使用了一個攝像頭便獲得了 3D 效果呢?是因為一個攝像頭可以捕獲一幀畫面,而后攝像頭移動捕獲第二幀畫面。
使用 IMU 航位推算法計算,便可計算出兩幀畫面之間的移動距離,然后正常計算出立體畫面。實際上,你可能捕捉更多的幀畫面進行計算,從而獲得更高的精確度。如果 IMU 足夠準(zhǔn)確,兩幀畫面間產(chǎn)生的“移動”可以僅僅通過手握拳后手臂微小肌肉群的運動來檢測,這看起來像魔術(shù)一樣神奇。
系統(tǒng)需要依賴于 IMU 航位推算法來獲得計量尺度。通過 IMU 給出的加速度和時間測量值,可以計算出速率并獲得 IMU 每幀畫面之間的距離。數(shù)學(xué)運算并不難,困難的是消除 IMU 誤差,以獲得近似完美的加速度測量值。
一個微小的錯誤,在畫面每秒刷新 1000 次的情況下,持續(xù)幾秒鐘后可能會導(dǎo)致 30% 甚至更大的計量尺度誤差。令人驚訝的是,蘋果 ARKit 已經(jīng)把誤差下降到 10% 以下。
Tango 、 HoloLens、 Vuforia 等 SDK 怎么樣?
Tango 只是一個品牌名,而不是真正的產(chǎn)品。Tango 包括硬件參考設(shè)計(RGB,魚眼鏡頭,深度相機和CPU / GPU規(guī)格),還參與 VIO(運動跟蹤),稀疏映射(區(qū)域?qū)W習(xí))和密集 3D 重建(深度感知)等軟件。
HoloLens 具有完全相同的軟件棧,另外包括一些 ASIC(微軟稱之為全息處理單元)優(yōu)化 CPU / GPU 卸載處理并減小電耗。
Vuforia 與 ARKit 幾乎是一樣的,只是 Vuforia 的硬件是獨立的。
上述 SDK 均使用相同的 VIO 系統(tǒng),而且,Tango 和 ARKit 使用的均為 FlyBy 最初發(fā)布的代碼庫!HoloLens 和 Tango 都不使用深度相機進行追蹤,那么到底是什么技術(shù)設(shè)備讓 ARKit 大放異彩呢?
答案是 ARKit 并不比 HoloLens 好,我甚至認(rèn)為 HoloLens 的跟蹤系統(tǒng)是市場上最好的,但 HoLolens 的硬件普及并不廣。微軟可能會在 Windows 系統(tǒng)的智能手機中安裝 HoloLens 跟蹤系統(tǒng),但我相信出于商業(yè)原因,微軟不會這樣做:
因為這樣可能會增加生產(chǎn)和時間成本,為一款銷量或許很少的手機校準(zhǔn)傳感器。而且,微軟版本的 ARKit 也可能無法說服開發(fā)者放棄使用 iOS 或 Android 系統(tǒng)。
12 個月前,Google 本就可以輕松交付能夠在 Android 系統(tǒng)上運行的 Tango 手機,但 Google 沒有這樣做。如果 Google 早早將 Tango 發(fā)貨 ,那么 ARKit 的問世也只是緊跟趨勢,而非重大突破。
我認(rèn)為,
Google 公司不想為每家 OEM 都進行特定的傳感器校準(zhǔn)過程,而且每家 OEM 廠商生產(chǎn)的 Tango 版本都不一樣,Google 也不想在一些較大的 OEM 廠商(三星、華為等)中選擇。所以,Google 為 OEM 廠商提供了硬件的參考設(shè)計,OEM 廠商可以自行選擇“使用,或者不使用”。(當(dāng)然,事情并非這么簡單,這是 OEM 廠商反饋給我的關(guān)鍵點。)
隨著 Android 智能手機硬件商品化,相機和傳感器堆棧是 Android 手機最后實現(xiàn)差異化的地方,所以 OEM 廠商無法滿足 Google 的要求。Google 認(rèn)為,深度相機是手機的一部分,但是深度相機增加了手機成本,這也是 OEM 廠商拒絕 Google 的另一個原因!
自從 ARKit 發(fā)布以來,市場已經(jīng)發(fā)生了變化。
OEM 廠商要么尋找 Tango 的替代系統(tǒng),要么接受 Google 的硬件參考設(shè)計,然后實現(xiàn)平臺控制。這也是有意思的變化。
總的來說,ARKit 更好的原因在于:
蘋果公司可以負(fù)擔(dān)得起將 VIO 算法緊密耦合到傳感器上,并花費很多時間來校準(zhǔn) VIO 系統(tǒng),以減少計算空間位置時產(chǎn)生的誤差。
值得注意的是,大型 OEM 廠商有一些替代方案??梢赃x擇其他的追蹤方案,像 ORB Slam、OpenCV 等,但幾乎都是光學(xué)追蹤器,都配有單個 RGB、立體聲、深度相機,有些使用稀疏點云,有些使用密集點云。有許多創(chuàng)業(yè)公司正在研發(fā)追蹤系統(tǒng),研究增強像素也是一個很好的方向,但任何 VIO 系統(tǒng)最終的競爭都會集中到硬件模型和校準(zhǔn)上。
開發(fā)人員如何使用 ARKit
你或許已經(jīng)有一個可以支持 ARKit 的手機了。首先,要了解使用 ARKit 開發(fā)內(nèi)容,與以往開發(fā)一款手機 APP 有巨大的差異:一個是你不用控制場景,一個是你要控制每幀像素。
然后,想想 Tango 或 HoloLens,看看當(dāng)你的內(nèi)容與無法控制的場景中的 3D 模型交互時,會發(fā)生什么。
這其中的學(xué)習(xí)難度較大,比從網(wǎng)絡(luò)到移動或從移動到 VR 更有難度。你需要徹底重新思考應(yīng)用程序的如何運行以及用戶體驗(UX)的意義是什么。我現(xiàn)在看到很多 ARKit 的 demo,四年前看到它們是基于 Vuforia 創(chuàng)建,再往前四年就是 Layar (2010 年荷蘭公司 SPRXmobile 推出的全球第一款 AR 手機瀏覽器)。這幾年來,我 看到了幾乎所有類型的 AR APPs 的例子,我很樂意為大家提供支持和反饋。
我常常鼓勵開發(fā)人員勇于構(gòu)建新奇的 APP。一些蠢蠢的 APP 一上線便大獲成功,但通過 AR 硬件開發(fā)讓用戶是滿意的案例也十分具有挑戰(zhàn)。
能構(gòu)建良好追蹤系統(tǒng)的人并不多
直觀地說,目前只有少數(shù)人能構(gòu)建好的追蹤系統(tǒng)。那些具備交叉學(xué)科背景的工程師們才能研發(fā)出的融入單目 VIO 最好的系統(tǒng),用于手機追蹤的解決方案。
在二十世紀(jì)中期,VIO 系統(tǒng)最初由波士頓軍事/工業(yè)供應(yīng)商 Intersense 使用。Leonid Naimark 是該技術(shù)的創(chuàng)始人之一,2011 年時加入我創(chuàng)建的 Dekko 公司并擔(dān)任首席科學(xué)家。由于傳感器限制,Dekko 證實了 VIO 無法在 IPad 2 上運行,Leonid 重回軍工行業(yè),但 Dekko 公司的 CTO Pierre Georgel 如今已成為 Google Daydream 團隊的高級工程師。
我 在 Super Ventures 的合作伙伴 Ori Inbar 創(chuàng)立了 Ogmento。Ogmento 公司后改名為 FlyBy,F(xiàn)lyBy 團隊成功地構(gòu)建了基于 iOS 的VIO 系統(tǒng),還增加了魚眼相機。該代碼庫已經(jīng)授權(quán)給 Google,成為 Tango 的 VIO 系統(tǒng)。蘋果公司收購 FlyBy 之后,F(xiàn)lyBy 的 VIO 系統(tǒng)代碼庫成為 ARKit VIO 的核心。
FlyBy 公司的CTO Chris Broaddus 繼續(xù)為 Daqri 公司研究追蹤系統(tǒng),現(xiàn)在他已經(jīng)加入硅谷的神秘?zé)o人車初創(chuàng)公司 Zoox。2007 年,第一個移動 SLAM 系統(tǒng)由 Georg Klein 在 Oxford Active Computing lab(PTAM)開發(fā),Georg Klein 和 David Nister 一同為 HoloLens 建立 VIO 系統(tǒng),David 離開后還為特斯拉創(chuàng)建了自動駕駛系統(tǒng)。
Georg 帶的博士生 Gerhard Reitmayr 主導(dǎo)了 Vuforia 的 VIO 系統(tǒng)的研發(fā)。 此前擔(dān)任 Vuforia 公司副總裁的 Eitan Pilipski,現(xiàn)在是 Snap 公司的 AR 軟件工程師。
牛津大學(xué)、劍橋大學(xué)和倫敦帝國學(xué)院研發(fā)團隊的核心成員研發(fā)了 Kinect 追蹤系統(tǒng),現(xiàn)在也成為 Oculus 和 Magic Leap 追蹤系統(tǒng)開發(fā)的負(fù)責(zé)人。
有趣的是,我無法說清,當(dāng)前致力于 AR 追蹤系統(tǒng)研發(fā)的初創(chuàng)公司,到底是由哪個學(xué)科的人才主導(dǎo)。因為,這些創(chuàng)始人不管是機器人背景,或是其他計算機視覺背景,已經(jīng)不足以支撐在一個更大領(lǐng)域范圍應(yīng)用的追蹤系統(tǒng)的研發(fā)。
后面,我會談?wù)劗?dāng)代科學(xué)家們正在開展的工作。
歸根到底是統(tǒng)計學(xué)問題
AR 系統(tǒng)沒有“可行”或者“不可行”一說。 大部分情況下,AR 系統(tǒng)可以很好的完成工作。AR 系統(tǒng)力求變得“更好”,也是推動統(tǒng)計學(xué)發(fā)展的事情。
故而,不要完全相信 AR APP 的演示,特別是發(fā)布于 YouTube 上,顯示出驚人的效果的 AR APP。在精心安排的環(huán)境中所表現(xiàn)的效果與現(xiàn)實生活中普通用戶所能獲得的效果之間,往往存在很大差距。但是智能手機或 VR 應(yīng)用的演示通常并不存在這種問題。所以,觀眾常常被愚弄。
這是一個具體的技術(shù)示例,為什么統(tǒng)計數(shù)據(jù)最終可以確定系統(tǒng)的運行情況。
在上面的圖像中,有一個網(wǎng)格,表示相機中的數(shù)字圖像傳感器。每個格子都是一個像素點。為了穩(wěn)定追蹤,在假設(shè)設(shè)備完全靜止的情況下,每個像素應(yīng)該在現(xiàn)實世界中的有一個相匹配的對應(yīng)點。然而,右側(cè)圖像顯示光子不是那么的聽話,各種光子會隨意落到任何地方,每個像素點是光子的總數(shù)。場景中的光線變化(太陽光穿透云層,熒光燈閃爍等)也會改變傳感器中的光子組成,現(xiàn)在傳感器要對應(yīng)現(xiàn)實世界的不同像素點。那么,這樣的情況下視覺追蹤系統(tǒng)就認(rèn)為用戶移動了!
所以,
各種 ARKit demo 中光點閃爍時,系統(tǒng)必須確定哪些點是“可靠”的。系統(tǒng)對這些點進行三角測量來計算用戶的空間位置,求平均數(shù)后得到對實際位置的最佳估計數(shù)。因此,為確保錯誤的統(tǒng)計完全被移除,便需要研發(fā)更精確的系統(tǒng)。這就需要相機硬件堆棧(多個鏡片和涂層、快門和圖像傳感器等)、IMU 硬件和軟件算法之間的嚴(yán)密集成和校準(zhǔn)。
硬件與軟件的集成
其實開發(fā) VIO 系統(tǒng)并不難,而且 VIO 系統(tǒng)的算法已經(jīng)公開了,還有不少的應(yīng)用案例。但是,很難把 VIO 系統(tǒng)良好地運作起來。我指的是,慣性和光學(xué)系統(tǒng)完全融合創(chuàng)建立體地圖,在低精確度時確定度量標(biāo)度。
例如,在我創(chuàng)辦的 Dekko 時,應(yīng)用的案例中要求用戶開始按照具體的要求移動,然后手機前后移動約 30 秒才能使慣性和光學(xué)系統(tǒng)融合創(chuàng)建立體地圖。建立一個優(yōu)良的慣性追蹤系統(tǒng)需要經(jīng)驗豐富的工程師。然而,全球只有約 20 名工程師具備必須的技能和經(jīng)驗,而且這 20 名工程師中大多數(shù)從事巡航導(dǎo)彈追蹤系統(tǒng),或者火星漫游者導(dǎo)航系統(tǒng)等。
即使你可以聘請到其中一位工程師,為了最大限度地減少誤差,仍然需要硬件和軟件的緊密結(jié)合。這意味著可以通過軟件準(zhǔn)確建模 IMU,詳細(xì)了解整個攝像頭以及每個組件的詳細(xì)規(guī)格,更重要的是 IMU 和攝像頭都需要非常精確地同步。
系統(tǒng)需要準(zhǔn)確知道 IMU 讀取的數(shù)據(jù)哪個對應(yīng)開始畫面,哪個對應(yīng)結(jié)束畫面。這對于兩個系統(tǒng)的關(guān)聯(lián)至關(guān)重要,這一點最近才得以實現(xiàn),因為硬件 OEM 廠商認(rèn)為沒有必要投資于此方面。這就是 Dekko 公司花費了很長時間,才把基于 iPad 2 系統(tǒng)的硬軟件融合的原因。第一個Tango 手機是第一臺實現(xiàn)精準(zhǔn)時間同步的設(shè)備,并且是第一款具備良好追蹤系統(tǒng)的消費級手機。
目前,追蹤系統(tǒng)采用的來自 Qualcom 等公司的芯片都有一個同步的傳感器集線器,適用于所有組件,這意味著 VIO 系統(tǒng)在大多數(shù)當(dāng)前設(shè)備上可行,并配有相應(yīng)的傳感器校準(zhǔn)。
由于密切依賴硬件和軟件,在沒有 OEM 廠商的深度支持下,軟件開發(fā)人員幾乎不可能構(gòu)建一個優(yōu)良的系統(tǒng)。Google 投入了大量資金,讓一些 OEM 廠商支持 Tango 的硬件規(guī)范, 微軟、Magic Leap 等公司也正在努力創(chuàng)建自己的硬件。蘋果之所以如此成功地發(fā)布 ARKit,正是因為 ARKit 能夠很好地集合硬軟件。
光學(xué)校準(zhǔn)
為了使軟件精確地把攝像機的像素點與現(xiàn)實世界中的點相匹配,攝像機系統(tǒng)需要精確校準(zhǔn)。存在有兩種類型的光學(xué)校準(zhǔn):
第一種為幾何校準(zhǔn):使用相機的針孔模型來校正鏡頭的視場和鏡頭效果。由于鏡頭透鏡的影響,基本所有圖像都會變形。大多數(shù)軟件開發(fā)人員可以在沒有 OEM 廠商的幫助下,通過使用基于標(biāo)準(zhǔn)棋盤格和基本公開攝像頭參數(shù)校準(zhǔn)。
第二種為光度校準(zhǔn):這種校準(zhǔn)方式使用更多,通常需要 OEM 廠商參與圖像傳感器本身的細(xì)節(jié)優(yōu)化及內(nèi)部鏡頭涂層的使用。此校準(zhǔn)用于處理顏色和強度映射。例如,拍攝星空的望遠鏡所連接的攝像機,需要知道傳感器上光強度的輕微變化是否確定是星星,或者僅僅是傳感器或透鏡產(chǎn)生的誤差。校準(zhǔn)使得 AR 追蹤器具有更高的確定性,因為傳感器上的每個像素點都對應(yīng)于真實世界的點,所以光學(xué)追蹤更加精準(zhǔn),產(chǎn)生的誤差更小。
在上面的圖片中,各種 RGB 光點落入圖像傳感器上的“像素桶”中,這個過程很好地說明了問題?,F(xiàn)實世界中點產(chǎn)生的光點通常落在幾個像素的邊界上,這些像素點將平均光點的密集度。用戶運動、或場景陰影或閃爍的熒光燈等微小的變化,都會改變與像素點對應(yīng)的現(xiàn)實世界點的變化。這時,所有的光學(xué)校準(zhǔn)都盡可能地消除產(chǎn)生的誤差。
慣性校準(zhǔn)
對于 IMU 來說,測量加速度比測量距離或速率更加重要。IMU 的讀取錯誤隨著時間的推移不斷累積,產(chǎn)生誤差的速度非???!校準(zhǔn)和建模的目標(biāo)是確保距離的測量在每秒鐘 X 等分時間下的精度足夠高。理想情況下,這個時間段要足夠長,以減少當(dāng)鏡頭被遮蓋或場景中發(fā)生其他情況時,導(dǎo)致攝像機丟失對幾幀畫面的追蹤。
使用 IMU 測量距離稱為航位推算。這基本算是一個猜測,對 IMU 收集的數(shù)據(jù)進行建模,確定積累錯誤的方式,然后編寫過濾器來減小誤差。想象一下,如果你被要求邁出一步,然后猜測邁出的步子有多大。只猜測邁出一步的距離會產(chǎn)生很高的誤差。但是,如果你反復(fù)邁出千步并猜測每一步的距離,所產(chǎn)生的誤差便會非常小。因為你對于踏出哪只腳、地板的種類、鞋子的款式、移動速度的快慢、身體狀態(tài)的好壞等等熟知,那么你最終的猜測便會非常準(zhǔn)確?;镜?IMU 校準(zhǔn)和建模便是這一原理。
數(shù)據(jù)有很多誤差來源。機器臂通常以完全相同的方式重復(fù)地移動設(shè)備,捕獲 IMU 的輸出并寫入濾波器,直到來自 IMU 的輸出與來自機器臂的移動精確匹配。為進一步減小額外的誤差,Google、微軟甚至在國際空間站(ISS)及“零重力飛機”在微型重力環(huán)境下進行校準(zhǔn)。
實際上,達到真正的精準(zhǔn)度,比嘴上說說難的多。OEM 廠商必須對所有設(shè)備進行校準(zhǔn),即使許多設(shè)備有不同的 IMU(例如,Galaxy 7 可能有來自 Invensense 和 Bosch 的 IMU,當(dāng)然 Bosch 不適用于 Invensense)。當(dāng)然,這是蘋果相對于 Android OEM 廠商的另一個優(yōu)勢所在。
追蹤技術(shù)的未來
如果 VIO 是今天我們能實現(xiàn)的,那么今后將如何發(fā)展,會讓 ARKit 看起來很多余嗎?令人驚訝的是,VIO 系統(tǒng)將一直是數(shù)百米范圍內(nèi)最好的追蹤方法(對于更長距離的追蹤,VIO 系統(tǒng)需要融合 GPS,重新定位地標(biāo)識別)。優(yōu)化 VIO 系統(tǒng)的原因是:即使其他光學(xué)系統(tǒng)像 VIO 一樣準(zhǔn)確,其他系統(tǒng)的 GPU 或攝像頭仍然需要耗費電池,而這對頭戴顯示器影響很大。所以,單目
攝像頭的 VIO 系統(tǒng)是最準(zhǔn)確,最低功耗,最低成本的解決方案。
深入學(xué)習(xí)確實對研究追蹤系統(tǒng)有重大影響。目前為止,基于追蹤系統(tǒng)的深度學(xué)習(xí)大約產(chǎn)生 10% 的誤差,其中頂級的 VIO 系統(tǒng)的誤差只有個位數(shù),這一數(shù)字還在變小,并且將優(yōu)化室外重新定位。
深度攝像頭能在各個方面優(yōu)化 VIO 系統(tǒng),其中對于特征點不明顯的情況,精確測量地面實況和尺寸,以及邊緣追蹤都能得帶很好的改善。但是耗電量大,需要以低幀率運行,并且每幀之間使用 VIO。深度攝像頭不適用于戶外,因為攝像頭工作時產(chǎn)生的紅外線會被陽光生成的紅外線所干擾。攝像頭的工作范圍也取決于功耗,這意味著手機的工作范圍可能只有幾米。深度攝像頭的 BOM 成本很高,因此 OEM 廠商將避免在大批量生產(chǎn)的手機中安裝深度攝像頭。
雙攝像頭或魚眼鏡頭有助于看到更大的場景,可以捕獲更多的光學(xué)特征。例如:普通鏡頭可能只看到白色的墻壁,魚眼鏡頭下可以看到天花板的圖案和地毯,Tango 和 HoloLens 均采用了這種方案。而且
,雙攝像頭或魚眼鏡頭可獲得深度信息,其運算成本要低于 VIO,但是 VIO 使用低成本的 Bom 和低功耗便能獲得深度信息。
由于雙攝像頭手機的攝像頭(即便是 HMD)所處位置很接近,所以攝像頭的精確范圍對于深度計算來說,非常有限。相隔幾厘米的攝像頭只能精確幾米范圍內(nèi)的深度。
而從頭到尾追蹤最關(guān)鍵的是,支持更大范圍的追蹤,尤其是支持戶外數(shù)錢公里的范圍追蹤。在這點上,AR 追蹤和無人駕駛跟蹤幾乎沒有區(qū)別,只是 AR 系統(tǒng)使用較少的傳感器,耗能也較低。最終,任何設(shè)備都將適用于大范圍追蹤,云服務(wù)也是必須的,故而,Google 最近宣布了 Tango 的視覺定位服務(wù)意圖也在此。未來幾個月我們將看到這些變化,這也是每個人現(xiàn)在都關(guān)心 3D 地圖的原因。
AR 計算機視覺的未來
6 Dof 位置追蹤技術(shù)將在未來 12-18 個月內(nèi)完全商品化,覆蓋所有設(shè)備。現(xiàn)在還有哪些問題亟待解決呢?
3D 重建系統(tǒng),HoloLens 稱之為空間映射(Spatial Mapping),Tango 稱之為深度感知(Depth Perception)。3D 重建系統(tǒng)能夠找出場景中真實物體的形狀或結(jié)構(gòu)。這個技術(shù)允許虛擬內(nèi)容隱藏于現(xiàn)實世界后面。
這讓人們出現(xiàn)概念混淆,認(rèn)為 AR 便是“混合”現(xiàn)實,其實是增強現(xiàn)實,多數(shù) AR demo 并沒有 3D 重建系統(tǒng)的支持,所以 AR 內(nèi)容只是覆蓋于所有真實世界物體的前面。
3D 重建系統(tǒng)通過從場景中捕獲密集點云(今天使用深度攝像頭),將其轉(zhuǎn)換為網(wǎng)格,將“隱形”網(wǎng)格連同真實世界的坐標(biāo)導(dǎo)入 Unity 中,然后當(dāng)真實世界的景象出現(xiàn)在攝像頭中時,把那些網(wǎng)格放置在真實的景象上。
這意味著虛擬內(nèi)容可以與現(xiàn)實世界互動。注意 2D 版本的ARKit 通過檢測 2D 平面實現(xiàn),這是最為基本的要求。倘若 ARKit 沒有參照地面,用 Unity 制作的內(nèi)容肯定會肆意“漂浮”。
圖片中,Magic Leap 公司演示了一款躲在桌腿后面的機器人。我們不知道桌子腿是實時重建,還是預(yù)先建模,再把虛擬機器人放在真實桌子腿的后面。
上述提到的深度攝像方面問題在 3D 重建上仍然存在,這就是為什么目前無法廣泛使用。研究人員正在研究,讓單目 RGB 攝像頭支持實時的照片級 3D重建。這個技術(shù)至少需要 12-18 個月才能應(yīng)用于產(chǎn)品中。也是因為這樣,我才認(rèn)為“真正的”消費級 AR 頭戴設(shè)備依舊離我們很遠。
在 2012 年,Dekko 的 3D 重建系統(tǒng)可在 iPad 2 上工作。我們不得不將網(wǎng)格顯示出來,否則用戶不敢相信他們所看到的(追蹤系統(tǒng)可理解現(xiàn)實世界)。圖中越野車剛剛完成了跳躍,部分隱藏在紙巾盒后面。
3D 重建之后,有許多有趣的研究注解 3D 場景。你現(xiàn)在能看到的幾乎所有的計算機視覺深度學(xué)習(xí)使用的是 2D 圖像,但對于AR(汽車、無人機等),我們需要在 3D 中從語義方面理解這個世界。
圖片為一例 3D 場景語義解釋。 底部是原始圖,中間是 3D 模型(可能由立體相機或 LIDAR 構(gòu)建),最上面是通過深度學(xué)習(xí)的圖像分割,所以我們能從中分辨出人行道。這對《Pokemon Go》也十分有用。
然后,我們需要弄清楚,如何將所有驚人的技術(shù)擴展到實時支持多個用戶。這是終極目標(biāo)。
隨著 3D 重建所需容量越來越大,我們需要了解如何將其托管至云服務(wù),讓多個用戶共享并擴展模型。
AR 其他技術(shù)的未來
AR 其他技術(shù)的未來說起來太廣泛,先談?wù)勔M一步發(fā)展的技術(shù):
- 光學(xué):視野范圍、鏡頭尺寸、分辨率、亮度、焦深、聚光度等等都需要解決。
我們會看到一些“過渡性”的 HMD 設(shè)計,它們受制于一些關(guān)鍵參數(shù),只試圖解決一個問題,如社交性,或是追蹤技術(shù),或是企業(yè)用戶案例,以及其他,之后我們才能看到最終的消費級產(chǎn)品方案。
- 渲染:使虛擬內(nèi)容與現(xiàn)實世界融合。
確定真正的光源,將其與虛擬世界相匹配,使陰影和紋理看起來很合理。這個技術(shù)是好萊塢 SFX 多年來一直努力的方向。但是對于 AR 來說,需要在手機上實時完成,并且不會影響到真實世界的光或背景,即便是瑣碎的事情也很重要。
研究表明,多模式輸入系統(tǒng)效果最佳(有謠言說蘋果正在做這方面的事情)。多模式意味著各種各樣的輸入“模式”,如手勢、語音、計算機視覺、觸感、眼睛跟蹤等,為最好理解用戶意圖,AI 也應(yīng)該一起考慮進去。
- 圖形用戶界面(GUI)和應(yīng)用程序:目前還沒有我們想象中的 AR APP。
我們只想看看 Sonos (無線智能音響)在設(shè)備上顯示控件,并不想選擇 Sonos 按鈕。而且我們一直關(guān)注的是視野范圍內(nèi)畫面,和與實現(xiàn)世界的交互,沒有人知道該如何呈現(xiàn),但肯定不會是 4 x 6 的網(wǎng)格圖像。
- 社會問題:只有 Apple 和 Snap 知道如何營銷時尚,AR HMD 的銷售可能只是人們最求時尚。這個問題或許比所有技術(shù)問題都難以解決。
來源:雷鋒網(wǎng)
關(guān)注微信公眾號:VR陀螺(vrtuoluo),定時推送,VR/AR行業(yè)干貨分享、爆料揭秘、互動精彩多。
投稿/爆料:tougao@youxituoluo.com
稿件/商務(wù)合作: 六六(微信 13138755620)
加入行業(yè)交流群:六六(微信 13138755620)