基于激光點(diǎn)云語義信息的閉環(huán)檢測
GOSMatch: Graph-of-Semantics Matching for Detecting Loop Closures in 3D LiDAR data
摘要
利用激光雷達(dá)的點(diǎn)云信息檢測閉環(huán)是一件很不容易的事情,因?yàn)榧す饫走_(dá)的數(shù)據(jù)是不穩(wěn)定的。本文提出了一種叫做GOSMatch的方法依靠語義級別的信息做場景重識(shí)別,本文的方法利用語義物體之間的空間關(guān)系產(chǎn)生新穎的描述符。本文還設(shè)計(jì)了一種由粗到細(xì)的測量來有效的找到閉環(huán)。此外, 一旦確定找到了閉環(huán)幀,系統(tǒng)就會(huì)給出準(zhǔn)確的六自由度的位姿估計(jì)結(jié)果,本文在kitti做了測試取得了不錯(cuò)的效果。
介紹
當(dāng)前傳統(tǒng)的激光閉環(huán)檢測方法是利用局部的特征點(diǎn)或者其他全局的特征,這種方法太注意局部的細(xì)節(jié)而忽略了更高層的特征約束。本文提出了一種利用語義信息來檢測閉環(huán)的方法。本文利用語義信息構(gòu)建了局部和全局的描述子。全局的描述子來高效的查找最相似的前K個(gè)閉環(huán)候選幀,局部的描述子用來計(jì)算當(dāng)前幀和閉環(huán)候選幀之間的距離。本文的主要貢獻(xiàn)如下:
提出了GOSMatch,一個(gè)在城市道路場景下僅利用雷達(dá)觀測的基于物體級語義信息來可靠場景識(shí)別的方法。
通過編碼語義物體之間的空間關(guān)系來構(gòu)建全局和局部描述符以高效的進(jìn)行兩步閉環(huán)搜索。
開源了GOSMatch到https://github.com/zhuyachen/GOSMatch,但是代碼是m文件
相關(guān)工作
A.傳統(tǒng)的基于雷達(dá)的場景識(shí)別
從點(diǎn)云中隨機(jī)選擇特征點(diǎn)提取區(qū)域形狀描述符。隨后,使用投****策略在特征點(diǎn)中找到最近鄰。
在range image中檢測每個(gè)特征點(diǎn)的描述向量,利用kdtree來管理高維向量。為了達(dá)到更好的效果,可以利用Normal Aligned RadialFeature (NARF)描述符和詞袋匹配的方法。
其他的方法關(guān)注點(diǎn)云的表示,如直方圖;基于外觀的方法如NDT;還有很有名的Scan Context,把點(diǎn)云分成2D的小方塊并編碼為點(diǎn)云高度的最大值。由于匹配這種矩陣類型的描述子需要很大的計(jì)算量,Kim改進(jìn)Scan Context,利用ring key來構(gòu)建kd tree來加速搜索。
B. 基于high-level描述子的場景重識(shí)別
提取點(diǎn)云中的線面特征,然后基于ICP去找閉環(huán)
可以利用聚類的方法得到更魯棒的描述子
C. 利用圖表示的數(shù)據(jù)關(guān)聯(lián)
圖匹配對于成對的數(shù)據(jù)關(guān)聯(lián)問題很重要。圖表示是描述對象及其拓?fù)涞某S梅椒?。在這種情況下,找到兩個(gè)場景之間的對象的關(guān)聯(lián)轉(zhuǎn)換為計(jì)算圖之間的頂點(diǎn)和邊的對應(yīng)關(guān)系。但是,找到解決此問題的精確方法始終是NP-hard。有工作生成一個(gè)對應(yīng)圖,然后搜索圖中最大的clique來得到兩個(gè)圖中頂尖和邊的對應(yīng)關(guān)系。但是這種方法只適合圖中頂點(diǎn)少的情況。
為了減少計(jì)算的復(fù)雜度,一種有效的方法是找到問題可以容忍的近似解。其中一個(gè)工作X-view: Graph-based semantic multi-view localization是基于隨機(jī)游走技術(shù)的圖像核。圖中的每個(gè)節(jié)點(diǎn),產(chǎn)生一定數(shù)量的游走序列作為節(jié)點(diǎn)的描述子,然后執(zhí)行匹配的過程來得到節(jié)點(diǎn)和節(jié)點(diǎn)之間的對應(yīng)關(guān)系。還有Characterizing structural relationships in scenes using graph kernels和Image classification with segmentation graph kernels也是相似的工作。
本文的方法
本文的方法如下圖所示,主要包含四個(gè)主要的模塊:語義信息獲取,圖描述子生成,節(jié)點(diǎn)匹配和幾何校驗(yàn)。
A. 語義檢測
有用的語義特征應(yīng)該是穩(wěn)定的,容易區(qū)分的,可重復(fù)的。本文專注于檢測停著的車輛,卡車,桿以及在城市道路場景中常見的特征。盡管停著的車輛是潛在運(yùn)動(dòng)的物體,這意味著舊的車可能會(huì)開走,新的車停在那,實(shí)際中的閉環(huán)經(jīng)常時(shí)間間隔是很短的。因此在本文的試驗(yàn)中作者認(rèn)為停放的車輛與任何其他語義特征一樣重要,并且假設(shè)在兩次觀測期間,停放的車輛在同一位置的位置變化不大。(這里如果是基于穩(wěn)定圖層的閉環(huán)策略,這個(gè)假設(shè)應(yīng)該就不成立了,但是可以利用潛在運(yùn)動(dòng)的物體去匹配,只不過需要給他一個(gè)比較小的權(quán)重)
本文采用RangNet++來檢測3D激光數(shù)據(jù)的語義信息。這個(gè)端到端的神經(jīng)網(wǎng)絡(luò)檢測原始點(diǎn)云中每個(gè)點(diǎn)的語義信息。需要注意的是,我們不能通過一個(gè)點(diǎn)云的語義信息知道這個(gè)卡車是在運(yùn)動(dòng)還是在停著,所以利用前端的里程計(jì)來估計(jì)車輛的速度來辨別是停著的還是移動(dòng)的。
(最近查閱資料的時(shí)候大概了解到,基于激光點(diǎn)云的語義分割方法很難達(dá)到實(shí)時(shí),而且目前類別的標(biāo)簽只有六類左右,但是基于視覺的語義分割方法很成熟,所以我們完全可以基于視覺得到標(biāo)簽,投影到點(diǎn)云上得到每個(gè)點(diǎn)云的標(biāo)簽,這樣不僅可以保證速度,而且可以保證類別的多樣性。)
獲得了點(diǎn)云的語義標(biāo)簽后,利用歐式聚類來檢索對象。對于所有的對象,通過計(jì)算他們的質(zhì)心來表示他們在點(diǎn)云中的位置。
B. 圖描述子的生成
單次激光雷達(dá)的掃描可以由無向圖G=<V, E>表示,其中V和E分別代表頂點(diǎn)和邊的集合。把利用語義分割網(wǎng)絡(luò)得到的物體的位置作為頂點(diǎn)G,圖中的每個(gè)邊表示兩個(gè)頂點(diǎn)之間的歐氏距離。根據(jù)語義分割的結(jié)果,圖中有三種頂點(diǎn)(vehicle, trunk and pole),六種邊(vehicle-vehicle, trunk-trunk, pole-pole,vehicle-trunk, trunk-pole and pole-vehicle)。(這里如果類別比較多,計(jì)算量應(yīng)該就會(huì)很大,所以我們應(yīng)該選擇比較好的特征作為頂點(diǎn)和邊)。
基于直方圖的圖描述子由六部分組成,代表著上邊提到的六種邊。這里以pole-trunk邊為例介紹一下邊的計(jì)算流程。我們假設(shè)一個(gè)連續(xù)的bin標(biāo)號(hào)為b,這個(gè)頂點(diǎn)最短的邊為l_min,最長的邊為l_max
每次掃描得到的圖描述符都存儲(chǔ)在數(shù)據(jù)庫中,當(dāng)需要查詢點(diǎn)云的時(shí)候,利用構(gòu)建kd樹來執(zhí)行k近鄰算法來快速得到最相似的N個(gè)候選閉環(huán)幀。
C. 頂點(diǎn)匹配
在本節(jié),我們介紹頂點(diǎn)描述符來描述圖中的頂點(diǎn)。和圖描述符相似,頂點(diǎn)描述符也是基于直方圖的。和邊的描述符不同的是,頂點(diǎn)描述符中考慮的邊不再是整個(gè)圖中全部的邊,而是連接到所描述頂點(diǎn)v的邊。為了給頂點(diǎn)v(pole)構(gòu)建一個(gè)描述符,只有三種邊需要考慮,因?yàn)闃?gòu)成邊的兩個(gè)端點(diǎn)之一已經(jīng)被確定為pole。和圖描述子相似,一種邊可以形成頂點(diǎn)描述符的三個(gè)部分之一,可以描述為:
然后我們利用歐式距離找到當(dāng)前點(diǎn)云中頂點(diǎn)的描述符和候選幀中頂點(diǎn)描述符的匹配關(guān)系。
D. 幾何驗(yàn)證
該步驟為每個(gè)閉環(huán)候選幀選擇一組幾何一致的對應(yīng)點(diǎn)。利用RANSAC來優(yōu)化選取選取的對應(yīng)點(diǎn)。在每次RANSAC迭代的時(shí)候,利用SVD方法為絕對旋轉(zhuǎn)問題找到最近的六自由度的變換矩陣。如果在這個(gè)矩陣下可以得到更多的內(nèi)點(diǎn),我們就更新變換矩陣。對于每個(gè)候選幀,我們用下邊這個(gè)公式來評估閉環(huán)的loss:
C代表當(dāng)前掃描和閉環(huán)候選幀優(yōu)化后的對應(yīng)點(diǎn)的集合,T表示變換矩陣,c_iq和c_ic代表第i個(gè)C中的屬于當(dāng)前掃描和閉環(huán)候選幀的3D點(diǎn)。候選幀中l(wèi)oss最小的會(huì)利用閾值判斷是不是真正的存在一個(gè)閉環(huán)。只有在loss小于b的時(shí)候采認(rèn)為存在一個(gè)閉環(huán)。一旦閉環(huán)被確定,我們把這個(gè)變換矩陣作為6自由度的初始位姿。
實(shí)驗(yàn)設(shè)備:
Intel Core i7-6820HQ with 16 GB RAM,Nvidia TitanX with 12 GB RAM。
*博客內(nèi)容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀點(diǎn),如有侵權(quán)請聯(lián)系工作人員刪除。