国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于混合全局池化的回環(huán)檢測算法

2020-04-23 11:18:46宋周銳
計算機與現代化 2020年4期
關鍵詞:浮點數回環(huán)池化

宋周銳

(北京郵電大學可信分布式計算與服務教育部重點實驗室,北京 100876)

0 引 言

移動機器人需要較高的定位精度和效率,它是機器人正確執(zhí)行其他復雜任務的基礎。在全局定位系統(如GPS、北斗等)不能正常工作的場景中(如隧道、室內和其他復雜環(huán)境),機器人定位的誤差會隨時間積累而增大?;丨h(huán)檢測技術是指使得機器人識別二次經過某個地點的技術,它可以在一定程度上解決累積誤差問題,是移動機器人可靠工作的重要保障?;丨h(huán)檢測通過將第二次經過時的位姿與第一次經過時的位姿聯合起來,對移動機器人的全局位姿增添新的約束,達到優(yōu)化全局軌跡的目標,從而消除累積誤差,圖1展示了回環(huán)檢測前后累計誤差的對比,可以看出經過回環(huán)檢測以后軌跡更加準確。

圖1 回環(huán)檢測校正全局地圖

傳統的回環(huán)檢測算法依賴于人工設計的特征點描述子,采用類似于文本檢索的方法將圖片中的特征點描述子編碼為圖片特征向量。然而,人工設計的特征往往只能提取角點、線段等低級特征,不具備高級語義信息,在弱紋理、重復紋理場景中表現較差。近年來,深度學習技術在計算機視覺的多個領域中都取得了令人矚目的成就,將深度學習應用于回環(huán)檢測成為機器人領域的研究熱點之一?;谏疃葘W習框架的回環(huán)檢測算法能夠提取高級語義特征,相比于傳統算法更加魯棒,而且能夠更方便地針對機器人運行環(huán)境做出改進。

然而,由于移動機器人能提供的計算資源相對有限,難以支撐大型卷積神經網絡實時運行,基于深度學習的回環(huán)檢測一般都采用較淺的卷積神經網絡。顯然,小型卷積神經網絡難以應用到大型場景中,當機器人運動范圍較大時,小型網絡提取出的描述子可能不具備足夠的區(qū)分度。

基于圖片相似度的回環(huán)檢測本質是一種基于圖像內容的圖片檢索問題,因此可以借鑒圖像檢索的方法和評價標準來設計回環(huán)檢測算法并對其進行評價。本文選取了圖像檢索中常用的評價標準衡量算法性能。兩者的不同之處在于圖像檢索任務一般運行在服務器集群上,因此它可以采用大型卷積神經網絡在超大規(guī)模的圖像集中取得很高的精度。如果可以把在大規(guī)模數據集上訓練好的圖像檢索模型部署到移動機器人上,顯然可以取得非常好的成績??刹豢梢詫D像檢索的模型部署到移動機器人上呢?

文獻[1]在圖像檢索任務上取得了世界領先的精度,其中關鍵算法是GeM(Generalized Mean),但是GeM引入了復雜的非整數冪運算,不利于移動機器人平臺部署。在文獻[1]的基礎上,本文提出一種解決方案,即混合全局池化層來近似GeM,去除GeM中復雜的非整數冪運算,簡化運算復雜度,并達到與之相當的精度;同時,本文還提出一種基于塊浮點數的卷積神經網絡加速引擎,可以將卷積層中浮點數運算替換為定點數運算。與32位浮點算法相比,采用塊浮點算法可將加法運算的硬件能耗減少80%以上,乘法運算能耗減少20%。通過這2點改進,可以將圖像檢索算法部署到移動機器人上。

1 相關工作

1.1 基于深度學習的圖像特征提取相關工作

人為設計的特征點描述算法往往對光照變化較為敏感[2],因此學者們開始探索通過卷積神經網絡(CNN)來學習圖像描述子的方法[3-5]。文獻[6]將CNN運算過程中各卷積層的輸出結果作為圖片描述子,它將圖片輸入已經訓練好的CNN模型中,把CNN計算過程中各層的中間結果取出來,發(fā)現越深的層結果就越抽象。這種高度抽象的能力使得利用CNN提取圖片中的語義信息并保持高度的穩(wěn)定性成為可能。

文獻[7]采用了一種基于自編碼網絡的方法,它將原始圖片輸入到SDA(Stacked Denoising Auto-encoder)中,編碼網絡會學習一種對圖片的壓縮編碼方式,并根據解碼網絡解碼所得結果與原圖片的差異來調整編解碼網絡參數。本文使用自編碼網絡輸出的壓縮編碼作為圖片描述子,并在多個數據集上取得了state-of-art的效果。但是由于SDA的訓練與測試使用的是相同的數據集,缺乏對SDA的泛化能力的實驗論證。文獻[8]提出了一種輕量的回環(huán)檢測框架,它通過對圖片進行裁剪、旋轉構造訓練集訓練了一個較淺的卷積神經網絡用于回環(huán)檢測,它結構簡單、計算復雜度低,對移動機器人等計算資源受限平臺友好,但是它在大型數據集上表現不夠好,難以應對移動機器人長時間運行的場景。

文獻[9]將孿生網絡(siamese convolutional neural network)應用于回環(huán)檢測任務,提出了一種端到端(end-to-end)的解決方案。通過將圖片對輸入到孿生網絡中,調整網絡參數使得回環(huán)的圖片對在距離空間中更近。該方法使用了圖片對在網絡各層的輸出結果作為特征,形成層級化的圖片描述子,達到了既能利用低級特征也能利用高級特征的目標。同時,通過對這些特征進行加權處理使之保持在256維,降低了后續(xù)匹配的計算代價,整個模塊能以較快的速度運行。但是也正因為該網絡較淺,缺乏表達復雜多樣環(huán)境的能力,在大型場景中表現不夠理想。

1.2 卷積神經網絡加速相關工作

深度學習模型壓縮和剪枝技術主要用來降低深度學習模型的帶寬需求并縮小其存儲規(guī)模。壓縮和剪枝法的理論基礎是卷積神經網絡本身所帶有的冗余性,這2項技術通常結合使用。文獻[10]提出了一種在168個處理元素上的數據流存儲方式,通過只復用局部數據,達到了提升功率效率的目標。文獻[11]提出了一種屋頂模型(roofline model)來分析一個具體的CNN模型的計算和內存需求曲線,從而確定在指定FPGA或者專用芯片平臺上的最優(yōu)部署方法。另一種流行的思路是稀疏化CNN模型的參數。文獻[12-13]提出了一種3段式的壓縮方法,這3段分別是剪枝、量化參數再訓練、對量化后的參數進行哈夫曼編碼(Huffman coding)。通過這3段處理,顯著地壓縮了DNN的大小,并幾乎沒有精度損耗。然而該方法的問題在于重新訓練稀疏模型是非常耗時的,而且每次調整神經網絡架構都需要重復這一過程。同時,在導入FPGA之后,進行計算時依然使用的是浮點數運算。使用哈夫曼編碼在縮小了模型體積的同時也帶來了解碼的開銷,這就導致了模型加載時的額外開銷。文獻[14]使用的剪枝技術同樣有需要重新訓練的弊端,因為剪枝技術的本質在于通過反復嘗試找到關鍵連接并摒棄非關鍵連接,達到減少連接數目的目標。

與上述思路不同的是,替換數值表示形式[15-18]這種方法的主要出發(fā)點是定點運算所需要的硬件資源遠遠少于浮點運算所需要的計算資源。因此,如果將浮點數運算替換成定點數運算,那么,設計ASIC或FPGA就能夠有比較高的處理速度,同時獲得更高的能效比。然而,這種方法的難點在于如何設計一種數值表示方法使其兼具浮點數的范圍與定點數運算的簡便。這個領域的學者多采用定點數的方案,這種方案在網絡規(guī)模較小時尚能取得較好的效果,但是當網絡加深,維持原精度所需的數值長度就會快速增長。

上述2種方案還有一個共同的缺陷,它們都需要重新訓練,不利于快速部署模型,同時也不夠靈活,優(yōu)化效果因網絡模型而異。因此,本文提出一種基于塊浮點數[19]的數值表示方案,塊浮點數是一種兼具了浮點數的表示范圍和定點數的運算復雜度的表示形式,而且基于塊浮點數的優(yōu)化也不需要重新訓練網絡,使得網絡調整和部署非常方便。

2 基于卷積神經網絡的特征提取

2.1 損失函數

孿生網絡是一種用于衡量2個輸入相似程度的網絡,它將2個輸入映射到新的特征空間中,實現輸入的特征提取并在該特征空間中計算相似程度。它的特點是有2個權重共享的特征提取網絡,同時輸入2幅圖片,分別經過2個特征提取網絡后,計算特征之間的距離,以此來判斷2幅圖片之間的相似程度。孿生網絡使用Contrastive Loss,該目標函數一方面盡量減小屬于一個類別的2幅圖片(正樣本)之間的距離,另一方面盡可能加大不屬于同一個類別的圖片(負樣本)之間的距離,它的計算公式如下:

其中,d為2幅圖片特征向量之間的距離,一般定義為歐氏距離,計算公式如下:

d=||an-bn||2

margin是需要設定的參數,它控制著正負樣本距離的分水嶺,是后續(xù)根據網絡輸出距離判斷輸入樣本是正樣本還是負樣本的重要參考。y是樣本標簽,等于“1”時表明是正樣本,此時損失函數的值為距離平方,因此起到最小化正樣本之間距離的作用;y等于“0”時,表明為負樣本,此時損失函數中的后半項起作用,當網絡計算出負樣本之間的距離大于閾值時,損失函數達到最小值,因此可以起到將負樣本之間距離拉伸到閾值之上的作用。本文設定margin值為0.75。

2.2 特征提取網絡

VGG[20]系列網絡在2014年ILSVRC競賽亞軍遷移學習等任務中表現優(yōu)異,同時也是提取圖像特征的首選網絡之一。本文采用VGG16作為特征提取網絡,VGG16包括13層卷積層和4層最大池化層,足夠多的卷積層使得該網絡能夠提取到高級語義信息,較小的kernel size使得最后一層卷積層的感受野也在合理范圍內。

為了支持不同尺寸的圖片輸入,方便適應不同機器人的計算能力,本文去除VGG16中的全連接層,并將最后一層最大值池化層替換成了混合全局池化層,借助全局池化層將最后一層卷積層的輸出變成了向量,作為圖片描述子。

2.3 混合全局池化層

文獻[21]提出了一種拓展的局部池化層,結合了最大值池化和平均值池化的優(yōu)點,在圖像分類任務上取得了明顯的提升,并且引入的額外參數和計算量都非常小。本文借鑒這種拓展的池化層的思路,改進了全局池化層,成功應用在回環(huán)檢測任務中。拓展的全局池化層(Mixed Pooling, MXP),計算公式如下:

fmix(x)=a·fmax(x)+(1-a)favg(x)

其中,

可見,當a取1時,MXP層的表現為最大值池化,當a等于0時,MXP的表現為平均值池化。在進行梯度更新時,后傳公式為:

其中,1[·]表示括號內等式成立時取1,否則取0。

3 基于塊浮點數的卷積神經網絡加速

3.1 塊浮點數的定義

使用塊浮點數表示數值時,隸屬于同一個塊的n個數共享同一個乘數因子,稱之為塊指數。塊指數是由n個數中絕對值最大的數確定的,并且,其余的數將會進行移位操作向絕對值最大數對齊。確定塊指數并對齊其他數的過程稱為塊化。

為簡化后續(xù)行文表述,在此預先引入一些符號,同時使用數學語言闡述塊浮點數的定義。對于某一群數,記作X,xi是X中的第i個數,xi的尾數部分和指數部分分別記作mi和ei。對X進行塊化后結果記為X′,該塊的尾數部分和塊指數分別表示為M′X和εX。以下舉例說明塊化過程,給定一個包含有N個數的塊X,可以表示為:

X=(x1,…,xi,…,xN)

=(m1×2e1,…,mi×2ei,…,mN×2eN)

使用塊浮點數表示時,X塊化為X′,寫作:

X′=(x′1,…,x′i,…,x′N)=M′X×2εX

其中:

M′X=(m′1,…,m′i,…,m′N)

εX是塊X中最大的指數值,mi是各個塊中各個元素對齊后的尾數部分,它是根據下式計算的:

m′i=mi?(εX-ei)

其中,a?b表示將a向右移動b位。

3.2 塊浮點數矩陣乘法數據流

圖2 卷積運算展開為矩陣乘法

為了更好地理解塊浮點數在卷積神經網絡中的應用方式,本文首先介紹一種將卷積運算變換為矩陣運算的方法。在轉換為矩陣運算后,卷積核和輸入特征圖展開為2個矩陣,分別記作W以及I。具體來講,歸屬于同一輸出特征圖的卷積核展開成W中的一個行向量,歸屬于同一個輸出像素點的輸入特征圖中對應的感受野組成了I中的列向量。如圖2所示,輸出矩陣O的第m行、第n列元素對應著第m個卷積核在第n個感受野上卷積對應的輸出。需要指出的是,將卷積運算轉換為矩陣運算的開銷是不容忽略的,在高性能CNN加速器的設計中,都采用的是按照卷積方式讀取數據流[22]。在本文中,采用矩陣的形式進行計算的目的是方便核心思想的表達,不需引入復雜的數據調度。

為說明矩陣W和I塊化的過程,考慮最簡單的例子,令:

W=((1.00)2×2-1(1.01)2×20)

分別將矩陣W和I的塊尾數字長記作LW和LI,并均賦值為3(不包括符號位)。掃描矩陣I中的元素,得到塊指數為εI=2,然后對矩陣I中的元素進行移位并使用四舍五入法處理最后一位,那么,塊化后的結果為:

類似地可以得到矩陣W的塊化結果為:

W=((0.10)2(1.01)2)×20

因此,對矩陣W和I的乘積,記作O,可以近似為:

O≈W′I′=2M′O

其中,M′O=M′WM′I,εO=εW+εI。

在計算M′O=M′WM′I的過程中,為避免溢出和運算器位數不足導致的舍入誤差,需要保證乘法器字長大于等于LW+LI+2,此字長包括符號位在內;加法器的字長不小于LW+LI+S,其中S=floor(log2(K)),以防止加法過程中溢出。具體流程如圖3所示,圖中“FP2BFP”“BFP2FP”分別代表塊化和從塊浮點數轉回浮點數。

圖3 塊浮點數矩陣乘法流程

4 實 驗

4.1 數據集

本文采用文獻[1]提供的訓練集sfm120k和測試集Oxford5k、Paris6k。訓練集與測試集都隸屬于一個大型地標建筑圖片集,該數據集包括740萬幅圖片,利用這740萬幅圖片進行3D重建,去除3D模型中重復的部分剩下大約16萬幅圖片,再去除Oxford5k和Paris6k的相關圖片,保證訓練集中不包括任何測試集圖片,最終訓練集中包括大約12萬幅圖片?;丨h(huán)檢測與圖像檢索任務有很多共同之處,他們都是基于圖像內容進行圖像檢索,但是回環(huán)檢測任務也有其特殊性,回環(huán)檢測需要考慮一定程度的尺度不變性和旋轉不變性。因此,本文對數據集做了數據增強,具體來說,在讀取數據集時,對數據集中的圖片進行了隨機射影變換,以增強特征對射影變換的魯棒性;同時,對查詢圖片進行了尺度變換,以增強對尺度變化的魯棒性。

本文使用ImageNet[23]上預訓練好的模型作為模型權重初值,然后在sfm120k數據集上進行調優(yōu)(finetune)。在調優(yōu)該網絡時,設置基礎學習率為1e-6,沖量設置為0.9,懲罰系數為1e-4,迭代100個epoch。在本文中,Contrastive Loss的輸入為2個歸一化之后的向量和標簽,而2個歸一化的向量的歐氏距離與余弦距離存在一定的映射關系,具體如下:

Deu=∑(ai-bi)2

=2-2cosθ

4.2 輸入圖片尺寸對精度及時間的影響

由于圖片尺寸大小會直接影響到特征提取所需要的時間,本文首先研究圖片大小對精度(mean Average Precision, mPA)的影響,方便移動機器人根據自身的計算能力挑選合適的圖片尺寸。圖片尺寸越大,保留的細節(jié)越多,回環(huán)檢測的精度就越高,但也會更耗時;圖片尺寸越小,丟失的信息越多,對應著精度就會降低,但更能適應移動平臺的計算能力要求。在GeForce RTX2070上測試的結果如表1所示。

表1 圖片尺寸與耗時、精度(mAP)關系

在實驗過程中,圖片大小重整為最長邊不超過圖片尺寸所列數值,用時包括了特征提取和查詢的時間,完整地模擬了回環(huán)檢測過程??梢钥闯觯?024 px的圖片達到了最高的準確度,但是需要超過60 ms的處理時間,勉強接近SLAM的實時性要求。但是移動機器人上往往難以提供RTX2070所能提供的計算能力,因此1024 px的圖片難以直接應用在移動機器人上。尺寸更小的圖片雖然速度更快,但是精度損失過大,如224 px的精度損失接近30%,大幅降低了性能。512 px的圖片處理時間為18.4 ms,假設移動機器人能夠提供的計算能力為RTX2070的一半,512 px尺寸的圖片也可以保證實時運行,同時,精度下降在可接受范圍內,因此本文選用512 px尺寸的圖片進行后續(xù)實驗。

4.3 不同池化層的影響

本節(jié)對比分析多種不同的池化策略對回環(huán)檢測精度的影響。選取GeM[1]以及直接使用最大值池化(max)和均值池化(mean)作為對比,還選取一種非參數化為特征圖各個維度加權的方法(Cross-Dimensional Weighting, CDW)[24]作為對比。GeM是當前世界領先的圖像檢索算法,以下先簡要介紹GeM和CDW方法。

GeM的結果由以下公式給出:

由上式可以看出,通過學習參數Pk可以令fGeM表現出不同的行為,Pk取0和∞對應著平均池化和最大值池化。但是,如上式所示,該方法引入了大量指數運算,對于移動計算平臺來說,開銷較大。

CDW是一種非參數化的方法,從紋理出現頻次的角度出發(fā),筆者認為,出現頻次越少對圖片檢索的重要性越高,表現在特征圖上即該特征圖上0的比例越高,該特征圖就應當有更高的權重,另一方面,筆者還考慮到了各個感受野上特征種類分布,如果該感受野上特征種類越多,即特征越豐富,在不同的通道上都有響應值,表明該位置應該有較高的權重。

在文獻[1]的基礎上,本文實現了MXP和CDW,并分別對他們進行了調優(yōu),同時,選取最大值池化和均值池化作為比較基準,也進行了調優(yōu)。表2列出了不同策略對最終精度的影響,可以看出GeM的精度相對最高,本文所用的MXP次之,在不同的數據集上互有優(yōu)勢,效果相當。CDW相對均值池化取得了不錯的提高,但是不如GeM和MXP。最大值池化表現比均值池化更好,這可能是因為最大值池化更關注最突出的特征,比均值池化具備更高的表達能力。rOxford5k和rParis6k是按數據集原有4等級進行了劃分,除第4等級完全沒有目標圖片外,其余3個等級分別對應著表中的E、M、H這3項,表示回環(huán)檢測的難度為容易、中等和困難,如表2所示。

表2 rOxford5k、rParis6k上的精度(mAP) 單位:%

從表3可以看出,MXP和GeM在不同的數據集上有不同的表現:MXP在Oxford5k上的表現優(yōu)于GeM,在Paris6k上則不如GeM。這主要是2個數據集圖片特征差異引起的:Oxford5k中的圖片大多紋理復雜,有相當多的重復特征,此時最大值池化可以拋棄許多不顯著的細節(jié),表現更好,如表3中max遠遠好于mean,甚至好于CDW;而Paris6k則恰好相反,其中圖片大都背景空曠,此時使用max會導致紋理丟失,因此在該數據集上max與mean精度相當,不如CDW表現好。由于MXP是max和mean的線性組合,并且max在MXP中占有更大比重,因此在mean也能提取重要信息的數據集上,如Paris6k數據集上表現不如GeM。另一方面,GeM可以認為是max和mean的非線性組合,在max和mean均有貢獻的數據集上表現更優(yōu),在只有max可以提取有效信息的數據集上反而會受mean的負面影響。

表3 Oxford5k、Paris6k上的精度(mAP) 單位:%

4.4 加速后的回環(huán)檢測精度

本文在CPU上模擬了塊浮點數(權重矩陣塊尾數與輸入特征圖矩陣尾數均為8位,包括符號位)的計算過程。并將PyTorch模型轉換為Caffe[22]模型,測試結果如表4和表5所示,與表2、表3相比,幾乎沒有任何精度損失,表明了加速方案的可行性。

表4 加速后Oxford5k、Paris6k上的精度(mAP) 單位:%

表5 加速后rOxford5k、rParis6k上的精度(mAP) 單位:%

5 結束語

通過對比分析多種不同的將特征圖轉變?yōu)樘卣飨蛄康姆椒?,可以發(fā)現本文使用的混合全局池化方法計算簡便、硬件實現簡單并且精度與復雜的池化方法相當,表現出了良好的性能。本文提出的基于塊浮點數的深度學習加速技術能夠將卷積中的浮點運算轉變?yōu)槎c數運算,降低了對運算資源的要求,并且對精度的影響很小。

猜你喜歡
浮點數回環(huán)池化
面向神經網絡池化層的靈活高效硬件設計
基于Sobel算子的池化算法設計
卷積神經網絡中的自適應加權池化
軟件導刊(2022年3期)2022-03-25 04:45:04
四種Python均勻浮點數生成方法
電腦報(2021年11期)2021-07-01 08:26:31
嘟嘟闖關記
基于卷積神經網絡和池化算法的表情識別研究
透 月
寶藏(2018年3期)2018-06-29 03:43:10
在C語言中雙精度浮點數線性化相等比較的研究
船電技術(2017年1期)2017-10-13 04:23:24
非精確浮點數乘法器設計
學習“騎撐前回環(huán)”動作的常見心理問題分析及對策
平江县| 西林县| 大洼县| 平度市| 盐山县| 从江县| 扶沟县| 崇明县| 忻城县| 扎赉特旗| 久治县| 沂南县| 伽师县| 凉城县| 抚松县| 尖扎县| 林甸县| 定陶县| 梧州市| 白河县| 裕民县| 高阳县| 彰化县| 从江县| 巫山县| 灵宝市| 沿河| 上思县| 新巴尔虎右旗| 调兵山市| 墨玉县| 石门县| 红桥区| 兴文县| 吉林省| 乐至县| 五台县| 高唐县| 晴隆县| 道孚县| 贡觉县|