一、背景
Object-based SLAM: SLAM就是機(jī)器人同步定位與建圖,通過一些傳感器的測量數(shù)據(jù)同時去建立環(huán)境的地圖,且利用這個地圖對于機(jī)器人的狀態(tài)進(jìn)行估計,機(jī)器人的狀態(tài)包括機(jī)器人的位姿、速度和機(jī)器人的參數(shù),比如內(nèi)參。環(huán)境地圖包括比如點(diǎn)的位置,線的位置,面的位置。常見的SLAM系統(tǒng)由前端和后端組成,如圖1所示,前端一般從一些原始的傳感器數(shù)據(jù)中采集一些特征,后端利用概率的推斷模型對采集的模型進(jìn)行融合生成全局一致的環(huán)境地圖。
圖1 SLAM結(jié)構(gòu)
要知道環(huán)境中有哪些物體,就需要進(jìn)行物體級SLAM,簡單而言就是以物體為目標(biāo)的SLAM系統(tǒng),對物體和機(jī)器人的狀態(tài)進(jìn)行估計,如圖2所示。一個是對空間中的幾何體加上語義信息,對下游的任務(wù)有作用,另一個是非常節(jié)省存儲空間的表示。如果用稠密點(diǎn)云就需要用很多的存儲空間,但是基于物體級的SLAM形成的表示是非常輕量化的描述。
圖2 物體級SLAM
如何做Object SLAM? 和廣泛SLAM類似,首先要在原始的測量數(shù)據(jù)中提取特征,使用物體的感知模型,包括二維的目標(biāo)檢測,也包括實(shí)例分割。今天涉及的是六自由度物體估計目標(biāo)檢測,后端也是用概率推斷模型對于多幀進(jìn)行融合生成全局一致的地圖。圖3列舉了一些目標(biāo)SLAM的文章和方法。
圖3 相關(guān)SLAM方法和文章
為什么object SLAM是比較困難的問題? 因?yàn)橛幸恍V泛的SLAM具有的挑戰(zhàn),也面臨一些新的挑戰(zhàn)。廣泛的challenge包括ambiguous data assosiation的問題,比如在一個停車場檢測到一輛車,那么怎么把真的觀測和地圖里面的進(jìn)行關(guān)聯(lián),那么哪一輛車是當(dāng)前被觀測的車呢?另外一個問題就是動態(tài)的問題,比如有一個車在行進(jìn),如何判斷這輛車是在行進(jìn),如何防止這個行進(jìn)的車對相機(jī)跟蹤產(chǎn)生影響,然后如何根據(jù)這個車的行進(jìn)去不斷地更新地圖,這些問題是比較難解決的。新的挑戰(zhàn)主要是源于引入了object perception model,這兩個模型結(jié)合的過程中就會產(chǎn)生一些information瓶頸,比如在deep learning model做出一些預(yù)測的時候,很難對不確定性進(jìn)行量化,很難知道預(yù)測是好是壞。 在這種情況下如何去使用深度學(xué)習(xí)的model,如何給觀測賦權(quán)重是一個比較困難的問題。
另外,一個比較重要的在object SLAM領(lǐng)域中的問題就是domain gap問題,在新的環(huán)境中會有性能下降的問題。就是在訓(xùn)練perception model的時候,一般在特定環(huán)境中采取數(shù)據(jù),給數(shù)據(jù)添加標(biāo)注,用這些標(biāo)注的數(shù)據(jù)訓(xùn)練網(wǎng)絡(luò)。但當(dāng)使用或測試這個網(wǎng)絡(luò)時,往往在一個新環(huán)境中測試,訓(xùn)練和測試環(huán)境之間很可能有一些區(qū)別,比如光照的不同,背景的不同,噪聲情況的不同,這個差異會使測試數(shù)據(jù)和訓(xùn)練數(shù)據(jù)造成分布不匹配的問題,這個問題就是一個domain gap的問題。還會導(dǎo)致perception model性能下降的問題。合成數(shù)據(jù)在真實(shí)情況中使用時,它的效果會大打折扣。 希望能夠做到的表現(xiàn)是機(jī)器人在探索不同環(huán)境的時候,能夠自動的適應(yīng)當(dāng)前的環(huán)境,把它的perception model調(diào)整到比較好的性能狀態(tài)。這里對于object SLAM的介紹告一段落,如果感興趣可以在面4的主頁中關(guān)注。
圖4 主頁
二、方法介紹
什么是6自由度物體位姿估計? 如圖5所示,圖片中有物體,然后通過模型計算物體相對于相機(jī)的位姿,這個位姿包括3自由度的旋轉(zhuǎn)和3自由度的平移,所以稱它為6自由度的物體位姿估計。具有代表性的工作,比如說CNN和今天會涉及到的方法。
圖5 6自由度的物體位姿估計
今天要探討的不是如何去設(shè)計一個更好的6自由度位姿估計,而是在真實(shí)場景中的表現(xiàn)如何,把它從文章中拿出來,和其他的位姿模型在同樣的benchmark中進(jìn)行對比它們的表現(xiàn)最終如何。 BOP方法進(jìn)行6自由度位姿估計,然后這個benchmark它的目標(biāo)就是這樣的表現(xiàn),模型對應(yīng)的物體是剛性物體,它們的輸入是RGB和RGBD的圖像。BOP challenge根據(jù)指標(biāo)對不同的model進(jìn)行打分,然后分?jǐn)?shù)比較高的就可以獲得獎項(xiàng),每年的會議上都有BOP challenge的workshop,介紹如圖6所示。
圖6 BOP六維物體位姿估計 BOP challenge在2019年的結(jié)果,在這一年有很多方法在一些task上去競爭,表1列舉了不同方法的性能比較,按照性能從高到低排列。可以看到這一年的經(jīng)典方法就是基于這種特征的方法是由于基于深度學(xué)習(xí)方法的。 表1 BOP challenge性能比較
針對上面的問題給出解釋,首先缺乏在真實(shí)世界中訓(xùn)練的圖片,還有真實(shí)的測試圖片和通常使用的合成的訓(xùn)練圖片之間有比較大的domain gap。這兩個原因?qū)儆谝粋€問題,就是缺少在真實(shí)環(huán)境或者測試環(huán)境中帶有6自由度物體標(biāo)注的數(shù)據(jù)。 為了解決這個問題,有哪些方案呢?一種解決方案就是去提高合成數(shù)據(jù)的真實(shí)性,生成更加成熟的數(shù)據(jù),另一種方案是可以利用test devirament沒有標(biāo)注的數(shù)據(jù)去提高表現(xiàn)。需要用到文章使用的self-training。Semi-supervised learning結(jié)合一些帶有標(biāo)簽和數(shù)據(jù)和不帶有標(biāo)簽的數(shù)據(jù)去提高模型的預(yù)測性能。 為什么這樣的事情能夠成功呢?
為什么能夠用不帶有標(biāo)簽的數(shù)據(jù)去提高性能呢?因?yàn)椴粠?biāo)簽的數(shù)據(jù)上往往攜帶了對于預(yù)測的task有用的一些信息。比如霧天的數(shù)據(jù)是不帶標(biāo)簽的數(shù)據(jù)的話,那它就攜帶了這種background的信息,這樣的信息有可能被提出的semi-supervised learning的方法學(xué)習(xí)到,提高模型的表現(xiàn)。不幸的是,Semi-supervised learning大部分的方法都沒有對于收斂的一個保證,很可能越去訓(xùn)練它這個模型的表現(xiàn)越差,因?yàn)轭A(yù)報的一些錯誤的在這個訓(xùn)練過程中會不斷的加強(qiáng)自身導(dǎo)致的。
什么是self-training? self-training是比較早期的方法,用學(xué)習(xí)模型的預(yù)測去提高模型預(yù)測的能力。圖7是具體的流程圖,首先從一些帶有標(biāo)簽的數(shù)據(jù)開始去訓(xùn)練Deep CNN model,然后用模型在不帶標(biāo)簽的數(shù)據(jù)上預(yù)測,再把這些預(yù)測當(dāng)做新的標(biāo)簽,這些標(biāo)簽就叫做偽標(biāo)簽,并不是真實(shí)的標(biāo)簽,是模型的預(yù)測。這些偽標(biāo)簽可能會有好有壞,為了選出好的偽標(biāo)簽,需要使用selection algorithm選出里面高質(zhì)量的label形成一些帶有偽標(biāo)簽的數(shù)據(jù)。把這些帶有偽標(biāo)簽的數(shù)據(jù)和原始的帶有真實(shí)標(biāo)簽的預(yù)訓(xùn)練的數(shù)據(jù)結(jié)合在一起,微調(diào)或重新訓(xùn)練網(wǎng)絡(luò)。 可以看到,整個流程圖中比較重要的一環(huán)就是選擇算法,如果通過這個算法能夠成功的選擇出高質(zhì)量的數(shù)據(jù)的話,就可以提高性能表現(xiàn),反之可能會降低性能表現(xiàn)。
圖7 self-training流程圖 對于文章SLAM-supported self-training for 6D object pose estimation,首先是一些動機(jī),為什么要做6自由度物體的位姿估計,因?yàn)樗梢越o出這些環(huán)境中的幾何和語義的信息,如圖8所示。
圖8 環(huán)境的幾何和語義信息
在一個環(huán)境中訓(xùn)練,在另外一個環(huán)境中測試,就會存在domain gap問題。這個問題的表現(xiàn)展示了一個video可視化問題,在合成數(shù)據(jù)上訓(xùn)練,有了真實(shí)數(shù)據(jù)再測試,可以看到它很難對這些物體進(jìn)行正確的預(yù)測。那么如何去解決這樣的問題呢?一種最簡單的方式就是在測試數(shù)據(jù)中采集一些數(shù)據(jù),給這些數(shù)據(jù)加上物體位姿的標(biāo)注,然后微調(diào)6自由度位姿估計器。
但是,整個6自由度物體位姿標(biāo)注的過程非常費(fèi)時費(fèi)力,更重要的一點(diǎn)是希望機(jī)器人在探索不同環(huán)境的時候是不被打斷的,假如機(jī)器人進(jìn)入到新的環(huán)境,還要去標(biāo)注這個新環(huán)境的數(shù)據(jù),那它對機(jī)器人的自主運(yùn)行就是一個很不利的事情。所以希望做的就是機(jī)器人能夠自己去給它采集到的數(shù)據(jù)進(jìn)行標(biāo)注,做一個self label。
圖9 domain gap問題
應(yīng)運(yùn)而生,有一些方法來解決問題,一般用合成帶有標(biāo)簽的數(shù)據(jù)和一些真實(shí)不帶標(biāo)簽的數(shù)據(jù)一起去提高位姿估計的性能。如圖10所示,它們可以分為single-view methods和Multi-view methods,前者輸入的數(shù)據(jù)是無序的,但是一般機(jī)器人采集的數(shù)據(jù)都是按照一定的次序采集的,會有時間和空間上的連續(xù)性。single-view不能利用連續(xù)性,于是利用Multi-view方法,融合不同視角對于物體位姿的估計來形成更加可靠的對于物體的理解,用這個更加可靠的位姿對一些數(shù)據(jù)做標(biāo)注,再微調(diào),但大部分需要高精度相機(jī)的運(yùn)動信息。
圖10 single-view方法和multi-view方法
于是,提出了一種用SLAM來支持的方法,通過機(jī)器人采集的數(shù)據(jù)把它放到一個這種魯棒的物體級SLAM的系統(tǒng)里面,然后生成一個全局一致的,包括相機(jī)的位姿和物體的位姿,然后生成一些偽標(biāo)簽,利用一致性的標(biāo)簽作為新的訓(xùn)練數(shù)據(jù)去微調(diào)位姿估計模型,如圖11所示。
圖11 SLAM支持的方法
方法的流程圖如圖12所示,從帶有標(biāo)簽的圖片數(shù)據(jù)入手,預(yù)訓(xùn)練一個6D的物體位姿估計器,把這個估計器放在機(jī)器人上,在行進(jìn)過程中對物體的位姿進(jìn)行估計,然后聯(lián)合物體的位姿估計和機(jī)器人的里程計形成位姿圖。用提出的一些魯棒的優(yōu)化方法求解SLAM估計,包括機(jī)器人的位姿和物體的位姿,從這些模型所預(yù)測的物體位姿和優(yōu)化的位姿物體之中選出比較高質(zhì)量的物體位姿作為偽標(biāo)簽,把它和原始的帶有真實(shí)標(biāo)簽的數(shù)據(jù)進(jìn)行融合。整個流程圖和self-training是一樣的過程,從宏觀上來看,方法左半邊是在做一個魯棒的狀態(tài)估計,形成全局一致的場景地圖,右半邊實(shí)際上是在用semi-supervised learning提高物體位姿估計的性能,方法結(jié)合了兩方面的一個成果。
圖12 方法流程圖
如何進(jìn)行魯棒的位姿圖優(yōu)化來得到比較可靠的SLAM估計?提出了一種自動協(xié)方差調(diào)整的位姿圖優(yōu)化,這里如果展開講可能需要很長時間,在這邊只做一個比較宏觀的介紹。如果大家有興趣,可以去文章中的相關(guān)章節(jié)看到比較細(xì)節(jié)的公式推導(dǎo)。 首先要考慮為什么要做這樣一個自動協(xié)方差的調(diào)整,一般在做位姿圖估計的過程中會假設(shè)觀測是符合高斯分布的,這樣就能把問題轉(zhuǎn)換為一個非線性最小二乘問題去求解,為了指定這樣的高斯分布,需要兩個量,一個是期望,一個是方差,對于高維的高斯分布需要一個期望和一個協(xié)方差矩陣。
期望很好得到,可以通過SLAM估計還有測量模型計算每個測量的期望值,但協(xié)方差一般都是經(jīng)驗(yàn)性的給出一個值,在實(shí)際中根據(jù)對于傳感器噪聲大小的一個理解去制定這樣的協(xié)方差值,比如傳感器的噪聲比較大,給一個比較大的協(xié)方差矩陣,反之給一個比較小的協(xié)方差矩陣。 現(xiàn)在對于物體位姿的估計都是從深度學(xué)習(xí)模型得到的,也就是說傳感器變成了模型,對噪聲沒有非??煽康睦斫猓A(yù)測沒有辦法很好的量化。
在這種情況下,如何指定協(xié)方差矩陣?提出的方案是不指定協(xié)方差矩陣,把協(xié)方差矩陣和SLAM的變量進(jìn)行聯(lián)合優(yōu)化,如圖13所示,在公式里展示。第一項(xiàng)代表物體位姿的損失值,最后一項(xiàng)是機(jī)器人里程計的損失值,第一項(xiàng)是正則化項(xiàng),目的是防止值跑到正無窮,像零這個方向去正則化。 求解聯(lián)合優(yōu)化的問題是用的alternating minimization方法,這個方法有兩個優(yōu)勢,第一個優(yōu)勢是對最優(yōu)的協(xié)方差矩陣有一個解析解,第二個好處是可以在分量級別對協(xié)方差矩陣進(jìn)行擬合。得到位姿預(yù)測時,對六個自由度的分量進(jìn)行不同程度的擬合,與傳統(tǒng)方法相比更加靈活,也能夠擬合更廣泛的噪聲模型。
圖13 自動協(xié)方差調(diào)整公式推導(dǎo)
如圖14所示是hybrid pseudo-labeling方法,在兩種位姿中選取高質(zhì)量的偽標(biāo)簽。
圖14 hybrid pseudo-labeling方法
如圖15所示,Hybrid model利用了兩種數(shù)據(jù),一種數(shù)據(jù)是模型直接在圖片上預(yù)測的物體位姿,另一種是通過優(yōu)化得到的物體位姿,為了對位姿進(jìn)行好壞的評估,有兩種評估方法,一種利用幾何信息,另一種利用視覺信息,幾何信息使用卡方測試,預(yù)測的物體位姿是否和優(yōu)化的物體位姿有顯著的差異,如果有顯著差異可能是比較差的位姿估計,反之是比較好的位姿估計。視覺檢查根據(jù)物體位姿估計生成一個渲染圖片,把渲染物體和真實(shí)物體對比,轉(zhuǎn)換到特征空間,在特征空間上的向量看它們是不是相似。經(jīng)過這兩個check,就能得到比較高質(zhì)量的位姿標(biāo)簽數(shù)據(jù)。
圖15 Hybrid model 提出方法的結(jié)果
如圖16所示,在兩個數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),并測試方法。第一個數(shù)據(jù)集是一個公開數(shù)據(jù)集,叫做YCB video experiment。首先用一些合成數(shù)據(jù)去預(yù)訓(xùn)練,然后拿到模型上進(jìn)行self-training。值得強(qiáng)調(diào)的是,在進(jìn)行self-training時,不去使用這些label標(biāo)注,完全通過self-training生成標(biāo)注,最后一步就是把self-training后的放在上面去評估表現(xiàn)。Video展示的是它們在測試集的表現(xiàn),就是在self-training之前和之后進(jìn)行的對比,可以看到self-training后性能更加穩(wěn)定,能夠檢測出更多物體,也有更少離群的位姿估計。
圖16 提出方法的結(jié)果
如圖17所示,第二個實(shí)驗(yàn)是在真實(shí)車上面做的實(shí)驗(yàn),把相機(jī)放在機(jī)器人上,圍繞物體進(jìn)行導(dǎo)航。做真實(shí)機(jī)器人實(shí)驗(yàn)的目的就是為了測試方法對于挑戰(zhàn)的可行性,提出方法在運(yùn)動模糊等情況下依然可以得到比較好的性能,比較多的提高訓(xùn)練后的表現(xiàn),離群值很少。
圖17 真實(shí)車實(shí)驗(yàn)
三、總結(jié)和未來展望
提出的方法是魯棒性SLAM所支持的6自由度物體位姿估計的自訓(xùn)練方法,目的是希望做優(yōu)化,方法能夠適應(yīng)新的環(huán)境。最重要的一環(huán)是提出的自動協(xié)方差調(diào)整的位姿圖優(yōu)化方法,最后通過實(shí)驗(yàn)驗(yàn)證了方法的表現(xiàn)。如圖18所示,右上角有文章和代碼的鏈接,感興趣可以去看一下。
?
?最后就是如何去延伸工作,首先可以給系統(tǒng)加入對動態(tài)物體的處理,如何考慮它的影響,或者某些物體有對稱性的物體位姿如何處理,以及魯棒性的半監(jiān)督學(xué)習(xí),還有很多更新的方法進(jìn)一步提高表現(xiàn),最后可以把對于物體級別的性能提升擴(kuò)展到對于物體位姿形狀和類別進(jìn)行估計,用更加可靠的結(jié)果訓(xùn)練,然后估計。當(dāng)然可以很多其他的方面,由于時間的分享,討論告一段落。
四、問題:
1.深度學(xué)習(xí)對于堆疊物體位姿估計有什么建議嗎? 可以看一些對于這塊研究的設(shè)計方法的文章,如果對這塊理解的不是特別深入,也可以看一下深藍(lán)學(xué)院的相關(guān)課程。
2.在利用深度學(xué)習(xí)的方法進(jìn)行6自由度物體位姿估計時,如果要建立RGBD數(shù)據(jù)集的話,有什么好的方法推薦嗎? 我的理解是如何選擇采集到的RGBD圖片對不對,可以在網(wǎng)上找一些圖,然后放在tool中進(jìn)行學(xué)習(xí)產(chǎn)生標(biāo)注??梢允褂脙?yōu)化方法只采用標(biāo)注關(guān)鍵幀的方法,利用優(yōu)化進(jìn)行復(fù)制,有效快速的標(biāo)注。
3.得到偽標(biāo)簽以后,再訓(xùn)練網(wǎng)絡(luò)是不是需要離線進(jìn)行?這樣SLAM是否就要停下了? 是的,這個說法是正確的,采集到偽標(biāo)簽數(shù)據(jù)時,需要訓(xùn)練位姿估計的模型,需要較長的時間,當(dāng)前大多數(shù)模型都需要較長時間,如果未來有更好的方法在短時間內(nèi)進(jìn)行訓(xùn)練,也希望可以在線進(jìn)行。
4.實(shí)驗(yàn)小車的處理器什么配置?方法實(shí)現(xiàn)在線實(shí)時嗎? 在實(shí)驗(yàn)中采取的小車是jerk robot,只是去用它作為一個相機(jī)支架圍繞物體變成目標(biāo),如果要了解的話可以了解這個機(jī)器人的內(nèi)部構(gòu)造。
5.實(shí)現(xiàn)的方法是單目還是rgbd的? 方法是單目的。
6.如果SLAM需要停止的話,那么SLAM的作用不就相當(dāng)于收集數(shù)據(jù)集嗎? 是的,這個方法的提出自動收集數(shù)據(jù)集的過程,可能傳到云端,有服務(wù)的話可以很快的訓(xùn)練,也就不需要停止很久。
7.最后檢測的物體仍然是預(yù)訓(xùn)練里面已有的物體嗎? 是的。
8.即使不使用SLAM,手動收集數(shù)據(jù)集也可以,另外方法對SLAM的過程有哪些提高? 手動收集是可以的,但大部分都是在公開數(shù)據(jù)集中進(jìn)行分析,然后對它進(jìn)行使用。它的問題在于在真實(shí)環(huán)境中對機(jī)器人環(huán)境探索,很難有人一直跟著機(jī)器人,希望機(jī)器人自主做label的。提高主要是自動的產(chǎn)生標(biāo)簽,可以用這個過程優(yōu)化協(xié)方差模型。
編輯:黃飛
?
評論
查看更多