李 曉,馬社祥,李 嘯
(1.天津理工大學(xué) 電氣電子工程學(xué)院,天津 300384;2.天津理工大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院,天津 300384)
隨著現(xiàn)代計(jì)算機(jī)技術(shù)和人工智能的發(fā)展,自主移動機(jī)器人已成為機(jī)器人領(lǐng)域的一個熱門和重要的研究方向。同時定位和建圖(Simultaneous Localization and Mapping,SLAM)是近年來機(jī)器人研究中最活躍的領(lǐng)域之一。機(jī)器人在未知環(huán)境中運(yùn)動時,需要在完全未知的條件下創(chuàng)建地圖,并利用地圖進(jìn)行自主定位和導(dǎo)航。這個過程被稱為SLAM。近年來,SLAM的研究取得了很大的進(jìn)展,并在室內(nèi)外各種不同的環(huán)境中得到了應(yīng)用。以相機(jī)為傳感器的SLAM稱為視覺SLAM。在視覺SLAM中,回環(huán)檢測(Loop Closure Detection,LCD)是非常重要的一部分,它通過識別以前訪問過的地方減少累積誤差,從而提高地圖的準(zhǔn)確性。如果檢測到回環(huán),通過把信息傳遞給后端進(jìn)行優(yōu)化處理?;丨h(huán)是一個比后端更加緊湊、準(zhǔn)確的約束,這一約束條件可以形成一個拓?fù)湟恢碌能壽E地圖。如果能夠檢測到回環(huán),對其優(yōu)化,就可以讓建圖結(jié)果更加準(zhǔn)確。
在回環(huán)檢測中有兩種常見的方法:基于里程計(jì)的方法和基于外觀的方法。基于里程計(jì)的方法假定里程計(jì)足夠精確,并通過使用里程表找到最接近當(dāng)前幀的前一幀,然而由于里程計(jì)累積誤差不可避免,這一假設(shè)并不適用于實(shí)際環(huán)境?;谕庥^的方法通常用于視覺SLAM系統(tǒng)中,它直接使用視覺數(shù)據(jù),例如機(jī)器人拍攝的圖像,只考慮觀察到的圖像,而不考慮與先前估計(jì)的軌跡的關(guān)系。因此,回環(huán)檢測可以看作一個相似性比較問題,即比較當(dāng)前圖像與之前圖像之間的相似性。
基于外觀的方法已經(jīng)成熟地應(yīng)用于回環(huán)檢測之中,并提出了很多圖像描述方法,例如詞袋模型(Bag of Words,BOW)、Fisher Vector(FV)、局部聚集特征描述符(Vector of Locally Aggregated Descriptors,VLAD),這些算法主要使用了局部圖像特征,如ORB(Oriented FAST and Rotated BRIEF)、SIFT(Scale Invariant Feature Transform)。其他算法使用全局圖像特征,如GIST(Generalized Search Trees)等。然而這些方法都是基于人工設(shè)計(jì)的特征,當(dāng)出現(xiàn)光線等環(huán)境變化時,算法的結(jié)果會受到影響。
研究表明,深度學(xué)習(xí)在各種計(jì)算機(jī)視覺任務(wù)中取得了顯著的成功。由于深度學(xué)習(xí)的成功,已被廣泛應(yīng)用于不同領(lǐng)域的幾個不同任務(wù)中,包括大規(guī)模的圖像分類、目標(biāo)檢測以及人臉驗(yàn)證等。目前,深度學(xué)習(xí)已顯示出優(yōu)于人類的性能,成為視覺任務(wù)的最新技術(shù)解決方案。深度學(xué)習(xí)在圖像識別、分類和理解等計(jì)算機(jī)研究領(lǐng)域表現(xiàn)出了很強(qiáng)的性能,與傳統(tǒng)的人工設(shè)計(jì)特征不同,深度學(xué)習(xí)方法從原始的圖像中學(xué)習(xí)特征,更適合于環(huán)路閉合檢測。目前廣泛應(yīng)用于視覺SLAM回環(huán)檢測中的深度學(xué)習(xí)方法主要有兩類:一種是對自動編碼器進(jìn)行培訓(xùn),學(xué)習(xí)特征表示,并使用相似度或差分矩陣查找回環(huán);另一種是有監(jiān)督的算法,通過預(yù)先訓(xùn)練過的卷積神經(jīng)網(wǎng)絡(luò)模型提取圖像特征,Sunderhauf等用Image Net數(shù)據(jù)庫訓(xùn)練好的Alex Net網(wǎng)絡(luò)提取特征,發(fā)現(xiàn)經(jīng)過再訓(xùn)練后的網(wǎng)絡(luò)在回環(huán)檢測方面更具有優(yōu)勢,在復(fù)雜的光照情況下取得了很好的檢測效果。
為了進(jìn)一步提高回環(huán)檢測的準(zhǔn)確率以及運(yùn)行速度,本文提出基于VGG16的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行視覺SLAM回環(huán)檢測。采用預(yù)訓(xùn)練好的VGG16網(wǎng)絡(luò)構(gòu)架進(jìn)行特征提取。利用該卷積神經(jīng)網(wǎng)絡(luò)對數(shù)據(jù)集進(jìn)行特征提取,并進(jìn)行特征向量的相似度計(jì)算,判斷是否檢測到回環(huán)。最后驗(yàn)證了該網(wǎng)絡(luò)對視覺SLAM回環(huán)檢測的有效性。
VGGNet是由牛津大學(xué)計(jì)算機(jī)視覺組合和Google DeepMind公司研究員一起研發(fā)的深度卷積神經(jīng)網(wǎng)絡(luò)。該模型參加2014年的Image Net圖像分類與定位挑戰(zhàn)賽,取得了優(yōu)異成績。VGGNet探索了卷積神經(jīng)網(wǎng)絡(luò)的深度與其性能之間的關(guān)系,通過反復(fù)使用3×3的小型卷積核和2×2的最大池化層,VGGNet成功地構(gòu)筑了16~19層深的卷積神經(jīng)網(wǎng)絡(luò)。在圖像分類和目標(biāo)檢測任務(wù)中都表現(xiàn)出非常好的結(jié)果。在進(jìn)行圖像特征提取時選擇不同的算法會直接影響最終回環(huán)檢測的效果。
本文采用在Image Net數(shù)據(jù)集上預(yù)先訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò)VGG16進(jìn)行圖像的特征提取,具有良好的特征表述能力與可操作性。VGG16網(wǎng)絡(luò)的主要構(gòu)成是5個卷積層(Conv1、Conv2、Conv3、Conv4和Conv5),5個最大池化層(pool1、pool2、pool3、pool4和pool5)以及3個全連接層(fc6、fc7和fc8),一共16層網(wǎng)絡(luò)結(jié)構(gòu)。整個結(jié)構(gòu)的操作過程是:第一次先經(jīng)過兩次64個卷積核的卷積操作,然后采用一次最大池化操作,接著經(jīng)過兩次128個卷積核的卷積之后,再次池化,然后重復(fù)兩次三個512個卷積核的卷積后,再池化,最后是經(jīng)過三個全連接層。它的網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 VGG16網(wǎng)絡(luò)結(jié)構(gòu)
原VGG卷積神經(jīng)網(wǎng)絡(luò)的輸出結(jié)構(gòu)主要用來進(jìn)行圖像的分類和檢索,不適合用于圖像特征的表述。網(wǎng)絡(luò)末端的全連接層丟失位置信息保留語義信息,在整個卷積神經(jīng)網(wǎng)絡(luò)中起到“分類器”的作用。而前端的卷積層和池化層等操作則是將原始數(shù)據(jù)映射到隱層特征空間中,提取局部特征。因此全連接層之前的池化層更加適用于視覺SLAM的回環(huán)檢測。對于其他網(wǎng)絡(luò)層,在New college數(shù)據(jù)集下各個層的特征提取可視化圖如圖2所示。其中,Conv1和pool1層提取的特征傾向于對圖像邊緣的檢測,過于粗糙不能蘊(yùn)含圖像的全局信息。與淺層次的卷積層和池化層相比,pool5這樣層次更深的層對于視覺SLAM的回環(huán)檢測效果比較突出,最后的全連接層對前面的卷積層和池化層提取到的特征進(jìn)行融合和分類,主要用于數(shù)據(jù)集的分類。因此本文選取VGG16網(wǎng)絡(luò)中末端的池化層作為圖像的全局特征表示。
圖2 各層特征可視化圖
相似度(Similarity)度量,即計(jì)算個體間的相似程度,相似度度量的值越小,說明個體間相似度越小,相似度的值越大說明個體差異越大。通過VGG網(wǎng)絡(luò)進(jìn)行特征提取后,需要通過判斷輸入圖像特征的相似度進(jìn)行回環(huán)判斷,本文利用感知哈希算法判斷輸出特征的相似度。
由于回環(huán)檢測是從歷史幀的數(shù)據(jù)中尋找與當(dāng)前幀匹配的圖像信息,這類似于圖像檢索,因此可以將回環(huán)檢測問題看作是一個圖像檢索問題。感知哈希算法(Perceptual Hash Algorithm)是圖片搜索算法的一種,它的基本思想是用一個指紋字符串表征一幅圖像,然后比較兩個字符串之間的漢明距離,漢明距離小的將其匹配。結(jié)果越接近,就說明圖片越相似。本文主要利用的算法是感知哈希算法中的差異值哈希算法(dHash)。主要思想是通過分別計(jì)算兩張圖片的dHash值,然后根據(jù)dHash值計(jì)算兩張圖片的漢明距離(Hamming Distance),最后通過漢明距離的大小判斷兩張圖片的相似程度。
感知哈希算法是一種基于人類對外界事物認(rèn)知的信息處理理論,能夠?qū)⑾嗨聘兄獌?nèi)容的數(shù)據(jù)集映射為一段獨(dú)特的數(shù)字編碼,即哈希碼,哈希碼是一種較高效的特征量化方法,如將原圖像記為,生成的哈希碼記為,感知哈希函數(shù)記為PH,則PH:→,∈{0,1},就是圖像的指紋,可以表征該圖像的特征信息。差異值哈希算法的具體步驟如下:
步驟1:縮放圖片,將圖像縮放為9×8的大小,共有72個像素點(diǎn)。
步驟2:轉(zhuǎn)化為灰度圖,把縮放后的圖片轉(zhuǎn)化為256階的灰度圖。
步驟3:計(jì)算差異值,dHash算法工作在相鄰像素之間,這樣每行9個像素之間產(chǎn)生了8個不同的差異值,一共8行,產(chǎn)生64個差異值。
步驟4:獲得指紋,如果左邊的像素比右邊的更亮,則記錄為1,否則為0。
在進(jìn)行回環(huán)檢測處理時,相鄰圖像幀的特征通常相關(guān)性比較大,相似度很高,容易被誤判成回環(huán)。因此,在尋找回環(huán)區(qū)域的過程中,需要先進(jìn)行預(yù)處理,設(shè)置比較相似度的圖像范圍。假設(shè)是與第幀圖像相鄰幀的數(shù)目,則與第幀圖像相似度比較的圖像范圍應(yīng)該為第幀到第-幀。本文提出的基于VGG16卷積神經(jīng)網(wǎng)絡(luò)的閉環(huán)檢測方法的流程圖如圖3所示。對于采集到的第幀圖像,首先對其進(jìn)行減均值、灰度化等預(yù)處理,然后將圖像輸入到VGG16卷積神經(jīng)網(wǎng)絡(luò)模型中,提取全連接層之前的池化層輸出作為圖像的特征描述符,最后將提取到的特征描述符與先前圖像的特征向量描述符利用哈希算法比較相似度,若相似度大于設(shè)定的閾值,則判斷出現(xiàn)閉環(huán)區(qū)域。回環(huán)檢測的流程圖如圖3所示。
圖3 判斷回環(huán)流程圖
在本文的實(shí)驗(yàn)中,配備雙路TITAN XP GPU,IntelXeonCPU E5?26650,2.4 GHz×32,62 GB內(nèi)存,Ubuntu 16.04 LTS操作系統(tǒng)。使用機(jī)器學(xué)習(xí)框架TensorFlow進(jìn)行VGG16網(wǎng)絡(luò)的構(gòu)建。利用GPU的并行計(jì)算能力,安裝了CUDA 10.0,通過CUDNN加速庫加速GPU的計(jì)算。軟件運(yùn)行環(huán)境是PyCharm,使用Python程序進(jìn)行卷積神經(jīng)網(wǎng)絡(luò)的特征提取和相似度計(jì)算。VGG16網(wǎng)絡(luò)主要使用Image Net數(shù)據(jù)集的訓(xùn)練權(quán)重。
本文使用的數(shù)據(jù)集是牛頓大學(xué)機(jī)器人團(tuán)隊(duì)收集的用于視覺SLAM回環(huán)檢測的New college數(shù)據(jù)集,如圖4所示。其中共2 174張圖像,按收集順序編號。相機(jī)安裝在云平臺上,并在機(jī)器人的左右兩側(cè)收集圖像。每1.5 m觸發(fā)一次圖像收集(基于里程計(jì))。收集圖像時車輛處于運(yùn)動狀態(tài),因此機(jī)器人在收集左右圖像之間行駛了一段距離。
圖4 New college數(shù)據(jù)集在同一位置左右攝像頭采集的圖像
為了比較基于深度學(xué)習(xí)的算法和傳統(tǒng)算法的不同,采用不同的方法在同一數(shù)據(jù)集上進(jìn)行比較。本文通過對比提取局部特征信息的BOW算法和提取全局信息的GIST算法兩種傳統(tǒng)回環(huán)檢測算法。另外還比較了基于深度學(xué)習(xí)的AlexNet網(wǎng)絡(luò)的回環(huán)檢測算法和基于Autoencoder的回環(huán)檢測方法。具體結(jié)果如表1所示。
表1 不同算法在數(shù)據(jù)集上的準(zhǔn)確度
由表1可以看出,傳統(tǒng)算法和基于深度學(xué)習(xí)算法在準(zhǔn)確度上有很大的不同,基于傳統(tǒng)算法人工設(shè)計(jì)特征的準(zhǔn)確度在60%左右,而基于深度學(xué)習(xí)算法的準(zhǔn)確度均在70%以上。本文提出的基于VGG16的算法精度雖然低于AlexNet算法,但是也取得了不錯的效果。
性能評估的另一個重要標(biāo)準(zhǔn)就是算法的處理時間。在視覺SLAM系統(tǒng)中,為了實(shí)現(xiàn)機(jī)器人的同時定位和建圖,往往要求回環(huán)檢測的實(shí)時性要高,因此本文比較了傳統(tǒng)算法和深度學(xué)習(xí)算法的處理時間,具體如表2所示。
表2 不同算法在數(shù)據(jù)集上的處理時間
由表2可知,傳統(tǒng)算法和基于深度學(xué)習(xí)算法在時間處理上具有較大的差距,基于深度學(xué)習(xí)算法的處理時間遠(yuǎn)遠(yuǎn)短于傳統(tǒng)算法,而本文提出的基于VGG16的回環(huán)檢測算法相對于傳統(tǒng)的ORB?SLAM中基于詞袋模型的回環(huán)檢測算法,處理時間減少了68.8%,滿足視覺SLAM的實(shí)時性要求。
本文采用深度學(xué)習(xí)的方法,基于卷積神經(jīng)網(wǎng)絡(luò)VGG16對原始圖像進(jìn)行特征提取,用于視覺SLAM的回環(huán)檢測。傳統(tǒng)的回環(huán)檢測算法主要利用人工設(shè)計(jì)特征,與傳統(tǒng)算法相比,基于深度學(xué)習(xí)的回環(huán)檢測算法取得了更好的性能,顯著提高了檢測算法的準(zhǔn)確度和速度,并且降低了光線、天氣等環(huán)境變化時對檢測結(jié)果不穩(wěn)定的影響。深度學(xué)習(xí)和視覺SLAM的結(jié)合是當(dāng)下研究的熱點(diǎn),卷積神經(jīng)網(wǎng)絡(luò)這個強(qiáng)大的網(wǎng)絡(luò)結(jié)構(gòu)在計(jì)算機(jī)視覺領(lǐng)域取得了非常大的成功。本文只使用了VGG16的預(yù)訓(xùn)練模型進(jìn)行特征提取,下一步的工作將研究是否可以訓(xùn)練一個更適用于回環(huán)檢測的模型,并且將深度學(xué)習(xí)應(yīng)用于實(shí)時的視覺SLAM系統(tǒng)中。