本文重點介紹道路環境感知對移動機器人導航的重要性以及相關技術。
01 ? 道路三維幾何模型構建
首先,三維幾何模型背后的機理是多視圖幾何學,多視圖幾何學是指想要得到對應模型的三維幾何架構,則必須要用相機在兩個不同的位置進行拍照。如圖1,可以通過利用兩個相機在不同位置拍照的方式,去得到三維幾何模型;同樣,也可以利用單個相機不斷的移動,然后不斷的進行三維的重建。
主要原理是:利用左相機平面和右相機平面去計算R、T。通常做slam的時候,先需要對圖像中的對應點進行匹配,然后利用至少八個對應點去利用SVD來求解出外參矩陣,再利用這個外參矩陣進行分解得到R、T,得到兩個相機的相對位姿之后,就可以得到對應三維點的坐標。
圖1 深度估計
對于雙目來講,需要先對圖像的平面進行一定的變換,因為如果是剛剛的方法,在做特征點匹配的時候,往往是一個二維匹配的問題,計算量是比較大。
因此對于雙目相機需要變換為圖2中紅色的平面,將對極點拉到無限遠之后,對應點的匹配則變成了一維搜索問題,即從左相機選擇一個點,然后要在右相機去選擇對應點的時候,只需要在同一行上進行搜索。
利用雙目去做深度估計的好處在于通過相機標定可以得到固定的baseline,之后,進行一維搜索可以節省大量的計算量,得到稠密的視差圖,從而對應得到稠密的深度圖,最后得到稠密的三維點位。
圖2 立體匹配
隨著深度學習的發展,現在有很多網絡是基于一些深度學習的網絡去得到視差圖,但現在深度學習的方法大多是基于數據驅動。數據驅動存在一個很大問題是有時并不知道ground-truth是多少。
當然現在是可以利用Lidar進行同步,之后把雷達點云投到雙目相機上,然后利用深度進行反推視差。這種方案雖然可以得到真值,但它的真值受限于相機和激光雷達標定的精度。
基于此,探索了很多自監督方式,從而設計了PVStereo結構,如圖3所示。
圖3 PVStereo結構
可以看到是利用了不同層級的圖像進行一個傳統方法的匹配,當時假設是對應圖像點的視差可靠,那不管是它對應的不同的pyramid都是可靠的,這跟深度學習的假設是一致的。然后,利用傳統的pyramid voting可以得到一個相對比較準確,但比較稀疏一點的視差圖。?
受到了KT數據集的啟發,在想能夠用一些稀疏的真值去訓練出來一個比較好的網絡,所以利用傳統方法去猜測視差的真值,避免了利用真值去訓練網絡的過程。
基于循環神經網絡的方法提出了OptStereo網絡,如圖4所示。首先構建多尺度成本量,然后采用循環單元迭代更新高分辨率的視差估計。這不僅可以避免從粗到細范式中的誤差累積問題,而且由于其簡單而高效,因此可以在準確性和效率之間實現很大的權衡。
實驗結果相對來說還是比較魯棒的,但是像一些場景會出現離群值。
圖4 視差圖生成
既然ground-truth比較難獲得,一種方法是利用傳統方法去猜一些真值來作為假的ground-truth,然后去訓練網絡;另外一種方式是基于無監督的方式進行訓練。于是基于之前的工作,提出了CoT-Stereo,如圖5所示。
利用兩個不同的網絡,一個network a和network b,這兩個網絡類似于去模擬了兩個學生,且初始化不同,但網絡結構完全相同。在初始化時, network a和network b掌握了不同的知識,然后a再把自己認為對的知識分享給b,b也同理分享給a。通過這樣的方式不斷的去進行互相的學習和進化。
圖5 CoT-Stereo架構
無監督雙目估計的結果也同許多方法進行了比較,雖然ground-truth結果無法與全監督的方法做媲美,但是該網絡整體的influence time和對應的L平衡比較好,如圖6所示。
圖6 實驗結果
如何利用深度或視差變成法向量信息?在做一些感知任務時,發現有的時候深度并不是一個非常好用的信息,而如果用RGB-D信息進行訓練的時候,則存在另外的問題。那如果使用法向量信息,不管近還是遠,最后給到的信息都是差不多,且法向量信息,對于很多任務是有一些額外的輔助。
調研發現并沒有太多的工作或是幾乎沒有工作去研究如何把深度圖或視差圖快速的變成法向量信息,于是這里研究了此類工作,初衷在于能夠在幾乎不占用任何計算資源的情況下,進行深度到法向量的translation,大概框架如圖7所示。
圖7 Three-Filters-to-Normal框架
可以看到這是最基本的一個透視變換過程,即把一個3D坐標利用相機的內參,可以變成一個圖像坐標。如果已知局部點滿足平面特性方程,可以很驚奇的發現,如果把這兩個方程聯立,就可以得到Z分之一這樣的公式表達。
通過一系列的計算后,可以看到1/V對u方向的偏導在圖像處理領域很容易處理,1/V對應視差,但跟視差是差一個倍數,因此,若對1/V求偏導,就是對視差圖進行卷積。所以,其實法向量估計的方法不需要像傳統方法一樣,將深度圖轉化為三維點云,再進行KNN,再進行局部平面擬合,這個過程非常復雜。但這個方法可以很簡單的通過已知Z或是已知深度圖或視差圖轉化得到法向量。
利用這個方法去做了一系列的相關實驗,結果如圖8所示。和當時最主流的方法進行了比較,發現本文方法在速度和精度的平衡非常好,雖然精度可能稍微差一些,但是已經超越了幾乎大多數的方法,速度使用C++帶單核CPU可以達到260Hz,如果是CUDA則可以達到21kHz,對應圖像分辨率為640 乘480。
圖8 實驗結果
在得到上述信息后,要進行場景解析,目前比較主流的方法是語義分割,目標檢測和實例分割。對于場景理解,尤其是語義分割及一些傳統方法是基于RGB信息進行處理。
這里主要關注的是RGB-X,即如何對RGB加depth或normal進行特征提取。主要應用關注于可行有序檢測,即開車時看到的可行區域,目前是提出了如圖9所示的框架。
圖9 網絡結構
這里是利用雙路結構分別進行特征提取,其中一路是從RGB信息去提取特征,另外一路是從deepth或者normals去提取特征,如果是depth則需要轉化為normal。然后,可以把這兩個不同信息的特征進行融合,最后得到一個更好的特征,既包含了RGB信息中的紋理特性,又包含deepth圖像中的幾何特性。最后,通過connection去得到更好的語義分割結果圖。
針對上述的版本進行一些改進,如圖10所示。由于網絡的融合結構比較復雜,所以有進一步提升的空間,所以這里做了這樣的工作:首先,利用深監督的方式在不同的通道添加一些約束,然后再去學習,這樣可以解決梯度爆炸的問題。其次,由于之前網絡收斂過快,這里設計了一套新的SNE+算法,效果比SNE要更好。
圖10 改進網絡結構
前面一直是基于特征層級的融合,這里也研究了一些數據層級的融合。如何通過多個視角和單ground-truth去提升性能,這里是提出了如圖11所示的網絡結構。
主要是基于平面的單應性,單應性是對應點可以通過四對點進行單應矩陣估計,并且若已知單應矩陣和left-right的圖像,可以通過ground-truth變成另外一個圖像的視角??梢钥吹竭@里對應給定一個 reference image,給定一個targetimage,然后通過對應點去估計出對應的homegra-marix,然后可以直接把target image變成generated image。
generateimage看起來跟對應的reference image很像,但存在一個問題是它只是在道路區域看起來很像,但其實在網絡訓練時兩個圖像會共用了一套ground-truth,因為在非路面區域存在一些偏差,所以最后讓網絡學出來,能夠更好的識別路面。
圖11 多視角分割網絡
02 ? 道路質量檢測
地面移動機器人可以顯著改善人們的舒適度和生活質量。在移動機器人的所有視覺環境感知任務中,可駕駛區域和道路的聯合檢測像素級的異常是一個關鍵問題。準確高效的可行駛區域和道路異常檢測可以有助于避免此類車輛發生事故。然而,現有的基準測試大多是為自動駕駛汽車設計的,地面移動機器人缺乏基準,而道路狀況會影響到駕駛的舒適性和安全性。
基于這些問題,研究如何去評估道路的質量,另外最早的時候是交通和土木的人在關注的事情,因為他們做道路評估,更多是為了去修補道路或是道路養護。最早期數據采集是用一些雷達車去進行,價格昂貴,隨意在想能否用比較低成本的方式去做道路數據采集。
這里設計了一套實驗設備和網絡框架如圖12所示,網絡輸入left frame和right frame,主要經過三個流程,第一個是 perspective transformation,第二個是SDM,最后一個是global finement。
圖12 實驗設備及網絡
第一步是最有意思的一個創新,因為很直觀的傳統印象是:如果用雙目進行三維重建,baseline越大,效果應該越好,精度越高。但存在一個問題是baseline越大的時候,盲區越大,并且這兩個圖像的視角差異會越大。進行相關研究發現,有時角度雖然大了,但從理論上來講,會得到一個更好的三維幾何模型,但導致匹配的效果可能會下降,所以,將左圖變換成右圖的樣子,進而實現處理,從而在速度和精度方面實現更好的視差估計。
在駕駛場景的時候,經常會看到道路的視差是漸變的,但障礙物的差異保持不變。因此,在算法中首先估計如圖13中最下面一行的差異,然后使用三個相鄰像素從底部向頂部傳播搜索范圍,再進行迭代估計差異,最后視差圖的可視化結果如圖14所示。
圖13 視差變化
圖14 可視化結果
后面也基于一些網絡去做圖像分割,比如單模態網絡或是一些數據融合的網絡操作。如圖15所示,基于圖神經網絡,設計了一些新的框架。這個框架并沒有像圖神經網絡一樣去設計一套新的圖網絡,而是結合圖網絡去進行一些公式推導,發現圖網絡對于一些語義分割的情況,并不需要復雜的一些情況,只需要修改參數和變量,就可以去進行一些操作。
圖15 網絡框架
這個網絡可以放入任何一個CNN架構去提升性能,簡而言之,提取特征之后,對特征進行細化,之后把舊特征和新特征拼接在一起再重新輸入進去。與當時幾個主流的網絡進行了驗證,發現加入這個模塊后都能夠去提升分割的性能,如圖16所示。
然后,也做了一些實驗去驗證它不光能夠去應用這種特殊道路場景的識別的任務,而且能夠去應用在廣義的無人駕駛的語義分割或者室內的場景理解的語義分割的一些任務當中。
圖16 實驗結果
03 ? 總結
(1)由于不再需要標記的訓練數據,卷積神經網絡和傳統計算機視覺算法的結合為無監督/自監督的場景理解提供了一種可行的解決方案;
(2)數據融合方法提供了更好的場景理解準確性;
(3)使用現代深度學習算法進行路況評估是需要更多關注的研究;
(4)在資源有限的硬件上實現人工智能算法時,我們還需要考慮計算復雜性,因為今天討論的應用程序通常需要實時性能。
編輯:黃飛
?
評論
查看更多