[SLAM] 01. "Simultaneous Localization and Mapping"

本篇帶你認識SLAM,造成客觀的認識和體系

 

1、經過行業招聘初步瞭解SLAM

發信人: leecty (Terry), 信區: ParttimeJobPost
標 題: 創業公司招SLAM 算法工程師
發信站: 水木社區 (Thu Jun 16 19:18:24 2016), 站內html


咱們是一家年輕的初創公司,核心團隊來自清華大學和中科院。依託強大的視覺SLAM算法,咱們深刻投身到機器人,虛擬現實,加強現實等前沿產業。

招聘:
視覺SLAM 算法工程師 (能夠兼職/實習)

要求:
1. 熟悉SVO,SFM,ORB SLAM,LSD SLAM,PTSAM等算法,或至少熟悉用過其中任一方面
2. 專業:自動化,計算機,數學(熟悉運籌優化,數值計算等)
3. 熟悉C ,C++,Matlab
4. 最好熟悉Linux 

聯繫方式: ......@126.com

待遇:
工資不能保證是行業的最高水平,當咱們能保證:
1. 和目前行業最領先的人一塊兒,在最前沿的領域成長
2. 豐厚的期權。享受創業的成果。優秀的實習生和正常招聘得到期權股票途徑一致,只要你是牛人。前端


 

2、牛逼哄哄的SLAM技術 即將顛覆哪些領域?

機器人在未知環境中,要實現智能化的四大任務:python

  • 定位(Localization),
  • 建圖(Mapping),
  • 路徑規劃(Navigation),
  • 控制技術(Controlling)

而這四個問題中的前三個,SLAM都扮演了最核心的功能。git

 

2013年的Course : Cyrill Stachniss程序員

 


 

3、ICCV研討會:實時SLAM的將來以及深度學習與SLAM的比較

第一部分:爲何 SLAM 很重要?github

SLAM 是卷積神經網絡和深度學習的補充:算法

  • SLAM 關注於幾何問題
  • 深度學習是感知(識別)問題的大師。

 

若是你想要一個能走到你的冰箱面前而不撞到牆壁的機器人,那就使用 SLAM。編程

若是你想要一個能識別冰箱中的物品的機器人,那就使用卷積神經網絡。後端

 

SLAM 是 SfM(運動恢復結構:Structure from Motion)的一種實時版本。網絡

視覺 SLAM 或基於視覺的 SLAM 是 SLAM 的一種僅使用攝像頭的變體,放棄了昂貴的激光傳感器 和 慣性測量單元(IMU)。

  • 單眼 SLAM(Monocular SLAM)僅使用單個攝像頭,
  • 非單眼 SLAM(non-monocular SLAM)一般使用一個預校準的固定基線的立體相機套件。

 

SLAM 是計算機視覺領域所謂的「幾何方法(Geometric Method)」最好案例。

事實上,卡內基梅隆大學(CMU)的機器人研究所將研究生水平的計算機視覺課程分紅了一個「基於學習的視覺方法」和一個單獨的「基於幾何的視覺方法」課程。

 

From: CMU course list

16-822 Geometry Based Methods in Computer Vision

16-824 Learning-based Methods in Vision

 

 

1.運動恢復結構 Sfm vs 視覺 SLAM

運動恢復結構(SfM)和 SLAM 所解決的問題很是類似,但 SfM 傳統上是以離線形式進行的,而 SLAM 則已經慢慢走向了低功耗/實時/單 RGB 相機的運行模式。

今天許多運動恢復結構方面的專家都在爲世界上一些最大的科技公司,幫助打造更好的地圖。若是沒有關於多視圖幾何(multiple-view geometry)、SfM 和 SLAM 的豐富知識,像谷歌地圖這種成功的地圖產品根本就不可能出現。

典型的 SfM 問題遵循:

給定一個單個室外結構(如大劇場/大致育館)的大型照片集合,構建該結構的 3D 模型並肯定每一個相機的姿式。這個照片集合以離線形式處理,並且大型結構重建所需時間從幾小時到幾天不等。

流行的 SfM 相關的軟件庫:

    • Bundler:一個開源的運動恢復結構工具包

    • Libceres:一個非線性最小二乘極小化工具(對束調整(bundle adjustment)問題頗有用)

    • Andrew Zisserman 的多視圖幾何 MATLAB 函數

 

2.視覺 SLAM vs 自動駕駛

研討會的組織者之一 Andrew Davison 表示,儘管自動駕駛汽車是 SLAM 最重要的應用之一,但用於自動化載具的 SLAM 應該有其本身的研究軌道。(並且正如咱們所見,研討會的展現者中沒有一個談到了自動駕駛汽車。)在接下來的許多年裏,獨立於任何一個「聖盃級」的應用而繼續在研究的角度上研究 SLAM 是有意義的。

儘管在自動化載具方面存在着太多的系統級細節和技巧,但研究級的 SLAM 系統所需的不過是一個網絡攝像頭、算法知識和一點辛勞而已。

視覺 SLAM 做爲一個研究課題對數以千計的博士生的早期階段要友好得多,他們將首先須要好幾年的使用 SLAM 的實驗室經驗,而後才能開始考慮無人駕駛汽車等昂貴的機器人平臺。

 

 

第二部分:實時 SLAM 的將來

你也許不知道 Andrew 是誰,他是倫敦帝國學院獨一無二的 Andrew Davison 教授

他最知名的成就是其 2003 年的 MonoSLAM 系統,他是第一個展現如何在單個「單眼」攝像頭上構建 SLAM 系統的人,而那時候其餘全部人都還認爲打造 SLAM 系統須要一個立體的「雙眼」攝像頭套件。

最近,他的研究成果已經對戴森(Dyson)等公司的發展軌跡和他們的機器人系統的能力產生了影響(如全新的 Dyson360)

 

在 Davidson 的研討會介紹演講中,他討論了一些過去 10-15 年裏科研界所打造的典範系統:

    • MonoSLAM

    • PTAM

    • FAB-MAP

    • DTAM

    • KinectFusion

 

1. Davison vs Horn:機器人視覺的下一篇章

Davison 還提到他正在寫一本關於機器人視覺的新書,這對計算機視覺、機器人和人工智能領域的研究者來講應該是一個激動人心的好消息。

上一本機器人視覺的書是由 B.K. Horn 寫的(出版於 1986 年),如今也到該更新的時候了。

儘管我很樂意閱讀一本重在機器人視覺原理的鉅著,但我我的但願該書關注的是機器人視覺的實用算法,就像

Hartley 和 Zissermann 的傑做《Multiple View Geometry(多視圖幾何)》

Thrun、Burgard 和 Fox 所著的《Probabilistic Robotics(機率機器人學)》那樣。

一本關於視覺 SLAM 問題的「食譜」將會受到全部嚴肅的視覺研究者歡迎。

... ...

 

 

第三部分:深度學習 vs SLAM

SLAM 小組討論真是樂趣無窮。

在咱們進入重要的「深度學習 vs SLAM」討論以前,我應該說明每一位研討會展現者都贊成:

語義對構建更大更好的 SLAM 系統是必需的。

 

關於將來的方向,這裏有不少有趣的小對話。在爭論中,Marc Pollefeys(一位知名的 SfM 和多視角幾何研究者)提醒全部人「機器人是 SLAM 的一個殺手級應用」,並建議咱們保持對「大獎」的關注。這使人很是驚訝,由於 SLAM 傳統上是適用於機器人問題的,但過去幾十年機器人並無什麼成功(谷歌機器人?),致使 SLAM 的關注重點從機器人轉移到了大規模地圖構建(包括谷歌地圖)和加強現實上。研討會上沒人談論過機器人。

 

1.將語義信息集成到 SLAM 中

人們對將語義整合到今天最出色的 SLAM 系統中有很大興趣。當涉及語義時, SLAM 社區不幸地卡在了視覺詞袋(bags-of-visual-words)的世界裏,而在如何將語義信息整合進他們的系統上沒有什麼新想法。在語義一端,咱們如今已經看到 CVPR/ICCV/ECCV 上冒出了不少實時語義分割演示(基於卷積神經網絡);在我看來,SLAM 須要深度學習,而深度學習也同樣須要 SLAM。

 

 

2.「端到端學習(end-to-end learning)會主宰 SLAM 嗎?」 

在 SLAM 研討會小組討論結束時,Zeeshan Zia 博士提出了一個震驚全部人的問題,並引起了一場充滿能量的討論,使人難忘。

你應該看看小組成員們臉上的表情。那就像是將一個深度學習的火球投向一羣幾何學家。他們的面部表情表達出了他們的困惑、憤怒和厭惡。他們想:「你怎麼敢質疑咱們?」正是在這些稍縱即逝的時刻,咱們才能真正體會到大會的體驗。

Zia 的問題基本上是:「在構建今天的 SLAM 系統時,端到端學習很快就將取代大部分人工勞動嗎?

 

Zia 的問題很是重要,由於端到端的可訓練系統已經慢慢進入到了不少高級的計算機問題中,相信 SLAM 會是一個例外是沒有道理的。有好幾位展現者都指出當前的 SLAM 系統過於依賴幾何,以致於讓徹底基於深度學習的 SLAM 系統看起來不合理了——咱們應該使用學習技術獲得更好的點描述,而不要管幾何。「你可使用深度學習作一個計算器,並不意味你應該這麼作。」

 

儘管許多小組討論發言人都使用了有些確定的「不行」迴應,但讓人驚訝的是,倒是 Newcombe 聲援了深度學習和 SLAM 聯姻的可能。

 

Research Manager Oculus Research, Surreal Vision Co-Founder, Affiliate Assistant Professor.

 

 

3.Newcombe 的提議:使用 SLAM 助力深度學習

儘管 Newcombe 在深度學習可能如何幫助 SLAM 上沒有提供不少證據或想法,但他卻爲 SLAM 如何可能爲深度學習提供幫助給出了一條清晰的路徑。

想一想看咱們使用大規模 SLAM 已經構建出的地圖以及這些系統所提供的對應(correspondence)——這難道不是一個構建能幫助深度學習的萬億級圖像到圖像「相關」數據集的清晰路徑嗎?其基本思路是:

今天的 SLAM 系統是大規模的「對應引擎」,能夠用來生成大規模數據集,而這正是深度卷積神經網絡所須要的。

 

 

結語

此次 ICCV 大會上主流的工做(重在機器學習)和本次實時 SLAM 研討會所呈現出現的工做(重在束調整等幾何方法)之間存在至關大的脫節。主流的計算機視覺社區在過去十年內已經見證了屢次小型變革(如:Dalal-Triggs、DPM、ImageNet、ConvNets、R-CNN),而今天的 SLAM 系統和它們八年前的樣子並無很大的不一樣。Kinect 傳感器多是 SLAM 領域惟一的最大的完全變革的技術,但基礎算法仍舊保持着原樣。

 


 

4、2015深度學習回顧:ConvNet、Caffe、Torch及其餘

研究生過去經常避開了關於Yann LeCun的笑話,Yann LeCun堅持認爲機器學習在未來的某一天會作特徵設計階段的工做。如今彷佛是這種狀況,當你堅持認爲「手工特徵設計」將省掉一天時間的時候,整個視覺社區都會忽略你。Yann LeCun作了一個主題報告,並給了它一個有趣的標題:「深度學習怎麼了?」,這代表了卷積神經網絡(也叫CNNs或ConvNets)存在於CVPR的任何角落。

過去在CVPR很難發表ConvNet(卷積神經網絡)研究論文,而如今若是你沒有對ConvNet作一個基本的比較的話,很可貴到一篇CVPR文獻。獲得一個很酷的新問題了麼?哦,你沒有試一下基於ConvNet的基本方法麼?很好,這說明爲何沒人關心了。

還有不少事情等着視覺科學家去作,一個紮實的數學上的正式教育比其餘任何都要重要。咱們過去是使用梯度降低來訓練,如今也是如此。就比如咱們過去喝咖啡,如今也喝咖啡同樣。其本質上,其實仍是數學。

很是清楚的是:經過卷積神經網絡語言來鑄造你的計算機視覺問題,你將戰勝全部用手作計算機視覺的人。我認爲Yann LeCun(深度學習之父其中之一)就是一個現代的笛卡爾,只是由於我認爲開創性的工做是指日可待。他的ConvNets思想框架就像是一個必備的座標系統——咱們可能不知道目的地像什麼,但咱們如今知道如何來繪製一張地圖。

 

在CVPR上,咱們既有Torch教程也有Caffe教程。我參加了DIY深度學習的教程,這是一個充滿Caffe的屋子——在會議開始的5分鐘前,站在房子裏的參會人員只有像我這樣的懶蟲。

相比之下,Caffe是更受歡迎的,但對於Torch,當談及到一些深度學習的權威人員時(如+Andrej Karpathy和其餘深度思惟科學家),一些特定的專家小組彷佛從Caffe轉移到了Torch。

  Caffe是在Berkeley發展起來的,有一些充滿活力的社區,與Python結合而且在大學生中彷佛至關流行。Trevor Darrell教授甚至找了一些博士後來幫助Caffe發展。若是我再年輕幾歲而且剛得到博士學位,那麼我必定會申請的。

  Torch並無跟隨Python的潮流,它是基於Lua的。對於解釋器沒有必要像Matlab或者Python那樣,Lua會給你神奇的控制檯。Torch被Facebook人工智能研究實驗室和位於倫敦的谷歌DeepMind大量使用。對於那些懼怕相似於Lua這樣新語言的人,在此不用擔憂——若是你已經涉足Python,JavaScript或者Matlab的話,那麼你會感到Lua語言學起來特別「輕鬆」。

 

如今,愈來愈清晰的是:深度學習的將來主要是來自像Caffe或Torch那樣有自給自足的軟件包,而不是像OpenCV或Matlab那樣的處在生死邊緣上的全能工具。

當你在OpenCV上分享創做,你最終會分享源代碼,但有了深度學習工具包,你最終提供的是你的網絡預訓練

對於你的計算機視覺管道,你沒必要再考慮20個「小」算法的組合——你只要考慮你想要的流行網絡架構,而後就是數據集

    • 若是你有GPU和龐大的數據,你能夠作完整的端到端的訓練。
    • 若是你的小數據集或者中等數據集,你能夠微調最後幾層。你甚至能夠在最後一層的頂部訓練一個線性分類器,
    • 若是你怕麻煩——那麼你要作的只是超越SIFT(尺度不變特徵變換算法),HOG(方向梯度直方圖 ),GIST(通用搜索樹)以及全部在計算機視覺過去二十年裏慶祝的算法。

 


 

5、學習SLAM須要哪些預備知識? 

  1. 首先搬出寶典:Multiple View Geometry in Computer Vision。這本書基本涵蓋了Vision-based SLAM這個領域的所有理論基礎!讀多少遍都不算多!
  2. 另外建議配合Berkeley的課件學習。(更新:這本書書後附錄也能夠一併讀完,包括附帶bundle adjustment最基本的levenberg marquardt方法,newton方法等)
  3. 只要是SLAM問題就要涉及optimization,就要用到各類least square算法。因此另外一個基礎理論是Sparse Matrix,這是大型稀疏矩陣處理的通常辦法。能夠參考Dr. Tim Davis的課件:Tim Davis ,他的主頁裏有所有的課程視頻和Project。針對SLAM問題,最經常使用的least square算法是Sparse Levenberg Marquardt algorithm,這裏有一份開源的代碼以及具體實現的paper:Sparse Non-Linear Least Squares in C/C++
  4. 而後是框架級的工具。最經常使用的機器人框架ROS ROS.org | Powering the world's robots,可使用在Windows,Linux和MacOS等操做系統上,裏面包含一整套經常使用的機器人理論的算法和工具的實現。另外一個開源工具集OpenSLAM OpenSLAM.org,其中的g2o是目前最流行的graph optimization的實現工具。另外OpenCV也是視覺相關必備的基礎工具,Multiple View教材中的經常使用算法在OpenCV中都有經常使用的實現。(更新:OpenCV的文檔Camera Calibration and 3D Reconstruction 中,包含SLAM相關的基礎理論公式以及C/C++/Python實現的API)

另外多說一句題外話,由於 Optimization 和 feature extraction 是SLAM裏最核心的兩個問題,而這兩個問題都是運算量極大的。好的SLAM框架要兼顧速度和精確度。目前大部分Vision或者RGBD的SLAM框架都是用C++來實現完成的以確保運算速度。雖然我我的很欣賞Python,而且Python3也支持SciPy,OpenCV,ROS等重要工具,不過依然有大量的諸如g2o等基礎性庫在python下沒法使用,並且若是要借鑑其餘人的代碼,最方便的仍是在C++中實現。因此若是提問者有志於在這個領域作深刻研究,夯實的C++基礎是必不可少的。Introduction to Algorithms,以及 @vczh 推薦的C++ Primer等,都是在實際工做前要本身作好的功課。


下面說一些硬件和實驗上的知識儲備。

首先Vision-based SLAM經常使用攝像機標定(Camera Calibration)的世界通用簡單方法,是張正友博士(Dr. Zhengyou Zhang,主頁Zhengyou Zhang's Home Page)的方法(張正友博士是本領域裏少數的具備極其巨大影響力和貢獻的華人學者,已成腦殘粉嚶嚶嚶)。具體方法和實現,我在這裏推薦兩個,

  • 一個是Caltech工具箱:Camera Calibration Toolbox for Matlab ,以及相關paper:Camera Calibration Toolbox for Matlab
  • 該方法的另外一個實現,是Matlab最新版本內置的Camera Calibration的application,自動導入標定圖片並把獲得的結果輸出給Matlab,更加自動化,更加便捷準確。更多的Camera Model理論知識請參考Multiple View Geometry。

至於RGB-D Camera,最經常使用的採集設備有兩種:

一種是Microsoft Kinect,一個生態環境完備的RGBD Camera,能夠直接用Visual Studio可Kinect SDK直接開發,也有大量開發好的程序以供借鑑參考,也能夠用OpenNI和ROS採集處理,我就很少介紹了,畢竟微軟是對程序員最友好的公司沒有之一(微軟大法好)。

另外一個是Google的Project Tango,Google對於這個自家的神器仍是很低調的,能夠看看宣傳片ATAP Project Tango ,絕對酷炫——惋惜咱們lab剛剛買的那一臺,我尚未用過,因此對具體開發不太瞭解。


另外有幾個網上成熟的數據集和測試方法,

  • 一個是Malaga Dataset,一個西班牙的團隊採集的Malaga城市數據:The Málaga Stereo and Laser Urban Data Set,覆蓋了城市中汽車駕駛的各類狀況(停車,加速,減速,行人,建築,綠化帶等),裏面提供了雙攝像頭,Laser,IMU等數據以及GPS的ground truth trajectory。不過該版本由於是在市中心,因此GPS的ground truth並不可靠。
  • 另外一個是慕尼黑工業大學Computer Vision Lab的RGB-D dataset ,裏面提供了大量的室內的RGBD數據集,以及很是方便好用的benchmark tools。
  • 第三個是KITTI Dataset:The KITTI Vision Benchmark Suite,也是承認度很普遍的汽車駕駛數據集。

 


 

Next:

博士-半閒居士

視覺slam十四講學習

 


 

7、補充些市場信息

讓Android手機能像人類同樣感知物理世界,Google發佈「Tango」計劃 (2014)

Google的ATAP項目組爲Tango計劃定製了一款5英寸的Android手機,經過該手機上內置的特殊硬件及軟件,系統能夠追蹤設備的整個3D運動過程而且繪製出包含位置、方向等物理數據的地圖。就像咱們在房屋裏走上兩次就能夠感知到房間的大小、方位同樣,當你拿着這款定製的Android手機時,經過這個過程它就能繪製出相應的地圖。

當手機能和人那樣創建起對真實環境的感知,那麼它在功能擴展層面上將會大大增強。在一些和真實環境結合的比較密切的領域,好比導航和遊戲,用戶體驗將獲得質的提高。

按照Google的說法,因爲目前這款手機內置的算法和API等都還處於比較早期的階段,因此ATAP項目組也但願能有一些專業開發人員來幫助他們完善產品。因而Google準備將現有的200款原型機發放給多個領域的開發者以期待他們能幫助Google推進這項技術的發展進而創造出非同尋常的用戶體驗。若是你認爲本身符合Google提出的相關條件,那麼能夠到這裏填寫申請表。

事實上,在Google的Tango計劃以前,微軟的Kinect、蘋果收購的PrimeSense都能讓數字設備得到對真實世界的感知能力。

不過與它們不一樣的是,Google把這項技術用在了手機上,而這就要求其背後的視覺處理器能足夠節能以致於手機電池就能維持它的正常運行。根據TC的消息Movidius公司製造的Myriad 1三維視覺處理芯片確實知足了Google的這一要求,維持Myriad 1的正常運轉僅需幾百毫瓦特的電力。在 Myriad 1成功突破能耗障礙以後,這類技術終於能夠在手機上正常運行,而它天然就成了Tango計劃原型機上的核心部件

ATAP項目組本屬於摩托羅拉旗下,但Google並未在此前的交易中將其出售給聯想而是將其併入Android團隊。Tango項目雖然屬於ATAP項目組但並非Android的一部分,在將來等到技術成熟它也許會和Android進行整合,但至少在今天它們仍是分離的。(2014年)

 

這仍是手機嗎!聯想PHAB 2 Pro、Moto Z發佈

Tango技術的AR手機讓生活充滿魅力

聯想與谷歌共同打造出全球首款搭載Tango技術的AR大屏智能手機PHAB 2 Pro採用了6.4英寸2K的超高清屏幕;智能Assertive Display技術,能夠根據環境照明與內容的不一樣對畫質進行優化。PHAB 2 Pro(及PHAB 2全系產品)配備了三個麥克風,以及支持清晰4K視頻錄製的16MP內置攝像頭,採用了具備降噪效果的空間採集技術,同時搭載了通過優化的Tango版高通驍龍652八核處理器、4GB內存以及Fluence Pro功能,還有杜比音效採集5.1和杜比全景聲回放功能。將於今年9月在全球範圍內陸續上市,售價499美圓。

 

Demo: PHAB 2 Pro

相關文章
相關標籤/搜索