鄭冰清,劉啟漢,趙 凡,張小國,王 慶
(東南大學(xué)儀器科學(xué)與工程學(xué)院,南京 210096)
定位與地圖構(gòu)建(SLAM,Simultaneously positioning and mapping)技術(shù)作為機(jī)器自身定位以及構(gòu)建三維場景地圖的關(guān)鍵技術(shù),目前已經(jīng)成功應(yīng)用到無人車、無人機(jī)、快遞機(jī)器人、智能清潔機(jī)器人等產(chǎn)品上[1]。SLAM 技術(shù)通過安裝在載體上的傳感器獲取場景信息,在定位傳感器自身位置的同時構(gòu)建環(huán)境地圖,可基于單目相機(jī)、雙目、RGBD、激光等傳感器實(shí)現(xiàn)。與昂貴的三維激光等有源傳感器相比,相機(jī)價格便宜、提供場景信息更豐富,作為低成本解決方案,基于視覺的SLAM 技術(shù)(V-SLAM)近年來發(fā)展迅速。
相對而言,現(xiàn)有視覺SLAM 系統(tǒng)的研究重點(diǎn)主要在相機(jī)傳感器的運(yùn)動與定位信息估計上,而地圖構(gòu)建部分的模型多停留在點(diǎn)云模型階段,難以滿足更智能化應(yīng)用場景的需求。因此,為了提供更豐富的空間分析和交互地圖信息,在SLAM 技術(shù)上增加場景地圖的語義信息變得尤為迫切。
傳統(tǒng)的語義地圖構(gòu)建方法使用條件隨機(jī)場模型、支持向量機(jī)等方法進(jìn)行場景及目標(biāo)的檢測和分割,但受性能限制,方法準(zhǔn)確率低、效果不佳[2]。近年來,目標(biāo)檢測、語義分割等深度學(xué)習(xí)網(wǎng)絡(luò)不斷發(fā)展,給語義建圖帶來了新思路。Cheng J 等[3]將CRF-RNN網(wǎng)絡(luò)和ORB-SLAM結(jié)合,使用神經(jīng)網(wǎng)絡(luò)獲取圖像像素語義,通過數(shù)據(jù)關(guān)聯(lián)模塊將語義信息關(guān)聯(lián)到三維點(diǎn)云,形成語義地圖,但該方法實(shí)時性有限。目標(biāo)檢測神經(jīng)網(wǎng)絡(luò)返回的結(jié)果并不能很好地契合物體的輪廓[4],為了獲得更好的三維語義地圖,常聯(lián)合其他策略。SünderhaufN 等[5]使用單階多框檢測器(Single Shot MultiBox Detector,SSD)網(wǎng)絡(luò)獲取二維語義,基于深度圖進(jìn)行三維分割,再將二者關(guān)聯(lián)形成語義地圖。YangS等[5]使用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)獲取語義預(yù)測值,結(jié)合超像素和占據(jù)地圖使用條件隨機(jī)場(Conditional Random Fields,CRF)優(yōu)化語義標(biāo)簽,提高了語義標(biāo)注的準(zhǔn)確度。Semantic Fusion[6]結(jié)合Elastic Fusion 和卷積神經(jīng)網(wǎng)絡(luò),利用幀間長時間密集關(guān)聯(lián)性,將不同視角的語義分割預(yù)測融合到一個地圖中,可構(gòu)建出稠密的室內(nèi)語義地圖。Li等人[7]提出一種單目SLAM 的半稠密語義建圖方案,算法選擇關(guān)鍵幀進(jìn)行語義分割,再將二維語義信息經(jīng)幀間的空間一致性處理后映射成三維語義信息。與上述思路不同,SLAM++[8]通過對比、匹配處理后的實(shí)時觀測數(shù)據(jù)和預(yù)先建立的數(shù)據(jù)庫,可構(gòu)建對象級的地圖,但該方法限制了系統(tǒng)處理目標(biāo)的種類,可拓展性差。
與此同時,目前一些先進(jìn)的開源SLAM 系統(tǒng)多依賴于靜態(tài)環(huán)境假設(shè),然而真實(shí)環(huán)境中存在大量的動態(tài)物體,這些運(yùn)動特征如果參與解算會嚴(yán)重影響位姿解算精度,動態(tài)環(huán)境中靜態(tài)對象的假設(shè)會導(dǎo)致整個SLAM過程的惡化[9]。
針對上述問題,本文提出一種融合語義地圖與回環(huán)檢測的視覺SLAM 方法。本文算法基于我們前期研究成果[10]改進(jìn),原算法在室內(nèi)動態(tài)場景下表現(xiàn)優(yōu)異,但其回環(huán)檢測模塊的特征點(diǎn)權(quán)重調(diào)整策略計算量較大,且模塊間的強(qiáng)耦合性限制了系統(tǒng)的優(yōu)化。鑒于此,本文融合語義信息,去除特定動態(tài)障礙物對系統(tǒng)的影響,可實(shí)現(xiàn)更高效精準(zhǔn)的回環(huán)檢測;另一方面,已有研究成果缺少對場景地圖的高級表達(dá),本文融合語義信息和分割后的點(diǎn)云聚類信息,通過構(gòu)建條件隨機(jī)場模型實(shí)現(xiàn)語義地圖的構(gòu)建。
本文的系統(tǒng)框架在文獻(xiàn)[10]基礎(chǔ)上針對室內(nèi)動態(tài)場景提出語義的改進(jìn)回環(huán)檢測算法,并針對點(diǎn)云模型空間分析和交互性差的問題提出語義地圖的構(gòu)建方案。系統(tǒng)采用多線程結(jié)構(gòu),除了文獻(xiàn)[10]中詳細(xì)描述的跟蹤線程、局部建圖線程和回環(huán)線程外,添加了單幀語義識別線程和語義建圖線程。
如圖1的上半部分所示,本文SLAM方法使用文獻(xiàn)[10]中分析的視覺定位算法對每一幀圖像進(jìn)行相機(jī)位姿估計,并將圖像坐標(biāo)信息投影到世界坐標(biāo)系獲得特征點(diǎn)三維信息,利用目標(biāo)檢測算法對關(guān)鍵幀的場景目標(biāo)進(jìn)行檢測和邊框提取,結(jié)合關(guān)鍵幀的位姿、語義標(biāo)注信息和特征點(diǎn)向量集進(jìn)行場景的回環(huán)檢測。圖1的下半部分描述了語義地圖的構(gòu)建過程,結(jié)合場景結(jié)構(gòu)信息和點(diǎn)云表面凹凸性對前端輸出的無規(guī)則點(diǎn)云地圖進(jìn)行分割,然后使用CRF數(shù)據(jù)融合算法將分割的點(diǎn)云場景與場景語義信息相融合,得到3D的場景語義地圖。
圖1 RGB-D SLAM 算法框架Fig.1 The framework of the proposed RGB-D system
隨著相機(jī)不斷運(yùn)動,系統(tǒng)計算出的相機(jī)位姿和點(diǎn)云位置會隨著時間產(chǎn)生累積誤差,且這種誤差無法因局部BA 優(yōu)化完全消除?;丨h(huán)檢測模塊將當(dāng)前采集到的圖像與之前訪問過的場景圖像進(jìn)行匹配,利用此約束消除累積誤差,是保證SLAM 系統(tǒng)準(zhǔn)確建圖并維持圖像一致性的優(yōu)化方法。
回環(huán)檢測的核心是場景識別算法,本文場景識別的算法基于詞袋(Bag of words,BoW)模型[11],該算法通過視覺單詞來描述圖像集中的特征。視覺詞典通過預(yù)訓(xùn)練生成,使用特征出現(xiàn)與否以及出現(xiàn)的次數(shù)等信息生成圖片對應(yīng)的特征向量,比較不同圖像之間的特征向量來判斷它們之間的相似程度。SLAM系統(tǒng)對所有關(guān)鍵幀生成描述符空間的特征向量,通過比較已有的描述向量集判斷回環(huán)。
現(xiàn)實(shí)問題是,在動態(tài)場景下運(yùn)動物體在場景中的移動軌跡難以預(yù)判,可能會造成回環(huán)檢測失效:一方面,當(dāng)運(yùn)動特征點(diǎn)占據(jù)圖像幀較大比重時,系統(tǒng)可能會因?yàn)闄z測到同一運(yùn)動物體而將不同場景誤判為回環(huán);另一方面,在同一場景下若運(yùn)動物體離開或出現(xiàn),可能造成圖像幀特征點(diǎn)不匹配,導(dǎo)致系統(tǒng)難以準(zhǔn)確識別出當(dāng)前正確的回環(huán)。
為了補(bǔ)償動態(tài)環(huán)境中的定位制圖漂移問題,文獻(xiàn)[10]在系統(tǒng)的詞袋方法中集成了特征點(diǎn)權(quán)重調(diào)整策略,但該策略依賴于跟蹤線程中對所有視頻幀特征點(diǎn)的檢測匹配操作,不同模塊之間的耦合性和計算量較大??紤]到現(xiàn)實(shí)場景中的移動物體類型通常較單一,且在室內(nèi)移動物體以人為主,因此本節(jié)將融合語義信息,針對特定類型目標(biāo)對關(guān)鍵幀進(jìn)行單幀圖像的語義檢測,并通過去除特定運(yùn)動物體提高系統(tǒng)的魯棒性,本方法既避免了傳統(tǒng)方法低層特征檢測的失誤,又可減小特征檢測的視頻幀范圍。
目前針對單幀圖像的語義標(biāo)注主要采用目標(biāo)檢測算法,隨著深度學(xué)習(xí)的飛速發(fā)展,深度學(xué)習(xí)已經(jīng)成為主流的目標(biāo)檢測算法,它們依據(jù)基本原理可分為兩類:(1)基于候選區(qū)域;(2)基于回歸方法。其中,YOLO[12]展示了一種整合分類和定位步驟的新思路,實(shí)現(xiàn)了端到端的檢測,將目標(biāo)檢測算法的檢測速度提升到每秒45幀,從而提供了實(shí)時目標(biāo)檢測能力。比較而言,YOLO及其后續(xù)算法[12-14]在實(shí)時性能上遠(yuǎn)遠(yuǎn)優(yōu)于基于候選區(qū)域的目標(biāo)檢測算法,考慮到實(shí)時性在SLAM 算法中的重要性,本文采用YOLOv3算法作為語義地圖中的語義標(biāo)注算法。圖2展示YOLOv3對SLAM 系統(tǒng)獲取相機(jī)圖片進(jìn)行目標(biāo)檢測的運(yùn)行效果。
圖2 語義標(biāo)注示例Fig.2 Semantic label example
融合語義信息的回環(huán)檢測步驟如下:(1)利用單幀語義標(biāo)注算法對關(guān)鍵幀圖像進(jìn)行目標(biāo)分類后,將檢測到的移動障礙物邊框與關(guān)鍵幀圖像尺寸相對應(yīng);(2)對關(guān)鍵幀提取ORB特征點(diǎn)[15],并記錄特征點(diǎn)的位置及描述子,結(jié)合單幀語義標(biāo)注到的移動障礙物進(jìn)行靜態(tài)場景分割;(3)將分割后的圖像ORB特征進(jìn)行視覺單詞統(tǒng)計,輸入詞袋樹得到當(dāng)前幀的視覺單詞向量;(4)通過反序文件快速找到關(guān)鍵幀視覺信息數(shù)據(jù)庫與當(dāng)前幀的共享詞匯個數(shù),當(dāng)共享詞匯樹大于一定閾值時,保留這些關(guān)鍵幀對;(5)最后通過計算相似度找到最相似的視覺關(guān)鍵幀,當(dāng)這個關(guān)鍵幀滿足共視性、幾何一致性、時間一致性要求時[15],即認(rèn)為回環(huán)檢測匹配上了歷史某一關(guān)鍵幀,得以進(jìn)行回環(huán)校正。
圖3 融合語義信息的回環(huán)檢測流程圖Fig.3 Flowchart of loop detection based on semantic information
融合語義信息的回環(huán)檢測流程圖如圖3所示,針對關(guān)鍵幀圖像,一方面提取圖像的ORB特征,另一方面采用單幀語義識別對圖像進(jìn)行多類目標(biāo)的語義識別,識別到障礙物類別并記錄其在圖像中的位置坐標(biāo)。相對于通過詞袋模型直接對圖像ORB特征進(jìn)行詞匯構(gòu)建的傳統(tǒng)回環(huán)檢測方案,本文的算法聯(lián)合目標(biāo)檢測方法,對圖像中的移動物體進(jìn)行圖像分割,即分割圖像相應(yīng)位置的ORB特征點(diǎn)。分割后的圖像ORB特征點(diǎn)不包括場景中的運(yùn)動障礙物ORB特征,保留了場景位置的靜態(tài)屬性。對分割后的圖像 ORB特征構(gòu)建單詞向量,結(jié)合關(guān)鍵幀的三維地圖坐標(biāo)信息,以相鄰節(jié)點(diǎn)的位置坐標(biāo)為中心,在半徑為R 的圓形區(qū)域的關(guān)鍵幀中進(jìn)行回環(huán)搜索,并尋找共有詞匯樹超過設(shè)定閾值的關(guān)鍵幀,根據(jù)相似性度量的方法進(jìn)行匹配相似度計算,確定共視性和一致性原則匹配后,定位到對應(yīng)幀的關(guān)鍵節(jié)點(diǎn)并對此時的地圖實(shí)施地圖累計誤差校正。
本節(jié)闡述融合場景的語義標(biāo)注和點(diǎn)云分割的語義地圖生成方法,對視頻關(guān)鍵幀進(jìn)行二維圖像的語義標(biāo)注,同時對場景輸出點(diǎn)云進(jìn)行結(jié)構(gòu)分割,最后基于條件隨機(jī)場模型求解語義地圖。其中二維圖像的語義標(biāo)注步驟已在2.2 小節(jié)中闡述。
RGB-D SLAM 系統(tǒng)可分為稠密和稀疏兩類[16-17],稠密RGB-D SLAM 計算復(fù)雜度較高且缺少對場景的結(jié)構(gòu)表達(dá)。針對這個問題,首先利用特征點(diǎn)圖與深度圖的匹配關(guān)系,輸出圖像特征經(jīng)三維映射后的場景點(diǎn)云地圖,然后采用超體素聚類[18]的方式對點(diǎn)云進(jìn)行降采樣并將點(diǎn)云轉(zhuǎn)換為面片結(jié)構(gòu),最后綜合考慮場景的全局結(jié)構(gòu)信息和物體局部表面凹凸性質(zhì),對面片集進(jìn)行分類。面片分類操作前需要預(yù)先提取場景點(diǎn)云的平面結(jié)構(gòu)信息,并基于平面結(jié)構(gòu)分類面片集,無歸屬的面片則根據(jù)其凹凸性[18]進(jìn)行分類,整體策略可用式(1)表示:
f(.)=1表示兩相鄰面片屬于同類物體,f(.)=0則表示相鄰面片被分類為不同物體。式(1)展示了所有分類的情況:(1)當(dāng)相鄰面片的標(biāo)簽l相同時,即相鄰面片屬于同一平面結(jié)構(gòu),被歸為一類;(2)當(dāng)相鄰面片均不屬于任何一個平面,且局部凹凸性判斷顯示為凸,則被歸為同一類;(3)當(dāng)相鄰面片屬于不同平面,則被分割為兩類。
通過將場景點(diǎn)云進(jìn)行超體素聚類及面片分割,場景中的點(diǎn)云被分割成不同的聚類C={c1,c2,...,cM},針對關(guān)鍵幀進(jìn)行語義標(biāo)注則獲得其對應(yīng)點(diǎn)云的語義標(biāo)簽,這樣三維場景中的點(diǎn)云就具有語義標(biāo)簽的初始值,最后需要對點(diǎn)云的聚類信息和語義標(biāo)注信息進(jìn)行融合。一種簡單的融合思路是針對每個點(diǎn)云聚類,基于三維空間信息將語義標(biāo)注獲得的語義標(biāo)簽進(jìn)行空間映射,然而此方法需要克服的難題有:(1)二維圖像的語義標(biāo)簽候選框中存在錯誤的內(nèi)容,這些標(biāo)簽被傳遞到三維點(diǎn)云中,需要根據(jù)前后多幀的信息進(jìn)行指導(dǎo)修正;(2)零散的三維點(diǎn)云標(biāo)簽缺乏局部一致性,需要進(jìn)一步修正。
通過構(gòu)建條件隨機(jī)場(Conditional Random Field,CRF)模型可在聚類的初始標(biāo)簽上進(jìn)一步優(yōu)化地圖的語義信息。條件隨機(jī)場可以看作判別式的無向圖,依據(jù)輸入相應(yīng)的變量,預(yù)測輸出變量的條件概率分布,被廣泛應(yīng)用于圖像分割和自然語義處理領(lǐng)域。通過把點(diǎn)云信息轉(zhuǎn)換成標(biāo)簽,定義相應(yīng)的能量函數(shù),通過最大化后驗(yàn)概率進(jìn)行優(yōu)化,從而完成點(diǎn)云的三維語義標(biāo)注。為了實(shí)現(xiàn)語義地圖的局部一致性,減少存儲量同時提升計算效率,語義融合地圖仍舊采用超體素作為節(jié)點(diǎn)。
針對點(diǎn)云中的每個聚類集合ci中的超體素語義標(biāo)注的問題,構(gòu)建圖G(V,E),假設(shè)ci中有n個超體素,超體素V={vi,i∈ (1,n)}構(gòu)成G中的節(jié)點(diǎn),E={eij}代表超體素vi和vj之間的邊。計算ci中的超體素語義標(biāo)簽的問題可以轉(zhuǎn)換為最小化能量方程的優(yōu)化問題:
語義標(biāo)注標(biāo)簽L={li,i=1,2,...,n}表示ci中的所有超體素的標(biāo)注結(jié)果,φi(.)表示數(shù)據(jù)項(xiàng),φij(.)表示平滑項(xiàng),k是兩項(xiàng)之間的平衡因子,在本文中設(shè)置為1。
數(shù)據(jù)項(xiàng)定義為將超體素vi標(biāo)記為標(biāo)簽li的置信度,需要統(tǒng)計每個超體素的初始標(biāo)簽,具體方法為:將三維地圖使用八叉樹的數(shù)據(jù)結(jié)構(gòu)表示,超體素中包含的立體體素中標(biāo)簽為p的比例越大則認(rèn)為超體素屬于p標(biāo)簽的可能性越大。
對于每個立體體素,統(tǒng)計其內(nèi)部三維點(diǎn)的標(biāo)簽直方圖,選定統(tǒng)計概率最大的標(biāo)簽作為該立體體素的標(biāo)簽。根據(jù)超體素中的立體體素標(biāo)簽,數(shù)據(jù)項(xiàng)初步定義為:
其中假設(shè)超體素vi中的立體體素個數(shù)為ni個,分別表示為vij,j=1,2,...,mi,label(vij)表示立體體素vij的標(biāo)簽,F(xiàn)(.)定義為:
考慮到二維圖像的語義標(biāo)簽候選框中可能存在錯誤,如圖2語義判定為bowl 的物體其實(shí)是膠帶,在tvmonitor 和keyboard 的語義候選框中包含了桌面和背景等與被檢測物體無關(guān)的噪聲信息。這些錯誤的語義信息傳遞到三維空間中將會導(dǎo)致錯誤的語義地圖信息,上述問題可以根據(jù)前后多幀的語義信息進(jìn)行修正,并通過融合多幀觀測修正數(shù)據(jù)項(xiàng)以獲得更準(zhǔn)確的語義信息。將每一個超體素vi的質(zhì)心xi投影到前后K幀關(guān)鍵幀圖像上,對投影得到的mi個點(diǎn)xij(j=1,2,...,mi)的標(biāo)簽做統(tǒng)計,投影得到的點(diǎn)中標(biāo)簽為p的比例越大則認(rèn)為超體素vi類別為p的可能性越大:
綜合上述兩點(diǎn),數(shù)據(jù)項(xiàng)構(gòu)造為:
點(diǎn)云地圖的語義標(biāo)簽平滑操作?;谝韵录僭O(shè):三維點(diǎn)云中相鄰節(jié)點(diǎn)的標(biāo)簽傾向于一致。本文基于此,針對每個聚類中的每個超體素vi,找ni個同聚類中與其最近的超體素,針對這ni個超體素vj,定義平滑項(xiàng)如下:
其中D(vi-vj)表示超體素vi和vj質(zhì)心的距離,當(dāng)被選中的相鄰超體素與當(dāng)前超體素屬于同一聚類,且不屬于同一語義標(biāo)簽時φij(li,lj) ≠ 0;當(dāng)平滑項(xiàng)不為0時,vi和vj距離越近,平滑項(xiàng)能量越大,起到懲罰不平滑狀態(tài)的作用。
由于本文的能量函數(shù)平滑項(xiàng)φii(li,li)=φjj(lj,lj)=0,而φij(li,lj)>0,滿足半度量約束,可使用圖割算法求解能量函數(shù)。
為了驗(yàn)證融合語義信息的場景回環(huán)檢測和地圖構(gòu)建算法的可行性,本節(jié)將從語義地圖生成效果和語義回環(huán)算法的檢測效果兩個方面進(jìn)行實(shí)驗(yàn)測試。實(shí)驗(yàn)中,使用RGB-DTUM 數(shù)據(jù)集以及在真實(shí)場景中拍攝的數(shù)據(jù)圖像驗(yàn)證本文方法。本章節(jié)實(shí)驗(yàn)軟件配置如表1所示,實(shí)驗(yàn)使用的預(yù)先訓(xùn)練好的YOLOv3模型[14]的訓(xùn)練超參數(shù)設(shè)置如表2所示。
表1 實(shí)驗(yàn)的軟件配置Tab.1 Configuration of experimental platform
表2 YOLO 網(wǎng)絡(luò)模型訓(xùn)練的超參數(shù)設(shè)置Tab.2 Training parameter settingsof YOLOv3
圖4 語義地圖算法運(yùn)行界面Fig.4Operation interface of semantic mapping algorithm
如圖4是語義地圖構(gòu)建算法的運(yùn)行界面,圖中顯示三個窗口,左上角的幀窗口顯示當(dāng)前數(shù)據(jù)幀圖像以及提取到的特征點(diǎn),右上角的位姿地圖點(diǎn)窗口顯示相機(jī)的位姿軌跡和場景地圖點(diǎn),與文獻(xiàn)[15]一致;下面的窗口是帶語義標(biāo)簽的點(diǎn)云圖,由目標(biāo)檢測算法檢測到的語義標(biāo)注信息映射到原始點(diǎn)云圖中所得,將不同的語義物體對應(yīng)的點(diǎn)云空間標(biāo)注為不同的顏色用于區(qū)分顯示。場景分割和語義融合操作在后臺運(yùn)行,原始點(diǎn)云圖、帶語義標(biāo)簽的點(diǎn)云圖、場景分割點(diǎn)云圖分別保存至磁盤中的系統(tǒng)運(yùn)行文件位置,并生成最終的語義地圖pcd 文件。
圖5、圖6、圖7展示的是TUM數(shù)據(jù)集中的Desk序列的原始圖、點(diǎn)云地圖分割圖和帶語義標(biāo)簽的點(diǎn)云圖。從圖6中看出,監(jiān)視器、玩具熊、桌子和地面這幾個物體都被有效地分割區(qū)分,而桌上的盆栽由于其結(jié)構(gòu)復(fù)雜度較大難以分割,除此之外,桌面上的鍵盤、鼠標(biāo)和水杯的特征點(diǎn)也與桌面融為一體。圖7是將目標(biāo)算法檢測的語義標(biāo)注信息映射到原始點(diǎn)云的語義標(biāo)簽點(diǎn)云圖,可以看到檢測出語義的物體對應(yīng)的點(diǎn)云空間被標(biāo)注為不同的顏色,如綠色的監(jiān)視器、黃色的鍵盤等等,實(shí)驗(yàn)中是對帶標(biāo)簽的點(diǎn)云進(jìn)行后續(xù)操作,顏色僅用于顯示。
圖5、圖6、圖7展示的是TUM數(shù)據(jù)集中的Desk序列的原始圖、點(diǎn)云地圖分割圖和帶語義標(biāo)簽的點(diǎn)云圖。從圖6中看出,監(jiān)視器、玩具熊、桌子和地面這幾個物體都被有效地分割區(qū)分,而桌上的盆栽由于其結(jié)構(gòu)復(fù)雜度較大難以分割,除此之外,桌面上的鍵盤、鼠標(biāo)和水杯的特征點(diǎn)也與桌面融為一體。圖7是將目標(biāo)算法檢測的語義標(biāo)注信息映射到原始點(diǎn)云的語義標(biāo)簽點(diǎn)云圖,可以看到檢測出語義的物體對應(yīng)的點(diǎn)云空間被標(biāo)注為不同的顏色,如綠色的監(jiān)視器、黃色的鍵盤等等,實(shí)驗(yàn)中是對帶標(biāo)簽的點(diǎn)云進(jìn)行后續(xù)操作,顏色僅用于顯示。
圖7 帶語義標(biāo)簽的點(diǎn)云圖Fig.7 Point clo ud with semantictags
圖8是融合了語義標(biāo)注信息圖和點(diǎn)云分割圖生成的語義地圖,地圖中不同顏色代表的語義物體可在色卡中讀取??梢钥闯觯邳c(diǎn)云分割圖中被合并到桌面平面的鍵盤、水杯和鼠標(biāo)通過語義信息與背景桌面很好地區(qū)分開來,而基于多幀的語義融合算法,場景中結(jié)構(gòu)復(fù)雜的盆栽也提取成功。
圖8 RGB-D TUM 數(shù)據(jù)集語義地圖實(shí)驗(yàn)圖Fig.8 Semanticmapping testsof RGB-D TUM datasets
圖9 測試數(shù)據(jù)集場景Fig.9 Datasetsfrom the laboratory and the campus
為了測試語義回環(huán)模塊在真實(shí)環(huán)境中的表現(xiàn),在如圖9所示的實(shí)驗(yàn)室環(huán)境中進(jìn)行測試,測試數(shù)據(jù)集均為PNG格式的1560*1080圖像,共進(jìn)行4次測試,每次測試包括一到兩次回環(huán)。
本文統(tǒng)計回環(huán)檢測評價指標(biāo)真陽性(TruePositive,TP)、真陰性(True Negative,TN)、假陽性(False Positive,FP)、假陰性(False Negative,FN)的出現(xiàn)次數(shù),并計算準(zhǔn)確率P(Precision)和召回率R(Recall)。實(shí)驗(yàn)場景中不同回環(huán)檢測算法的檢測表現(xiàn)如表3所示,分別是文獻(xiàn)[15]中的傳統(tǒng)詞典法和本文的語義回環(huán)算法。
表3 不同回環(huán)檢測算法的對比表現(xiàn)Tab.3 Comparisonof different loop-detection algorithms
傳統(tǒng)詞典法和語義回環(huán)這兩種算法在實(shí)際場景中的準(zhǔn)確率為100%,即實(shí)驗(yàn)中算法沒有出現(xiàn)FP(事實(shí)上并不是回環(huán),系統(tǒng)錯誤地認(rèn)定為回環(huán))的情況。在SLAM系統(tǒng)中,F(xiàn)P會導(dǎo)致錯誤的回環(huán)從而嚴(yán)重影響系統(tǒng)精度,系統(tǒng)在判斷場景相似度后會進(jìn)行位姿解算、圖像特征匹配檢驗(yàn)、地圖點(diǎn)匹配檢驗(yàn)等核驗(yàn)步驟,從而避免FP現(xiàn)象。實(shí)驗(yàn)室場景包含相似的鍵盤、顯示屏、桌椅等,盡管包含相似物體的關(guān)鍵幀之間詞袋相似度很高,系統(tǒng)運(yùn)行過程中回環(huán)檢測模塊區(qū)成功分出了包括相似物體的兩個場景,并沒有錯識成回環(huán)。
在召回率方面,本文的語義算法則明顯超過傳統(tǒng)詞典法。在如圖9所示的室內(nèi)場景中,由于運(yùn)動物體(人類)占比較大且運(yùn)動物體上檢測到的特征點(diǎn)較多,傳統(tǒng)詞典法未能檢測到部分回環(huán),而語義回環(huán)算法則全部檢測成功。圖10給出了實(shí)驗(yàn)室環(huán)境下系統(tǒng)使用兩種回環(huán)算法的運(yùn)行軌跡對比圖。
將使用語義回環(huán)檢測算法的系統(tǒng)所獲得的運(yùn)行軌跡與傳統(tǒng)詞典法進(jìn)行對比。傳統(tǒng)詞典法利用關(guān)鍵幀場景中的ORB 特征點(diǎn)計算相機(jī)位姿,利用詞袋模型進(jìn)行回環(huán)檢測,所獲得的軌跡如圖10(a)所示。語義回環(huán)檢測系統(tǒng)檢測出特定的動態(tài)物體(該場景中為人),并在詞典中去除動態(tài)物體的特征向量,提高靜態(tài)物體特征點(diǎn)的百分比。從圖10中標(biāo)紅色實(shí)線圈的地方可以看出,語義回環(huán)檢測系統(tǒng)檢測出回環(huán),而傳統(tǒng)詞典法在對應(yīng)的地方并沒有檢測出回環(huán)。
為了進(jìn)一步獲得語義回環(huán)檢測算法的定量實(shí)驗(yàn)結(jié)果,在TUM 數(shù)據(jù)集上進(jìn)行對比實(shí)驗(yàn)。具體實(shí)驗(yàn)中,以O(shè)RB-SLAM2 系統(tǒng)的VO 部分為載體,分別加入不同回環(huán)檢測模塊,對比系統(tǒng)的整體精度表現(xiàn)。表4展示了對原始的詞典回環(huán)檢測法和語義回環(huán)算法進(jìn)行對比的實(shí)驗(yàn)結(jié)果,測試對象包括靜態(tài)環(huán)境圖像序列、低動態(tài)序列和高動態(tài)序列,其中靜態(tài)、動態(tài)和高動態(tài)的定義見文獻(xiàn)[9]。
(1)從表4整體可以看出,使用語義回環(huán)檢測算法能使系統(tǒng)在大多數(shù)高動態(tài)序列中表現(xiàn)有所提升;而在低動態(tài)場景和靜態(tài)場景下,使用改進(jìn)的回環(huán)檢測算法的系統(tǒng)性能與傳統(tǒng)詞典法幾乎一致,其原因是這些場景中不包括動態(tài)回環(huán),即回環(huán)的場景前后并未出現(xiàn)動態(tài)物體。
(2)在低動態(tài)場景desk_person 序列中,系統(tǒng)的跟蹤線程運(yùn)行過程中使用運(yùn)動模型跟蹤失敗,系統(tǒng)繼而使用了關(guān)鍵幀特征比對法,提取并匹配當(dāng)前幀與最近關(guān)鍵幀的特征并解算位姿,這個過程中使用了詞典加速匹配進(jìn)程。具體做法是在已經(jīng)獲得圖像特征點(diǎn)集合的基礎(chǔ)上根據(jù)詞典對特征進(jìn)行分類,用分類后的特征類別代替原本的特征描述子,即用數(shù)字代替向量進(jìn)行比對,顯然速度可以大大提升。而本文的語義回環(huán)檢測去除了動態(tài)物體的特征點(diǎn),使用靜態(tài)特征進(jìn)行匹配并解算位姿,所以算法精度有所提升。該結(jié)果表明,改進(jìn)后的詞典法在幀間匹配也可起到提高精度的作用。
(3)在高動態(tài)場景中,walking_static 序列沒有性能提升的原因是該序列中相機(jī)基本保持在同一位置,未能滿足“回到同一場景”這一回環(huán)檢測的基本條件。
(4)在高動態(tài)場景walking_xyz、walking_halfsphere和walking_rpy 中,使用語義回環(huán)檢測算法的系統(tǒng)表現(xiàn)相比原算法提升了48.1%,這三個數(shù)據(jù)集的相機(jī)分別按照左右上下(xyz)、畫半圓(halfsphere)、旋轉(zhuǎn)(rpy)三種方式移動,而實(shí)驗(yàn)者則在場景中隨意移動,由于在回環(huán)的檢測中去除了實(shí)驗(yàn)者的動態(tài)特征點(diǎn),提高了回環(huán)檢測的準(zhǔn)確度從而提升了系統(tǒng)精度。其中walking_xyz 的精度提升特別明顯,一方面是因?yàn)槿コ藙討B(tài)物體的回環(huán)檢測,另一方面是因?yàn)橄鄼C(jī)移動較快,系統(tǒng)偶爾會出現(xiàn)跟蹤失敗的現(xiàn)象,此時系統(tǒng)會開啟重定位模塊,重定位時需要使用詞典加速當(dāng)前幀與關(guān)鍵幀集的特征匹配,由于詞典中去除了動態(tài)物體的特征點(diǎn),所以精度有了較大提升。
表5展示了靜態(tài)加權(quán)的回環(huán)檢測算法文獻(xiàn)[9](下文中簡稱為靜態(tài)加權(quán)算法)以及本章提出的語義回環(huán)算法在TUM 動態(tài)數(shù)據(jù)集上的對比結(jié)果。
表5 靜態(tài)加權(quán)算法和語義回環(huán)算法在TUM 序列上的表現(xiàn)Tab.5 Performance of systems with different loop detection algorithms on TUM sequences
從表5可以看出語義回環(huán)檢測算法在高動態(tài)序列中表現(xiàn)優(yōu)于靜態(tài)加權(quán)算法。因?yàn)殪o態(tài)加權(quán)算法使用低層特征檢測動態(tài)物體,基于跟蹤線程對靜態(tài)點(diǎn)和動態(tài)點(diǎn)之間距離的判斷來提取靜態(tài)區(qū)域,這一檢測過程容易受到靜態(tài)閾值的影響,針對特定物體的準(zhǔn)確度不及語義標(biāo)注算法。但靜態(tài)加權(quán)算法也有其優(yōu)點(diǎn),它的使用不受運(yùn)動物體種類的限制,預(yù)訓(xùn)練和參數(shù)調(diào)試的過程也相對簡單。
由于語義回環(huán)檢測算法在動態(tài)場景下的表現(xiàn)優(yōu)于靜態(tài)加權(quán)算法,將已有研究成果,文獻(xiàn)[9]中的靜態(tài)加權(quán)算法替換為語義回環(huán)檢測算法,并在動態(tài)數(shù)據(jù)集上進(jìn)行絕對軌跡標(biāo)準(zhǔn)誤差的對比,結(jié)果如表6所示。
表6 三類算法的絕對軌跡誤差比較Tab.6 Comparison of absolute trajectoryerrorsof three types of algorithms
從表6可以看出,將回環(huán)檢測方案更新為語義回環(huán)檢測算法后,動態(tài)場景下的整體系統(tǒng)精度又有了小幅提升,由于前端的靜態(tài)區(qū)域提取算法已經(jīng)在跟蹤線程規(guī)避了動態(tài)物體的誤差影響,所以相對已有研究成果精度提升幅度不大,最新系統(tǒng)相比ORB-SLAM2精度在動態(tài)場景下提升了83.9%。將不同算法在walking_rpy數(shù)據(jù)集中的定量平移誤差進(jìn)行比較,包括X 方向和Y方向,實(shí)驗(yàn)結(jié)果如圖11所示。
圖11 不同算法在walking_rpy 數(shù)據(jù)集中的平移誤差比較Fig.11 Translation errorsof different algorithmsin walking_rpy dataset
從圖11可以看出在該序列中,本文改進(jìn)算法的平移誤差相對ORB-SLAM2更小,能提供更穩(wěn)定的性能和準(zhǔn)確的位姿解算。綜上所述,在相機(jī)移動的動態(tài)場景下,使用本文的語義回環(huán)檢測算法能使得SLAM 系統(tǒng)的表現(xiàn)大大提升,而在低動態(tài)場景和靜態(tài)場景下性能保持不變。在使用語義標(biāo)注算法代價不高,即系統(tǒng)的運(yùn)行空間和運(yùn)行效率不受目標(biāo)檢測算法影響的情況下,采用語義回環(huán)檢測相比靜態(tài)加權(quán)的回環(huán)檢測算法可以得到更好的定位效果。
本小節(jié)在數(shù)據(jù)集和實(shí)際場景中,從語義地圖生成效果和語義回環(huán)檢測的性能評估兩個方面進(jìn)行了實(shí)驗(yàn)測試,證明了融合語義信息的回環(huán)檢測和地圖構(gòu)建算法的可行性。
本文提出了一種融合語義信息的語義地圖構(gòu)建和語義回環(huán)檢測算法。針對點(diǎn)云地圖特征信息層次較低、缺乏實(shí)用性的問題,提出語義地圖的構(gòu)建方案。利用目標(biāo)檢測算法針對關(guān)鍵幀進(jìn)行二維圖像的語義標(biāo)注;接著結(jié)合場景結(jié)構(gòu)和點(diǎn)云凹凸信息對點(diǎn)云地圖進(jìn)行分割;最后基于條件隨機(jī)場模型將二維圖像的語義標(biāo)注信息與場景分割的聚類信息相融合求解語義地圖。針對動態(tài)場景下運(yùn)動物體在場景中的移動軌跡難以預(yù)判、造成回環(huán)檢測失效的問題,提出結(jié)合語義信息的改進(jìn)回環(huán)檢測算法?;陉P(guān)鍵幀的語義標(biāo)注信息,結(jié)合運(yùn)動特征點(diǎn)去除的思路對詞典法進(jìn)行改進(jìn),通過去除特定動態(tài)物體提高動態(tài)場景下的系統(tǒng)定位精度。通過在數(shù)據(jù)集和室內(nèi)真實(shí)場景中的實(shí)驗(yàn)證明了上述算法的可行性,本文的語義回環(huán)算法在室內(nèi)動態(tài)場景下相比使用原算法的系統(tǒng)精度提升了48.1%。
本文的語義地圖構(gòu)建算法為全局算法,后續(xù)將研究增量的地圖構(gòu)建算法提高實(shí)時性。此外,在構(gòu)建語義地圖時,運(yùn)動物體會導(dǎo)致場景地圖中出現(xiàn)重影,后續(xù)研究也將著重于去除運(yùn)動障礙物的三維語義地圖構(gòu)建方法。