利用深度卷积神经网络(CNN)进行图像分类是通过使用多个卷积层来从输入数据中提取特征,最后通过分类层做决策来识别出目标物体。
典型的大规模CNN网络通常包含数百万个神经单元和数百万个连接,需要超过十亿次的操作才能处理一个输入,因此整个过程比较耗时。
PipeCNN是一个开源的基于OpenCL的深度卷积神经网络加速器,采用板载ARM+FPGA异构计算的方式来加速CNN运算中计算密集型运算。卷积、全连接等复杂运算利用FPGA的丰富片上并行计算资源进行加速,保证了实时性。ARM上运行数据流读取和显示工作,保证了程序的灵活和可扩展性。
本文将演示如何在友晶LabCloudFPGA硬件在线实验云平台(下文简称LabCloud平台)上用PipeCNN进行ImageNet图像分类加速。
01在Lab Cloud上运行PipeCNN步骤搭建环境
Lab Cloud平台已经安装有OpenCL环境 。(可在终端下发如下三条命令进行验证)
资源下载
1. 可以直接在云节点打开终端,输入如下命令进行源码下载:
gitclonehttps://github.com/doonny/PipeCNN.git
若有些院校Lab Cloud只连了局域网,则可以通过链接https://github.com/doonny/PipeCNN下载到自己的电脑上:
然后通过Lab Cloud平台的文件上传功能传至云节点。
2. 通过链接https://pan.baidu.com/s/1jIl6qkm?_at_=1744271894249#list/path=/PipeCNN下载data_alex文件夹(包含image.dat,fc8.dat,weights.dat三个文件),并将该文件夹放到PipeCNN-master/project_intel/data路径下。
3. 测试图像使用的是ImageNet(ILSVRC2012_img_test.zip,300张照片)
下载链接:https://pan.baidu.com/s/1Agx0qZs55aZWM58c-Wng8A提取码: tera
编译kernel
1. 进入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. 进入 PipeCNN-master/project_intel 路径下执行 make fpga,最终在PipeCNN-master/project_intel 路径下会产生一个conv.aocx文件:
编译host
编译host时还需要继续修改project_intel/Makefile文件去指定当前opencv路径。
1. 对于当前Lab Cloud 上对应的DE_Cloud板卡环境需要修改如下:
OCV_LIBS后面添加 -lopencv_imgcodecs
修改路径 /usr/local/lib
修改路径 /usr/local/include
2. 将PipeCNN-master/project_intel/host/layer_config.h文件当中的char型定义全部改成signed char型(一共4处修改)。
3.data_alex文件夹若不是放在PipeCNN-master/project_intel/data路径下(已经在该路径下的忽略此步骤),则需要进入main.cpp修改文件路径到当前正确路径。
4. 删掉PipeCNN-master/project_xilinx文件夹和PipeCNN-master/project_intel/conv文件(删掉多余文件以便将剩下文件传输到云平台开发板)。
5.然后点击SoC传输将PipeCNN-master文件夹和ILSVRC2012_img_test.zip文件传到DE_Cloud开发板的LXDE桌面:
6. 将ILSVRC2012_img_test.zip解压到/home/root路径(
若图片解压到其他路径下,则需要进入main.cpp修改文件路径到当前正确路径。):
7. 点击SoC桌面进入DE_Cloud开发板的 LXDE桌面:
8. 按照下图打开Linux的终端:
9. 用命令cd OpenCL 切换到OpenCL文件夹,用命令source ./init_opencl.sh进行OpenCL runtime初始化:
10. 切换路径到PipeCNN-master/project_intel/下执行make host就会在当前路径下生成run.exe文件(在这个过程中会有warning提示,可以忽略):
执行PipeCNN
1. 配置FPGA使用命令aocl program /dev/acl0 conv.aocx。
2. 运行host使用命令make run。
运行结束,便可以得到分类结果。
02Lab Cloud平台简介
LabCloud FPGA 硬件在线实验云平台
关注
1640文章
21901浏览量
611413免责声明:本文为转载,非本网原创内容,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如有疑问请发送邮件至:bangqikeconnect@gmail.com