近来卷积神经网络(cnn)的研究十分热门。cnn发展的一个瓶颈就是它需要非常庞大的运算量,在实时性上有一定问题。而fpga具有灵活、可配置和适合高并行度计算的优点,十分适合部署cnn。
快速开始
环境需求pynq v2.4,python 3.6.5。
需要安装caffe和lasagne这两个计算平台。我们将使用caffe中预训练的参数并利用lasagne来搭建网络
具体安装过程参见github项目文件中的 pynq案例-分类器.docx这个文档,其包含了本项目的详细操作步骤。
overlay介绍
pynq-classifcation是一个软件上基于caffe和lasagne,硬件加速的cnn分类器项目,它使用python语言在pynq框架下进行软件编程和硬件驱动。
上图为工程项目示意图。通过软硬件划分,在ps端中负责linux和通信,而pl端负责运算加速。在pynq中加载bit时,pl端的控制部分将以ip核形式呈现。通过python,对ip核的参数配置来实现控制。
此项目中采用的cnn结构示意图(以cifar_10为例子),本项目中的卷积层由两个子层构成,一个是im2col子层,它的作用是将输入矩阵中的卷积窗口展开乘一维向量,另一个是点乘子层,它的作用是将im2col子层输出的向量和展开成一维的卷积核相乘加。卷积层有一个参数是output_rectify,这对应的是当前卷积层是否应用relu非线性层,0为否,1为是。池化层(pool)有两种选项,一是最大值池化,二是平均值池化。
项目演示(cifar-10为例)
运行
/pynq-classification/python_notebooks/theano/cifar_10/using a caffe pretrained network - cifar10.ipynb
-- 如果想尝试lenet5则运行
/pynq-classification/python_notebooks/theano/lenet/using a caffe pretrained network - lenet5.ipynb
它们的notebook类似,只不过硬件上部署的网络不一样
开始
将库都包含进工程,并且读取caffe中预先训练好的cifar_10模型。
然后
建立一个lasagne的网络结构,这个网络结构和硬件中的结构类似,硬件中去掉了第一个relu层。将训练好的模型参数导入到这个网络中。
下一步
我们将模型参数导入硬件,使用fpgaloadw函数来实现这一步。函数会打印出一些有关信息。
接下来
导入cifar_10数据集
这里我们构建一张新的网络,把原来的中间层换成我们自定义的fpga_cifar10层,这一层把原来的中间层全部包含了进去,并在fpga上实现。然后输入数据集,得到结果,结果保存在fpga_predicted中。最后显示了准确度,达到72.8%。这里也会显示一些耗时。
这里我们可以看到这个网络的部分识别结果。
这里再用cpu运行一遍这个网络,可以看到它用时46.5秒,比使用fpga完成卷积慢了很多。
74hc和74ls的区别 详解74hc与74ls不同点
谁也没曾想到有一天路灯竟然可以和5G基站联系到一起!
华为因5G而耀眼,但其核心仍是AI
汽车应用中升级到或扩展CAN FD时 不用再修改MCU了!
看看Arm崛起的故事!学习怎么做一家世界级的企业!
基于caffe和Lasagne CNN分类器的FPGA上实现
AMD RX 6700系列跳票至3月底
如何利用X-Ray点料机提高生产效率和质量?
Qorvo®利用紧凑型5G天线技术加速n258频段的5G网络部署
终极总结:电动机振动十大原因 危害及其处理方法
HTC宣布计划为Vive Pro提供嘴唇追踪模组
MIL-STD-810G认证+北斗导航,AGM2特种兵专用的智能三防手机
浅析氯化钠成核结晶的非经典路径
集成运算放大器的共集--共基组合电路讲解
智能应急物资管理系统的功能及应用价值
LN4809双声道音频耳机功率放大器概述、用途及特点
Microchip新推6款用于高性能电机控制的dsPICR1
明年中国联通的七项工作和三个转变
电磁炉igbt的工作原理是什么?
李世石再战人工智能 被让两子首战告捷