王睿軼,王秀青,劉萬明,王永吉,葉曉雅
(1.河北師范大學(xué) 計(jì)算機(jī)與網(wǎng)絡(luò)空間安全學(xué)院,河北 石家莊 050024;2.河北省網(wǎng)絡(luò)與信息安全重點(diǎn)實(shí)驗(yàn)室,河北 石家莊 050024;3.河北省供應(yīng)鏈大數(shù)據(jù)分析與數(shù)據(jù)安全工程研究中心,河北 石家莊 050024;4.河北師范大學(xué) 中燃工學(xué)院,河北 石家莊 050024;5.中國(guó)科學(xué)院 軟件研究所,北京 100190)
第三代神經(jīng)網(wǎng)絡(luò)——脈沖神經(jīng)網(wǎng)絡(luò)(Spiking Neural Networks,SNNs)[1-3]通過獨(dú)立的尖脈沖(Spikes)傳遞信息,將時(shí)空信息同時(shí)融于網(wǎng)絡(luò)中,不僅比前兩代神經(jīng)網(wǎng)絡(luò)具有更好的生物似真性,而且更適于用硬件實(shí)現(xiàn)。近年來,作為重要科技前沿的腦科學(xué)和類腦智能技術(shù)引起了國(guó)際學(xué)術(shù)界的廣泛關(guān)注,各國(guó)投入巨資啟動(dòng)了腦研究計(jì)劃。類腦計(jì)算是腦研究計(jì)劃的重要方面之一,SNNs以其獨(dú)有的生物似真性成為類腦計(jì)算的主要工具。神經(jīng)形態(tài)芯片是類腦計(jì)算的重要研究?jī)?nèi)容之一,神經(jīng)網(wǎng)絡(luò)的硬件實(shí)現(xiàn)是神經(jīng)形態(tài)芯片實(shí)現(xiàn)的基礎(chǔ),也是各種神經(jīng)網(wǎng)絡(luò)算法工程實(shí)用化的關(guān)鍵環(huán)節(jié),進(jìn)行SNNs硬件實(shí)現(xiàn)研究具有重要意義?;谟布?shí)現(xiàn)的SNNs解決方案,具有信息處理速度快、能耗低,適于實(shí)際應(yīng)用等特點(diǎn),成為當(dāng)今研究的熱點(diǎn)。
國(guó)外在SNNs硬件實(shí)現(xiàn)方面的研究成果顯著。2013年,瑞士蘇黎世大學(xué)與聯(lián)邦理工學(xué)院成功研制出基于SNNs的腦神經(jīng)形態(tài)芯片[4]。2014年,IBM公司推出運(yùn)行功耗極低的TrueNorth芯片[5],英國(guó)曼徹斯特大學(xué)開發(fā)了SpiNNaker芯片[6],美國(guó)斯坦福大學(xué)研制出了神經(jīng)柵格芯片系統(tǒng)[7]。2020年,英特爾發(fā)布了神經(jīng)形態(tài)計(jì)算系統(tǒng)─Pohoiki Springs,該系統(tǒng)可提供1億個(gè)脈沖神經(jīng)元進(jìn)行任務(wù)處理。2021年,Nguyen等人[8]在芯片上實(shí)現(xiàn)了基于脈沖時(shí)間依賴可塑性(Spike-Timing-Dependent Plasticity,STDP)的深度SNNs學(xué)習(xí)方法,較基于軟件的基線SNNs學(xué)習(xí)方案速度提升2.1倍、能耗減少64%。2022年,Panchapakesan等人[9]提出了基于率編碼的SyncNN方法,該方法相較傳統(tǒng)卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNNs)在MNIST數(shù)據(jù)集上的訓(xùn)練速度提高2.26倍。
國(guó)內(nèi)雖然對(duì)SNNs硬件實(shí)現(xiàn)的研究起步較晚,但也取得了一定成果。2016年,浙江大學(xué)顧宗華團(tuán)隊(duì)設(shè)計(jì)出國(guó)內(nèi)首款支持SNNs的類腦芯片——達(dá)爾文芯片[10],并成功應(yīng)用于類腦計(jì)算和模式識(shí)別等任務(wù)中。2017年,Sun等人[11]提出了一種用于視覺信息特征提取的脈沖神經(jīng)網(wǎng)絡(luò),并在FPGA上進(jìn)行了實(shí)現(xiàn)。2019年,清華大學(xué)類腦計(jì)算研究中心施路平團(tuán)隊(duì)提出了符合腦科學(xué)基本規(guī)律、可同時(shí)支持ANNs和SNNs的新型類腦計(jì)算架構(gòu)——異構(gòu)融合的天機(jī)類腦計(jì)算芯片架構(gòu)[12]。2020年,Zhang等人[13]提出一種基于FPGA應(yīng)用于圖像分類的低成本、高性能的SNNs實(shí)現(xiàn)方案,與軟件實(shí)現(xiàn)相比運(yùn)行速度提高了908 578倍。2021年,Wang等人[14]利用加速體系結(jié)構(gòu)提出一種基于FPGA的SNNs,并采用逼近式加法器實(shí)現(xiàn)該架構(gòu),與前期相關(guān)工作相比ALUT降低28%、能耗減少29%。
SNNs能同時(shí)融入時(shí)空信息的特點(diǎn),使其成功應(yīng)用于機(jī)器人環(huán)境感知[15-16]和控制[17-21]等領(lǐng)域,如:2018年,Garcia等人[15]基于STDP展開了人形機(jī)器人視覺注意力的研究。2020年,Tang等人[17]提出一種基于SNNs的移動(dòng)機(jī)器人導(dǎo)航控制方法。2021年,Lu等人[18]提出一種基于STDP的移動(dòng)機(jī)器人避障策略。2022年,Azimirad等人[19]提出一種基于CNNs和SNNs的機(jī)器人環(huán)境感知和控制系統(tǒng)。雖然類腦芯片已取得了一定進(jìn)展,但SNNs神經(jīng)形態(tài)芯片在機(jī)器人領(lǐng)域的應(yīng)用仍有待進(jìn)一步發(fā)展,很多面對(duì)機(jī)器人的類腦計(jì)算方法距離實(shí)際工程應(yīng)用還有較大差距。例如,文獻(xiàn)[19]中控制策略算法需要在上位PC機(jī)中完成,再將控制命令發(fā)送給機(jī)器人執(zhí)行。神經(jīng)形態(tài)芯片和集成在芯片中的神經(jīng)控制器的使用,除提高機(jī)器人自主性、加速機(jī)器人系統(tǒng)的信息處理和執(zhí)行速度外,還使整個(gè)機(jī)器人系統(tǒng)輕量化,更便于實(shí)際使用。
現(xiàn)場(chǎng)可編程門陣列(Field Programmable Gate Array,FPGA)可以通過數(shù)據(jù)并行處理和運(yùn)算加速來提高實(shí)際信息處理的能力[22-24]。該文提出一種基于FPGA的逼近式脈沖積分點(diǎn)火(Integrate-and-Fire,IAF)神經(jīng)元模型硬件實(shí)現(xiàn)方案,基于IAF神經(jīng)元模型實(shí)現(xiàn)了基于FPGA的移動(dòng)機(jī)器人SNNs走廊場(chǎng)景分類器。此分類器可安置于機(jī)器人本體,使用的硬件資源少,結(jié)構(gòu)簡(jiǎn)單,使用方便。所提基于FPGA的SNNs走廊場(chǎng)景分類器利用機(jī)器人超聲傳感器采集環(huán)境信息,受外界因素影響小,即使在光照不足或黑暗的走廊場(chǎng)景中依然能夠準(zhǔn)確、快速地進(jìn)行走廊場(chǎng)景識(shí)別。仿真及實(shí)驗(yàn)結(jié)果驗(yàn)證了所提基于FPGA的移動(dòng)機(jī)器人SNNs走廊場(chǎng)景分類器的有效性。
積分點(diǎn)火神經(jīng)元模型是脈沖神經(jīng)元模型中廣為使用的一種閾值點(diǎn)火模型,是脈沖響應(yīng)模型(Spike Response Model,SRM)[1]的特例。IAF神經(jīng)元模型原理如圖1和公式(1)所示[1]。電路中輸入電流(I)分為兩部分:一部分流向電阻(R);另一部分給電容(C)充電。當(dāng)電容(C)兩側(cè)電壓超過閾值(?)時(shí),神經(jīng)元發(fā)放脈沖。
(1)
其中,ui表示神經(jīng)元i膜電壓值,τm=RC是神經(jīng)元膜時(shí)間常數(shù)。由公式(1),IAF模型亦可如式(2)所示[1]。
(2)
(3)
(4)
其中,?為點(diǎn)火閾值,urst為靜息期電壓,τm,τs為時(shí)間常數(shù),H(s)為階躍函數(shù)。
時(shí)延編碼(Latency Coding)通過不同的脈沖時(shí)延表示輸入神經(jīng)元的刺激信號(hào)的強(qiáng)弱[1]:刺激信號(hào)越弱,神經(jīng)元發(fā)放脈沖時(shí)刻越晚、時(shí)延越長(zhǎng);刺激信號(hào)越強(qiáng),神經(jīng)元輸出脈沖時(shí)刻越早、脈沖時(shí)延越短。
走廊環(huán)境是室內(nèi)移動(dòng)機(jī)器人常見的結(jié)構(gòu)化場(chǎng)景,準(zhǔn)確感知走廊環(huán)境,對(duì)實(shí)現(xiàn)移動(dòng)機(jī)器人的自主性具有重要意義。文獻(xiàn)[21]針對(duì)7種常見的結(jié)構(gòu)化走廊場(chǎng)景,提出基于超聲傳感信息的移動(dòng)機(jī)器人SNNs走廊場(chǎng)景分類器(超聲傳感器工作原理及16個(gè)超聲傳感器在移動(dòng)機(jī)器人本體中的分布見文獻(xiàn)[21])。7種常見的結(jié)構(gòu)化走廊場(chǎng)景如圖2所示,圖2(a)~(g)分別代表走廊場(chǎng)景1~7。SNNs拓?fù)浣Y(jié)構(gòu)如圖3所示,具體工作原理及相應(yīng)FPGA實(shí)現(xiàn)方案見2.2.1~2.2.3。
圖2 常見的7種走廊場(chǎng)景
圖3 移動(dòng)機(jī)器人走廊場(chǎng)景分類器中SNNs拓?fù)浣Y(jié)構(gòu)
第1層為輸入層,由sn×n個(gè)輸入神經(jīng)元組成。其中sn為機(jī)器人本體超聲傳感器環(huán)中的超聲傳感器個(gè)數(shù),n為在某走廊場(chǎng)景中n個(gè)連續(xù)時(shí)刻采集的n組超聲傳感器信息。
第2層為隱含層,有sn×n×ni個(gè)神經(jīng)元。第1層神經(jīng)元到第2層神經(jīng)元的連接權(quán)值均為w1(i1,j1)=1,其中j1為輸入層神經(jīng)元序號(hào),j1=1,2,…,sn×n,i1為隱含層神經(jīng)元序號(hào),i1=1,2,…,sn×n×ni,ni為待分類走廊場(chǎng)景個(gè)數(shù)。
第3層為輸出層,有ni個(gè)輸出神經(jīng)元。第2層神經(jīng)元到第3層神經(jīng)元的連接權(quán)值均為w2(i2,j2)=1,其中j2為隱含層神經(jīng)元序號(hào),j2=1,2,…,sn×n×ni,i2為輸出層神經(jīng)元序號(hào),i2=1,2,…,ni。輸出層神經(jīng)元之間為側(cè)向抑制聯(lián)結(jié),采用“贏者通吃(Winner-Takes-All,WTA)”的原則。
利用FPGA對(duì)文獻(xiàn)[21]中移動(dòng)機(jī)器人SNNs走廊場(chǎng)景分類器進(jìn)行硬件實(shí)現(xiàn),具體原理如圖4所示。將移動(dòng)機(jī)器人采集的超聲傳感器信息進(jìn)行脈沖編碼后輸入所設(shè)計(jì)的基于FPGA的SNNs走廊場(chǎng)景分類器中,通過SNNs的脈沖輸出模式判斷移動(dòng)機(jī)器人所處的走廊場(chǎng)景,采用硬件描述語言(Verilog HDL)設(shè)計(jì)并實(shí)現(xiàn)了圖4各模塊的相應(yīng)功能。
圖4 基于FPGA的移動(dòng)機(jī)器人SNNs走廊場(chǎng)景分類器的實(shí)現(xiàn)原理
(1)SNNs輸入層硬件實(shí)現(xiàn)由輸入時(shí)延編碼模塊(input_layer_latency_coding)完成(詳見2.2.1節(jié));
(2)SNNs隱含層的硬件實(shí)現(xiàn)由均值與方差運(yùn)算模塊(mean_variance)、浮點(diǎn)開方模塊(floating_square_root)和隱含時(shí)延編碼模塊(hidden_layer_latency_coding)3個(gè)功能模塊實(shí)現(xiàn)(詳見2.2.2節(jié));
(3)輸出層由逼近式IAF神經(jīng)元模塊(approximate_iaf_neuron)實(shí)現(xiàn)。該模塊實(shí)現(xiàn)了基于FPGA的逼近式脈沖積分點(diǎn)火神經(jīng)元模型(詳見2.2.3節(jié))并輸出相應(yīng)于不同走廊場(chǎng)景的脈沖模式,通過輸出脈沖模式識(shí)別走廊場(chǎng)景類別;
(4)FPGA將所得走廊場(chǎng)景的識(shí)別結(jié)果提供給移動(dòng)機(jī)器人控制器進(jìn)行下一步任務(wù)決策的同時(shí),由場(chǎng)景類別LCD輸出模塊(scene_classification_lcd_output)通過LCD屏顯示當(dāng)前機(jī)器人所處走廊場(chǎng)景信息。
2.2.1 輸入層的FPGA實(shí)現(xiàn)
輸入時(shí)延編碼模塊原理:
將移動(dòng)機(jī)器人在走廊場(chǎng)景中連續(xù)測(cè)得的n組超聲傳感信息經(jīng)過脈沖時(shí)延編碼后構(gòu)造融合向量,作為輸入層脈沖神經(jīng)元的輸入。
移動(dòng)機(jī)器人超聲傳感信息編碼成脈沖時(shí)延編碼的具體過程如下:
(1)超聲傳感器信息的脈沖時(shí)延編碼為:
(5)
其中,Twin為脈沖編碼的時(shí)間窗,在此設(shè)為20 ms。xij(m)為超聲傳感器在第i個(gè)走廊場(chǎng)景的第j(j=1,2,…,14)組測(cè)量信息中第m(m=1,2,…,16)個(gè)超聲傳感器的測(cè)量值。max(x)為超聲傳感器的最大測(cè)量范圍,取值為4 000 mm。Dij(m)為輸出的脈沖時(shí)延編碼。
(2)SNNs輸入層融合輸入向量為Dik。
Dik=[dik,di(k+1),…,di(k+n-1)]T
(6)
其中,i為待分類走廊場(chǎng)景(i=1,2,…,7),k為某走廊場(chǎng)景中輸入數(shù)據(jù)的組數(shù)(k=1,2,…,5),dik為第i個(gè)走廊場(chǎng)景中第k個(gè)時(shí)刻的16個(gè)超聲傳感器測(cè)量信息的脈沖時(shí)延編碼(dik=[Dik(1),Dik(2),…,Dik(m)]),n為在走廊場(chǎng)景中采用n個(gè)連續(xù)時(shí)刻采集的超聲傳感器信息構(gòu)造融合向量的組數(shù)(n=3),融合向量的構(gòu)造見文獻(xiàn)[21]。
輸入時(shí)延編碼模塊的FPGA實(shí)現(xiàn):
在對(duì)SNNs進(jìn)行硬件實(shí)現(xiàn)時(shí),采用硬件描述語言編程:為減少FPGA硬件使用資源、提高運(yùn)算速度和計(jì)算精度,算術(shù)運(yùn)算器均采用32位單精度浮點(diǎn)數(shù),其中整數(shù)部分用高12位二進(jìn)制數(shù)代表,小數(shù)部分用低10位二進(jìn)制數(shù)代表. 對(duì)超聲傳感器測(cè)量信息進(jìn)行預(yù)處理后用Verilog HDL編程實(shí)現(xiàn)公式(5),具體實(shí)現(xiàn)如算法1所示:
算法1:輸入時(shí)延編碼模塊的FPGA實(shí)現(xiàn)算法
輸入:整個(gè)輸入時(shí)延編碼模塊的仿真時(shí)間(Tsimulation)
輸入層神經(jīng)元數(shù)量(Nneuron)
超聲傳感器測(cè)量信息(xij(m))
輸出:時(shí)延編碼(Dij(m))
變量:時(shí)延編碼的時(shí)間窗長(zhǎng)(Twin)
超聲傳感器的最大測(cè)量范圍(max(x))
(1) FORtsimFROM 0 TOTsimulation
(2) FORnneuronFROM 0 TONneuron
(3) IF(xij(m)==max(x))
(4)Dij(m)=0
(5) ELSE
為保證運(yùn)算精度,提出數(shù)據(jù)擴(kuò)大再縮小的運(yùn)算方法,如步驟6中首先把xij(m)擴(kuò)大210,然后除以max(x),再模除1 024進(jìn)行縮放。取低10位二進(jìn)制數(shù)表示小數(shù)部分可滿足使用要求。
2.2.2 隱含層的FPGA實(shí)現(xiàn)
隱含層工作原理:
由于第1層神經(jīng)元到第2層神經(jīng)元的連接權(quán)值均為w1(i1,j1)=1,輸入層的脈沖時(shí)延編碼經(jīng)過聯(lián)結(jié)突觸輸入到隱含層。隱含層有著將輸入數(shù)據(jù)向聚類中心匯集的作用。
在第i個(gè)走廊場(chǎng)景中分別采集l組超聲傳感器測(cè)量信息,計(jì)算該組脈沖編碼的均值(μi)和方差(σi)。
(7)
(8)
其中,dij為第i個(gè)走廊場(chǎng)景中第j組超聲傳感器測(cè)量信息的脈沖時(shí)延編碼,l為超聲傳感器測(cè)量組數(shù)。
隱含層中神經(jīng)元的輸出如式(9)所示:
(9)
令
td(j)=O2(16×n×(i-1)+k)
(10)
其中,td(j)(j=1,2,…,sn×n×ni)為隱含層第j個(gè)脈沖神經(jīng)元的時(shí)延編碼。
均值與方差運(yùn)算模塊的FPGA實(shí)現(xiàn):
利用FPGA,采用硬件描述語言編程實(shí)現(xiàn)公式(7)的均值計(jì)算:對(duì)第i個(gè)走廊場(chǎng)景中在連續(xù)時(shí)刻采集的l組超聲傳感器測(cè)量信息(dij)進(jìn)行連加運(yùn)算,然后利用除法器對(duì)求和結(jié)果與l相除取其平均,實(shí)現(xiàn)均值運(yùn)算的硬件實(shí)現(xiàn)。
(11)
浮點(diǎn)開方模塊的FPGA實(shí)現(xiàn):
浮點(diǎn)開方模塊利用逐位循環(huán)開方算法的基本原理進(jìn)行硬件實(shí)現(xiàn)。逐位循環(huán)(Digit-Recurrence)開方算法[25-26]是一種類似于試平方根的手算方法,其原理為:通過時(shí)鐘周期不斷迭代,利用折半遍歷比較,計(jì)算差值不斷去逼近真實(shí)值,最終判斷最接近的根即為開方結(jié)果。
隱含時(shí)延編碼模塊的FPGA實(shí)現(xiàn):
通過輸入時(shí)延編碼模塊、隱含層均值與方差運(yùn)算模塊和隱含層浮點(diǎn)開方模塊分別計(jì)算出輸入時(shí)延編碼、均值和方差的結(jié)果,采用硬件描述語言編程來完成隱含時(shí)延編碼模塊的FPGA硬件實(shí)現(xiàn)。公式(9)計(jì)算結(jié)果有2種情況,如公式(12)所示。
(12)
為保證計(jì)算精度問題,隱含層的輸出由2部分組成:
(1)整數(shù)部分:因運(yùn)算出的隱含時(shí)延編碼的高10位均為0,所以可利用移位運(yùn)算符左移10位,也就是被移位的數(shù)據(jù)高10位0被丟棄,而低10位固定補(bǔ)0作為小數(shù)部分;
(2)小數(shù)部分:輸入時(shí)延編碼與各個(gè)均值用減法器連接后擴(kuò)大210,再除以方差,運(yùn)算結(jié)果用1 024取余作為小數(shù)部分。
最終,將其2部分直接相加即可得到隱含層神經(jīng)元輸出的脈沖時(shí)延編碼值。
隱含時(shí)延編碼模塊FPGA實(shí)現(xiàn)算法如下:
算法2:隱含時(shí)延編碼模塊的FPGA實(shí)現(xiàn)算法
輸入:整個(gè)隱含時(shí)延編碼模塊的仿真時(shí)間(Tsimulation)
隱含層神經(jīng)元數(shù)量(Nneuron)
超聲傳感器測(cè)量信息(xij(m))
輸入時(shí)延編碼(dik)
隱含層均值(μi)
隱含層方差(σi)
輸出:隱含時(shí)延編碼(td)
變量:超聲傳感器的最大測(cè)量范圍(max(x))
(1) FORtsimFROM 0 TOTsimulation
(2) FORnneuronFROM 0 TONneuron
(3) IF(xij(m)==max(x))
(5) ELSE IF(dik<μi)
(7) ELSE
2.2.3 輸出層的FPGA硬件實(shí)現(xiàn)
逼近式IAF神經(jīng)元模塊的硬件實(shí)現(xiàn)原理:
輸出層神經(jīng)元為IAF神經(jīng)元。隱含層神經(jīng)元的輸出脈沖通過連接權(quán)值為w2(i2,j2)的聯(lián)結(jié)突觸將激活膜潛能(ui(t))輸入到輸出層IAF神經(jīng)元。為了便于FPGA實(shí)現(xiàn)脈沖IAF神經(jīng)元模型(見公式(2)),提出由公式(13)~(15)實(shí)現(xiàn)的逼近式IAF神經(jīng)元模型來近似實(shí)現(xiàn)復(fù)雜IAF神經(jīng)元模型:
ui(t)=w2(i2,j2)ε(t-td(j))
(13)
式中,t為輸出層的時(shí)間窗長(zhǎng),核函數(shù)(ε)近似為:
(14)
其中,td(j)為隱含層輸出脈沖的時(shí)延編碼,膜時(shí)間常數(shù)τ=800 ms。
輸出層逼近式IAF神經(jīng)元的輸出脈沖為:
(15)
其中,?為脈沖神經(jīng)元的點(diǎn)火閾值。
逼近式IAF神經(jīng)元模塊的FPGA實(shí)現(xiàn):
輸出層的逼近式IAF神經(jīng)元模塊實(shí)現(xiàn)了膜潛能計(jì)算和脈沖IAF神經(jīng)元模型的相應(yīng)功能,該模塊的核心環(huán)節(jié)是核函數(shù)(ε)的計(jì)算。使用減法器和除法器分別計(jì)算逼近式IAF神經(jīng)元模塊中由隱含層神經(jīng)元輸出脈沖(該輸出脈沖采用脈沖時(shí)延編碼,詳見2.2.2)提供的激活膜潛能值,該激活膜潛能值與逼近式IAF神經(jīng)元點(diǎn)火閾值進(jìn)行比較,來判斷是否發(fā)放脈沖。該研究針對(duì)7個(gè)走廊場(chǎng)景進(jìn)行分類,輸出層設(shè)有對(duì)應(yīng)的7個(gè)輸出IAF神經(jīng)元。如有一輸出神經(jīng)元先發(fā)放脈沖,因最先點(diǎn)火的神經(jīng)元對(duì)其他神經(jīng)元有側(cè)向抑制作用,使得其他輸出神經(jīng)元不再點(diǎn)火。
逼近式IAF神經(jīng)元模塊的FPGA實(shí)現(xiàn)如下:
算法3:逼近式IAF神經(jīng)元模塊的FPGA實(shí)現(xiàn)算法
輸入:整個(gè)逼近式IAF神經(jīng)元模塊的仿真時(shí)間(Tsimulation)
輸出層神經(jīng)元數(shù)量(Nneuron)
隱含層的時(shí)延編碼(td(j))
輸出:膜潛能(ui(t))
脈沖輸出(Oi)
變量:膜時(shí)間常數(shù)(τ)
點(diǎn)火閾值(?)
(1) FORtsimFROM 0 TOTsimulation
(2) FORnneuronFROM 0 TONneuron
(3)ui(t)=(t-td(j))/τ
(4) IF(ui(t)≤?)
(5)Oi=1
(6) ELSE
(7)Oi=0
所提基于FPGA的移動(dòng)機(jī)器人SNNs走廊場(chǎng)景分類器選用Altera公司Cyclone IV EP4CE10F17C8型號(hào)FPGA芯片,仿真環(huán)境為Modelsim,開發(fā)環(huán)境為Quartus II 13.1. 使用硬件描述語言(Verilog HDL)設(shè)計(jì)并實(shí)現(xiàn)了分類器中輸入時(shí)延編碼、均值與方差運(yùn)算、浮點(diǎn)開方、隱含時(shí)延編碼、逼近式IAF神經(jīng)元和場(chǎng)景類別LCD輸出模塊的相應(yīng)功能。下面對(duì)上述功能模塊的時(shí)序仿真結(jié)果進(jìn)行分析和討論,其中clk和clr分別為系統(tǒng)時(shí)鐘和復(fù)位信號(hào),cnt為波形信號(hào)計(jì)數(shù)器。
實(shí)驗(yàn)中采用走廊場(chǎng)景分類準(zhǔn)確率、分類器中FPGA所實(shí)現(xiàn)模塊的計(jì)算精度,以及FPGA的資源利用率等指標(biāo)對(duì)所提方法進(jìn)行評(píng)價(jià):(1)分類準(zhǔn)確率:用于驗(yàn)證所提走廊場(chǎng)景分類器的有效性;(2)計(jì)算精度:SNNs走廊場(chǎng)景分類器FPGA實(shí)現(xiàn)的核心環(huán)節(jié)之一是用逼近式IAF神經(jīng)元模型(見公式(13)~(15))來近似實(shí)現(xiàn)復(fù)雜脈沖IAF神經(jīng)元模型。其中實(shí)現(xiàn)逼近式IAF神經(jīng)元模型的FPGA相應(yīng)模塊的計(jì)算精度直接決定了最終IAF模型的實(shí)現(xiàn)精度。 實(shí)驗(yàn)中采用絕對(duì)誤差和相對(duì)誤差作為評(píng)價(jià)指標(biāo),反映各模塊的計(jì)算準(zhǔn)確程度;(3)資源利用率:指示所設(shè)計(jì)系統(tǒng)硬件資源使用量與可用量之比。利用率越低,意味著硬件系統(tǒng)的可拓展性資源越多,越便于未來系統(tǒng)功能的進(jìn)一步升級(jí)和擴(kuò)展。
輸入時(shí)延編碼模塊的仿真結(jié)果如圖5所示。超聲傳感器測(cè)量信息(xij(m))(見式(5))為輸入信號(hào)(x_in),時(shí)延編碼(dij(m))(見式(5))作為輸出信號(hào)(T_delay_out)。圖5實(shí)驗(yàn)結(jié)果表明:超聲傳感測(cè)量信息(x_in)為4 000 mm時(shí),時(shí)延編碼(T_delay_out)為0 ms;超聲傳感測(cè)量信息(x_in)為830 mm,800 mm時(shí),時(shí)延編碼(T_delay_out)分別為15.859 4 s,16.015 6 ms。實(shí)驗(yàn)結(jié)果的誤差分析見表1,驗(yàn)證了FPGA實(shí)現(xiàn)脈沖時(shí)延編碼方案的正確性。
表1 各模塊運(yùn)算誤差
圖5 輸入時(shí)延編碼模塊的仿真波形
(a)被開方數(shù)的輸入仿真波形
隱含時(shí)延編碼模塊的仿真結(jié)果如圖7所示。圖中輸入信號(hào)有:x_in,T_delay_in(分別代表超聲傳感器測(cè)量信息(xij(m))和時(shí)延編碼(Dij(m)),見式(5)),mean_in(代表均值(μi),見式(7))和variance_in(代表方差(σi),見式(8))。輸出信號(hào)(t_d_out)代表隱含層的時(shí)延編碼(td(j),見式(10))。圖7中超聲傳感器測(cè)量信息(x_in)為4 000 mm,時(shí)延編碼(T_delay_in)為0 ms,均值(mean_in)為3.637 7和方差(variance_in)為2.120 12時(shí),隱含層時(shí)延編碼(t_d_out)輸出為1.714 84 ms,時(shí)延編碼模塊的其他實(shí)驗(yàn)結(jié)果(見表1)亦在誤差允許范圍內(nèi)。仿真實(shí)驗(yàn)結(jié)果表明基于FPGA的隱含時(shí)延編碼方案正確有效。
圖7 隱含時(shí)延編碼模塊的仿真波形
在逼近式IAF神經(jīng)元模塊的仿真實(shí)驗(yàn)中,設(shè)定計(jì)算時(shí)間軸長(zhǎng)10 000 ms,包含m=5個(gè)時(shí)間窗,每一時(shí)間窗口(T)均為2 000 ms,點(diǎn)火閾值設(shè)置為119.908。時(shí)序仿真時(shí)輸入第1類至第7類走廊場(chǎng)景采集的超聲數(shù)據(jù)到所設(shè)計(jì)的FPGA走廊場(chǎng)景分類器中,得到7個(gè)輸出神經(jīng)元的膜潛能和輸出脈沖模式,根據(jù)輸出脈沖模式得出機(jī)器人當(dāng)前所處走廊場(chǎng)景。當(dāng)機(jī)器人所處第i個(gè)走廊場(chǎng)景時(shí),輸出層第i個(gè)神經(jīng)元(Oi)的輸入激活膜潛能最先達(dá)到點(diǎn)火閾值發(fā)放脈沖時(shí),因?yàn)镾NNs采用側(cè)向抑制聯(lián)結(jié),此時(shí)輸出層神經(jīng)元僅有Oi點(diǎn)火,機(jī)器人所處走廊場(chǎng)景為1。因篇幅所限,在此僅給出了第1,7類2個(gè)走廊場(chǎng)景下的仿真結(jié)果(如圖8所示)。逼近式IAF神經(jīng)元模塊的輸出信號(hào)包括代表膜潛能(ui(t),見式(13))的信號(hào)(u_1-u_7)和代表脈沖輸出(Oi(t),見式(15))信號(hào)的result_1-result_7。當(dāng)圖8(a)中輸入信號(hào)為第1類走廊場(chǎng)景所采集的超聲數(shù)據(jù)時(shí),可以看到圖中輸出信號(hào)(result_1)為高電平,而信號(hào)(result_2-result_7)均為低電平,走廊場(chǎng)景分類器識(shí)別機(jī)器人位于走廊場(chǎng)景1;圖8(b)中輸入信號(hào)為第7類走廊場(chǎng)景所采集的超聲數(shù)據(jù),result_7為高電平,result_1-result_6為低電平,走廊場(chǎng)景分類器識(shí)別機(jī)器人位于走廊場(chǎng)景7。
(a)輸入第1類走廊場(chǎng)景的超聲數(shù)據(jù)時(shí),輸出神經(jīng)元的膜潛能和輸出脈沖
圖8實(shí)驗(yàn)結(jié)果表明,當(dāng)機(jī)器人位于第1和7類走廊場(chǎng)景時(shí),將采集到的相應(yīng)走廊場(chǎng)景超聲傳感器數(shù)據(jù)輸入到所設(shè)計(jì)的基于FPGA的走廊場(chǎng)景分類器中,均能正確分類。實(shí)驗(yàn)結(jié)果證明,采用脈沖時(shí)延編碼,結(jié)合所提逼近式脈沖IAF神經(jīng)元模型,實(shí)現(xiàn)了走廊場(chǎng)景的識(shí)別。
在利用FPGA實(shí)現(xiàn)走廊場(chǎng)景分類器功能時(shí),需要FPGA實(shí)現(xiàn)相應(yīng)的計(jì)算均值、方差、開方等各種運(yùn)算。為保證有效實(shí)現(xiàn)所設(shè)計(jì)SNNs的相應(yīng)功能,需要基于FPGA的運(yùn)算模塊達(dá)到所需的計(jì)算精度。圖4中輸入層、隱含層、輸出層各模塊采用FPGA實(shí)現(xiàn)時(shí),產(chǎn)生的誤差有:
(1)輸入信號(hào)轉(zhuǎn)換產(chǎn)生的誤差。在進(jìn)行FPGA實(shí)現(xiàn)之前,需將超聲傳感器信息轉(zhuǎn)換成定點(diǎn)型數(shù)據(jù),這使得實(shí)際數(shù)據(jù)中小數(shù)部分被截?cái)喽鴰碚`差;
(2)運(yùn)算結(jié)果溢出產(chǎn)生的誤差?;贔PGA的SNNs在進(jìn)行基本數(shù)據(jù)運(yùn)算時(shí),數(shù)據(jù)可能因位寬不足導(dǎo)致溢出,計(jì)算出的數(shù)據(jù)需要截?cái)?截?cái)鄶?shù)據(jù)會(huì)引起相應(yīng)的計(jì)算誤差。
為了減少運(yùn)算誤差,提出了基于SNNs的數(shù)據(jù)擴(kuò)大再縮小的運(yùn)算方法(見2.2.1節(jié)),以保證FPGA實(shí)現(xiàn)的運(yùn)算精度。各模塊運(yùn)算誤差如表1所示,其中δ和Er分別表示絕對(duì)誤差和相對(duì)誤差。通過表1可知,各模塊計(jì)算的絕對(duì)誤差最大在10-4數(shù)量級(jí),相對(duì)誤差在10-3數(shù)量級(jí)以下。實(shí)驗(yàn)結(jié)果證明了所提方法能夠滿足分類器所需的精度要求。
圖9為FPGA通過RGB TFT-LCD接口在機(jī)器人本體上的LCD液晶屏中顯示走廊場(chǎng)景分類器輸出的移動(dòng)機(jī)器人當(dāng)前所處走廊場(chǎng)景類別及所對(duì)應(yīng)的走廊場(chǎng)景示意圖,走廊場(chǎng)景示意圖具體如圖2所示。
圖9 基于FPGA的SNNs走廊場(chǎng)景分類器實(shí)驗(yàn)結(jié)果
由于脈沖神經(jīng)網(wǎng)絡(luò)的使用,基于FPGA的移動(dòng)機(jī)器人走廊場(chǎng)景分類器具有占用芯片資源少、可擴(kuò)展性好、計(jì)算效率高的優(yōu)點(diǎn),其中LE的占用率僅10%(1 067/10 320)。
所提基于FPGA的移動(dòng)機(jī)器人SNNs走廊場(chǎng)景分類器的分類準(zhǔn)確率為92.86%。對(duì)于同樣的走廊場(chǎng)景識(shí)別任務(wù),采用相同的超聲傳感信息,文獻(xiàn)[21]中基于BP神經(jīng)網(wǎng)絡(luò)的軟件實(shí)現(xiàn)方法分類準(zhǔn)確率為82%,文獻(xiàn)[16]中基于階次編碼和NeuCube模型的SNNs軟件實(shí)現(xiàn)方法的分類準(zhǔn)確率為92.86%,文獻(xiàn)[21]中基于時(shí)延編碼和IAF神經(jīng)元模型的SNNs方法的分類準(zhǔn)確率為94%。所提方法是文獻(xiàn)[21]SNNs軟件方法的硬件實(shí)現(xiàn),二者分類準(zhǔn)確率僅相差1.14%。實(shí)驗(yàn)結(jié)果表明,所提SNNs硬件實(shí)現(xiàn)方案可以保證SNNs走廊場(chǎng)景分類的有效性,且基于FPGA的SNNs走廊場(chǎng)景分類器更適于實(shí)際使用,該研究有助于SNNs神經(jīng)形態(tài)芯片在機(jī)器人領(lǐng)域的應(yīng)用。
實(shí)驗(yàn)部分FPGA實(shí)現(xiàn)的輸入時(shí)延編碼、均值與方差運(yùn)算、浮點(diǎn)開方、隱含時(shí)延編碼和逼近式IAF神經(jīng)元模塊的時(shí)序仿真結(jié)果及相應(yīng)誤差分析表明,各模塊計(jì)算的絕對(duì)誤差最大在10-4數(shù)量級(jí),相對(duì)誤差在10-3數(shù)量級(jí)以下,滿足了分類器所需的運(yùn)算精度要求,利用FPGA有效地實(shí)現(xiàn)了脈沖IAF神經(jīng)元模型。此外,基于FPGA的移動(dòng)機(jī)器人SNNs走廊場(chǎng)景分類器的分類準(zhǔn)確率為92.86%,驗(yàn)證了所提方法對(duì)于走廊場(chǎng)景識(shí)別的有效性。在FPGA硬件資源使用方面,所提走廊場(chǎng)景分類器的LE利用率僅10%,說明此分類器具有良好的擴(kuò)展性能。
所設(shè)計(jì)的走廊場(chǎng)景分類器不受光照條件的影響,需要的傳感器信息少、結(jié)構(gòu)簡(jiǎn)單易于實(shí)施。該研究可提高移動(dòng)機(jī)器人的環(huán)境感知能力,為脈沖神經(jīng)網(wǎng)絡(luò)的實(shí)用化提供了解決思路,為類腦神經(jīng)形態(tài)芯片的發(fā)展提供了有益參考。信息處理速度快、能耗低、輕量化的神經(jīng)機(jī)器人將是機(jī)器人技術(shù)未來發(fā)展方向之一,該研究亦為未來實(shí)現(xiàn)神經(jīng)機(jī)器人奠定了基礎(chǔ)。