用FPGA加速卷积神经网络的知识储备

  • 1.FPGA
    • 1.FPGA分类
    • 2.开发工具
    • 3.开发工具2
  • 2.卷积神经网络
    • 1.卷积神经网络基础
    • 2.开发语言
  • 3.总结
  • 参考内容

本文是我经过一段时间学习的学习总结,由于是初学者的缘故,可能总结会有纰漏甚至错误,希望同样从事该方向研究的大佬以及爱好者批评指正,不胜感激。

下面我会从硬件和神经网络两方面来介绍使用FPGA做卷积神经网络加速所需要的知识基础。

1.FPGA

1.FPGA分类

毫无疑问,Xilinx是当前FPGA领域的带头大哥,占据了百分之60左右的全球市场份额。而Altera在被intel收购以后,也有着相当优秀的发展潜力。就这两家而言,Xilinx胜在高端性能,资源丰富。而Altera胜在价格低廉,是新手入门的性价比的不二之选。

2.开发工具

Xilinx:Vivado,功能完善,集成了HLS,虽然会有一些奇怪的bug,但是瑕不掩瑜。

Altera:Quartus II,集成了modelsim工能,非常直觉化,容易入门,bug很少(曾是高管骄傲的谈资),非常适合新手入门,但并不适合大规模系统开发。

3.开发工具2

VHDL/Verilog:硬件描述语言,永远的神。就目前而言,想要完全发挥FPGA的性能,硬件描述语言无疑是首选,但是上手有一定的难度,需要付出比较大的努力。
(补充:学习资源丰富,不会增加搜寻资源的时间成本)。

HLS:HLS是高层综合(High level Synthesis),是将C或者c++语言编译为FPGA能够读懂和运行的RTL级别的语言。通过HLS这个过程可以显著加快FPGA的设计进程,而不用从底层的FPGA语言编起。但是由于软件工程师本身的知识体系的原因,使用hls相比硬件工程师而言,仍有不小的差距。换言之,现在使用hls炉火纯青的工程师仍是硬件工程师。
(补充:Xilinx的Vivado由于集成了hls工具,而Altera的Quartus II在17.x版本以后才支持,所以就学习资源的丰富性以及易用性而言,Xilinx独孤求败。所以如果要选择HLS来开发FPGA的话,个人建议选择Xilinx的器件作为硬件开发板)。

OpenCL:OpenCL(全称Open CompuTIng Language,开放运算语言)是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器(DSP)等其他并行处理器,在游戏、娱乐、科研、医疗等各种领域都有广阔的发展前景。
基于FPGA的OpenCL有如下优点:

a.与传统的FPGA设计流程相比,产品能够更迅速面市。
b.使用OpenCL C (基于ANSI C)并行编程语言而不是传统的底层硬件描述语言(HDL)来描述您的算法。
c.在更高层的设计抽象环境中迅速进行设计开发。
d.针对目前和未来的FPGA重新定位OpenCL C代码,设计不会过时。
e.跳过耗时的手动时序收敛以及FPGA、主机和外部存储器之间的通信接口设计工作,一个步骤中就可以在FPGA上实现OpenCL的C代码。
f.相比于硬件方案,功耗有明显的降低。

当然,OpenCL的缺点同HLS类似,相比于硬件描述语言,仍无法完全发挥FPGA的性能。
(补充:选择OpenCL必然选择Altera开发器件,但是目前能找到的开源资源很少,需要自身有一定的资源支撑)。

2.卷积神经网络

由于FPGA开发硬件的特殊性,普通的卷积神经网络直接移植到开发板上明显是达不到加速的效果的,所以想要实现加速效果,我们必须对卷积神经网络进行轻量化设计。而轻量化网络,需要我们对神经网络结构有深入了解以及对编写语言有一定的基础。

1.卷积神经网络基础

轻量化卷积神经网络有以下方法:如网络剪枝、低秩分解、压缩编码等,减小神经网络模型参数量、简化卷积神经网络算法运算过程等。进行以上操作,需要我们对神经网络的结构有很深入的了解,所以,实现神经网络的FPGA加速器设计,对神经网络模型的把控必不可少。
推荐学习内容:吴恩达的深度学习,李沐的动手学深度学习等。

2.开发语言

可以编写神经网络开发语言很多,C,C++,Python,选择哪一种开发语言需要根据上面开发工具选择相匹配,如果使用HLS或者是OpenCL,C和C++是最好的选择,如果选择硬件描述语言来设计硬件的话,那么选择Python毫无疑问更方便,因为Python相比其他两种更容易编写,更容易理解。

3.总结

用FPGA做神经网络的加速器,我们可以选择的方案方法搭配有很多,我们应该根据自身的能力以及所拥有的资源选择最适合自己的结合,避免时间成本的增加。在查漏补缺的同时,代码能力必然需要提高!代码能力必然需要提高!!代码能力必然需要提高!!!(重要的事情说三遍)代码是灵魂,没有代码能力,一切都是空谈!!!!!!

最后,还是希望同方向的大佬以及爱好者批评指正,分享资源,不胜感激。

参考内容

参考内容:http://www.elecfans.com/emb/fpga/20130412313552.html

用FPGA加速卷积神经网络的知识储备相关推荐

  1. 卷积神经网络基础知识五(mobilenet)

    一.简单介绍 1.1 绪论 论文下载地址: MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applicat ...

  2. 卷积神经网络 神经网络,卷积神经网络基础知识

    卷积神经网络通俗理解 . 卷积神经网络(ConvolutionalNeuralNetworks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(FeedforwardNeuralNetwork ...

  3. 关于卷积神经网络的书籍,卷积神经网络基础知识

    有没有好理解的关于神经网络的书推荐 肯定是matlab用的神经网络设计了,通俗易懂,很多实例!!戴葵翻译的美国经典神经网络<神经网络设计>神经网络概念非常简单(如果是科班出身),看一个下午 ...

  4. 基于FPGA的卷积神经网络加速器研究

    摘 要 卷积神经网络(Convolution Neural Network,CNN)是在计算机视觉,图像识别和 分类等领域应用最成功的人工神经网络数学模型.高性能神经网络结构规模庞大,一次 完整推理过 ...

  5. 卷积神经网络理论基础,卷积神经网络基础知识

    卷积神经网络 有哪些改进的地方 卷积神经网络的研究的最新进展引发了人们完善立体匹配重建热情.从概念看,基于学习算法能够捕获全局的语义信息,比如基于高光和反射的先验条件,便于得到更加稳健的匹配. 目前已 ...

  6. 卷积神经网络相关知识

    概念源自:https://en.wikipedia.org/wiki/Convolutional_neural_network 在机器学习中,卷积神经网络(CNN或ConvNet)是一类深度前馈人工神 ...

  7. pytorch卷积神经网络_知识干货-动手学深度学习(pytorch)-06 卷积神经网络基础

    卷积神经网络基础 本节我们介绍卷积神经网络的基础概念,主要是卷积层和池化层,并解释填充.步幅.输入通道和输出通道的含义. 二维卷积层 本节介绍的是最常见的二维卷积层,常用于处理图像数据. 二维互相关运 ...

  8. FPGA HLS 卷积神经网络软硬件映射

    实现思路 实现两个子函数: 一个负责卷积与Relu 一个负责池化 全连接可以转化为卷积,或者或全连接是特殊的卷积 当卷积核与输入特征相同,stride和padding为0时,卷积核的个数是输出的维度, ...

  9. 卷积神经网络与神经网络,卷积神经网络基础知识

    什么是人工神经网络 人工神经网络(Artificial Neural Network,即ANN ),是20世纪80 年代以来人工智能领域兴起的研究热点. 它从信息处理角度对人脑神经元网络进行抽象, 建 ...

最新文章

  1. 对数函数定义域和值域_呆哥数学每日一题 —— 复合函数值域
  2. 热加载和热部署,没听过?看看 Tomcat 是怎么实现的
  3. boost::math模块使用指定宽度的浮点 typedef估中等复杂的数学函数的测试程序
  4. reduce 方法 (Array) (JavaScript)
  5. nodejs里fs.readFile的相对路径转绝对路径问题
  6. 关于tomcat内路径跳转的一些思考
  7. 电脑显示苹果5s未连接服务器怎么办啊,iphone5s数据线连接不上电脑怎么办【解决方法】...
  8. .rpt文件内容读取java_python读取PDF指定表格内容批量文件重命名
  9. 孙鑫VC学习笔记:第五讲 文本编程
  10. php里日期转为时间戳_php时间戳与日期的转换
  11. 利用python处理excel文件并可视化处理-python如何将excel数据处理可视化
  12. android有道翻译api,有道智云自然翻译服务API
  13. 少儿编程--STEMA考试介绍转自STEMA (STEM 能力测试) 考 试 白 皮 书
  14. SAP中库存地点MRP应用控制
  15. Android 7.1 亮度调节之BrightnessController
  16. markdown神器 -Typora使用教程笔记
  17. Flask之解读app.py文件
  18. 问题 D: 猫和兔子
  19. python实现中撤销上一步的代码mac_苹果电脑command+z撤销后如何恢复撤销前的上一步?...
  20. 分销开源微信小程序-真正意义上的开源

热门文章

  1. 京东方校园招聘项目总结
  2. xxf页面编辑bootstarp
  3. 马云卸任阿里巴巴CEO演讲全文:因为信任,所以简单!
  4. scala函数自我小结(待更新)
  5. 公安部:“净网2018”侦破网络犯罪案件57519起
  6. 2020.11.26---java复习
  7. 2010年将流行的校园雷人语录
  8. 使用Python下载电影
  9. Android APP 奔溃 ,如何在开发者选项观察错误日志
  10. 解决.msi打不开问题