<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于FPGA的脈沖耦合神經(jīng)網(wǎng)絡(luò )的硬件實(shí)現

基于FPGA的脈沖耦合神經(jīng)網(wǎng)絡(luò )的硬件實(shí)現

作者: 時(shí)間:2016-09-12 來(lái)源:網(wǎng)絡(luò ) 收藏

摘要:針對(PCNN)具有神經(jīng)元脈沖同步激發(fā)、適合的特點(diǎn),提出了一種基于的PCNN實(shí)時(shí)處理系統。系統設計了時(shí)鐘分頻、串口通信、串并轉換、PCNN結構和VGA顯示等功能模塊,利用Verilog語(yǔ)言完成各個(gè)模塊的硬件描述,并在ModelSim10.0c環(huán)境下進(jìn)行了仿真,最后在A(yíng)ltera CvcloneII開(kāi)發(fā)平臺上對系統進(jìn)行了驗證。實(shí)驗結果表明,該系統完成了PCNN的實(shí)現,實(shí)時(shí)性較好。

本文引用地址:http://dyxdggzs.com/article/201609/303563.htm

人工神經(jīng)網(wǎng)絡(luò )在智能控制、模式識別、等領(lǐng)域中應用廣泛。在進(jìn)行神經(jīng)網(wǎng)絡(luò )的應用研究時(shí),人們可以將神經(jīng)網(wǎng)絡(luò )模型或算法在通用的計算機上軟件編程實(shí)現,但很多時(shí)間浪費在分析指令、讀出寫(xiě)入數據等,其實(shí)現效率并不高。軟件實(shí)現的缺點(diǎn)是并行程度較低,因此利用軟件實(shí)現神經(jīng)網(wǎng)絡(luò )的方法無(wú)法滿(mǎn)足某些對數據實(shí)時(shí)處理要求較高的場(chǎng)合(如工業(yè)控制等領(lǐng)域)。

目前實(shí)現大規模、實(shí)時(shí)性要求高的神經(jīng)網(wǎng)絡(luò ),傳統的軟件算法實(shí)現方法顯示出其難以滿(mǎn)足速度等要求的不足。此外,在構建神經(jīng)網(wǎng)絡(luò )時(shí)必然需要考慮問(wèn)題。由于神經(jīng)網(wǎng)絡(luò )具有并行計算的特點(diǎn)和功能,可以有效發(fā)掘算法本身的并行特性,提出高效的硬件電路結構,從而完成神經(jīng)網(wǎng)絡(luò )的。

(Pulse Coupled Neural Network,PCNN)是新一代的神經(jīng)網(wǎng)絡(luò ),在研究貓等哺乳動(dòng)物的視覺(jué)神經(jīng)元時(shí),根據其脈沖同步發(fā)放的工作原理所提出的。目前,P CNN理論仍在發(fā)展中,由于其獨特的并行性能,在圖像分割與平滑、邊緣檢測與細化、決策與優(yōu)化等領(lǐng)域應用廣泛。當前的研究重點(diǎn)在于模型的優(yōu)化和軟件的實(shí)現,而相關(guān)的硬件實(shí)現在國內并不多見(jiàn),PCNN并行結構的特性為硬件實(shí)現提供了可能。

1 PCNN的基本原理

是一種單層模式的兩維神經(jīng)網(wǎng)絡(luò ),它的基本單元是脈沖耦合網(wǎng)絡(luò )的神經(jīng)元。圖1為PCNN的單個(gè)神經(jīng)元模型框圖,它由輸入部分、連接調制部分、脈沖發(fā)生器部分3部分構成。

a.jpg

輸入部分即接收域,其接收信號來(lái)源有兩部分:鄰近神經(jīng)元產(chǎn)生的信號和外部的輸入激勵。這兩部分信號通過(guò)兩個(gè)不同的路徑進(jìn)行傳遞,其中一個(gè)路徑傳遞反饋輸入信號,其包含外部輸入激勵,該路徑即為F路徑;另一個(gè)路徑傳遞連接輸入信號,其包含來(lái)自鄰近神經(jīng)元產(chǎn)生的信號,該路徑即為L(cháng)路徑。

連接調制部分完成上述兩個(gè)路徑信號的耦合,經(jīng)過(guò)一定的信號處理,產(chǎn)生神經(jīng)元的內部活動(dòng)項。該信號處理需要首先通過(guò)一個(gè)正的單位偏置和L路徑的連接輸入信號的累加,然后與F路徑的反饋輸入信號完成相乘調制。該神經(jīng)元的內部活動(dòng)項即為信號經(jīng)調制得到的乘積結果。

脈沖發(fā)生器和閾值大小變化的比較器構成PCNN單個(gè)神經(jīng)元的脈沖發(fā)生部分。如果達到脈沖發(fā)放條件,則該脈沖發(fā)生器起作用,發(fā)出一個(gè)頻率恒定不變的脈沖,此時(shí)神經(jīng)元處于點(diǎn)火狀態(tài)。

根據圖1模型,每個(gè)神經(jīng)元按照公式(1)完成迭代運算,實(shí)現上述PCNN的功能。

b.jpg

式(1)中,Fij[n]是某個(gè)神經(jīng)元的第n次反饋輸入信號;αF與αL表示迭代時(shí)間常數;Sij表示外部輸入常數,在時(shí)即為像素矩陣中像素的灰度值;Lij[n]是神經(jīng)元的線(xiàn)性輸入項;wijkl與mijkl表示突觸間聯(lián)接權值系數;Uij[n]是神經(jīng)元的內部活動(dòng)項;Tij[n]是Uij[n]是否激發(fā)生成脈沖的動(dòng)態(tài)閾值;β是神經(jīng)元突觸間的連接強度系數;Yij[n]為PCNN的脈沖輸出項。由于信號Lij[n]比信號Fij[n]變化快,經(jīng)過(guò)相乘調制的信號Uij[n]就等同于把一個(gè)快速變化的信號加在一個(gè)近似不變的信號上。

如果某個(gè)神經(jīng)元點(diǎn)火,即發(fā)出一個(gè)脈沖信號,那么由于內部活動(dòng)項大于當前的門(mén)限閾值,下一次迭代運算后閾值將通過(guò)其時(shí)間常數αT和幅度系數VT突然變大。而此時(shí)迭代后的閾值Tij[n]遠大于Uij[n],因此神經(jīng)元將被抑制,脈沖信號停止輸出,即處于未點(diǎn)火狀態(tài)。在這一狀態(tài)下,周?chē)窠?jīng)元不斷點(diǎn)火,產(chǎn)生響應的脈沖信號,通過(guò)L路徑的輸入提高內部活動(dòng)項,與此同時(shí)閾值經(jīng)指數運算不斷較小。在某一次迭代時(shí),當前閾值將再次小于Uij[n],此時(shí)神經(jīng)元將被激活,脈沖信號開(kāi)始輸出,即神經(jīng)元再次被點(diǎn)火。如此周而復始,不用神經(jīng)元在點(diǎn)火和為點(diǎn)火狀態(tài)進(jìn)行切換,從而實(shí)現脈沖同步激發(fā)。

2 系統硬件實(shí)現

2.1 PCNN模型的改進(jìn)

對于上述PCNN模型結構,在等應用中仍存在一定的局限性:

1)PCNN涉及到的參數較多,增加了數學(xué)運算的難度,實(shí)現算法比較困難;

2)網(wǎng)絡(luò )參數確定較為困難。

此外,為了易于實(shí)現.把標準的PCNN進(jìn)行一定的簡(jiǎn)化和改進(jìn)。將反饋輸入只當做對應象素的灰度值強度,所以F路徑的連接權值矩陣M為零。改進(jìn)后的第一個(gè)優(yōu)點(diǎn)是減少了迭代的時(shí)間,而迭代的質(zhì)量仍與標準PCNN模型接近,第二個(gè)優(yōu)點(diǎn)是節約了FPGA資源的利用。改進(jìn)模型的數學(xué)表達式與標準模型相似,只是饋送域不同。饋送域表達式為:

Fij[n]=Sij (2)

2.2 小數的定點(diǎn)表示方法

由于Vetilog無(wú)法直接定義小數類(lèi)型,所以采用小數的定點(diǎn)表示法表示小數??紤]到灰度值為8位二進(jìn)制數據,故小數的表示形式為8.8>,即整數位數和小數位數都為8位,整數的表示形式為8.0>,即整數位數為8位,小數位數為0位。由于并沒(méi)有存儲小數的位置信息,所以需要根據先前的約定對最后的結果進(jìn)行截取。如式(3)所示,最后的運算結果為24位,低8位為小數部分,而利用Verilog的位操作運算截取中間8位即為更新后的灰度值。

8.8>*8.0>+8.8>*8.0>=16.8> (3)

2.3 PCNN參數選擇

利用2.1節介紹的PCNN改進(jìn)模型,描述單個(gè)神經(jīng)元的PCNN算法。表1為本設計方案PCNN模型參數的經(jīng)驗設定,其閾值衰減設為每次運算后閾值的約0.9倍。為使算法利于硬件實(shí)現,實(shí)驗中將設定神經(jīng)元連接強度β=1,連接域增益VL=1。

c.jpg

其連接域鄰域矩陣為:

d.jpg

2.4 系統整體設計框圖

在進(jìn)行圖像處理時(shí),需要把神經(jīng)元與像素一一對應,神經(jīng)網(wǎng)絡(luò )的大小取決于圖像的大小。如果需要處理的圖像體積較大,那么硬件資源將被大量占用,繼而需要更高規格的FPGA芯片來(lái)實(shí)現。本文介紹一個(gè)簡(jiǎn)單的PCNN硬件系統,可以處理3×3、8位的灰度圖像。

PCNN在FPGA實(shí)現的系統框圖如圖2所示。系統分為5個(gè)主要的功能模塊:時(shí)鐘分頻模塊、串口接收模塊、串并轉換模塊、PCNN模塊和VGA顯示模塊。圖中除PC機部分都在FPGA上實(shí)現。PC機包含上位機串口通信軟件,常見(jiàn)的有VB串口通信助手、串口大師等,可實(shí)現串口的調試、測試、監控和過(guò)濾等功能。

e.jpg

系統需要完成的工作分為三大部分:圖像的輸入、圖像的處理和圖像的顯示輸出。系統詳細的工作過(guò)程描述如下:PC機通過(guò)串口軟件(如串口大師)發(fā)送圖像數據,串口接收模塊接收圖像數據并通過(guò)模塊內部的FIFO存儲數據;串并轉換模塊將串口接收模塊存儲的圖像數據并行輸出給PCNN模塊,等待處理;PCNN模塊接收到圖像數據后,開(kāi)始進(jìn)行迭代,并輸出給VGA顯示模塊;VGA顯示模塊負責顯示圖像經(jīng)PCNN模塊處理后的二值序列,以觀(guān)察PCNN的處理效果。由于本實(shí)驗采用的FPGA實(shí)驗平臺提供的時(shí)鐘頻率為50 MHz,而串口接收模塊、PCNN模塊和VGA顯示模塊需要特定的時(shí)鐘頻率才能工作,所以必須設計時(shí)鐘分頻模塊以產(chǎn)生滿(mǎn)足要求的時(shí)鐘頻率。

3 系統仿真

由于考慮邊緣神經(jīng)元的特殊情況,設計了3種略有差異的神經(jīng)元,即周?chē)窠?jīng)元輸入分別為2、3和4的神經(jīng)元。這里僅選取4輸入的PCNN神經(jīng)元進(jìn)行仿真,神經(jīng)元的閾值為200以驗證神經(jīng)元功能的正確性。通過(guò)選取了4個(gè)典型的圖像灰度值S輸入,分別為4、100、200和250,經(jīng)仿真驗證了單個(gè)神經(jīng)元的正確性。

利用單個(gè)PCNN神經(jīng)元,構建了包含9個(gè)PCNN神經(jīng)元PCNN模塊,能處理3×3大小的圖像,通過(guò)網(wǎng)絡(luò )迭代,得到理想的圖像。通過(guò)串口輸入數據:181、187、140、120、120、4、46、83、120,對PCNN模塊進(jìn)行了仿真。為了便于觀(guān)察,選取其中3個(gè)神經(jīng)元的時(shí)序仿真結果,如圖3所示。由圖3知,PCNN輸出呈現0和1的不斷變化,且能看出3個(gè)神經(jīng)元中由于耦合效應產(chǎn)生了不同的結果。圖3中S1~S3為9個(gè)像素灰度值的3個(gè)輸入,Y1~Y3為圖像經(jīng)PCNN處理后3個(gè)二值序列值。

f.jpg

4 系統驗證與分析

本實(shí)驗以Altera Cyclone II開(kāi)發(fā)平臺為驗證環(huán)境,選用Cyclone系列中的EP2C35F672芯片。利用串口軟件發(fā)送網(wǎng)像數據,FPGA經(jīng)PCNN處理后將二值結果顯示在VGA顯示器上。PCNN模塊的時(shí)鐘輸入頻率為100MHz,VGA顯示模塊的時(shí)鐘輸入頻率為25 MHz。對于波特率,考慮到已經(jīng)完成的串口接收模塊,選取波特率115 200 bps,以匹配串口接收模塊

的采樣頻率。數據位有8位,無(wú)檢驗位,包含1位停止位,傳輸數據以16進(jìn)制的形式進(jìn)行發(fā)送。

為了便于觀(guān)察,考慮到顯示器的刷新頻率和人眼的視覺(jué)暫留,將PCNN網(wǎng)絡(luò )的迭代處理頻率設定為1 Hz,即顯示器每1秒顯示一次迭代效果圖。圖4為顯示器前40次的顯示效果。圖中九宮格代表要處理的3×3輸出圖像,一個(gè)方格代表一個(gè)像素點(diǎn)。九宮格中灰色方框神經(jīng)元點(diǎn)火,即輸出為“1”。黑色方框代表神經(jīng)元未點(diǎn)火,即輸出為“0”。

g.jpg

據實(shí)驗平臺的測試結果,與除去VGA模塊的硬件模塊ModelSim仿真結果進(jìn)行了對比。圖5為除去VGA模塊的硬件模塊的功能仿真圖。圖中高電平代表“1”,低電平代表“0”。

h.jpg

將圖5與圖4進(jìn)行對比,圖5中高電平代表圖4中的黃色方塊,圖5中低電平代表圖4中的黑色方塊,兩結果完全符合,這也驗證了PCNN網(wǎng)絡(luò )硬件實(shí)現的正確性。此外,由圖4和圖5看出,神經(jīng)元1、2、3、4、5、8、9在幾次迭代后輸出始終為“1”,這是由于神經(jīng)元的內部活動(dòng)項始終大于閾值。而由于神經(jīng)元6和7的圖像輸入值較小,內部活動(dòng)項部分和閾值部分不斷變化,使得在周?chē)窠?jīng)元的作用下,呈現周期性的“0”和“1”輸出。

5 結論

本文根據脈沖耦合神經(jīng)網(wǎng)絡(luò )具有并行計算的特點(diǎn),提出了一種基于FPGA的神經(jīng)網(wǎng)絡(luò )硬件實(shí)現方案。利用Verilog硬件描述語(yǔ)言完成了系統模塊的設計,構建的PCNN神經(jīng)網(wǎng)絡(luò )

在FPGA開(kāi)發(fā)平臺上進(jìn)行了驗證。通過(guò)處理簡(jiǎn)單的3x3圖像,并觀(guān)察VGA顯示結果,完成了PCNN的FPGA實(shí)現,達到了設計要求,圖像處理實(shí)時(shí)性較好。下一步將研究構建更復雜的PCNN網(wǎng)絡(luò )結構,以處理更大的圖像數據。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>