更多精彩内容,请微信搜索“FPGAer俱乐部”关注我们

做了半年的CNN算法移植,有时候需要回避一些东西,所以写的东西不能太多。简单提一下自己的总结,既是笔记,又是与网友们交流讨论。

CNN兴起,深圳这个躁动的城市很多人就想趁着这个机会捞一笔风投。于是各种基于CNN的在GPU上的demo出现后立马就成立公司,招FPGA工程师或者ARM 等嵌入式工程师,希望通过他们进行产品落地。毕竟GPU功耗高,散热不好,价格不便宜。于是有些公司招聘FPGA工程师,就问:你会做算法优化吗?

 基于FPGA的CNN算法移植误区一:FPGA工程师做算法优化。

嗯,已经很不错了,知道将CNN移植到嵌入式平台需要做优化。可是百度一下CNN优化策略,那些基于tensorflow,caffe的东西是FPGA干的活儿吗(为啥不是算法工程师要懂FPGA呢,为难一下算法工程师)?  当然有人说作为FPGA工程师对算法一无所知没有核心竞争力,我想说CNN的算法压缩是在它原有的开发平台上进行的,不是在FPGA上进行的,愿意学CNN的算法开发平台的同学当然好,只是难度很大。还有一点,作为FPGA工程师目前形势很严峻,我们自身有太多东西要学,因为现在FPGA都往SOC发展了,xilinx推出的一大堆工具等待着我们去熟悉。还有一种思维那就是觉得xilinx很可能也走不远,所以趁早转行了的。

基于FPGA的CNN算法移植误区二:FPGA工程师先做demo再慢慢优化。

有些公司稍微好点,最后明白了算法优化是算法工程师干的事情。后面要求FPGA工程师按照目前这个样子做一款Demo出来,性能不好没关系,后面再慢慢优化。姑且不论HLS ,SDsoc的实现方法对于不同的算法差异有多大,因为这两个工具我才刚玩,可是基于HDL设计的硬件架构,算法改动一点点可能导致整个FPGA项目推倒重来。所以对于FPGA的工程,要不就是目前这个样子出结果。要不就是推倒重来。—— 或许HLS,SDsoc不是,你可以不断的选择优化策略。

基于FPGA的CNN算法移植误区三:性能不好怪FPGA工程师硬件架构不好?

这个我只能说或许,可是一般的FPGA工程师能去定制架构水平也不会太差,不至于胡拼乱凑一个工程出来,特别对于庞大的CNN想胡拼乱凑都难。你必须思路清晰,结构清晰。还有一个主要的,对于CNN算法移植FPGA硬件上真的开不出花儿,这个观点知乎上也有大牛提到了。所以深鉴公开DPU 架构,google公开TPU 架构,为何?因为硬件就是这么玩的,没啥新意。

这个是深鉴科技的 笛卡尔架构。对于FPGA工程师是不是很熟悉,就是典型的zynq架构,谁都会这么去设计。深鉴还有一款 亚里士多德 架构,把AXI4换成更高速的,外面再加一个处理器,和英伟达的GPU 架构类似。总结起来就是input buffer,处理,outputbuffer。只是inputbuffer和outputbuffer的数据怎么来怎么去,处理的时候有多少资源可以充分利用。例如google推出TPU的“脉动”结构,FPGA工程师一板子甩他脸上:你脉动个XX,不就是我们经常挂嘴边的流水线处理嘛。

基于FPGA的CNN算法移植误区四:算法实现了,剩下FPGA去实现就行

唉,真的好伤心,为啥这个锅要FPGA工程师背。前面说了,做算法移植是要优化后才能移植,不能直接移植,除非很小的算法(CNN 有小的吗?)可是算法工程师不懂硬件啊(是啊,为何要求我们硬件工程师懂算法呢),他优化的方法不一定正确,还有就是这里优化了,那里问题又出来了。所以算法demo出来后要不断的沟通如何去优化,FPGA工程师不断的去评估性能得出移植瓶颈反馈给算法工程师。如此反反复复。

误会解除了,与算法工程师沟通好了那么就要做FPGA架构了(我这个是纯HDL的方式)。查主芯片有多少资源可以用,可以并行加速多少路,如何实现数据交互。这些定制下来了你就可以列一个表格,去算你的项目latency了,这就是你的性能。性能达不到就去看看DSP 是不是充分利用了,尽量不要闲置。性能还达不到,就要反馈给算法算法移植瓶颈了,对于CNN通常是中间结果太大,就是缓存太大。FPGA工程师可以并行N路进行加速,可是DDR送数速率只够N/3路并行计算 —— 对,这就是典型的CNN算法移植瓶颈。

补充一点:做FPGA架构当然要去看软件的架构了。很多纯算法工程师不懂硬件,看下表。他们由下表就认为选择SqueezeNet网络作为项目算法网络结构,因为运算量MACC最小,参数也小,精度过的去。可是这个SqueezeNet目前没有找到一个效果不错的项目。这个表格是一个硕士他在做分类网络的时候给出的,他不懂FPGA,最后他选择了SqueezeNet,并且把MACC从8.6亿次优化到了5.3亿次。可是最终他的项目性能是 0.51帧(best)的速度

这里给大家看两个案例,看MACC ,案例2的MACC巨大,可是在7045上却可以实现17.53帧。因为SqueezeNet和YOLO网络的相差太大了,称之为  架构的魅力 (记住我说的是软件)

图1 是YOLO的软件算法架构,很简洁。HLS 也喜欢

图 2 是SqueezeNet 结构

图 1

图 2

个人水平有限,以上言论抛砖引玉,有什么总结不当的地方欢迎及时指出来一起讨论。

本文转载自http://www.cnblogs.com/sepeng/p/8572121.html,如涉及侵权,请私信小编删除。

============华 丽 的 分 割 线============

想加入我们FPGA学习交流群吗?可以长按或扫描以下二维码,审核通过后我们邀请您加入。

这些微信群旨在打造一个提供给FPGA工程开发人员及兴趣爱好者(统称“FPGAer”)进行技术交流、答疑解惑和学习的平台。而且我们也将会通过网络举办FPGA技术讲座,分享相关研究文献。

了解更多FPGA知识可以长按或扫描以下二维码关注“FPGAer俱乐部”。



基于FPGA的CNN算法移植(一)概述相关推荐

  1. lms算法的verilog实现_基于FPGA和LMS算法的系统建模

    © 1994-2010 China Academic Journal Electronic Publishing House. All rights reserved.    http://www.c ...

  2. 基于机器学习的车辆检测算法研究方法概述

    基于机器学习的车辆检测算法研究方法概述 1 背景.意义.分类和应用 1.1 问题的背景与意义 1.2 目标检测分类 1.3 应用 2 基本算法 2.1 帧间差分法 2.2 背景减除法 2.2.1 中值 ...

  3. 基于FPGA+SDRAM+BT656视频解码移植总结

    基于FPGA+SDRAM+BT656视频解码移植总结 一.硬件准备 1.TVP5150模块(模拟视频信号解码模块). 2.模拟摄像头一个(PAL或NT格式输出 AV同轴) 3.FPGA开发板一块(EP ...

  4. 基于FPGA的DDS算法实现(可调幅值,附ISE联合Modelsim仿真结果)

    基于FPGA的DDS算法实现(附ISE联合Modelsim仿真结果) 声明:这篇博客是在充分参考前人成果的基础上写成的,如有侵权,请联系我作进一步处理.此外,这是我第一次写博客,描述不准确之处敬请指出 ...

  5. 基于FPGA的前向纠错算法

    目前,无线产品的广泛应用使无线音频和视频的高质量传输成为可能.蓝牙.无限局域网等无线传输设备比较复杂,成本较高,急需 开发一种简便的.仅用于流媒体的无线传输平台,将音频数据实时地发送到移动终端.由于音 ...

  6. 【如何在寒武纪MLU上进行算法移植】-概述

    本文介绍如何在寒武纪MLU智能加速卡上进行各类常用算法移植.整个移植过程大体可分为环境准备.模型量化.在线推理.生成离线模型.离线推理.性能测试.精度测试共七个步骤,以下概要描述整个移植过程.详细内容 ...

  7. 基于FPGA的CNN卷积神经网络加速器

    目录 1.本文背景 2.高级设计 2.1数学概述: 3.硬件设计 3.1 输入图像 3.2 VGA/摄像头 3.3卷积第一层 3.4 池化层 3.4 卷积第二层 3.5部分和 3.6第一个全连接层 3 ...

  8. 【FPGA教程案例54】深度学习案例1——基于FPGA的CNN卷积神经网络之理论分析和FPGA模块划分

    FPGA教程目录 MATLAB教程目录 -------------------------------------------------------------------------------- ...

  9. 【FPGA教程案例59】深度学习案例6——基于FPGA的CNN卷积神经网络之整体实现

    FPGA教程目录 MATLAB教程目录 -------------------------------------------------------------------------------- ...

  10. 基于davinci6467的DSP算法移植

    封装a.64p成.x64p达芬奇工具链的建立(工程编译步骤) (参考:http://blog.163.com/laorenyuhai126@126/blog/static/19350779201101 ...

最新文章

  1. Codeforces Round #521 (Div.3)题解
  2. hdu 4506(快速幂+找规律)
  3. 【数据分析】2020年创业公司到底过得怎么样?数据分析来为你揭晓
  4. 我的世界java版游戏崩溃_我的世界:MC不一样的冷知识,游戏崩溃?没想到你是这样的F3!...
  5. BZOJ.1024.[SCOI2009]生日快乐(记忆化搜索)
  6. 国庆前的最后3场直播活动!!
  7. sqark sql练习之统计UV
  8. Python数据结构
  9. yota3无第三方recovery root方法
  10. 高性能科学计算、工程计算仿真用电脑装机经验
  11. LSB算法修改了原始图像的哪些值--底层分析
  12. 2019牛客暑期多校训练营(第九场)H Cutting Bamboos(主席树+二分)
  13. 如何用matlab绘制心形线,心形线的matlab程序
  14. 计算机一级考试文件夹移动怎么操作,怎么用键盘移动文件夹而不用鼠标?电脑老师下的任务、、、...
  15. JavaWeb酒店管理系统
  16. PT100测量温度电路设计原理解析
  17. 从零开始学Vue3——(一)入门
  18. 将GIF转成视频MP4、MOV
  19. ESP8266学习之路 十二 (读写文件)
  20. 管家婆软件如何管理商品的多种型号?

热门文章

  1. 10分钟搭建树莓派NAS私有云和KODI影音播放系统 (2)---软硬搭配干活不累
  2. JavaSE基础Day01
  3. Ubuntu下安装使用Monaco字体
  4. 英文参考文献的正确引用格式详解
  5. rtnetlink组数量与设置
  6. 架构之美第五章-架构概述
  7. 处理数码照片的计算机需要配置,用Photoshop处理数码照片_计算机软件及应用_IT计算机_专业资料.doc...
  8. Xp3下VMWare中Ubuntu12.04 联网
  9. 深度 ghost xp3 装IIS 方法
  10. 绿点 | 区块链介入下的绿色经济 x 妳格局LadyVision x WinMap+!