卷积神经网络(CNN)加速器ip设计—1.HLS代码解读
原作者项目: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代码解读相关推荐
- 【图像识别】基于卷积神经网络CNN手写数字识别matlab代码
1 简介 针对传统手写数字的随机性,无规律性等问题,为了提高手写数字识别的检测准确性,本文在研究手写数字区域特点的基础上,提出了一种新的手写数字识别检测方法.首先,对采集的手写数字图像进行预处理,由于 ...
- 仅使用NumPy完成卷积神经网络CNN的搭建(附Python代码)
摘要: 现有的Caffe.TensorFlow等工具箱已经很好地实现CNN模型,但这些工具箱需要的硬件资源比较多,不利于初学者实践和理解.因此,本文教大家如何仅使用NumPy来构建卷积神经网络(Con ...
- 基于卷积神经网络CNN的图片分类实现——附代码
目录 摘要: 1.卷积神经网络介绍: 2.卷积神经网络(CNN)构建与训练: 2.1 CNN的输入图像 2.2 构建CNN网络 2.3 训练CNN网络 3.卷积神经网络(CNN)的实际分类测试: 4. ...
- 卷积神经网络(CNN)的简单实现(MNIST)
卷积神经网络(CNN)的基础介绍见http://blog.csdn.net/fengbingchun/article/details/50529500,这里主要以代码实现为主. CNN是一个多层的神经 ...
- 卷积神经网络(CNN)实现CIFAR100类别分类
卷积神经网络(CNN)实现CIFAR100类别分类 1. CIFAR100数据集介绍 这个数据集就像CIFAR-10,除了它有100个类,每个类包含600个图像.,每类各有500个训练图像和100个测 ...
- 卷积神经网络(CNN)简介
卷积神经网络(CNN)简介 多层的线性网络和单层的线性网络没有区别,而且线性模型的能够解决的问题也是有限的 1. 更复杂抽象的数据 一个单隐含层有更多的神经元,就能捕捉更多的特征.而且有更多隐层,意味 ...
- 一文看懂卷积神经网络-CNN(基本原理+独特价值+实际应用)
http://blog.itpub.net/29829936/viewspace-2648775/ 2019-06-25 21:31:18 卷积神经网络 – CNN 最擅长的就是图片的处理.它受到人类 ...
- DL之CNN优化技术:学习卷积神经网络CNN的优化、实践经验(练习调参)、从代码深刻认知CNN架构之练习技巧
DL之CNN优化技术:学习卷积神经网络CNN的优化.调参实践.从代码深刻认知CNN架构之练习技巧 目录 卷积神经网络CNN调参学习实践 练习技巧 1.练习攻略一 2.VGG16练习攻略二 卷积神经网络 ...
- 深度学习方法(五):卷积神经网络CNN经典模型整理Lenet,Alexnet,Googlenet,VGG,Deep Residual Learning
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 技术交流QQ群:433250724,欢迎对算法.技术感兴趣的同学加入. 关于卷积神经网络CNN,网络和文献 ...
最新文章
- 云计算软件生态圈:摸到一把大牌
- 选择排序—简单选择排序(Simple Selection Sort)
- Beetlex之redis驱动
- 【UDP协议头解析】
- Matlab英文操作系统下中文乱码的解决方案
- 通用唯一识别码UUID
- Spring Boot读取peoperties配置及@Value和@ConfigurationProperties区别和联系
- mysql服务器失败1396_MYSQL ERROR 1396 (HY000) 错误的解决办法
- C++复合类型-引用变量
- 3d胆码计算机方法,3D选胆码方法公式汇总(近88期数据)
- Pisces的属性配置文件加载
- 同步手绘板——PC端实现画板
- Python学习 Task9:文件与文件系统
- 计算机网络 一、 IP地址,域名,DNS
- 饶毅:我为什么用了九年才获得博士学位?
- 【PB】程序中在普通激光打印机上实现条码打印
- 借助智慧数字经营怎么进行营销推广?
- python数学建模导论2.2 常微分方程符号解与数值解的计算(未放入章节为微分方程介绍章节,自行百度)
- 宝骏530中控屏怎么安装软件_宝骏530中控屏幕多媒体功能解析
- CTO:这代码注释让我笑T了。。。