利用深度卷積神經(jīng)網(wǎng)絡(luò)(CNN)進(jìn)行圖像分類是通過(guò)使用多個(gè)卷積層來(lái)從輸入數(shù)據(jù)中提取特征,最后通過(guò)分類層做決策來(lái)識(shí)別出目標(biāo)物體。
典型的大規(guī)模CNN網(wǎng)絡(luò)通常包含數(shù)百萬(wàn)個(gè)神經(jīng)單元和數(shù)百萬(wàn)個(gè)連接,需要超過(guò)十億次的操作才能處理一個(gè)輸入,因此整個(gè)過(guò)程比較耗時(shí)。
PipeCNN是一個(gè)開源的基于OpenCL的深度卷積神經(jīng)網(wǎng)絡(luò)加速器,采用板載ARM+FPGA異構(gòu)計(jì)算的方式來(lái)加速CNN運(yùn)算中計(jì)算密集型運(yùn)算。卷積、全連接等復(fù)雜運(yùn)算利用FPGA的豐富片上并行計(jì)算資源進(jìn)行加速,保證了實(shí)時(shí)性。ARM上運(yùn)行數(shù)據(jù)流讀取和顯示工作,保證了程序的靈活和可擴(kuò)展性。
本文將演示如何在友晶LabCloudFPGA硬件在線實(shí)驗(yàn)云平臺(tái)(下文簡(jiǎn)稱LabCloud平臺(tái))上用PipeCNN進(jìn)行ImageNet圖像分類加速。
01在Lab Cloud上運(yùn)行PipeCNN步驟搭建環(huán)境
Lab Cloud平臺(tái)已經(jīng)安裝有OpenCL環(huán)境 。(可在終端下發(fā)如下三條命令進(jìn)行驗(yàn)證)
資源下載
1. 可以直接在云節(jié)點(diǎn)打開終端,輸入如下命令進(jìn)行源碼下載:
gitclonehttps://github.com/doonny/PipeCNN.git
若有些院校Lab Cloud只連了局域網(wǎng),則可以通過(guò)鏈接https://github.com/doonny/PipeCNN下載到自己的電腦上:
然后通過(guò)Lab Cloud平臺(tái)的文件上傳功能傳至云節(jié)點(diǎn)。
2. 通過(guò)鏈接https://pan.baidu.com/s/1jIl6qkm?_at_=1744271894249#list/path=%2FPipeCNN下載data_alex文件夾(包含image.dat,fc8.dat,weights.dat三個(gè)文件),并將該文件夾放到PipeCNN-master/project_intel/data路徑下。
3. 測(cè)試圖像使用的是ImageNet(ILSVRC2012_img_test.zip,300張照片)
下載鏈接:https://pan.baidu.com/s/1Agx0qZs55aZWM58c-Wng8A提取碼: tera
編譯kernel
1. 進(jìn)入PipeCNN-master/project_intel/device/RTL路徑下,打開終端,輸入 make:
2. 按照下圖修改project_intel/Makefile:
USE_OPENCV=1
PLATFORM=arm32
FLOW=hw
切換路徑到
/root/intelFPGA/18.1/hld/board/de_cloud
3. 按照下圖修改PipeCNN-master/project_intel/device/hw_param.cl文件:
VEC_SIZE 8
LANE_NUM 8
choose net 改為 ALEXNET
4. 按照下圖修改PipeCNN-master/project_intel/device/conv_pipe.cl文件:
5. 進(jìn)入 PipeCNN-master/project_intel 路徑下執(zhí)行 make fpga,最終在PipeCNN-master/project_intel 路徑下會(huì)產(chǎn)生一個(gè)conv.aocx文件:
編譯host
編譯host時(shí)還需要繼續(xù)修改project_intel/Makefile文件去指定當(dāng)前opencv路徑。
1. 對(duì)于當(dāng)前Lab Cloud 上對(duì)應(yīng)的DE_Cloud板卡環(huán)境需要修改如下:
OCV_LIBS后面添加 -lopencv_imgcodecs
修改路徑 /usr/local/lib
修改路徑 /usr/local/include
2. 將PipeCNN-master/project_intel/host/layer_config.h文件當(dāng)中的char型定義全部改成signed char型(一共4處修改)。
3.data_alex文件夾若不是放在PipeCNN-master/project_intel/data路徑下(已經(jīng)在該路徑下的忽略此步驟),則需要進(jìn)入main.cpp修改文件路徑到當(dāng)前正確路徑。
4. 刪掉PipeCNN-master/project_xilinx文件夾和PipeCNN-master/project_intel/conv文件(刪掉多余文件以便將剩下文件傳輸?shù)皆破脚_(tái)開發(fā)板)。
5.然后點(diǎn)擊SoC傳輸將PipeCNN-master文件夾和ILSVRC2012_img_test.zip文件傳到DE_Cloud開發(fā)板的LXDE桌面:
6. 將ILSVRC2012_img_test.zip解壓到/home/root路徑(
若圖片解壓到其他路徑下,則需要進(jìn)入main.cpp修改文件路徑到當(dāng)前正確路徑。):
7. 點(diǎn)擊SoC桌面進(jìn)入DE_Cloud開發(fā)板的 LXDE桌面:
8. 按照下圖打開Linux的終端:
9. 用命令cd OpenCL 切換到OpenCL文件夾,用命令source ./init_opencl.sh進(jìn)行OpenCL runtime初始化:
10. 切換路徑到PipeCNN-master/project_intel/下執(zhí)行make host就會(huì)在當(dāng)前路徑下生成run.exe文件(在這個(gè)過(guò)程中會(huì)有warning提示,可以忽略):
執(zhí)行PipeCNN
1. 配置FPGA使用命令aocl program /dev/acl0 conv.aocx。
2. 運(yùn)行host使用命令make run。
運(yùn)行結(jié)束,便可以得到分類結(jié)果。
02Lab Cloud平臺(tái)簡(jiǎn)介
LabCloud FPGA 硬件在線實(shí)驗(yàn)云平臺(tái)
-
FPGA
+關(guān)注
關(guān)注
1643文章
21954瀏覽量
613878 -
圖像分類
+關(guān)注
關(guān)注
0文章
96瀏覽量
12106 -
cnn
+關(guān)注
關(guān)注
3文章
354瀏覽量
22626 -
卷積神經(jīng)網(wǎng)絡(luò)
+關(guān)注
關(guān)注
4文章
369瀏覽量
12179
原文標(biāo)題:在FPGA硬件在線實(shí)驗(yàn)云平臺(tái)LabCloud上用PipeCNN進(jìn)行ImageNet圖像分類加速
文章出處:【微信號(hào):友晶FPGA,微信公眾號(hào):友晶FPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
使用Container Canary在多個(gè)平臺(tái)上測(cè)試容器圖像

在STM32平臺(tái)上實(shí)現(xiàn)Cortex-M3的位帶特性
想要學(xué)習(xí)在DSP的平臺(tái)上進(jìn)行圖像處理,求推薦入門教材。
在嵌入式平臺(tái)上怎么實(shí)現(xiàn)μC/GUI的移植?
在MTK平臺(tái)上實(shí)現(xiàn)2ME需要哪些功能?
在Intel PXA27X平臺(tái)上如何去實(shí)現(xiàn)MPEG-4視頻編碼的功能?
如何在嵌入式Linux系統(tǒng)平臺(tái)上設(shè)計(jì)建立圖像視頻?
在RK3288平臺(tái)上如何采用裸機(jī)實(shí)現(xiàn)LVDS和MIPI接口的LCD顯示?
如何實(shí)現(xiàn)Ubuntu在RK平臺(tái)上的移植以及AP配網(wǎng)?
用CPLD實(shí)現(xiàn)嵌入式平臺(tái)上的實(shí)時(shí)圖像增強(qiáng)

如何使用神經(jīng)網(wǎng)絡(luò)模型加速圖像數(shù)據(jù)集的分類
Xilinx FPGA如何通過(guò)深度學(xué)習(xí)圖像分類加速機(jī)器學(xué)習(xí)
如何在LabVIEW平臺(tái)上使用USB模塊進(jìn)行圖像采集與處理系統(tǒng)的設(shè)計(jì)

高通AI Hub:輕松實(shí)現(xiàn)Android圖像分類

評(píng)論