你的位置:首頁 > EMC安規(guī) > 正文

FPGA:下一代機(jī)器人感知處理器

發(fā)布時間:2017-11-23 責(zé)任編輯:lina

【導(dǎo)讀】十年前,微軟創(chuàng)始人比爾 · 蓋茨在其文章《A Robot in Every Home》里提出他對未來的憧憬:機(jī)器人將會像個人電腦一樣進(jìn)入每個家庭,為人類服務(wù)。隨著人工智能以及智能硬件在過去幾年的飛速發(fā)展,到了2016年的今天,筆者堅信各項(xiàng)技術(shù)已臻成熟,智能機(jī)器人很快進(jìn)入商業(yè)化時代,蓋茨的愿景也極有可能在5到10年內(nèi)實(shí)現(xiàn)。


要想機(jī)器人有智能,必先賦予其感知能力。感知計算,特別是視覺以及深度學(xué)習(xí),通常計算量比較大,對性能要求高。但是機(jī)器人受電池容量限制,可分配給計算的能源比較低。除此之外,由于感知算法不斷發(fā)展,我們還需要不斷更新機(jī)器人的感知處理器。與其它處理器相比,FPGA具有低能耗、高性能以及可編程等特性,十分適合感知計算。本文首先解析FPGA的特性,然后介紹FPGA對感知算法的加速以及節(jié)能,最后談一談機(jī)器人操作系統(tǒng)對FPGA的支持。

 

FPGA:高性能、低能耗、可編程

與其它計算載體如CPU與GPU相比,F(xiàn)PGA具有高性能、低能耗以及可硬件編程的特點(diǎn)。圖1介紹了FPGA的硬件架構(gòu),每個FPGA主要由三個部分組成:輸入輸出邏輯,主要用于FPGA與外部其他部件,比如傳感器的通信;計算邏輯部件,主要用于建造計算模塊;以及可編程連接網(wǎng)絡(luò),主要用于連接不同的計算邏輯部件去組成一個計算器。在編程時,我們可以把計算邏輯映射到硬件上,通過調(diào)整網(wǎng)絡(luò)連接把不同的邏輯部件連通在一起去完成一個計算任務(wù)。比如要完成一個圖像特征提取的任務(wù),我們會連接FPGA的輸入邏輯與照相機(jī)的輸出邏輯,讓圖片可以進(jìn)入FPGA。然后,連接FPGA的輸入邏輯與多個計算邏輯部件,讓這些計算邏輯部件并行提取每個圖片區(qū)域的特征點(diǎn)。最后,我們可以連接計算邏輯部件與FPGA的輸出邏輯,把特征點(diǎn)匯總后輸出。由此可見,F(xiàn)PGA通常把算法的數(shù)據(jù)流以及執(zhí)行指令寫死在硬件邏輯中,從而避免了CPU的Instruction Fetch與Instruction Decode 工作。

 

1 FPGA硬件架構(gòu)

高性能

雖然FPGA的頻率一般比CPU低,但是可以用FPGA實(shí)現(xiàn)并行度很大的硬件計算器。比如一般CPU每次只能處理4到8個指令,在FPGA上使用數(shù)據(jù)并行的方法可以每次處理256個或者更多的指令,讓FPGA可以處理比CPU多很多的數(shù)據(jù)量。另外,如上所述,在FPGA中一般不需要Instruction Fetch與Instruction Decode, 減少了這些流水線工序后也節(jié)省了不少計算時間。

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

 

2 GaxPy 算法性能對比 (單位:微秒)

低能耗

FPGA相對于CPU與GPU有明顯的能耗優(yōu)勢,主要有兩個原因。首先,在FPGA中沒有Instruction Fetch與Instruction Decode,在Intel的CPU里面,由于使用的是CISC架構(gòu),僅僅Decoder就占整個芯片能耗的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算法每次迭代的能源消耗??梢园l(fā)現(xiàn)CPU與GPU的能耗是相仿的,而FPGA的能耗只是CPU與GPU的8%左右。由此可見,F(xiàn)PGA計算比CPU快60%,而能耗只是CPU的1/12,有相當(dāng)大的優(yōu)勢,特別在能源受限的情況下,使用FPGA會使電池壽命延長不少。

 

3 GaxPy 算法能耗對比(單位:毫焦)

可硬件編程

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

 

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, 指出哪個計算Kernel應(yīng)該被加速,然后C-to-FPGA引擎會自動把代碼編譯成硬件。在我們的經(jīng)驗(yàn)中,使用傳統(tǒng)開發(fā)流程,完成一個項(xiàng)目大約需要半年時間,而使用了C-to-FPGA開發(fā)流程后,一個項(xiàng)目大約兩周便可完成,效率提升了10倍以上。

 

感知計算在FPGA上的加速

  接下來主要介紹機(jī)器人感知計算在FPGA上的加速,特別是特征提取與位置追蹤的計算(可以認(rèn)為是機(jī)器人的眼睛),以及深度學(xué)習(xí)計算(可以認(rèn)為是機(jī)器人的大腦)。當(dāng)機(jī)器人有了眼睛以及大腦后,就可以在空間中移動并定位自己,在移動過程中識別所見到的物體。

 

特征提取與位置追蹤

   特征提取與位置追蹤的主要算法包括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即同時定位與地圖重建,目的就是在機(jī)器人運(yùn)動的同時建立途經(jīng)的地圖,并同時敲定機(jī)器人在地圖中的位置。使用該技術(shù)后,機(jī)器人可以在不借助外部信號(WIFI、Beacon、GPS)的情況下進(jìn)行定位,在室內(nèi)定位場景中特別有用。定位的方法主要是利用卡曼濾波器對不同的傳感器信息(圖片、陀螺儀)進(jìn)行融合,從而推斷機(jī)器人當(dāng)前的位置。

 

   為了讓讀者了解FPGA對特征提取與位置追蹤的加速以及節(jié)能,下面我們關(guān)注加州大學(xué)洛杉磯分校的一個關(guān)于在FPGA上加速特征提取與SLAM算法的研究。圖5展示了FPGA相對CPU在執(zhí)行SIFT feature-matching、SURF feature-matching以及SLAM算法的加速比。使用FPGA后,SIFT與SURF的feature-matching分別取得了30倍與9倍的加速,而SLAM的算法也取得了15倍的加速比。假設(shè)照片以30FPS的速度進(jìn)入計算器,那么感知與定位的算法需要在33毫秒內(nèi)完成對一張圖片的處理,也就是說在33毫秒內(nèi)做完一次特征提取與SLAM計算,這對CPU會造成很大的壓力。用了FPGA以后,整個處理流程提速了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ī)電池用于一個多核的Mobile CPU去跑這一套感知算法,電池將會在40分鐘左右耗光。但是如果使用FPGA進(jìn)行計算,手機(jī)電池就足以支撐6小時以上,即可以達(dá)到10倍左右的總體節(jié)能 (因?yàn)镾LAM的計算量比特征提取高很多)。

 

6 感知算法能耗對比 (單位:節(jié)能比)

   根據(jù)數(shù)據(jù)總結(jié)一下,如果使用FPGA進(jìn)行視覺感知定位的運(yùn)算,不僅可以提高感知幀率,讓感知更加精準(zhǔn),還可以節(jié)能,讓計算持續(xù)多個小時。當(dāng)感知算法確定,而且對芯片的需求達(dá)到一定的量后,我們還可以把FPGA芯片設(shè)計成ASIC,進(jìn)一步的提高性能以及降低能耗。

 

深度學(xué)習(xí)

   深度神經(jīng)網(wǎng)絡(luò)是一種具備至少一個隱層的神經(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ī)視覺領(lǐng)域以及自動語音識別領(lǐng)域取得了很大的進(jìn)步。在視覺方面,Google、Microsoft與Facebook不斷在ImageNet比賽上刷新識別率紀(jì)錄。在語音識別方面,百度的DeepSpeech 2系統(tǒng)相比之前的系統(tǒng)在詞匯識別率上有顯著提高,把詞匯識別錯誤率降到了7%左右。

   為了讓讀者了解FPGA對深度學(xué)習(xí)的加速以及節(jié)能,我們下面關(guān)注北京大學(xué)與加州大學(xué)的一個關(guān)于FPGA加速CNN算法的合作研究。圖7展示了FPGA與CPU在執(zhí)行CNN時的耗時對比。在運(yùn)行一次迭代時,使用CPU耗時375毫秒,而使用FPGA只耗時21毫秒,取得了18倍左右的加速比。假設(shè)如果這個CNN運(yùn)算是有實(shí)時要求,比如需要跟上相機(jī)幀率(33毫秒/幀),那么CPU就不可以達(dá)到計算要求,但是通過FPGA加速后,CNN計算就可以跟上相機(jī)幀率,對每一幀進(jìn)行分析。

 

7 CNN性能對比 (單位:毫秒)

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

 

8 CNN能耗對比 (單位:焦)

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

   上文介紹了FPGA對感知算法的加速以及節(jié)能,可以看出FPGA在感知計算上相對CPU與GPU有巨大優(yōu)勢。本節(jié)介紹FPGA在當(dāng)今機(jī)器人行業(yè)被使用的狀況,特別是FPGA在ROS機(jī)器人操作系統(tǒng)中被使用的情況。

 

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

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

 

9 ROS在Sandia Hand中對FPGA的支持

   為了使ROS與FPGA之間可以連接,Sandia Hand使用了Rosbridge機(jī)制。 Rosbridge通過JSON API來連接ROS與非ROS的程序。比如一個ROS的程序可以通過JSON API連接一個非ROS的網(wǎng)絡(luò)前端。在Sandia Hand的設(shè)計中,一個ROS Node通過JSON API連接到FPGA計算器,F(xiàn)PGA傳遞數(shù)據(jù)以及發(fā)起計算指令,然后從FPGA取回計算結(jié)果。

 

   Rosbridge為ROS與FPGA的聯(lián)通提供了一種溝通機(jī)制,但是在這種機(jī)制中,ROS Node并不能運(yùn)行在FPGA上,而且通過JSON API的連接機(jī)制也帶來了一定的性能損耗。為了讓FPGA與ROS更好的耦合,最近日本的研究人員提出了ROS-Compliant FPGA的設(shè)計,讓ROS Node可以直接運(yùn)行在FPGA上。如圖10所示,在這個設(shè)計中,F(xiàn)PGA了實(shí)現(xiàn)一個輸入的接口,這個接口可以直接訂閱ROS的topic,使數(shù)據(jù)可以無縫連接流入FPGA計算單元中。另外,F(xiàn)PGA上也實(shí)現(xiàn)了一個輸出接口, 讓FPGA上的ROS Node可以直接發(fā)表數(shù)據(jù),讓訂閱這個topic的其他ROS Node可以直接使用FPGA產(chǎn)出的數(shù)據(jù)。在這個設(shè)計中,開發(fā)者只要把自己開發(fā)的FPGA計算器插入到ROS-compliant的FPGA框架中,便可以無縫連接其他ROS Node。

 

10 FPGA成為ROS的一部分

   最近跟ROS的運(yùn)營機(jī)構(gòu)Open Source Robotics Foundation溝通中發(fā)現(xiàn),越來越多的機(jī)器人開發(fā)者使用FPGA作為傳感器的計算單元以及控制器,對FPGA融入ROS的需求越來越多。相信ROS很快將會拿出一個與FPGA緊密耦合的解決方案。

 

展望未來

   FPGA具有低能耗、高性能以及可編程等特性,十分適合感知計算。特別是在能源受限的情況下,F(xiàn)PGA相對于CPU與GPU有明顯的性能與能耗優(yōu)勢。除此之外,由于感知算法不斷發(fā)展,我們需要不斷更新機(jī)器人的感知處理器。相比ASIC,F(xiàn)PGA又具有硬件可升級可迭代的優(yōu)勢。由于這些原因,筆者堅信FPGA在機(jī)器人時代將會是最重要的芯片之一。由于FPGA的低能耗特性,F(xiàn)PGA很適合用于傳感器的數(shù)據(jù)預(yù)處理工作。可以預(yù)見,F(xiàn)PGA與傳感器的緊密結(jié)合將會很快普及。而后隨著視覺、語音、深度學(xué)習(xí)的算法在FPGA上的不斷優(yōu)化,F(xiàn)PGA將逐漸取代GPU與CPU成為機(jī)器人上的主要芯片。




推薦閱讀:
五大優(yōu)勢凸顯 可編程邏輯或?qū)⒊尸F(xiàn)快速增長 
 量子點(diǎn)和OLED,誰會是電視市場下半場的主流技術(shù)數(shù) 
淺顯易懂的理解嵌入式開發(fā)中的硬件知識 
為什么分立式JFET仍然活躍于模擬設(shè)計中? 

特別推薦
技術(shù)文章更多>>
技術(shù)白皮書下載更多>>
熱門搜索
壓控振蕩器 壓力傳感器 壓力開關(guān) 壓敏電阻 揚(yáng)聲器 遙控開關(guān) 醫(yī)療電子 醫(yī)用成像 移動電源 音頻IC 音頻SoC 音頻變壓器 引線電感 語音控制 元件符號 元器件選型 云電視 云計算 云母電容 真空三極管 振蕩器 振蕩線圈 振動器 振動設(shè)備 震動馬達(dá) 整流變壓器 整流二極管 整流濾波 直流電機(jī) 智能抄表
?

關(guān)閉

?

關(guān)閉