FPGA十分適合做機(jī)器人的感知處理器_第1頁
FPGA十分適合做機(jī)器人的感知處理器_第2頁
FPGA十分適合做機(jī)器人的感知處理器_第3頁
FPGA十分適合做機(jī)器人的感知處理器_第4頁
FPGA十分適合做機(jī)器人的感知處理器_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

FPGA十分適合做機(jī)器人的感知處理器要想機(jī)器人有智能,必先賦予其感知能力。感知計(jì)算,特別是視覺以及深度學(xué)習(xí),通常計(jì)算量比較大,對性能要求高。但是機(jī)器人受電池容量限制,可分配給計(jì)算的能源比較低。除此之外,由于感知算法不斷發(fā)展,我們還需要不斷更新機(jī)器人的感知處理器。與其它處理器相比,F(xiàn)PGA具有低能耗、高性能以及可編程等特性,十分適合感知計(jì)算。本文首先解析FPGA的特性,然后介紹FPGA對感知算法的加速以及節(jié)能,最后談一談機(jī)器人操作系統(tǒng)對FPGA的支持。FPGA:高性能、低能耗、可編程與其它計(jì)算載體如CPU與GPU相比,F(xiàn)PGA具有高性能、低能耗以及可硬件編程的特點(diǎn)。圖1介紹了FPGA的硬件架構(gòu),每個(gè)FPGA主要由三個(gè)部分組成:輸入輸出邏輯,主要用于FPGA與外部其他部件,比如傳感器的通信;計(jì)算邏輯部件,主要用于建造計(jì)算模塊;以及可編程連接網(wǎng)絡(luò),主要用于連接不同的計(jì)算邏輯部件去組成一個(gè)計(jì)算器。在編程時(shí),我們可以把計(jì)算邏輯映射到硬件上,通過調(diào)整網(wǎng)絡(luò)連接把不同的邏輯部件連通在一起去完成一個(gè)計(jì)算任務(wù)。比如要完成一個(gè)圖像特征提取的任務(wù),我們會(huì)連接FPGA的輸入邏輯與照相機(jī)的輸出邏輯,讓圖片可以進(jìn)入FPGA。然后,連接FPGA的輸入邏輯與多個(gè)計(jì)算邏輯部件,讓這些計(jì)算邏輯部件并行提取每個(gè)圖片區(qū)域的特征點(diǎn)。最后,我們可以連接計(jì)算邏輯部件與FPGA的輸出邏輯,把特征點(diǎn)匯總后輸出。由此可見,F(xiàn)PGA通常把算法的數(shù)據(jù)流以及執(zhí)行指令寫死在硬件邏輯中,從而避免了CPU的InstructionFetch與InstructionDecode

工作。圖1FPGA硬件架構(gòu)高性能雖然FPGA的頻率一般比CPU低,但是可以用FPGA實(shí)現(xiàn)并行度很大的硬件計(jì)算器。比如一般CPU每次只能處理4到8個(gè)指令,在FPGA上使用數(shù)據(jù)并行的方法可以每次處理256個(gè)或者更多的指令,讓FPGA可以處理比CPU多很多的數(shù)據(jù)量。另外,如上所述,在FPGA中一般不需要InstructionFetch與InstructionDecode,

減少了這些流水線工序后也節(jié)省了不少計(jì)算時(shí)間。為了讓讀者對FPGA加速有更好的了解,我們總結(jié)了微軟研究院2010年對BLAS算法的FPGA加速研究。BLAS是矩陣運(yùn)算的底層庫,被廣泛運(yùn)用到高性能計(jì)算、機(jī)器學(xué)習(xí)等領(lǐng)域。在這個(gè)研究中,微軟的研究人員分析了CPU、GPU以及FPGA對BLAS的加速以及能耗。圖2對比了FPGA以及CPU、GPU執(zhí)行GaxPy算法每次迭代的時(shí)間,相對于CPU,GPU與FPGA都達(dá)到了60%的加速。圖中顯示的是小矩陣運(yùn)算,隨著矩陣的增大,GPU與FPGA相對與CPU的加速比會(huì)越來越明顯。圖2GaxPy

算法性能對比

(單位:微秒)低能耗FPGA相對于CPU與GPU有明顯的能耗優(yōu)勢,主要有兩個(gè)原因。首先,在FPGA中沒有InstructionFetch與InstructionDecode,在Intel的CPU里面,由于使用的是CISC架構(gòu),僅僅Decoder就占整個(gè)芯片能耗的50%;在GPU里面,F(xiàn)etch與Decode也消耗了10%~20%的能源。其次,F(xiàn)PGA的主頻比CPU與GPU低很多,通常CPU與GPU都在1GHz到3GHz之間,而FPGA的主頻一般在500MHz以下。如此大的頻率差使得FPGA消耗的能源遠(yuǎn)低于CPU與GPU。圖3對比了FPGA以及CPU、GPU執(zhí)行GaxPy算法每次迭代的能源消耗。可以發(fā)現(xiàn)CPU與GPU的能耗是相仿的,而FPGA的能耗只是CPU與GPU的8%左右。由此可見,F(xiàn)PGA計(jì)算比CPU快60%,而能耗只是CPU的1/12,有相當(dāng)大的優(yōu)勢,特別在能源受限的情況下,使用FPGA會(huì)使電池壽命延長不少。圖3GaxPy

算法能耗對比(單位:毫焦)可硬件編程由于FPGA是可硬件編程的,相對于ASIC而言,使用FPGA可以對硬件邏輯進(jìn)行迭代更新。但是FPGA也會(huì)被詬病,因?yàn)榘阉惴▽懙紽PGA硬件并不是一個(gè)容易的過程,相比在CPU與GPU上編程技術(shù)門檻高許多,開發(fā)周期也會(huì)長很多。圖4

傳統(tǒng)FPGA開發(fā)流程與C-to-FPGA開發(fā)流程圖4顯示了傳統(tǒng)FPGA開發(fā)流程與C-to-FPGA開發(fā)流程的對比。在傳統(tǒng)的FPGA開發(fā)流程中,我們需要把C/C++寫成的算法逐行翻譯成基于Verilog的硬件語言,然后再編譯Verilog,把邏輯寫入硬件。隨著近幾年FPGA技術(shù)的發(fā)展,從C直接編譯到FPGA的技術(shù)已經(jīng)逐漸成熟,并已在百度廣泛被使用。在C-to-FPGA開發(fā)流程中,我們可以在CC++的代碼中加Pragma,

指出哪個(gè)計(jì)算Kernel應(yīng)該被加速,然后C-to-FPGA引擎會(huì)自動(dòng)把代碼編譯成硬件。在我們的經(jīng)驗(yàn)中,使用傳統(tǒng)開發(fā)流程,完成一個(gè)項(xiàng)目大約需要半年時(shí)間,而使用了C-to-FPGA開發(fā)流程后,一個(gè)項(xiàng)目大約兩周便可完成,效率提升了10倍以上。感知計(jì)算在FPGA上的加速接下來主要介紹機(jī)器人感知計(jì)算在FPGA上的加速,特別是特征提取與位置追蹤的計(jì)算(可以認(rèn)為是機(jī)器人的眼睛),以及深度學(xué)習(xí)計(jì)算(可以認(rèn)為是機(jī)器人的大腦)。當(dāng)機(jī)器人有了眼睛以及大腦后,就可以在空間中移動(dòng)并定位自己,在移動(dòng)過程中識別所見到的物體。特征提取與位置追蹤特征提取與位置追蹤的主要算法包括SIFT、SURF和SLAM。SIFT是一種檢測局部特征的算法,通過求一幅圖中的特征點(diǎn)及其有關(guān)規(guī)模和方向的描述得到特征并進(jìn)行圖像特征點(diǎn)匹配。SIFT特征匹配算法可以處理兩幅圖像之間發(fā)生平移、旋轉(zhuǎn)、仿射變換情況下的匹配問題,具有很強(qiáng)的匹配能力。SIFT算法有三大工序:1.

提取關(guān)鍵點(diǎn);2.

對關(guān)鍵點(diǎn)附加詳細(xì)的信息(局部特征)也就是所謂的描述器;3.

通過兩方特征點(diǎn)(附帶上特征向量的關(guān)鍵點(diǎn))的兩兩比較找出相互匹配的若干對特征點(diǎn),也就建立了景物間的對應(yīng)關(guān)系。SURF算法是對SIFT算法的一種改進(jìn),主要是通過積分圖像Haar求導(dǎo)提高SIFT算法的執(zhí)行效率。SLAM即同時(shí)定位與地圖重建,目的就是在機(jī)器人運(yùn)動(dòng)的同時(shí)建立途經(jīng)的地圖,并同時(shí)敲定機(jī)器人在地圖中的位置。使用該技術(shù)后,機(jī)器人可以在不借助外部信號(WIFI、Beacon、GPS)的情況下進(jìn)行定位,在室內(nèi)定位場景中特別有用。定位的方法主要是利用卡曼濾波器對不同的傳感器信息(圖片、陀螺儀)進(jìn)行融合,從而推斷機(jī)器人當(dāng)前的位置。為了讓讀者了解FPGA對特征提取與位置追蹤的加速以及節(jié)能,下面我們關(guān)注加州大學(xué)洛杉磯分校的一個(gè)關(guān)于在FPGA上加速特征提取與SLAM算法的研究。圖5展示了FPGA相對CPU在執(zhí)行SIFTfeature-matching、SURFfeature-matching以及SLAM算法的加速比。使用FPGA后,SIFT與SURF的feature-matching分別取得了30倍與9倍的加速,而SLAM的算法也取得了15倍的加速比。假設(shè)照片以30FPS的速度進(jìn)入計(jì)算器,那么感知與定位的算法需要在33毫秒內(nèi)完成對一張圖片的處理,也就是說在33毫秒內(nèi)做完一次特征提取與SLAM計(jì)算,這對CPU會(huì)造成很大的壓力。用了FPGA以后,整個(gè)處理流程提速了10倍以上,讓高幀率的數(shù)據(jù)處理變得可能。圖5

感知算法性能對比

(單位:加速比)圖6展示了FPGA相對CPU在執(zhí)行SIFT、SURF以及SLAM算法的節(jié)能比。使用FPGA后,SIFT與SURF分別取得了1.5倍與1.9倍的節(jié)能比,而SLAM的算法取得了14倍的節(jié)能比。根據(jù)我們的經(jīng)驗(yàn),如果機(jī)器人將手機(jī)電池用于一個(gè)多核的MobileCPU去跑這一套感知算法,電池將會(huì)在40分鐘左右耗光。但是如果使用FPGA進(jìn)行計(jì)算,手機(jī)電池就足以支撐6小時(shí)以上,即可以達(dá)到10倍左右的總體節(jié)能(因?yàn)镾LAM的計(jì)算量比特征提取高很多)。圖6

感知算法能耗對比

(單位:節(jié)能比)根據(jù)數(shù)據(jù)總結(jié)一下,如果使用FPGA進(jìn)行視覺感知定位的運(yùn)算,不僅可以提高感知幀率,讓感知更加精準(zhǔn),還可以節(jié)能,讓計(jì)算持續(xù)多個(gè)小時(shí)。當(dāng)感知算法確定,而且對芯片的需求達(dá)到一定的量后,我們還可以把FPGA芯片設(shè)計(jì)成ASIC,進(jìn)一步的提高性能以及降低能耗。深度學(xué)習(xí)深度神經(jīng)網(wǎng)絡(luò)是一種具備至少一個(gè)隱層的神經(jīng)網(wǎng)絡(luò)。與淺層神經(jīng)網(wǎng)絡(luò)類似,深度神經(jīng)網(wǎng)絡(luò)也能夠?yàn)閺?fù)雜非線性系統(tǒng)提供建模,但多出的層次為模型提供了更高的抽象層次,因而提高了模型的能力。在過去幾年,卷積深度神經(jīng)網(wǎng)絡(luò)(CNN)在計(jì)算機(jī)視覺領(lǐng)域以及自動(dòng)語音識別領(lǐng)域取得了很大的進(jìn)步。在視覺方面,Google、Microsoft與Facebook不斷在ImageNet比賽上刷新識別率紀(jì)錄。在語音識別方面,百度的DeepSpeech2系統(tǒng)相比之前的系統(tǒng)在詞匯識別率上有顯著提高,把詞匯識別錯(cuò)誤率降到了7%左右。為了讓讀者了解FPGA對深度學(xué)習(xí)的加速以及節(jié)能,我們下面關(guān)注北京大學(xué)與加州大學(xué)的一個(gè)關(guān)于FPGA加速CNN算法的合作研究。圖7展示了FPGA與CPU在執(zhí)行CNN時(shí)的耗時(shí)對比。在運(yùn)行一次迭代時(shí),使用CPU耗時(shí)375毫秒,而使用FPGA只耗時(shí)21毫秒,取得了18倍左右的加速比。假設(shè)如果這個(gè)CNN運(yùn)算是有實(shí)時(shí)要求,比如需要跟上相機(jī)幀率(33毫秒/幀),那么CPU就不可以達(dá)到計(jì)算要求,但是通過FPGA加速后,CNN計(jì)算就可以跟上相機(jī)幀率,對每一幀進(jìn)行分析。圖7CNN性能對比

(單位:毫秒)圖8展示了FPGA與CPU在執(zhí)行CNN時(shí)的耗能對比。在執(zhí)行一次CNN運(yùn)算,使用CPU耗能36焦,而使用FPGA只耗能10焦,取得了3.5倍左右的節(jié)能比。與SLAM計(jì)算相似,通過用FPGA加速與節(jié)能,讓深度學(xué)習(xí)實(shí)時(shí)計(jì)算更容易在移動(dòng)端運(yùn)行。圖8CNN能耗對比

(單位:焦)FPGA與ROS機(jī)器人操作系統(tǒng)的結(jié)合

上文介紹了FPGA對感知算法的加速以及節(jié)能,可以看出FPGA在感知計(jì)算上相對CPU與GPU有巨大優(yōu)勢。本節(jié)介紹FPGA在當(dāng)今機(jī)器人行業(yè)被使用的狀況,特別是FPGA在ROS機(jī)器人操作系統(tǒng)中被使用的情況。機(jī)器人操作系統(tǒng)(ROS),是專為機(jī)器人軟件開發(fā)所設(shè)計(jì)出來的一套操作系統(tǒng)架構(gòu)。它提供類似于操作系統(tǒng)的服務(wù),包括硬件抽象描述、底層驅(qū)動(dòng)程序管理、共用功能的執(zhí)行、程序間消息傳遞、程序發(fā)行包管理,它也提供一些工具和庫用于獲取、建立、編寫和執(zhí)行多機(jī)融合的程序。ROS的首要設(shè)計(jì)目標(biāo)是在機(jī)器人研發(fā)領(lǐng)域提高代碼復(fù)用率。ROS是一種分布式處理框架(又名Nodes)。這使可執(zhí)行文件能被單獨(dú)設(shè)計(jì),并且在運(yùn)行時(shí)松散耦合。這些過程可以封裝到數(shù)據(jù)包(Packages)和堆棧(Stacks)中,以便于共享和分發(fā)。ROS還支持代碼庫的聯(lián)合系統(tǒng),使得協(xié)作亦能被分發(fā)。ROS目前被廣泛應(yīng)用到多種機(jī)器人中,逐漸變成機(jī)器人的標(biāo)準(zhǔn)操作系統(tǒng)。在2015年的DARPARoboticsChallenge比賽中,有過半數(shù)的參賽機(jī)器人使用了ROS。

隨著FPGA技術(shù)的發(fā)展,越來越多的機(jī)器人使用上了FPGA,在ROS社區(qū)中也有越來越多的聲音要求ROS兼容FPGA。一個(gè)例子是美國Sandia國家實(shí)驗(yàn)室的機(jī)器人手臂SandiaHand。如圖9所示,SandiaHand使用FPGA預(yù)處理照相機(jī)以及機(jī)器人手掌返回的信息,然后把預(yù)處理的結(jié)果傳遞ROS的其它計(jì)算Node。圖9ROS在SandiaHand中對FPGA的支持為了使ROS與FPGA之間可以連接,SandiaHand使用了Rosbridge機(jī)制。

Rosbridge通過JSONAPI來連接ROS與非ROS的程序。比如一個(gè)ROS的程序可以通過JSONAPI連接一個(gè)非ROS的網(wǎng)絡(luò)前端。在SandiaHand的設(shè)計(jì)中,一個(gè)ROSNode通過JSONAPI連接到FPGA計(jì)算器,F(xiàn)PGA傳遞數(shù)據(jù)以及發(fā)起計(jì)算指令,然后從FPGA取回計(jì)算結(jié)果。Rosbridge為ROS與FPGA的聯(lián)通提供了一種溝通機(jī)制,但是在這種機(jī)制中,ROSNode并不能運(yùn)行在FPGA上,而且通過JSONAPI的連接機(jī)制也帶來了一定的性能損耗。為了讓FPGA與ROS更好的耦合,最近日本的研究人員提出了ROS-CompliantFPGA的設(shè)計(jì),讓ROSNode可以直接運(yùn)行在FPGA上。如圖10所示,在這個(gè)設(shè)計(jì)中,F(xiàn)PGA了實(shí)現(xiàn)一個(gè)輸入的接口,這個(gè)接口可以直接訂閱ROS的topic,使數(shù)據(jù)可以無縫連接流入FPGA計(jì)算單元中。另外,F(xiàn)PGA上也實(shí)現(xiàn)了一個(gè)輸出接口,讓FPGA上的ROSNode可以直接發(fā)表數(shù)據(jù),讓訂閱這個(gè)topic的其他ROSNode可以直接使用FPGA產(chǎn)出的數(shù)據(jù)。在這個(gè)設(shè)計(jì)中,開發(fā)者只要把自己開發(fā)的FPGA計(jì)算器插入到ROS-compliant的FPGA框架中,便可以無縫連接其他ROSNode。圖10FPGA成為ROS的一部分最近跟ROS的運(yùn)營機(jī)構(gòu)OpenSourceRoboticsFoundation溝通中發(fā)現(xiàn),越來越多的機(jī)器人開發(fā)者使用FPGA作為傳感器的計(jì)算單元以及控制器,對FPGA融入ROS的需求越來越多。相信ROS很快將會(huì)拿出一個(gè)與FPGA緊密耦合的解

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論