0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于caffe和Lasagne CNN分類器的FPGA上實(shí)現(xiàn)

電子設(shè)計(jì) ? 來(lái)源:PYNQ開(kāi)源社區(qū) ? 作者:PYNQ開(kāi)源社區(qū) ? 2020-11-09 17:28 ? 次閱讀

近來(lái)卷積神經(jīng)網(wǎng)絡(luò)(CNN)的研究十分熱門(mén)。CNN發(fā)展的一個(gè)瓶頸就是它需要非常龐大的運(yùn)算量,在實(shí)時(shí)性上有一定問(wèn)題。而FPGA具有靈活、可配置和適合高并行度計(jì)算的優(yōu)點(diǎn),十分適合部署CNN。

快速開(kāi)始

環(huán)境需求PYNQ v2.4,Python 3.6.5。

需要安裝caffe和Lasagne這兩個(gè)計(jì)算平臺(tái)。我們將使用caffe中預(yù)訓(xùn)練的參數(shù)并利用Lasagne來(lái)搭建網(wǎng)絡(luò)

具體安裝過(guò)程參見(jiàn)github項(xiàng)目文件中的 PYNQ案例-分類器.docx這個(gè)文檔,其包含了本項(xiàng)目的詳細(xì)操作步驟。

Overlay介紹

PYNQ-Classifcation是一個(gè)軟件上基于caffe和Lasagne,硬件加速的CNN分類器項(xiàng)目,它使用python語(yǔ)言在PYNQ框架下進(jìn)行軟件編程和硬件驅(qū)動(dòng)。

上圖為工程項(xiàng)目示意圖。通過(guò)軟硬件劃分,在PS端中負(fù)責(zé)Linux通信,而PL端負(fù)責(zé)運(yùn)算加速。在PYNQ中加載bit時(shí),PL端的控制部分將以IP核形式呈現(xiàn)。通過(guò)Python,對(duì)IP核的參數(shù)配置來(lái)實(shí)現(xiàn)控制。

此項(xiàng)目中采用的CNN結(jié)構(gòu)示意圖(以CIFAR_10為例子),本項(xiàng)目中的卷積層由兩個(gè)子層構(gòu)成,一個(gè)是im2col子層,它的作用是將輸入矩陣中的卷積窗口展開(kāi)乘一維向量,另一個(gè)是點(diǎn)乘子層,它的作用是將im2col子層輸出的向量和展開(kāi)成一維的卷積核相乘加。卷積層有一個(gè)參數(shù)是output_rectify,這對(duì)應(yīng)的是當(dāng)前卷積層是否應(yīng)用Relu非線性層,0為否,1為是。池化層(pool)有兩種選項(xiàng),一是最大值池化,二是平均值池化。

項(xiàng)目演示(CIFAR-10為例)

運(yùn)行

/PYNQ-Classification/python_notebooks/Theano/CIFAR_10/Using a Caffe Pretrained Network - CIFAR10.ipynb

-- 如果想嘗試Lenet5則運(yùn)行

/PYNQ-Classification/python_notebooks/Theano/Lenet/Using a Caffe Pretrained Network - LeNet5.ipynb

它們的notebook類似,只不過(guò)硬件上部署的網(wǎng)絡(luò)不一樣

開(kāi)始

將庫(kù)都包含進(jìn)工程,并且讀取caffe中預(yù)先訓(xùn)練好的CIFAR_10模型。

然后

建立一個(gè)Lasagne的網(wǎng)絡(luò)結(jié)構(gòu),這個(gè)網(wǎng)絡(luò)結(jié)構(gòu)和硬件中的結(jié)構(gòu)類似,硬件中去掉了第一個(gè)ReLU層。將訓(xùn)練好的模型參數(shù)導(dǎo)入到這個(gè)網(wǎng)絡(luò)中。

下一步

我們將模型參數(shù)導(dǎo)入硬件,使用FPGALoadW函數(shù)來(lái)實(shí)現(xiàn)這一步。函數(shù)會(huì)打印出一些有關(guān)信息

接下來(lái)

導(dǎo)入CIFAR_10數(shù)據(jù)集

這里我們構(gòu)建一張新的網(wǎng)絡(luò),把原來(lái)的中間層換成我們自定義的FPGA_CIFAR10層,這一層把原來(lái)的中間層全部包含了進(jìn)去,并在FPGA上實(shí)現(xiàn)。然后輸入數(shù)據(jù)集,得到結(jié)果,結(jié)果保存在FPGA_predicted中。最后顯示了準(zhǔn)確度,達(dá)到72.8%。這里也會(huì)顯示一些耗時(shí)。

這里我們可以看到這個(gè)網(wǎng)絡(luò)的部分識(shí)別結(jié)果。

這里再用CPU運(yùn)行一遍這個(gè)網(wǎng)絡(luò),可以看到它用時(shí)46.5秒,比使用FPGA完成卷積慢了很多。

編輯:hfy
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1630

    文章

    21769

    瀏覽量

    604651
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10889

    瀏覽量

    212386
  • 卷積神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    4

    文章

    367

    瀏覽量

    11885
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    TF之CNNCNN實(shí)現(xiàn)mnist數(shù)據(jù)集預(yù)測(cè)

    TF之CNNCNN實(shí)現(xiàn)mnist數(shù)據(jù)集預(yù)測(cè) 96%采用placeholder用法+2層C及其max_pool法+隱藏層dropout法+輸出層softmax法+目標(biāo)函數(shù)cross_entropy法+
    發(fā)表于 12-19 17:02

    TensorFlow的CNN文本分類

    在TensorFlow中實(shí)現(xiàn)CNN進(jìn)行文本分類(譯)
    發(fā)表于 10-31 09:27

    如何移植一個(gè)CNN神經(jīng)網(wǎng)絡(luò)到FPGA中?

    二次開(kāi)發(fā)。移植一個(gè)神經(jīng)網(wǎng)絡(luò)到Lattice FPGA可以分為三步:第一步:使用Tensorflow, Caffe, Keras訓(xùn)練自己的網(wǎng)絡(luò)。(這里L(fēng)attice官網(wǎng)的參考設(shè)計(jì)提供了訓(xùn)練網(wǎng)絡(luò)部分的參考代碼
    發(fā)表于 11-26 07:46

    【CANN訓(xùn)練營(yíng)第三季】基于Caffe ResNet-50網(wǎng)絡(luò)實(shí)現(xiàn)圖片分類

    【CANN訓(xùn)練營(yíng)第三季】基于Caffe ResNet-50網(wǎng)絡(luò)實(shí)現(xiàn)圖片分類
    發(fā)表于 12-19 22:34

    如何將DS_CNN_S.pb轉(zhuǎn)換為ds_cnn_s.tflite?

    用于圖像分類(eIQ tensflowlite 庫(kù))。從廣義講,我正在尋找該腳本,您可能已經(jīng)使用該腳本將 DS_CNN_S.pb 轉(zhuǎn)換為 ds_cnn_s.tflite我能夠查看兩個(gè)
    發(fā)表于 04-19 06:11

    基于FPGA的通用CNN加速設(shè)計(jì)

    基于FPGA的通用CNN加速整體框架如下,通過(guò)Caffe/Tensorflow/Mxnet等框架訓(xùn)練出來(lái)的CNN模型,通過(guò)編譯
    發(fā)表于 10-27 14:09 ?1w次閱讀
    基于<b class='flag-5'>FPGA</b>的通用<b class='flag-5'>CNN</b>加速設(shè)計(jì)

    簡(jiǎn)單快捷地用小型Xiliinx FPGA加速卷積神經(jīng)網(wǎng)絡(luò)CNN

    剛好在知乎看到這個(gè)問(wèn)題?如何用FPGA加速卷積神經(jīng)網(wǎng)絡(luò)CNN,恰巧我的碩士畢業(yè)設(shè)計(jì)做的就是在FPGA
    的頭像 發(fā)表于 06-29 07:55 ?4845次閱讀
    簡(jiǎn)單快捷地用小型Xiliinx <b class='flag-5'>FPGA</b>加速卷積神經(jīng)網(wǎng)絡(luò)<b class='flag-5'>CNN</b>

    KORTIQ公司推出了一款Xilinx FPGACNN加速IP——AIScale

    近日KORTIQ公司推出了一款Xilinx FPGACNN加速IP——AIScale,它能夠利用實(shí)現(xiàn)訓(xùn)練好的CNN網(wǎng)絡(luò),比如行業(yè)標(biāo)準(zhǔn)的R
    的頭像 發(fā)表于 01-09 08:45 ?1w次閱讀
    KORTIQ公司推出了一款Xilinx <b class='flag-5'>FPGA</b>的<b class='flag-5'>CNN</b>加速<b class='flag-5'>器</b>IP——AIScale

    商湯聯(lián)合提出基于FPGA的Winograd算法:改善FPGACNN性能 降低算法復(fù)雜度

    商湯科技算法平臺(tái)團(tuán)隊(duì)和北京大學(xué)高能效實(shí)驗(yàn)室聯(lián)合提出一種基于 FPGA 的快速Winograd算法,可以大幅降低算法復(fù)雜度,改善 FPGA CNN 性能。
    的頭像 發(fā)表于 02-07 11:52 ?9276次閱讀
    商湯聯(lián)合提出基于<b class='flag-5'>FPGA</b>的Winograd算法:改善<b class='flag-5'>FPGA</b><b class='flag-5'>上</b>的<b class='flag-5'>CNN</b>性能 降低算法復(fù)雜度

    基于CNN分類回歸聯(lián)合學(xué)習(xí)等的左心室檢測(cè)方法

    基于CNN分類回歸聯(lián)合學(xué)習(xí)等的左心室檢測(cè)方法
    發(fā)表于 06-25 11:15 ?33次下載

    電子學(xué)報(bào)第七期《一種可配置的CNN協(xié)加速FPGA實(shí)現(xiàn)方法》

    電子學(xué)報(bào)第七期《一種可配置的CNN協(xié)加速FPGA實(shí)現(xiàn)方法》
    發(fā)表于 11-18 16:31 ?15次下載

    自己動(dòng)手寫(xiě)CNN Inference框架之 (一) 開(kāi)篇

    服務(wù)CNN訓(xùn)練框架很多,如tensorflow、pytorch、keras、caffe等等。該類框架在PC及服務(wù)中的顯卡、高性能CP
    發(fā)表于 02-07 11:53 ?0次下載
    自己動(dòng)手寫(xiě)<b class='flag-5'>CNN</b> Inference框架之 (一) 開(kāi)篇

    基于FPGA的深度學(xué)習(xí)CNN加速設(shè)計(jì)方案

    因?yàn)?b class='flag-5'>CNN的特有計(jì)算模式,通用處理對(duì)于CNN實(shí)現(xiàn)效率并不高,不能滿足性能要求。 因此,近來(lái)已經(jīng)提出了基于FPGA,GPU甚至ASIC設(shè)計(jì)的
    發(fā)表于 06-14 16:03 ?2341次閱讀
    基于<b class='flag-5'>FPGA</b>的深度學(xué)習(xí)<b class='flag-5'>CNN</b>加速<b class='flag-5'>器</b>設(shè)計(jì)方案

    為什么傳統(tǒng)CNN在紋理分類數(shù)據(jù)集的效果不好?

    作者:TraptiKalra來(lái)源:AI公園,編譯:ronghuaiyang導(dǎo)讀本文分析了常見(jiàn)的紋理數(shù)據(jù)集以及傳統(tǒng)CNN在紋理數(shù)據(jù)集分類效果不佳的原因。在機(jī)器視覺(jué)任務(wù)中,將紋理分析與深度學(xué)習(xí)結(jié)合
    的頭像 發(fā)表于 09-23 14:26 ?846次閱讀
    為什么傳統(tǒng)<b class='flag-5'>CNN</b>在紋理<b class='flag-5'>分類</b>數(shù)據(jù)集<b class='flag-5'>上</b>的效果不好?

    cnn卷積神經(jīng)網(wǎng)絡(luò)分類有哪些

    卷積神經(jīng)網(wǎng)絡(luò)概述 卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,簡(jiǎn)稱CNN)是一種深度學(xué)習(xí)模型,由多層卷積層和池化層堆疊而成。CNN通過(guò)卷積操作提取圖像特征,并通過(guò)池化操作降低特征維度,從而實(shí)現(xiàn)對(duì)圖像
    的頭像 發(fā)表于 07-03 09:28 ?670次閱讀