0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于caffe和Lasagne CNN分类器的FPGA上实现

电子设计 来源:PYNQ开源社区 作者:PYNQ开源社区 2020-11-09 17:28 次阅读

近来卷积神经网络(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完成卷积慢了很多。

编辑:hfy
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1629

    文章

    21729

    浏览量

    602962
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10854

    浏览量

    211568
  • 卷积神经网络

    关注

    4

    文章

    367

    浏览量

    11863
收藏 人收藏

    评论

    相关推荐

    TF之CNNCNN实现mnist数据集预测

    TF之CNNCNN实现mnist数据集预测 96%采用placeholder用法+2层C及其max_pool法+隐藏层dropout法+输出层softmax法+目标函数cross_entropy法+
    发表于 12-19 17:02

    TensorFlow的CNN文本分类

    在TensorFlow中实现CNN进行文本分类(译)
    发表于 10-31 09:27

    如何移植一个CNN神经网络到FPGA中?

    二次开发。移植一个神经网络到Lattice FPGA可以分为三步:第一步:使用Tensorflow, Caffe, Keras训练自己的网络。(这里Lattice官网的参考设计提供了训练网络部分的参考代码
    发表于 11-26 07:46

    【CANN训练营第三季】基于Caffe ResNet-50网络实现图片分类

    【CANN训练营第三季】基于Caffe ResNet-50网络实现图片分类
    发表于 12-19 22:34

    如何将DS_CNN_S.pb转换为ds_cnn_s.tflite?

    用于图像分类(eIQ tensflowlite 库)。从广义讲,我正在寻找该脚本,您可能已经使用该脚本将 DS_CNN_S.pb 转换为 ds_cnn_s.tflite我能够查看两个
    发表于 04-19 06:11

    基于FPGA的通用CNN加速设计

    基于FPGA的通用CNN加速整体框架如下,通过Caffe/Tensorflow/Mxnet等框架训练出来的CNN模型,通过编译
    发表于 10-27 14:09 1w次阅读
    基于<b class='flag-5'>FPGA</b>的通用<b class='flag-5'>CNN</b>加速设计

    简单快捷地用小型Xiliinx FPGA加速卷积神经网络CNN

    刚好在知乎看到这个问题 如何用FPGA加速卷积神经网络CNN,恰巧我的硕士毕业设计做的就是在FPGA
    的头像 发表于 06-29 07:55 4820次阅读
    简单快捷地用小型Xiliinx <b class='flag-5'>FPGA</b>加速卷积神经网络<b class='flag-5'>CNN</b>

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

    近日KORTIQ公司推出了一款Xilinx FPGACNN加速IP——AIScale,它能够利用实现训练好的CNN网络,比如行业标准的R
    的头像 发表于 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

    商汤联合提出基于FPGA的Winograd算法:改善FPGACNN性能 降低算法复杂度

    商汤科技算法平台团队和北京大学高能效实验室联合提出一种基于 FPGA 的快速Winograd算法,可以大幅降低算法复杂度,改善 FPGA CNN 性能。
    的头像 发表于 02-07 11:52 9218次阅读
    商汤联合提出基于<b class='flag-5'>FPGA</b>的Winograd算法:改善<b class='flag-5'>FPGA</b><b class='flag-5'>上</b>的<b class='flag-5'>CNN</b>性能 降低算法复杂度

    基于CNN分类回归联合学习等的左心室检测方法

    基于CNN分类回归联合学习等的左心室检测方法
    发表于 06-25 11:15 33次下载

    电子学报第七期《一种可配置的CNN协加速FPGA实现方法》

    电子学报第七期《一种可配置的CNN协加速FPGA实现方法》
    发表于 11-18 16:31 15次下载

    自己动手写CNN Inference框架之 (一) 开篇

    服务CNN训练框架很多,如tensorflow、pytorch、keras、caffe等等。该类框架在PC及服务中的显卡、高性能CP
    发表于 02-07 11:53 0次下载
    自己动手写<b class='flag-5'>CNN</b> Inference框架之 (一) 开篇

    基于FPGA的深度学习CNN加速设计方案

    因为CNN的特有计算模式,通用处理对于CNN实现效率并不高,不能满足性能要求。 因此,近来已经提出了基于FPGA,GPU甚至ASIC设计的
    发表于 06-14 16:03 2283次阅读
    基于<b class='flag-5'>FPGA</b>的深度学习<b class='flag-5'>CNN</b>加速<b class='flag-5'>器</b>设计方案

    为什么传统CNN在纹理分类数据集的效果不好?

    作者:TraptiKalra来源:AI公园,编译:ronghuaiyang导读本文分析了常见的纹理数据集以及传统CNN在纹理数据集分类效果不佳的原因。在机器视觉任务中,将纹理分析与深度学习结合
    的头像 发表于 09-23 14:26 816次阅读
    为什么传统<b class='flag-5'>CNN</b>在纹理<b class='flag-5'>分类</b>数据集<b class='flag-5'>上</b>的效果不好?

    cnn卷积神经网络分类有哪些

    卷积神经网络概述 卷积神经网络(Convolutional Neural Network,简称CNN)是一种深度学习模型,由多层卷积层和池化层堆叠而成。CNN通过卷积操作提取图像特征,并通过池化操作降低特征维度,从而实现对图像
    的头像 发表于 07-03 09:28 606次阅读