?

基于深度學習的回環檢測算法研究?

2019-03-26 08:43羅順心張孫杰
計算機與數字工程 2019年3期
關鍵詞:回環特征向量類別

羅順心 張孫杰

(上海理工大學光電信息與計算機學院 上海 200093)

1 引言

21世紀的今天,機器人漸漸的浮現在人們的視線中,它給人們帶來了更多的便利。例如掃地機器 人 ,它 通 過 SLAM[1](Simultaneous Localization and Mapping)系統構建出一個房間的地圖,同時定位出自己在房間中的位置,然后在根據SLAM系統構建的地圖規劃出自己清掃的路徑,打掃整個房間。同時它也會計算自己剩余的電量,當電量低到一定的時候,根據建立的地圖,自動導航到充電的位置,不需要人參與操作。又如餐廳機器人,它也是通過SLAM系統構建出地圖,然后根據路徑規劃將餐點送到需要的客人附近。當然,生活中還有很多機器人的例子,我們同樣可以看出在機器人的使用中,SLAM扮演著一個不可缺少的角色。近些年,傳感器的發展也越來越精密和多樣化,尤其是攝像頭的發展,給SLAM系統帶來了重要的改革。例如單目攝像頭、雙目攝像頭、Kinect、RGBD相機等,我們把基于攝像頭的SLAM系統稱為V-SLAM[2~4](Visual Simultaneous Localiz-ation and Mapping)。

在V-SLAM系統中,回環檢測[5](Loop Closure Detection,LCD)一直是一個重要的環節,它能夠使得機器人更加準確地去識別自己曾經去過的位置,通過進行辨識過去的位置,檢測回環來解決位姿的漂移問題。當判斷當前位置是曾經到過的地方,那么機器人記錄的軌跡就會形成了一個局部的回環,使用G2O[6]來對位姿進行重新修正,可以減少機器人的積累誤差,使得地圖的建立更加準確。傳統的視覺 SLAM 中回環檢測的方法視覺詞帶模型[5,7~8](Bag of Words,BOW),它通過收集大量的圖片,提取圖片中的特征點,然后通過K-means[9]的方法聚類,把特征點分成K個類別,建立一個特征點集合的字典。將一張圖片輸入,提取圖片的特征點,然后查閱字典,該特征點屬于哪一類別,以向量的形式的輸出。它使用字典中的聚類特征,描述圖像,進而判斷兩張圖片的相似程度。人是根據比對圖片中出現的物體、顏色、背景等諸多因素判斷出是否是曾經經過的地方。那么機器人應該也能夠像人一樣,擺脫像素點,從更高的層次去實現回環檢測。深度學習[10](Deep Learning)的發展越來越火熱,它的快速發展為我們的這一想法提供了實現的可能性。通過使用深層的卷積神經網路[11](Convolutional Neural Network)提取圖像更高層次的特征信息,判斷圖片的相似程度。在本篇文章中,基于深層卷積神經網絡實現了回環檢測的,它擁有著更高的準確率,更好的實時性。

2 深度學習回環檢測算法原理

本模塊主要是實現回環檢測功能?;丨h檢測的實現主要由SSD[12](Single Shot Detector)網絡、特征向量預處理、判斷回環三個部分組成。SSD網絡是深度學習中實現目標檢測[13~14]的方法,它有著非常好的準確率,同時在實時性方面也非常出眾。本文中使用SSD網絡作為特片特征的提取。特征向量預處理則是把通過SSD網絡提取出來的特征信息,進行篩選,大大提高了回環檢測判斷的實時性?;丨h檢測的判斷則是通過計算圖片之間相似度的得分,判斷是否有檢測到回環。算法流程圖如圖1所示。

2.1 SSD網絡原理

SSD是一種用于物體檢測(Object De-tection)的方法,它能夠預測輸入圖片中的物體,以及物體所在的位置。我們利用SSD網絡,來提取圖片的特征信息,利用物體的類別建立一個檢測回環的特征向量。

SSD的網絡(如圖2所示),它的輸入是300*300 的圖片,使用了 VGG-16[15]的網絡框架作為基礎,將兩個全連接層FC6和FC7轉化為卷積層conv6和conv7,當然,你也可以自己去更改使用Googlenet[16]、Alexnet[17]等作為基礎網絡框架。然后在VGG-16的基礎網絡之后添加了幾個輔助的網絡結構,產生了多尺度特征圖檢測、檢測的卷積預測器,默認框與寬高比三個部分。

多尺度特征圖檢測:從SSD網絡中可以看到在VGG-16之后使用卷積網絡添加了幾個輔助網絡結構,產生了一系列的特征圖,這些特征圖隨著網絡變深,特征圖逐漸的尺寸也逐漸減小。例如38*38、19*19、10*10、5*5等都是產生的不同尺寸的特征圖。

圖2 SSD網絡

檢測的卷積預測器:由于在基礎網絡之后,又生成了不同尺寸的特征圖,這些特征圖通過使用卷積預測器生成一組固定的預測集合。例如在5*5的特征圖,先對該特征圖進行歸一化,然后使用了6*(classes+4)個3*3卷積核對該特征圖進行卷積,得到一個5*5*(6*(classes+4))Tensor,為什么使用該數量的卷積核數呢?因為要使得輸出的結果是我們想要得到的一個矩陣形式,矩陣的寬和高等于特征圖的寬和高,可以理解為將輸入的圖片分成了5*5的柵格,矩陣的深度代表的是6*(classes+4),代表著每一個柵格中輸出6個邊界框,每一個邊界框中包含預類別概率大小,以及該邊界框相對于默認邊界框[16](Default box)的位置偏移量(位置的偏移量由4個參數組成),同樣的在38*38、19*19、10*10、3*3、1*1的特征圖中都進行了卷積操作,得到上述所需要的矩陣。

默認邊界框與寬高比:每一個邊界框相對于其對應特征圖中的位置都是固定的,在每一個特征圖中,要預測得到的邊界框與默認邊界框之間的偏移值,以及每一個邊界框中包含物體的置信度得分,在同一個柵格中假設有k個默認的邊界框,那么在該特征圖中就需要k*(C+4)個卷積預測器,對于m*m大小的特征圖,就會產生(c+4)*k*m*m個輸出結果。對于每一個默認邊界框它具有如下規定,它的寬高比使用如下公式:

其中,smin取值為0.2,smax取值為0.95,m是特征圖的個數,k代表的是第幾個特征圖(最底層的特征圖為k=1,最高層的特征圖為k=m)在最底層的特征圖的尺度是0.2,最高層的特征圖尺度是0.95,使用不同的寬高比得到每一個默認邊界框的寬度和高度:

其中 ||fk表示第K個特征圖的尺寸大?。梢岳斫鉃槟J邊界框的中心點對應特征圖映射在圖像柵格的中心點)。

SSD的損失函數:SSD的損失函數主要由兩個部分組成,一個是物體類別的置信度分數,一個是物體的位置,其中對于置信度采用的是Softmax Loss函數,物體的位置回歸采用的是Smooth L1 Loss函數。Loss函數如下:(根據 α參數調節confidence loss和location loss之間的權重,默認設置為1,指的是預測位置,g指的是真實人為標注的位置)

位置回歸Loss函數:

物體置信度Loss函數:

其中N指的是正樣本數(正樣本:首先選出默認邊界框與真實邊界框(ground true box)的 IOU[18~19](Intersection over Union)最大的默認邊界框作為正樣本,然后將剩余的未匹配的IOU>0.5作為正樣本,剩余的為負樣本,IOU指的就是交并比),xpij∈當=1時,指的就是第i個默認邊界框與類別為p的第j個真實邊界框相匹配,即第i個默認邊界框為正樣本。反之,不匹配則為0。d指的是默認框的位置,g代表的是人為標注的真實框的位置。

由于SSD網絡在預測的時候對于同一個物體擁有很多個邊界框,所以使用非極大值抑制[20~21](Non Maximum Suppression,NMS)的方法,篩選出最優的邊界框。首先對預測的物體進行歸類,對每一類都進行下面的操作,每從所有預測的中選出置信度最高的,剔除掉剩余的邊界框與其IOU>0.5的邊界框,在剩余的邊界框中再次選擇最后置信度的邊界框,重復上面的操作,直到所有邊界框都被執行。

2.2 特征向量化

在通過SSD網絡之后,將會得到物體的位置信息,數量信息以及類別信息,把它以{“類別”,“位置”}的向量形式保存,其中類別的特征向量表示形式如圖3,是n*1的向量。在圖3中,類別特征向量的每個方格即為對應的種類,方格中的數值指的是該種類物品的個數,如果輸入的圖像中沒有該物體,那么該方格中的數值為0。第二列為“位置”特征向量,如果輸入的圖像中含有A類物品有3個,那么該第一行的位置特征向量就保存了三個該種類物體的位置,物體的位置是由包裹的物體的邊界框組成,因此每一類物體的位置是以[xmin,ymin,xmax,ymax]的形式保存的,xmin、ymin指的是物體邊界框的左下角像素坐標,xmax、ymax指物體邊界框的右上角像素坐標。所以位置的表示形式:Location=[xmin,ymin,xmax,ymax]。

圖3 向量化示意圖

在圖3中,左邊的白色大框表示一張圖片,A、B、C、D、E、G分別為該圖中所包含的物體,右圖為圖片經過向量化之的形式,A~G為物體的不同類別(這里根據情況建立字典中類別的種類),第二列為每個對應種類在該圖片中的數量,第二列稱為類特征向量,第三列稱為位置特征向量,在圖3中物體的位置分別用PA1、PA2、PB1、……表示,圖片中每個種類包含幾個物體,那么在對應的位置特征向量的行中就會有幾個位置保存。

在向量化的過程中,由于一張圖片中可能存在多個相同種類的物體,因此在位置特征向量中需要對物體的位置順序統一放置,使用像素距離(如圖4)進行統一約束。通過圖4,利用物體位置的左上角像素坐標 [xmin,ymax],獲得物體到像素坐標系原點的距離,通過使用物體到原點的距離對物體的位置進行排序。

在圖4中,A,B,C指的是不同種類的物體,PA1,PA2,PA3分別為三個A類物體的位置。利用PA1,PA2,PA3的左上角像素坐標,分別算出對應的三個物體到原點的距離,因此,得PA1<PA2<PA3到原點得距離,所以在對應得位置向量中分別以PA1、PA2、PA3得順序保存。

2.3 判斷回環

在視覺SLAM中,機器人不斷通過移動,拍取了一幀幀的關鍵幀,每拍取得一幀關鍵幀,就使用SSD網絡,提取所需要的特征,然后對其向量化得到對應的向量化特征向量,回環得判斷主要是把當前幀圖片與歷史幀得圖片進行比較,而本文中,則是通過把圖片通過向化描述,因此,即是把當前特征向量和之前所保存的關鍵幀的特征向量進行比較,判斷是否回環?;丨h檢測流程圖如圖5。主要包含以下四個步驟:

步驟一:首先對歷史幀圖片進行預處理,在視覺SLAM中,由于擁有著大量的歷史關鍵幀對應得特征向量,找到回環變得相當繁瑣,本文采取了預處理得方式,對大量的歷史幀進行簡單判斷是否有回環的可能性,大大提高了回環檢測得實時性。計算圖片中所包含的物體的數量總和:classes_num=然后對當前幀和歷史幀的所包含的物體數量總和進行判斷,即判斷classes_num 1是否等于classes_num 2,如果相等,則執行第二步,如果不相等,則與下一個歷史幀重新執行本步驟。

步驟二:在第一步成立的條件下,第二步也是對歷史幀在進行回環判斷得時候進行預處理,通過兩次簡單的預處理,排除了大量的歷史關鍵幀,大大提高了判斷回環檢測的實時性。在第一步成立的條件下,判斷當前幀特征向量和歷史幀特征向量中每一種類別的數量是否相等,用 f表示,即:,n代表的是類別數,C1代表當前圖片的類別特征向量,C2代表輸入得歷史幀的類別特征向量。若 f等于0,則表示當前幀和歷史幀中中每一種類的數量相等,若不為0,則對下一個歷史幀重新執行第一步。

步驟三:通過前面兩步的預處理之后,得到了有可能是回環的關鍵幀,將該幀與當前幀進行相比較,計算兩幀的相似度:

Areaij即為第i個種類第j個物體的區域面積,Area1表示當前幀的區域面積,Area1表示歷史幀的區域面積。為第i個種類第j個物體的像素坐標。 p為計算出的兩張圖片相似程度,取值范圍為 p∈[0,1]。

步驟四:通過步驟三,得到當前幀和歷史幀的相似程度P,判斷是否P≥相似度閾值,若為真,則檢測到回環。若為假,則沒有檢測到回環,對下一個歷史幀執行步驟一。相似度閾值是一個經驗值,由于本方法得到的結果相對準確,因此可以適當地降低閾值,增大現實生活中存在的有各種環境因素導致的誤差。

圖5 判斷回環流程圖

3 實驗結果

在本實驗中,使用的環境是基于Ubuntu16.04系統,GPU為英偉達GTX1080,使用caffe的深度學習框架,搭建SSD網絡環境。SSD的網絡使用的是COCO的訓練集和訓練的權重,沒有針對性的對本文中所建立的字典進行單獨訓練,所以權重參數并不是最優的,但是已經達到到了非常不錯的效果。如果想要獲得更好的效果,可以重新建立更合適的字典特征,重新訓練SSD網絡的權重,以達到更好的判斷回環的效果。

如圖6所示,圖(a)和圖(b)為同一時刻在相同的位置拍攝的兩張圖片,圖(c)為與圖(a)和圖(b)在不同的光線下拍攝的圖片。

圖6 實驗數據圖

通過SSD網絡獲取如下數據:

表1 SSD網絡獲取的圖(a)數據

表2 SSD網絡獲取的圖(b)數據

表3 SSD網絡獲取的圖(c)數據

通過SSD網絡,提取特征數據,計算相似度。

圖7 比較相似度

根據上述圖表,得到了圖7(a)、(b)、(c)的描述向量以及相似度情況:圖(a)和圖(b)相似度為0.97,圖(a)和圖(c)的相似度為0.97,圖(b)和圖(c)的相似度為0.97。通過實驗,我們可以看出,當移動機器人在移動過程中,到達曾經經過的位置時,能夠判斷出回環檢測,且判斷的相似度為高達98%。根據圖(a)與圖(c)、圖(b)與圖(c)的相似度圖表中,可以看出在不同的光線下都能準確地識別出回環,相似度高達97%,說明光線對該方法檢測回環的影響不大,能夠在光線變化的環境中仍能非常好地檢測出回環。

4 結語

本文使用了基于圖像的方式,解決了移動機器人在移動過程中產生的漂移問題。提出了基于深度學習的方法實現回環檢測。使用SSD的卷積神經網絡來提取圖片的特征,然后基于提取的特征,對圖片使用向量化描述,通過兩次預處理,能夠篩選掉大量的圖片,大大提高了回環判斷的實時性,最后通過IOU的方法,對兩張圖片的相似度進行計算,判斷兩張圖片的相似度,實現回環檢測。

猜你喜歡
回環特征向量類別
克羅內克積的特征向量
高中數學特征值和特征向量解題策略
嘟嘟闖關記
一起去圖書館吧
三個高階微分方程的解法研究
簡析基于概率預測的網絡數學模型建構
《中國現代詩歌散文欣賞》之新詩教學多樣性探索
選相紙 打照片
大自然的音籟 靈魂的交響
矩陣方法求一類數列的通項
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合