原作者项目:https://github.com/dhm2013724/yolov2_xilinx_fpga

加速器整体结构


上图是加速器中所有函数的调用关系,可以看到卷积层,池化层,重拍序层都采用乒乓方式。下面就对每一个函数来进行理解。若有疏漏和理解不对的地方,欢迎留言讨论。
hls_c_sim 结果,电脑配置低了,vivado hls的c仿真时间大概需要一个半小时,比较慢的。

yolov2图像分类识别加速器ip-hls代码解读

1.参数定义

#define MAX(x,y) ((x)>(y)?(x):(y))            //定义最大值函数
#define MIN(x,y) ((x)<(y)?(x):(y))          //定义最小值函数
#define S 2                                 //卷积核的步长
#define K 3                                 //卷积核的大小#define Tn 4                                //Tn为输入特征图数 N 维度的并行度
#define Tm 32                               //输出特征图数M维度的并行度/展开度
#define Tr 26                               //输出特征图高度
#define Tc 26                               //输出特征图宽度#define OnChipIB_Width  ((Tc-1)*S+K)        //输出Tc所需要的输入像素快的高度
#define OnChipIB_Height ((Tr-1)*S+K)        //输出Tr所需要的输入像素快的宽度
#define MAX_BETA_LENGTH (1024)              //
#define INTERWIDTH 20                       //
typedef unsigned char UCHAR;                //

2.四个输入端口

memcpy 函数

void mmcpy_inputport(int *input,int input_memcpy_buffer[(OnChipIB_Width+3)/2],ap_uint<3> TN_MIN,int RowOffset,UCHAR RowIntNum)
{bool enable = TN_MIN > 0;if(!enable)return;memcpy(input_memcpy_buffer,(int *)(input + RowOffset),RowIntNum*sizeof(int));}void mmcpy_inputport1(int *input,int input_memcpy_buffer[(OnChipIB_Width+3)/2],ap_uint<3> TN_MIN,int RowOffset,UCHAR RowIntNum)
{bool enable = TN_MIN > 1;if(!enable)return;memcpy(input_memcpy_buffer,(int *)(input + RowOffset),RowIntNum*sizeof(int));}void mmcpy_inputport2(int *input,int input_memcpy_buffer[(OnChipIB_Width+3)/2],ap_uint<3> TN_MIN,int RowOffset,UCHAR RowIntNum)
{bool enable = TN_MIN > 2;if(!enable)return;memcpy(input_memcpy_buffer,(int *)(input + RowOffset),RowIntNum*sizeof(int));}void mmcpy_inputport3(int *input,int input_memcpy_buffer[(OnChipIB_Width+3)/2],ap_uint<3> TN_MIN,int RowOffset,UCHAR RowIntNum)
{bool enable = TN_MIN > 3;if(!enable)return;memcpy(input_memcpy_buffer,(int *)(input + RowOffset),RowIntNum*sizeof(int));}

卷积神经网络(CNN)加速器ip设计—1.HLS代码解读相关推荐

  1. 【图像识别】基于卷积神经网络CNN手写数字识别matlab代码

    1 简介 针对传统手写数字的随机性,无规律性等问题,为了提高手写数字识别的检测准确性,本文在研究手写数字区域特点的基础上,提出了一种新的手写数字识别检测方法.首先,对采集的手写数字图像进行预处理,由于 ...

  2. 仅使用NumPy完成卷积神经网络CNN的搭建(附Python代码)

    摘要: 现有的Caffe.TensorFlow等工具箱已经很好地实现CNN模型,但这些工具箱需要的硬件资源比较多,不利于初学者实践和理解.因此,本文教大家如何仅使用NumPy来构建卷积神经网络(Con ...

  3. 基于卷积神经网络CNN的图片分类实现——附代码

    目录 摘要: 1.卷积神经网络介绍: 2.卷积神经网络(CNN)构建与训练: 2.1 CNN的输入图像 2.2 构建CNN网络 2.3 训练CNN网络 3.卷积神经网络(CNN)的实际分类测试: 4. ...

  4. 卷积神经网络(CNN)的简单实现(MNIST)

    卷积神经网络(CNN)的基础介绍见http://blog.csdn.net/fengbingchun/article/details/50529500,这里主要以代码实现为主. CNN是一个多层的神经 ...

  5. 卷积神经网络(CNN)实现CIFAR100类别分类

    卷积神经网络(CNN)实现CIFAR100类别分类 1. CIFAR100数据集介绍 这个数据集就像CIFAR-10,除了它有100个类,每个类包含600个图像.,每类各有500个训练图像和100个测 ...

  6. 卷积神经网络(CNN)简介

    卷积神经网络(CNN)简介 多层的线性网络和单层的线性网络没有区别,而且线性模型的能够解决的问题也是有限的 1. 更复杂抽象的数据 一个单隐含层有更多的神经元,就能捕捉更多的特征.而且有更多隐层,意味 ...

  7. 一文看懂卷积神经网络-CNN(基本原理+独特价值+实际应用)

    http://blog.itpub.net/29829936/viewspace-2648775/ 2019-06-25 21:31:18 卷积神经网络 – CNN 最擅长的就是图片的处理.它受到人类 ...

  8. DL之CNN优化技术:学习卷积神经网络CNN的优化、实践经验(练习调参)、从代码深刻认知CNN架构之练习技巧

    DL之CNN优化技术:学习卷积神经网络CNN的优化.调参实践.从代码深刻认知CNN架构之练习技巧 目录 卷积神经网络CNN调参学习实践 练习技巧 1.练习攻略一 2.VGG16练习攻略二 卷积神经网络 ...

  9. 深度学习方法(五):卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld.  技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入. 关于卷积神经网络CNN,网络和文献 ...

最新文章

  1. 云计算软件生态圈:摸到一把大牌
  2. 选择排序—简单选择排序(Simple Selection Sort)
  3. Beetlex之redis驱动
  4. 【UDP协议头解析】
  5. Matlab英文操作系统下中文乱码的解决方案
  6. 通用唯一识别码UUID
  7. Spring Boot读取peoperties配置及@Value和@ConfigurationProperties区别和联系
  8. mysql服务器失败1396_MYSQL ERROR 1396 (HY000) 错误的解决办法
  9. C++复合类型-引用变量
  10. 3d胆码计算机方法,3D选胆码方法公式汇总(近88期数据)
  11. Pisces的属性配置文件加载
  12. 同步手绘板——PC端实现画板
  13. Python学习 Task9:文件与文件系统
  14. 计算机网络 一、 IP地址,域名,DNS
  15. 饶毅:我为什么用了九年才获得博士学位?
  16. 【PB】程序中在普通激光打印机上实现条码打印
  17. 借助智慧数字经营怎么进行营销推广?
  18. python数学建模导论2.2 常微分方程符号解与数值解的计算(未放入章节为微分方程介绍章节,自行百度)
  19. 宝骏530中控屏怎么安装软件_宝骏530中控屏幕多媒体功能解析
  20. CTO:这代码注释让我笑T了。。。

热门文章

  1. 面向sql编程的探索之路
  2. 【编程实践】第二章 C++面向对象编程《C++程序设计语言》 / By 禅与计算机程序设计艺术ChatGPT
  3. 随机梯度下降,mini-batch梯度下降,在线学习机制,mapreduce
  4. 真我GT Neo5正式发布,手机闪充进入读秒时代
  5. 设置radio选中状态失效
  6. Win7系统关闭硬盘开机自检的三种方法(全面,简单好用)
  7. 感恩节祝福html,感恩节祝福短信精选:富含诗意祝福短信
  8. 【面试】insta360面试-12-26
  9. 有关3dmax对齐技巧的那些事
  10. JAVA训练营的课程表