1. 程式人生 > >分享| 語義SLAM的未來與思考(泡泡機器人)

分享| 語義SLAM的未來與思考(泡泡機器人)

system war 簡單 field 形狀 采樣 很好 建立 向量

相比典型的點雲地圖,語義地圖能夠很好的表示出機器人到的地方是什麽,機器人“看”到的東西是什麽。比如進入到一個房間,點雲地圖中,機器人並不能識別顯示出來的一塊塊的點雲到底是什麽,但是語義地圖的構建可以分辨出廚房中的鍋碗瓢盆,客廳的桌子沙發電視機等。所以語義地圖的構建,對於SLAM研究有著很重大的意義。本文和大家一起切磋小敘一下語義SLAM 的未來。

1 何為語義地圖

一直以來,構建語義地圖都是一個大家都一致認同的發展方向,主要原因有以下兩點:

? 目前視覺SLAM方案中所采用的圖像特征的語義級別太低,造成特征的可區 別性(Distinctiveness)太弱。

? 采用當前方法構建出來的點雲地圖對不同的物體並未進行區分。這樣的點雲

地圖因為包含信息不足,再利用性十分有限。

前面提到過采用視覺傳感器進行視覺測量,前提是要知道同一個“物體”在不同圖像中的位置。而當前的視覺SLAM方法僅僅依靠本地特征點,甚至直接基於圖像像素。這些信息可以統一被認作“特征”,只不過它們被抽象到了不同的層級而已。如下圖所示:

技術分享圖片
從這樣的角度去理解,其實所謂的語義特征,就是把本地特征進一步進行歸納組織,達到人所理解的分類層面。在深度學習算法流行之前,在物體識別方面表現最佳的Bag of Visual Word方法就是對之前提取出來的SIFT等特征相互組合之後形成更加復雜且全面的特征,再放入分類器進行分類。事實上對於深度學習算法來說,圖像特征的語義也是逐層抽象的,通過對神經網絡進行可視化的的工作我們也可以看出,底層網絡中提取出來的圖像特征大多是點線一類的低層語義,而到了中間層的網絡圖像特征已經被抽取成了一些物體的局部部件,而在後層的圖像特征便上升到了物體的級別。逐層特征提取抽象,正是神經網絡有趣的地方。

技術分享圖片
事實上,很多時候對於人自身來講,語義的層級劃分十分模糊。比如:識別一個蘋果,可以被進一步細分為紅富士,黃元帥等細類,也同樣可以粗分為水果這個大類。因此,對於語義級別SLAM來說,明確定義SLAM系統的使用場景十分必要,在計算資源有限的條件下,可以最大化地針對任務進行有效運算。

2 語義SLAM當前進展

事實上這些年陸續有語義或者物體級別的SLAM的工作發表,但受限於計算量及視覺SLAM本身的定位精度,這些工作大多在高度可控的場景下進行,並實現建立好物體類別庫。比如SLAM++,出自於帝國理工學院Andrew Davison課題組,主要思想就是通過RGBD相機構建場景點雲,然後把點雲特征與預先準備好的物體數據庫中的物體進行比對,一旦發現匹配的物體就把預先存儲好的精細點雲放入地圖,並根據原始點雲估計物體位姿, 作者加入了一項地面水平的假設,使得放入地圖中的物體都保持在同一個水平面上,有效地提升了地圖的精度。在地圖精度提高的前提下,相機自身定位的精度自然也有所提高。其它的一些基於單目攝像頭的語義SLAM相關工作,也采取的是類似的思路及方法。

有幾位研究者在語義SLAM方面耕耘多年,也不斷有相關工作發表,感興趣的同學可以關註以下幾位研究者的工作。由於作者水平有限,相關工作的發展也十分迅速,難免有所遺漏,請各位同學見諒。有興趣的小夥伴們可以訪問下面的網址獲取更多相關的信息:

http://webdiis.unizar.es/~neira/

http://cs.adelaide.edu.au/~cesar/

https://robertcastle.com/software/

3 技術手段

接下來我們簡單聊聊語義SLAM的具體技術手段。以下內容中有不少涉及機器學習與神經網絡的相關知識,筆者盡量使用通俗的語言對其中的思想進行大體介紹,具體的實現請參考論文及機器學習的專業書籍。

? 物體識別

首先我們需要明確的是,語義的獲取,即識別(recognition),可以直觀地被認作是一個分類問題. 假設一幅圖片中有且僅有一個物體,把該圖片作為一個向量扔進分類器中,輸出向量就可以被認作是物體的類別表示。我們耳熟能詳的決策樹,支持向量機,神經網絡等都是經典的分類器。在2012年以前, 物體識別的方案普遍采用的是人工特征加分類器的架構,極具有代表性的方案就是使用HOG(梯度直方圖)特征與支持向量機進行行人檢測。而在計算機視覺界極富盛名的IMAGENET大規模圖像識別競賽(ILSVRC)中,Bag of Visual Word與支持向量機結合的方法也一度獲得了當年冠軍。IMAGENET是計算機視覺領域運用最廣泛的大規模圖像數據集,包含數百萬標註圖像,並對物體的類別進行層級區分,以滿足不同研究與運用的需要。

2012年,深度學習祖師爺Geoffrey Hinton教授與學生Alex Krizhevsky一起發表了基於卷積神經網絡(CNN)進行物體識別的工作Alexnet[2],一舉把ILSVRC的錯誤率降低了近10%,震驚了全世界。此後的幾年,計算機視覺領域便刮起了一陣深度學習的旋風。隨著深度網絡的不斷發展,有效的網絡層數逐年增加,在ILSVRC等測試數據集上的識別錯誤率也逐年遞減。截止2015年,由微軟亞洲研究院何愷明組研發的殘差神經網絡[3]達到了驚人的152層, 在ILSVRC上的錯誤率也降低到了3.57%。

技術分享圖片

上文中介紹的物體識別,假設了圖片中有且僅有一個物體,而在實際情況下,一幅圖片中往往包含多個物體,且物體之間有可能發生相互遮擋的情況。因此除了物體識別,我們還必須在圖片中對物體進行定位。

目前,對單幅圖片中的物體進行定位並識別的技術主要有兩個:目標檢測(Object detection)和語義分割(Semantic segmentation)。

? 目標檢測

對目標定位並識別最簡單的方法就是滑動窗口法(Sliding window).顧名思義, 該方法就是采用幾個固定大小的窗口,在目標圖像上逐像素滑動,每一步切割出一個小圖像,扔進分類器進行物體識別,直到整個目標圖像遍歷完畢. 如果要保證圖片中不同大小的物體毫無遺漏地被識別出來, 必須使用大小不同的多個窗口進行, 這也使得計算量大大增加, 無法滿足在VSLAM中的實時性需求。

2014年,Ross Girshick等人提出了RCNN[3], 把滑動窗口法替換成物體提案法(object proposal), 使每幅圖片需要測試的物體框從數萬個降低到了數千個,計算量大大減小, 目標檢測速度顯著提升。RCNN對一幅圖像的處理主要包括三階段:

1. 物體提案的提取

2. 卷積神經網絡進行特征提取

3. 支持向量機對特征向量進行分類

以上三個步驟需要分別執行,效率不高,因此Ross Girshick很快對RCNN進行了改進,發表了Fast-RCNN[4]。Fast-RCNN把最後一級的支持向量機替換為了softmax分類器,不僅使得檢測的速度和準確率都有所提高,還使得後兩層的訓練得以端到端的學習,使訓練過程得到簡化。 但Fast-RCNN還有一個很大的問題,object proposal需要通過特定的算法事先提取出來, 然後逐一扔進神經網絡進行物體識別,這樣相當於對每一個物體提案都需要做一次特征提取,而事實上各個物體提案之間會有很多重疊的部分,這樣做並沒有把效率最大化。很快Ross Girshick等人就發現object proposal也可以通過神經網絡方法進行提取, 把它與後級的物體識別網絡連接起來, 便可以從頭到尾進行端到端的訓練, 再一次使算法得以簡化, 效率進一步提升。這就是Faster-RCNN[5]所解決的問題,至此目標檢測算法也終於實現了實時化。

截止目前為止,實時化的目標檢測算法已經正式步入了產品化的階段,在實際應用中我們往往不需要用到200類物體檢測,比如在自動駕駛的過程中,蘋果菜刀等物體出現的概率微乎其微,且對任務沒有影響,那麽我們可以忽略這些不需要的類別,僅對任務相關的物體進行檢測。這樣減少分類的類別數量也將進一步提升檢測算法的效率及準確度。

技術分享圖片

? 語義分割

然而問題並沒有被完全解決, 目標檢測算法中, 目標的檢測框都是方形的,而現實中的目標往往形狀各異。這樣造成的結果就是檢測框中的結果既包含前景也包含背景, 即有大量的像素點被誤分類。而語義分割技術則不同,它的目標是要實現像素級別的物體分類,如下圖所示:

技術分享圖片

事實上語義分割的工作從很早以前就已經開始進行了,但受限於當時的算法及計算能力,發展一直很慢。近年來隨著深度神經網絡的大潮,語義分割又重新成為了一個熱門的研究方向。

2014年,Jonathan Long等人提出了使用全卷積神經網絡進行語義分割[6],開啟了語義分割研究的新時代。與傳統用於物體識別的卷積神經網絡不同,全卷積神經網絡最後幾層也同樣使用了卷積層,這樣做可以使輸出為一個二維分布,實現局部圖像像素級別的分類。

技術分享圖片

通過上面的這幅圖片,大家可以簡單直觀的了解一下傳統卷積神經網絡CNN與全卷積神經網絡FCN處理後的圖片到底是什麽樣子的。從圖中我們也不難發現,僅僅使用全卷積神經網絡,輸出的結果往往不盡如人意。因為神經網絡主要考慮的是圖像到像素分類之間輸入輸出的關系,而沒有充分考慮到屬於同一個物體的像素之間的關系。因此,在全卷積神經網絡之後,還需要加入一些後處理,使輸出的分割結果更加精細。

接下來為大家介紹一些能夠使得輸出的分割結果更加精細的一些後續處理方法。

首先我們來看一下不同的方法對同一幅圖像的處理結果:

技術分享圖片
僅僅使用全卷積神經網絡,輸出的結果往往不盡如人意。因為神經網絡主要考慮的是圖像到像素分類之間輸入輸出的關系,而沒有充分考慮到屬於同一個物體的像素之間的關系。因此,在全卷積神經網絡之後,還需要加入一些後處理,使輸出的分割結果更加精細。目前主要被應用上的後操作主要有兩種:

1. 條件隨機場(CRF)和馬爾科夫隨機場(MRF)都是可行的選擇。簡單來說,CRF 和MRF通過定義能量函數(通常考慮像素顏色及空間距離),然後優化整個能量函數,使類似的像素點可以被分為同一個類,達到平滑分割結果的目的。具體的工作可以參考[7][8][9]。

技術分享圖片

2. 使用Deconvolution 層。由於FCN 對原始圖像進行了多次降采樣,導致輸出圖像過小,在原始圖像上分割邊緣粗糙。那麽我們再對FCN 處理完的圖像進行類似插值的操作,使輸出圖片尺寸與輸入一致。這樣做可以把後處理階段也統一到網絡架構中,進行end to end 的訓練。實驗表明Deconvolution 的操作對計算資源的消耗非常大,在實際處理中可以嘗試使用一些簡化手段進行近似,比如直接插值。

截至目前為止,語義分割算法依然處於火熱研究的階段, 計算量大及物體的邊緣部分分類準確度不足是厄待解決的兩大問題,而眾多論文中所給出的方法是否真的有效,也有待更多的實驗進行證明。

另外,除了目標檢測與語義分割之外,構建語義地圖還可能涉及到傳統計算機視覺中的其它技術,比如:場景理解,姿態估計等等。這些算法每一個都會消耗巨大的計算量,而事實上它們所處理的圖像又都是同一幅,即理論上算法之間有大量的計算可以共享。如何更好地避免重復計算,把多個算法整合到同一個模型中,也是目前很受關註的一個方向。

4 全文小結

目前阻礙語義SLAM 實現的主要問題還是有限的計算資源與算法日益增長的計算資源需要之間的矛盾。所以根據具體應用,對所需算法進行有效的裁剪再重新整合,是未來很長一段時間的發展方向。另外需要註意的是,語義SLAM 並不是萬能解藥,有很多隱藏的問題需要提前被註意起來,比如在語義級別的SLAM 中,錯誤的數據關聯將會帶來更加嚴重甚至是致命的後果,如下圖:

技術分享圖片
如果僅從廣義的物體識別角度進行分析,很容易把二者分為一類,然後進行數據關聯。然而事實上兩者之間的距離超過10000 公裏,這樣建出來的地圖將會是完全錯誤的。而如果不進行更加細節的識別,或者是把場景加大,同時識別周邊的房屋,這兩座鐵塔將會很難被區分開來。

另一個問題是,在同一場景中語義特征的數量將遠遠少於特征點及像素點,這樣建立出來的地圖將會非常稀疏。如果對地圖的使用有所要求,是否使用語義特征進行SLAM,與目標的應用直接相關。

參考文獻

[1] Deng, Jia, et al. "Imagenet: A large-scale hierarchical image database." Computer Vision and Pattern Recognition, 2009. CVPR 2009. IEEE Conference on. IEEE, 2009.

[2]Krizhevsky, Alex, Ilya Sutskever, and Geoffrey E. Hinton. "Imagenet classification with deep convolutional neural networks." Advances in neural information processing systems. 2012.

[3] He, Kaiming, et al. "Deep residual learning for image recognition." arXiv preprint arXiv:1512.03385 (2015).

[4] Girshick, Ross. "Fast r-cnn." Proceedings of the IEEE International Conference on Computer Vision. 2015.

[5] Ren, Shaoqing, et al. "Faster R-CNN: Towards real-time object detection with region proposal networks." Advances in neural information processing systems. 2015. [6] Long, Jonathan, Evan Shelhamer, and Trevor Darrell. "Fully convolutional networks for semantic segmentation." Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2015.

[7] Zheng, Shuai, et al. "Conditional random fields as recurrent neural networks." Proceedings of the IEEE International Conference on Computer Vision. 2015.
[8] Liu, Ziwei, et al. "Semantic image segmentation via deep parsing network." Proceedings of the IEEE International Conference on Computer Vision. 2015.
[9] Chen, Liang-Chieh, et al. "Semantic image segmentation with deep convolutional nets and fully connected crfs." arXiv preprint arXiv:1412.7062(2014).
[10] Erhan, Dumitru, et al. "Visualizing higher-layer features of a deep network." University of Montreal 1341 (2009).
[11] Noh, Hyeonwoo, Seunghoon Hong, and Bohyung Han. "Learning deconvolution network for semantic segmentation." Proceedings of the IEEE International Conference on Computer Vision. 2015.
[12] Qinrui Yan, “Monocular Vision based Object Level Simultaneous Localization and Mapping for Autonomous Driving ”, Master Thesis of KU Leuven, Belgium, Sep 2016

分享| 語義SLAM的未來與思考(泡泡機器人)