MTCNN
文章平均质量分 94
祥瑞Coding
机器学习,计算机视觉
展开
-
MTCNN(十)输出python端权重到c端
背景:python端运用tensorFlow训练权重,很快速。c代码端为了获得更好的运行性能,只保留网络前馈运算的部分。目的:将python端通过tensorFlow训练的权重输出出来,c端读取。前期的工作:MTCNN(三)基于python代码的网络结构更改 https://blog.csdn.net/weixin_36474809/article/details/82856171...原创 2018-12-04 16:24:50 · 588 阅读 · 0 评论 -
卷积函数的FPGA实现(二)卷积的相乘累加单元的实现
背景:已经实现了卷积操作的权重与数据从DRAM到BRAM上软件的仿真。现在需要实现处理单元的实现。目的:编写卷积IPcore的处理单元。目录一、循环嵌套及子函数的顺序二、processAll_channelOut2.1 函数功能2.2 主程序之中的嵌套三、processInputChannel3.1 函数的实现3.2 程序之中嵌套的位置一、循环嵌套及子函数的...原创 2018-11-27 17:34:33 · 5339 阅读 · 1 评论 -
卷积函数的FPGA实现(三)加入HLS预编译指令
背景:我们编写了卷积操作的IPcore,并且在c代码端模拟通过,现在我们需要实现加入HLS的预编译指令,然后将其实现为硬件结构。目的:加入HLS预编译指令。相关文章:HLS的预编译指令优化到硬件的知识: FPGA基础知识(十)HLS针对循环的操作 https://blog.csdn.net/weixin_36474809/article/details/81479551 FPGA基...原创 2018-11-28 10:45:17 · 2281 阅读 · 0 评论 -
卷积函数的FPGA实现(五)对IPcore进行HLS及bug查找
背景:我们编辑了3x3卷积的IPcore,并完成了预编译。程序通过调用3*3卷积的IPcore实现运行。并通过HLS预编译指令实现为硬件结构,现在我们需要对IPcore程序进行HLS。目的:对卷积IPcore进行HLS目录一、testconvBench编写1.1 linux下用cmake编译运行程序1.2 隐患与BUG1.3 testBench编写 卷积尺寸 卷...原创 2018-12-05 14:47:33 · 5227 阅读 · 1 评论 -
卷积函数的FPGA实现(六)对IPcore进行HLS及RTL输出
背景:MTCNN的卷积被实现为IPcore目的:HLS通过IPcore,输出RTL目录一、删掉一些语句二、加回DATAFLOW与UNROLL2.1 N_PE=82.2 N_PE=4三、最终IPcore占用的资源7z0207z035ffg676-2 四、输出IPcore为RTL一、删掉一些语句因bug找不出,只能暂且去掉一些优化指令。225 删...原创 2018-12-13 10:25:06 · 3512 阅读 · 1 评论 -
卷积函数的FPGA实现(七)vivado系统集成与烧录
背景:已经输出IPcore为RTL,现在需要将相应的IPcore集成为系统并生成相应驱动。目的:集成IPcore为系统,并生成驱动。参考相关文档:IPcore调用DDR https://blog.csdn.net/weixin_36474809/article/details/84942607ARM调用DDR https://blog.csdn.net/weixin_3647480...原创 2018-12-13 16:20:58 · 2113 阅读 · 0 评论 -
MTCNN的FPGA实现(一)SDK端程序的初步编写
背景:已经将IPcore集成为系统并且可以成功调用,现在我们需要在单片机端编写SDK程序并且调用IPcore进行测试。目的:编写SDK程序调用单片机端IPcore。在不保证正确率的情况下先测试一下大概的帧率。目录一、单次调用IPcore1.1 malloc方式实现内存1.2 关于DDR调用的相关 1.3 调用IPcore1.4 指针偏移值的问题1.5 依然存在的问...原创 2018-12-19 19:23:59 · 2013 阅读 · 1 评论 -
卷积函数的FPGA实现(四)函数接口的HLS
背景:编写好IPcore并且验证通过,但是接口需要进行HLS。目的:将卷积IPcore接口进行HLS,将权重输入输出同步为DRAM的地址,axi-stream协议进行传输数据。将神经网络参数通过axi-lite协议进行传输。参考:用IPcore调用DDR3相关知识 https://blog.csdn.net/weixin_36474809/article/details/810180...原创 2018-12-10 15:43:40 · 4397 阅读 · 4 评论 -
基于zynq FPGA平台的目标检测网络实现项目汇报与交接
背景:着手深度学习的FPGA实现的项目半年以来,实现了大量工作,现在需要移交项目,所以总结项目所有的情况,以及移交。目录一、项目概览二、python端2.1 MTCNN与训练过程2.2 mAP的测试2.3 网络结构的更改2.4 输出python训练的权重到c代码端python之中的顺序c代码之中的顺序三、c代码端3.1 文件描述程序文件权重文件...原创 2019-01-17 10:16:36 · 4256 阅读 · 17 评论 -
卷积函数的FPGA实现(一)编写卷积IPcore的BRAM实现
背景:我们将MTCNN的卷积改为了zynqNet需要的嵌套的for循环形式,并且相对看懂了相应的zyqnNet的c代码,现在我们可以直接将卷积模块单独拆分出来构建一个IPcore。目的:构建卷积的IPcoreZynqNet解析(四)FPGA端程序解析 https://blog.csdn.net/weixin_36474809/article/details/82683399ZynqNe...原创 2018-11-05 09:14:33 · 2606 阅读 · 0 评论 -
MTCNN(九)更改python与c代码的PReLU为ReLU
背景:MTCNN的prelu需要训练,并且prelu需要有参数。prelu改为relu之后,相应的参数量会降低并且实现也更简单。目的:更改MTCNN的prelu为ReLU,并在python端训练出相应的代码,c端结构改为与python端一致。参考相关:MTCNN(三)基于python代码的网络结构更改 https://blog.csdn.net/weixin_36474809/arti...原创 2018-11-28 10:25:11 · 1400 阅读 · 2 评论 -
MTCNN(一)python代码训练与运行
目录一、相关知识二、训练与运行 2.1 背景知识tfrecords2.2 程序作用2.3 命令行2.4 运行程序2.5 指定运行的显卡命令行三、参数量的查询3.1 tensorflow的参数量的存储参考地址: https://github.com/wangbm/MTCNN-Tensorflow/blob/master/README.md一、相关知识...原创 2018-09-19 13:19:02 · 5967 阅读 · 8 评论 -
MTCNN(二)c代码概要
目的:读懂MTCNN的c程序相关代码。(此篇无用)参考:代码地址https://github.com/dlunion/mtcnn此代码仅作参考,后续项目中运用的其他版本的MTCNN-light版的代码。https://github.com/AlphaQi/MTCNN-light该代码与后续代码类似。目录整体描述函数mtcnn::mtcnn()函数 mtcnn::~mtc...原创 2018-09-26 15:35:15 · 6084 阅读 · 3 评论 -
MTCNN(三)基于python代码的网络结构更改
背景:MTCNN的训练是在python上实现的,我们需要对其结构进行更改。目的:读懂MTCNN的python代码。目录一、代码结构1.1 tensorflow设置与设备设置1.2 设置placeholder与out_tensor1.3 网络saver1.4 定义相应的网络fun1.5 用detect_face函数给出备选框二、placeholder与out_te...原创 2018-09-29 15:37:26 · 3392 阅读 · 7 评论 -
MTCNN(四)人头检测数据集参数调整
调参情况目录一、原始结构上的参数调整1. ROI与黑白框2. minsize face to detectscale stride二、新网络结构的参数调整2.1 minsize的调整2.2 scale stride三、新结构3.1 关于nms的阈值。 一、原始结构上的参数调整1. ROI与黑白框 ROI ...原创 2018-10-10 08:33:09 · 7276 阅读 · 2 评论 -
MTCNN(五)c代码概览及权重的更改
背景:将MTCNN部署在FPGA上需要将其代码设计为C代码,所以训练时的python代码需要转为c代码。参考资料:https://github.com/AlphaQi/MTCNN-light目录一、代码概览1.1 各函数作用1.2 需要改动地方二、权重的读取2.1 函数解析2.2 相关语句ifstream in(filename.data)读取文件getli...原创 2018-10-15 11:39:54 · 1043 阅读 · 3 评论 -
MTCNN(六)c代码网络结构的更改
背景:将MTCNN部署在FPGA上需要将其代码设计为C代码,c代码的网络结构需要与python代码保持一致。目的:将MTCNN的c代码网络结构转为与python代码一致。目录一、相关代码与含义1.1 相关知识类对象this指针1.2 与网络结构相关的数据1.3 相关的函数及含义在network.cpp之中,具体系列的函数二、与网络结构定义相关的语句2...原创 2018-10-16 11:19:34 · 1587 阅读 · 1 评论 -
MTCNN(七)卷积更改为嵌套for循环格式
背景:将MTCNN部署在FPGA上需要将其代码设计为C代码,c代码中的相乘相加依赖于openBLAS库。改为zynqNet的方式需要将卷积拆分为3*3的卷积,不能采用gemm的形式。目的:将卷积与全连接去掉对openBLAS库的依赖,改为与zynqNet一致的嵌套for循环形式实现卷积,以便并行化。目录一、gemm1.1 关于卷积的gemm的理解1.2 替换掉cblas_sge...原创 2018-10-18 17:05:20 · 1734 阅读 · 1 评论 -
MTCNN(八)openCV依赖库
背景:已经将openBLAS依赖库去除,我们需要将MTCNN编译到arm单片机上运行,依然依赖OpenCV库。目的:解决openCV库的问题。目录openCV依赖情况:一、根据备选框进行check1.1 输出人头的个数1.2 析构函数二、图像的读取2.1 openCV中关于图像的读取2.2 写入图像数据进入bin文件2.1.1 原始写入程序2.1.2 线...原创 2018-10-24 14:28:01 · 2773 阅读 · 0 评论 -
Tensorflow相关知识(一)MTCNN代码相关
以MTCNN为例,顺便学习下TensorFlow的底层用法。目录一、tf.device()二、tf.Graph().as_default()2.1 tf.Graph2.2 tf.Graph().as_default()2.3 MTCNN之中as_default()三、tf.layers()四、tf.ConfigProto指定显卡相关自动选择运行设备 : tf.C...原创 2018-10-17 20:28:51 · 819 阅读 · 0 评论