趙浩蘇 邢 凱,2 宋 力
1(中國科學(xué)技術(shù)大學(xué)軟件學(xué)院 江蘇 蘇州 215123)2(中國科學(xué)技術(shù)大學(xué)計算機(jī)科學(xué)與技術(shù)學(xué)院 安徽 合肥 230026)
近年來,隨著計算機(jī)和人工智能技術(shù)的快速發(fā)展,移動機(jī)器人、無人駕駛、虛擬現(xiàn)實(shí)等技術(shù)開始在社會的各個領(lǐng)域得到廣泛應(yīng)用。以移動機(jī)器人為例,在無人干預(yù)的情況下,要讓機(jī)器人安全穩(wěn)定地在環(huán)境中移動,就需要實(shí)時獲得環(huán)境信息,確定機(jī)器人在環(huán)境中的位置,實(shí)現(xiàn)同步定位與地圖構(gòu)建(SLAM)[1]。
SLAM通過傳感器來感知外部環(huán)境,如激光雷達(dá)、超聲波、相機(jī)等。不同傳感器獲得的環(huán)境信息程度,受環(huán)境影響各不相同。激光雷達(dá)可以直接測量傳感器與周圍環(huán)境障礙物的距離信息,精度高但是價格昂貴,同時在戶外容易受強(qiáng)光、反射等因素干擾。相機(jī)類似人眼,可以獲得環(huán)境物體的幾何、顏色等信息,但需要通過特征提取、匹配運(yùn)算等方式計算障礙物與傳感器之間的距離。相比激光雷達(dá),相機(jī)成本更低、獲得的信息更豐富、受到環(huán)境干擾更小。近年基于視覺的同時定位與地圖構(gòu)建(VSLAM)成為當(dāng)前重要的研究熱點(diǎn)之一。
在VSLAM系統(tǒng)中,因計算圖像之間相機(jī)運(yùn)動方式不同,一般分為特征點(diǎn)法或者直接法。特征點(diǎn)法如PTAM[2]、ORB_SLAM[3]等,在圖像中提取特征點(diǎn),如ORB[4]、SIFT[5]等,通過特征匹配的方法計算特征點(diǎn)之間的對應(yīng)關(guān)系,進(jìn)而通過PnP[6]等方法計算兩圖像之間的相機(jī)運(yùn)動關(guān)系。對直接法如LSD[7]、DSO[8]等方法,通過光流匹配獲得圖像中點(diǎn)的對應(yīng)關(guān)系。通過設(shè)定世界坐標(biāo)系,我們就能得到每幅圖像對應(yīng)的相機(jī)對應(yīng)在世界坐標(biāo)系下的位姿和空間中點(diǎn)的三維坐標(biāo)。然而計算不可避免地會帶來誤差,通過BA[9]和位姿圖優(yōu)化[10]能在一定程度上減少誤差,但長時間運(yùn)行仍然會造成誤差累計。此時我們認(rèn)為之前的位姿估計比現(xiàn)在的估計更準(zhǔn)確,如果能將當(dāng)前的相機(jī)位姿用過去的位姿修正,則能夠減少累積誤差,獲得全局一致的計算估計。
建立當(dāng)前相機(jī)位姿和過去位姿之間約束關(guān)鍵在于相機(jī)檢測到相似的數(shù)據(jù),即相機(jī)經(jīng)過同一片場景區(qū)域。如果將當(dāng)前幀和過去所有圖片進(jìn)行特征匹配或光流計算,會使計算量過大,因此我們用基于外觀的方法判斷當(dāng)前幀和過去圖片的相似度,這種方法也是VSLAM中主流方法,廣泛應(yīng)用于各種實(shí)際系統(tǒng)中。
目前的大多數(shù)回環(huán)檢測方法需要事先選擇大量訓(xùn)練圖片,提取特征點(diǎn),計算其描述子,訓(xùn)練詞典文件來加速匹配。傳統(tǒng)的特征點(diǎn)提取方法一般專注于角點(diǎn)等圖像梯度明顯的地方,通過簡單的聚類構(gòu)成單詞,但是當(dāng)視角、光照等因素發(fā)生變化時,會造成特征點(diǎn)的改變和缺失,無法進(jìn)行準(zhǔn)確的匹配。同時離線訓(xùn)練的詞典文件只在與訓(xùn)練場景類似的場景下效果較好,當(dāng)場景變化時,匹配效果較差。在ORB_SLAM工程中訓(xùn)練了約百兆的詞典文件,需要預(yù)先加載到內(nèi)存中,不適用于嵌入式設(shè)備的使用。針對傳統(tǒng)特征點(diǎn)匹配效果較差和離線詞典通用性差、文件占用大的問題,本文采用了CNN特征提取的方法,結(jié)合標(biāo)志區(qū)域提取和增量式字典構(gòu)建,提出了一種新的方法解決VSLAM中的回環(huán)檢測問題。本文主要有以下貢獻(xiàn):
1) 提出了一種無監(jiān)督的CNN模型訓(xùn)練方法,用全局GIST[11]特征提取圖像的特征信息參與模型訓(xùn)練,用隨機(jī)扭曲模擬運(yùn)動引起的視角變化,使得回環(huán)檢測系統(tǒng)對視角變化更魯棒。
2) 事先對場景圖像進(jìn)行標(biāo)志區(qū)域提取,使得提取的特征信息量更高,同時減少重復(fù)區(qū)域?qū)D像相似度計算的干擾。
3) 通過構(gòu)造增量式二進(jìn)制字典,加速圖像相似度的計算,能自適應(yīng)地構(gòu)建當(dāng)前環(huán)境中的特征單詞,適用于通用場景。
在多個數(shù)據(jù)集上的實(shí)驗(yàn)表明,本文方法比傳統(tǒng)回環(huán)檢測方法準(zhǔn)確率更高,在同等準(zhǔn)確率情況下能找到更多回環(huán)。同時計算時間少于系統(tǒng)關(guān)鍵幀的生成時間,能滿足VSLAM中實(shí)時性需要。
VSLAM中的回環(huán)檢測廣義上屬于圖像檢索領(lǐng)域,相比于通用的圖像檢索算法,回環(huán)檢測對準(zhǔn)確率的要求更高,對召回率要求較為寬松。錯誤的回環(huán)檢測會對VSLAM系統(tǒng)的穩(wěn)定性造成不可挽回的破壞,因此將100%準(zhǔn)確率下的召回率作為回環(huán)檢測性能的一個重要指標(biāo)。
回環(huán)檢測首先需要進(jìn)行圖像描述,傳統(tǒng)的方法通過實(shí)現(xiàn)人工設(shè)計的特征對圖片進(jìn)行描述,一般分為局部特征和全局特征兩種方法。局部特征通過提取大量局部特征點(diǎn)來描述整幅圖像,為了加速圖像的匹配計算,對大量特征點(diǎn)的描述子信息,通過BOW[12]、FV[13]、VLAD[14]等方法加速比較。FAB-Map 2.0[15]是這種方法的代表,通過SIFT等方法進(jìn)行特征提取,再通過BOW方法實(shí)現(xiàn)圖像的快速檢索,用圖像特征作為位置標(biāo)志,通過對不同圖片之間的標(biāo)志數(shù)據(jù)關(guān)聯(lián)構(gòu)建可信的回環(huán)。Lowry等[18]對回環(huán)檢測中遇到的各種挑戰(zhàn)做了綜述,比較了不同方法的性能差別,在特征點(diǎn)不改變的情況下,局部特征方法有較好的視角不變性,但容易受光照、運(yùn)動模糊等因素影響。全局描述子直接對整幅圖像做處理,如GIST、HOG[16]特征等,在光照變化、局部特征不明顯時較為魯棒,但當(dāng)視角變化時,同一環(huán)境下對應(yīng)的不同圖片產(chǎn)生的全局特征可能有較大差異。SeqSLAM[17]用基于圖像序列的方法進(jìn)行候選匹配,在分段的圖像序列中尋找和當(dāng)前幀相似的候選幀,再通過一系列的局部最佳匹配實(shí)現(xiàn)定位,實(shí)現(xiàn)了在季節(jié)改變、日夜變化時的重定位。Hou等[19]設(shè)計了一種網(wǎng)絡(luò)模型,取不同層的輸出作為圖像全局特征,比傳統(tǒng)全局特征更能適應(yīng)光照等挑戰(zhàn)的變化,同時證明全局特征描述子在視角有較大變化時效果較差。Chen等[20]用CNN特征取代了SeqSLAM中的HOG特征,獲得了更好的性能,說明CNN特征能比傳統(tǒng)特征更準(zhǔn)確地描述一幅圖片。然而這些方法仍然有全局特征的局限性,即較差的視角不變性。為了改善這一特性,Sünderhauf等[21]將標(biāo)志區(qū)域提取加入到特征提取之前,在標(biāo)志區(qū)域上提取CNN特征,再對標(biāo)志區(qū)域進(jìn)行匹配,在一定程度上改善了視角不變性,比傳統(tǒng)方法獲得了更高的召回率。Hou等[22]在此基礎(chǔ)上,結(jié)合BOW方法,使用PCA對CNN特征進(jìn)行降維,加速了圖像的檢索。通過離線訓(xùn)練獲得標(biāo)志區(qū)域的字典,在線查詢時加載訓(xùn)練好的詞典實(shí)現(xiàn)標(biāo)準(zhǔn)區(qū)域的快速匹配,進(jìn)而實(shí)現(xiàn)整體圖像快速檢索。以上方法中選擇的CNN特征,都是用通用圖像檢測中訓(xùn)練好的模型,提取中間層信息作為特征。Merril等[23]使用HOG特征對原始圖像進(jìn)行描述,同時對原始圖像進(jìn)行隨機(jī)扭曲來模擬運(yùn)動帶來的視角變化,將扭曲后的圖像送入AlexNet[24]網(wǎng)絡(luò),用HOG特征作為訓(xùn)練樣本,輸出的特征作為全局特征。實(shí)驗(yàn)表明,訓(xùn)練后的特征比原始HOG特征和原始AlexNet中提取的全局特征有更好的回環(huán)檢測性能。
為了實(shí)現(xiàn)圖像中相似度的快速比較,BOW是一種常用做法,為了實(shí)現(xiàn)BOW中單詞的快速查找,需要對單詞的層次結(jié)構(gòu)和查詢方法做出一系列改進(jìn)。FAB-Map中采用了Chou-Lie樹[25]的數(shù)據(jù)結(jié)構(gòu),Muja等[26]采用了層次樹的方法來管理單詞。這些方法都需要離線進(jìn)行單詞訓(xùn)練,不能實(shí)時地進(jìn)行單詞管理。當(dāng)實(shí)際場景和訓(xùn)練場景不一致時,加速匹配效果較差。Emilio等[27]介紹了一種方法能增量式構(gòu)造BOW中的字典,通過對二進(jìn)制描述子特征進(jìn)行聚類構(gòu)造層次樹,在線對層次樹進(jìn)行更新維護(hù),對相似的單詞進(jìn)行合并以控制詞典文件大小,實(shí)時構(gòu)建適應(yīng)于當(dāng)前環(huán)境下的特征字典,不需要離線進(jìn)行訓(xùn)練。
本文提出的回環(huán)檢測算法包括在線回環(huán)檢測和離線CNN模型訓(xùn)練。通過采集大量無標(biāo)注的離線圖片,訓(xùn)練出CNN特征提取網(wǎng)絡(luò)模型,在檢測時加載模型,實(shí)現(xiàn)快速魯棒的特征提取,構(gòu)造增量式字典,實(shí)現(xiàn)快速準(zhǔn)確的圖像相似度計算。檢測算法流程如圖1所示。
圖1 回環(huán)檢測算法流程
本文回環(huán)檢測方法主要分為以下幾步:
1) 圖像標(biāo)志區(qū)域提?。簩γ總€關(guān)鍵幀Ik,提取M個標(biāo)志區(qū)域,記為Lk={Lkm,m=1,2,…,M}。
2) 卷積特征提?。和ㄟ^訓(xùn)練的CNN網(wǎng)絡(luò)模型,提取圖像特征,對每個關(guān)鍵幀Ik,提取浮點(diǎn)向量特征Fk,對關(guān)鍵幀中標(biāo)志區(qū)域Lk,提取二進(jìn)制向量特征Bk,每個關(guān)鍵幀共有M個二進(jìn)制向量特征和一個浮點(diǎn)向量特征。
圖像特征可以分為全局特征和局部特征。全局特征如對圖像整體進(jìn)行描述,對光照變化更為魯棒,但當(dāng)運(yùn)動產(chǎn)生視角變化時,場景中物體的形狀可能發(fā)生變化,對不同視角下的物體描述會產(chǎn)生較大差異,如圖2所示。當(dāng)場景中有大量無紋理或重復(fù)區(qū)域時全局特征容易受干擾,場景區(qū)分度較差,如圖3所示。全局特征對這兩種情況區(qū)分度較差。
圖2 不同視角的相同場景
圖3 大量重復(fù)紋理
對局部特征如ORB、SIFT等,能找到場景中特征分布明顯的區(qū)域,但是只有特征點(diǎn)周圍的描述信息,沒有特征之間相對分布的信息。如圖4所示,兩幅圖像中有相同的特征,但空間分布不一致,局部特征不能準(zhǔn)確判斷場景是否一致。
圖4 相同特征空間分布不同
本文在提取圖像特征時,首先選取圖像中標(biāo)志區(qū)域。如圖5所示,顯然標(biāo)志區(qū)域的特征信息與周圍特征有明顯的區(qū)分度,同時標(biāo)志區(qū)域在不同的視角下基本不變。馬克斯普朗克研究所[28]綜合分析了各種標(biāo)志區(qū)域提取的方法,本文選取了微軟亞洲研究院的EdgeBoxes[29]方法,在速度和檢測準(zhǔn)確度上取得了較好的平衡。
圖5 圖像標(biāo)志區(qū)域提取
隨著深度學(xué)習(xí)的廣泛應(yīng)用,在圖像檢測領(lǐng)域使用CNN實(shí)現(xiàn)的圖像特征提取逐漸取代了傳統(tǒng)圖像特征。在目標(biāo)檢測領(lǐng)域中有大量已訓(xùn)練好的CNN模型,如AlexNet、ResNet[30]等。在圖像通過CNN模型時,提取模型中間層輸出作為圖像特征。但通用的目標(biāo)檢測模型在面對光照變化、運(yùn)動扭曲時識別性較差。本文修改了ResNet-18模型,用GIST特征參與訓(xùn)練,提高對視角變化的魯棒性,提取中間層和全連接層的輸出。通過sigmod層映射到0至1區(qū)間,獲得256維和960維的浮點(diǎn)向量。對256維的浮點(diǎn)向量,設(shè)置閾值τ=0.5 將其劃分為二進(jìn)制特征。圖像I共產(chǎn)生M個256維的二進(jìn)制特征B和一個960維浮點(diǎn)向量F。
對兩個二進(jìn)制特征Bi和Bj,其漢明距離為:
(1)
對于兩個浮點(diǎn)向量Fi和Fj,其歐氏距離為:
(2)
在計算機(jī)上二進(jìn)制運(yùn)算遠(yuǎn)快于浮點(diǎn)數(shù)運(yùn)算,因此本文用二進(jìn)制特征來構(gòu)造增量式詞典,能實(shí)現(xiàn)圖像間相似度的快速計算。
詞袋模型是用“圖像中有哪幾種單詞”來描述圖像的一種方法。首先不同的圖像特征進(jìn)行聚類形成單詞,同一單詞下包含多種特征,不同單詞在一起構(gòu)成了詞袋,即字典。當(dāng)前圖像提取的特征在詞袋中進(jìn)行查詢,如果特征屬于詞袋中的一個單詞,則該圖像的字典向量中對應(yīng)的單詞數(shù)目加一。我們用詞袋中單詞出現(xiàn)的直方圖來描述整幅圖像,就能把圖像轉(zhuǎn)化為向量的描述,再進(jìn)一步比較圖像的相似度。
當(dāng)字典中單詞數(shù)目增多時,線性查詢的開銷會變得巨大。Muja通過構(gòu)造序列樹來實(shí)現(xiàn)字典編碼,葉子節(jié)點(diǎn)為二進(jìn)制特征,非葉子節(jié)點(diǎn)為聚類中心,子節(jié)點(diǎn)是葉子的節(jié)點(diǎn)作為單詞。通過式(1)計算漢明距離,比較兩個二進(jìn)制描述子的相似度,使用k-means[31]方法進(jìn)行聚類,每個單詞最多有S個葉子節(jié)點(diǎn),共有K個聚類中心,構(gòu)造序列樹的算法步驟如下:
1) 在所有特征中隨機(jī)選擇K個特征作為聚類中心,作為父節(jié)點(diǎn);
2) 其他特征通過聚類,并按照漢明距離排序連接到父節(jié)點(diǎn);
3) 當(dāng)一個節(jié)點(diǎn)的子節(jié)點(diǎn)個數(shù)大于S時,對子節(jié)點(diǎn)遞歸構(gòu)造序列樹;
4) 葉子節(jié)點(diǎn)的父節(jié)點(diǎn)為單詞。在序列樹中查詢當(dāng)前特征時,從根節(jié)點(diǎn)遍歷尋找,選擇最相似的子節(jié)點(diǎn)進(jìn)行遍歷,直到葉子節(jié)點(diǎn),當(dāng)兩特征的漢明距離小于閾值時,認(rèn)為特征匹配成功,特征屬于序列樹中對應(yīng)單詞,本文中設(shè)置τb=30。這種方法需要離線訓(xùn)練詞字典,在查詢時序列樹不更新。如果離線訓(xùn)練場景和真實(shí)場景不相似時,此時詞袋向量幾乎為全0,對圖像的描述區(qū)分度較差。
對一個9個特征的字典,設(shè)置K=2、S=3,構(gòu)造結(jié)果如圖6所示,其中d0、d4、d7、d8為單詞,對應(yīng)的葉子節(jié)點(diǎn)為單詞所包含的特征。
圖6 特征構(gòu)成的序列樹
(3)
Garcia-Fidalgo[32]等證明了這種方法并不會使得二進(jìn)制特征變?yōu)槿?。若當(dāng)前二進(jìn)制特征沒有在序列樹中查詢到匹配特征,則作為新的葉子節(jié)點(diǎn)加入到序列樹的構(gòu)建。當(dāng)序列樹中總的葉子節(jié)點(diǎn)高于閾值N時,合并葉子節(jié)點(diǎn)中的相似節(jié)點(diǎn),減少節(jié)點(diǎn)數(shù)量,提高區(qū)分能力。
在快速計算兩幅圖像相似度時,我們采用TF-IDF[33]的方法。對當(dāng)前序列樹,共有N個單詞,單詞Wi中共有ni個特征,序列樹中共有n個二進(jìn)制特征,則逆文檔頻率為:
(4)
圖像A中的特征,通過序列樹查詢對應(yīng)到m個單詞,其中單詞Wi出現(xiàn)了mi次,則譯頻率為:
(5)
此時單詞Wi的權(quán)重為:
ηi=TFi×IDFi
(6)
則圖像A的字典向量為:
vA{(W1,η1),(W2,η2),…,(WN,ηN)}
(7)
圖像B的字典向量為vB,兩幅圖像的相似度得分為:
(8)
當(dāng)前圖像Iq,通過CNN模型得到M個二進(jìn)制特征Bk,k=1,2,…,M和一個浮點(diǎn)特征Fq,Bk在字典中進(jìn)行查詢,從而得到當(dāng)前圖片的字典向量vq,快速計算Iq和之前關(guān)鍵幀的相似度得分,找出前K個最相似的作為候選圖片。對前K幅圖片,通過式(2)計算浮點(diǎn)向量特征的歐氏距離,小于閾值τf時認(rèn)為是最相似圖像,本文設(shè)置K=5、τf=0.03。
無論是傳統(tǒng)的全局特征還是通用物體識別的CNN特征,視角不變性都較差。為了識別在不同視角下的同一場景,本文需要重新訓(xùn)練CNN網(wǎng)絡(luò)模型。傳統(tǒng)方法要從多角度大量重復(fù)拍攝同一場景,并且人為標(biāo)注為同一場景,工作量繁瑣巨大。本文用隨機(jī)扭曲模擬不同視角下的圖像變化,極大地減輕了數(shù)據(jù)標(biāo)注工作能夠快速實(shí)現(xiàn)模型訓(xùn)練,算法流程如圖7所示。
圖7 CNN模型訓(xùn)練流程
對于一幅圖像I,自動生成兩條訓(xùn)練數(shù)據(jù),訓(xùn)練數(shù)據(jù)提取步驟如下:
1) 對當(dāng)前圖像進(jìn)行降采樣,縮放到224×224的大小,得到圖像Ir,記為數(shù)據(jù)X1;
2) 對Ir四角區(qū)域各隨機(jī)采一點(diǎn),作為扭曲圖像的頂點(diǎn),計算投影的單應(yīng)性矩陣H;
3) 通過單應(yīng)性矩陣映射得到扭曲圖像Iw,記為數(shù)據(jù)X2;
4)Ir和Iw隨機(jī)選擇,一個進(jìn)行GIST特征提取,得到0至1區(qū)間的960維的浮點(diǎn)向量,記為數(shù)據(jù)X3。
圖8展示了隨機(jī)扭曲的效果,在四角的框內(nèi)隨機(jī)選一點(diǎn)作為扭曲后圖像的頂點(diǎn),能較好地模擬運(yùn)動造成的視角變化。
圖8 視角變化模擬
本文修改了Resnet-18的結(jié)構(gòu),將第一個全連接層的輸出維度改為256,最后一個全連接層的輸出維度改為960層,其他參數(shù)保持不變。本文希望得到的模型能提取圖像的全局特征,具有光照不變性,同時具有視角不變性,設(shè)計模型結(jié)構(gòu)如圖9所示。將扭曲前后的圖像分別通過網(wǎng)絡(luò)模型,X1得到960維的浮點(diǎn)向量F1,X2得到960維的浮點(diǎn)向量F2,當(dāng)兩者歐氏距離足夠小時,認(rèn)為兩個向量特征足夠相似。GIST能有效提取圖像的空間包絡(luò)信息,有良好的特征區(qū)分度和光照不變性,通過擬合GIST特征,我們的模型提取的CNN特征也具有相同的特性。損失函數(shù)為:
loss=loss1+loss2=‖F(xiàn)1-F2‖2+‖X3-F2‖2
(9)
圖9 網(wǎng)絡(luò)模型結(jié)構(gòu)
為了衡量本文算法的準(zhǔn)確度和運(yùn)行效率,本文在開源數(shù)據(jù)集和實(shí)際場景下各做了測試。實(shí)驗(yàn)平臺為Ubuntu 16.04環(huán)境,處理器為i5-4570,顯卡為1070ti,深度學(xué)習(xí)框架使用caffe。測試指標(biāo)主要為回環(huán)100%準(zhǔn)確率下的召回率,以及算法的運(yùn)算時間和內(nèi)存占用。
本文采用了Euroc、TUM、KITTI_06數(shù)據(jù)集共約20 000幅圖片進(jìn)行訓(xùn)練,訓(xùn)練時超參數(shù)設(shè)置如表1所示,訓(xùn)練得到的CNN模型大小約30 MB。
表1 CNN網(wǎng)絡(luò)模型超參數(shù)設(shè)置
雙目相機(jī)采集的左右圖像對應(yīng)為同一場景,將采集到的數(shù)目圖片打亂順序放置在同一個文件夾下,以此讀取圖片并做回環(huán)檢測,當(dāng)匹配到對應(yīng)圖片時,認(rèn)為檢測成功。為保證100%的準(zhǔn)確率,本文采用空間驗(yàn)證,對匹配的圖片對計算相對位姿,當(dāng)相對距離d<30 cm,相對旋轉(zhuǎn)角θ<30°時,認(rèn)為回環(huán)檢測成功。
本文采用的測試的數(shù)據(jù)集包括FAB-Map中的New College(NC)、City Center(CC)、無人駕駛中的測雙目測試集KITTI_00和我們自采集的室內(nèi)和室外約100幅圖片,圖10為自采數(shù)據(jù)集中室內(nèi)回環(huán)檢測成功的情況。NC與CC的數(shù)據(jù)集為室內(nèi)到室外的一段視頻分割開來,光線變化明顯,有大量重復(fù)特征和視角變動。KITTI_0數(shù)據(jù)集為室外運(yùn)行車輛拍攝的前方道路,特征分布較為單一,直接用全局特征比較效果較差。本文采集的室內(nèi)圖片特征分布較多,但受光線影響干擾強(qiáng)烈。
圖10 自采數(shù)據(jù)集回環(huán)檢測匹配成功
為了與其他算法做性能比較,我們選擇了DBow2算法和FAB-Map2.0的數(shù)據(jù),同時比較了用ResNet-18通用模型提取從CNN特征的效果。對ResNet-18的模型,本文提取res3b層輸出的128維浮點(diǎn)向量和fc 1 000層輸出的1 000維浮點(diǎn)向量作為CNN特征,以上算法均采用默認(rèn)設(shè)置。本文算法中主要調(diào)整參數(shù)為標(biāo)志區(qū)域提取個數(shù)L和增量式詞典中單詞最大值M。設(shè)置L=50、M=128,記為方案1;設(shè)置L=25、M=128,記為方案2;設(shè)置L=50、M=256,記為方案3。ResNet-18模型的表中提取和最大單詞采用方案1相同設(shè)置。實(shí)驗(yàn)結(jié)果如表2所示。
表2 在100%準(zhǔn)確率情況下召回率 %
通過比較Dbow2和ResNet-18的結(jié)果,說明用傳統(tǒng)方法提取特征點(diǎn),聚類形成詞袋模型的方法效果較差,而當(dāng)用CNN提取特征時,對回環(huán)檢測判斷的準(zhǔn)確度會有顯著提高。通過比較ResNet18和方案1的結(jié)果,我們發(fā)現(xiàn)通過模擬運(yùn)動扭曲產(chǎn)生的模型識別準(zhǔn)確率更好,說明我們訓(xùn)練的模型對運(yùn)動變化更魯棒。對比方案1和方案2,隨著圖像中提取標(biāo)志物數(shù)目的增多,各個特征的區(qū)別度也更明顯,對回環(huán)檢測判斷得更準(zhǔn)確。對比方案2和方案3,隨著詞典文件中最多單詞數(shù)目的提升,回環(huán)檢測效果小幅提升,說明了更長的詞典向量具有更好的區(qū)分度,計算圖像的相似度得分更加準(zhǔn)確。無論是室內(nèi)還是室外環(huán)境,本文的算法均能在保證準(zhǔn)確率的前提下獲得平均約70%的召回率,能準(zhǔn)確地識別出回環(huán),滿足VSLAM的任務(wù)需求。
在VSLAM系統(tǒng)中,隨著關(guān)鍵幀圖像越來越多,對內(nèi)存的占用也越來越大。本文采取的增量式詞典能控制詞典文件的內(nèi)存占用。在方案1的配置下,統(tǒng)計了在測試KITTI_00數(shù)據(jù)集時中,算法各個步驟所花費(fèi)平均時間,如表3所示。同時統(tǒng)計了增量式詞典所占用內(nèi)存隨圖像數(shù)目增長而變化的趨勢,如圖11所示。
表3 算法各步驟平均時間 ms
圖11 詞典占用內(nèi)存隨圖片數(shù)量增長而變化
可以看出,對已經(jīng)訓(xùn)練好的模型進(jìn)行CNN特征提取速度非常快,基本能實(shí)現(xiàn)實(shí)時查詢。在VSLAM系統(tǒng)中,回環(huán)檢測在選擇新的關(guān)鍵幀后進(jìn)行,算法運(yùn)行時間少于關(guān)鍵幀之間的時間間隔,本文的算法能滿足實(shí)時性需求。
本文提出的基于CNN特征提取和增量式詞典的回環(huán)檢測算法,能快速魯棒地實(shí)現(xiàn)在VSLAM中的回環(huán)檢測和重定位的任務(wù),在不同的環(huán)境場景中都能在保證準(zhǔn)確率的情況下識別足夠多的回環(huán)。在特征提取方面優(yōu)于傳統(tǒng)方法,同時內(nèi)存占用遠(yuǎn)小于傳統(tǒng)詞袋模型方法,能自適應(yīng)地構(gòu)造環(huán)境中特征詞典。同時無監(jiān)督的模型訓(xùn)練方法極大地減少了標(biāo)注工作量,可用于快速的模型訓(xùn)練與部署。在之后的工作中,希望將算法繼承到完整的VSLAM系統(tǒng)中,同時針對嵌入式設(shè)備進(jìn)行性能優(yōu)化,進(jìn)一步增強(qiáng)實(shí)時性。