
深度学习框架
农夫山泉2号
关于交流可以发邮件:778961303@qq.com
展开
-
【ncnn android】算法移植(十)——DBface ncnn模型输出nan/性能简单测试
问题 已经将DBface转成ncnn模型,并在c++上测试通过,但是移植到android平台之后,结果一直不对,只能一段一段的检查,发现ncnn模型输出为nan。猜想输入给的不对。c++上推理采用的是cv::Mat作为输入。android平台采用bitmap预处理不对,因为有image/255 - mean / stdncnn模型没有正确载入对ncnn的模型进行逐层检查版本对应不上只能一个一个尝试了...原创 2020-05-29 16:25:10 · 2726 阅读 · 2 评论 -
【ncnn android】算法移植(七)——pytorch2onnx代码粗看
目的:了解torch2onnx的流程了解其中的一些技术细节1. 程序细节get_graph将pytorch的模型转成onnx需要的graphgraph, torch_out = _trace_and_get_graph_from_model(model, args, training)trace, torch_out, inputs_states = torch.jit.get_trace_graph(model, args, _force_outplace=True, _re原创 2020-05-25 13:40:05 · 1284 阅读 · 0 评论 -
【ncnn android】算法移植(六)——onnx2ncnn源码阅读理解/设计思路
上一篇写道:onnx2ncnn的时候,不支持sigmoid,upsample层,于是想着阅读onnx2ncnn的源码。目的:理解ncnn中onnx2ncnn的主要流程自定义upsample层(最高要求)1. 相关资料Open Neural Network Exchange - ONNX ,onnx的文档https://github.com/Tencent/ncnn,注意ncnn的不同版本代码是不一样,这里以20180704为准。2. 主要流程2.1 ncnn.param保存网络结构参数原创 2020-05-25 00:01:25 · 1664 阅读 · 0 评论 -
【ncnn】源码阅读理解(七)——ncnn::Extractor
ncnn中做了三层封装,分别是layer,net,extractor。extractor是最后一道封装,也是实现前向推理流程的部件。1. 传入图像数据ex.input("data", in); // 传入图像数据int Extractor::input(const char* blob_name, const Mat& in){ int blob_index = ...原创 2020-04-12 10:09:46 · 2018 阅读 · 0 评论 -
【ncnn】源码阅读理解(六)——net::forward
1. ncnn的3层封装ncnn在实现前向推理的时候主要进行了3层封装,分别是:具体的网络层类layer,如卷积层,池化层,concat层,split层,输出softmax层Net,将所有的layer和中间的数据blob放入到vector容器中将Net传入Extractor做一个“推理器”2. ncnn前向推理时的递归调用ncnn在进行前向推理的时候,由推理器“extractor”...原创 2020-04-11 00:25:19 · 1213 阅读 · 0 评论 -
【ncnn】源码阅读理解(五)——net.load_model
对net的所有网络层进行轮询,然后对每个网络层读取预训练的参数for (size_t i=0; i<layers.size(); i++){ Layer* layer = layers[i]; // 读取具体的网络层 int lret = layer->load_model(fp); if (lret != 0) { fprintf(s...原创 2020-04-10 18:40:53 · 1118 阅读 · 0 评论 -
【ncnn】源码阅读理解(四)——squeeze配置文件解读
split层没有参数ncnn中 squeeze net 配置参数详解一split层是没有参数的split层出来两个分支,两个分支分别经过一个conv33+relu和 一个conv11+relu,每个分支的输出通道数为64然后经过一个concat层,输出通道数为64 + 64。同时也可以通过concat后的convolution层参数进行验证。concat后convoluti...原创 2020-04-10 13:56:20 · 539 阅读 · 0 评论 -
【ncnn】源码阅读理解(三)——blobs
1. blobs容量如何得来在ncnn网络初始化参数的时候,有两个vector容器,std::vector<Blob> blobs;std::vector<Layer*> layers;blobs是每个网络层输出的数据容器这里我们以squeeze模型为例,说明blobs的容量是怎么确定的。squeezenet blobs的数据容量为83,为红色矩形框的和。...原创 2020-04-09 00:15:38 · 1377 阅读 · 2 评论 -
【ncnn】win10 vs2015配置ncnn源码
转载自:https://blog.youkuaiyun.com/cuixing001/article/details/79279971这种方式不需要预先用cmake进行编译,直接将源码添加到vs项目中,在阅读源码的时候有好处。但是在用ncnn项目的时候,每次都要编译,速度会慢些。...转载 2020-04-04 22:23:48 · 423 阅读 · 0 评论 -
【ncnn】源码阅读理解(二)——layer层
可以参考:https://blog.youkuaiyun.com/sinat_31425585/article/details/100586033这里是根据配置文件,创建相关的layer,就是定义相关的层,声明内存空间等。这里和darknet差别还是很大的。darknet的源码更容易阅读。ncnn做了几层封装,第一眼看到的时候,肯定是????的。整个流程:第一部分通过类的名字const char* typ...原创 2020-03-30 22:27:35 · 1027 阅读 · 0 评论 -
【ncnn】源码阅读理解(一)——例子注释
Code#include <opencv2\opencv.hpp>#include <map>#include <vector> #include <algorithm> #include <functional> #include <cstdlib> #include <iostream>#...原创 2020-03-29 12:54:07 · 1382 阅读 · 0 评论 -
【ncnn】win10 vs2015编译ncnn项目
1. 编译protobuf这是google开源的一个项目,ncnn用来序列保存网络模型的。1.1 下载protobuf,从这个博客1.2 编译protobuf看网络上的文章,这里有两种方式可以编译protobuf。采用cmake-gui采用vs2015命令行因为编译opencv的时候用的cmake-gui,这里用vs命令行试一下。参考:https://blog.youkuaiyun.com...原创 2020-03-29 00:35:20 · 2286 阅读 · 4 评论 -
【darknet】源码阅读理解(六)——maxpool的前向传播/反向传播
maxpool是用于数据特征降维,减少CNN网络的计算量,是CNN的基础组件之一。1. 前向传播前向传播就是在channel通道上,对一定size*size的正方形区域求出最大值,作为下一层layer的输入。同时,为了反向误差的传播需要保存最大值所对应的索引indexCodevoid forward_maxpool_layer(const maxpool_layer l, network...原创 2020-03-28 20:37:42 · 832 阅读 · 0 评论 -
【darknet】阅读理解(5)——batchnorm和activation
1. batchnorm1.1 原理大致的原理可以参考:https://blog.youkuaiyun.com/qq_25737169/article/details/79048516如果了解个大概的话,就是:(x-均值)/ 偏差 * 缩放系数 + 一个偏置1.2 darknet实现说明:darknet cpu采用C实现的,能更有助于原理的理解或者也可以用numpy等高级框架实现总之,...原创 2020-03-28 12:41:36 · 628 阅读 · 0 评论 -
【darknet】源码阅读理解(三)——CNN前向传播
这里以Code,原理相结合的方式1. darknet中CNN关键代码1. int m = l.n/l.groups; // 输出通道 int k = l.size*l.size*l.c/l.groups; // img2col后图像矩阵的行数 int n = l.out_w*l...原创 2020-03-27 18:48:00 · 873 阅读 · 0 评论 -
【darknet】源码阅读理解(四)——#pragma omp parallel for
参考自:https://www.cnblogs.com/qinguoyi/p/7251305.html出处: darknet在cpu上进行CNN计算时。Code:void gemm_nn(int M, int N, int K, float ALPHA, float *A, int lda, float *B, int ldb, float...转载 2020-03-27 17:01:56 · 667 阅读 · 0 评论 -
【darknet】解读(二)——预训练模型加载
。。。。原创 2020-03-26 22:48:09 · 676 阅读 · 0 评论 -
【darknet】解读(一)
layer filters size input output 0 conv 32 3 x 3 / 1 608 x 608 x 3 -> 608 x 608 x 32 0.639 BFLOPs 1 conv 64 3 x 3 / 2 608 x 608 x 32...原创 2020-03-26 00:12:24 · 489 阅读 · 0 评论 -
【darknet】win10 vscode单步调试darknet配置
参考自:https://www.cnblogs.com/ranjiewen/p/10214728.html,https://blog.youkuaiyun.com/xxmhnu/article/details/802800061. 安装vscode2. 编译darknet将darknet中makefile的CC=gcc改为 CC=gcc -g参考:https://blog.youkuaiyun.com/u0...原创 2020-03-24 00:09:03 · 1441 阅读 · 0 评论 -
【深度学习框架】win10编译darknet
参考:https://blog.youkuaiyun.com/qq_31290747/article/details/80800415注意:用Cygwin中的gcc,最好不要用MinGW,我前面用MinGW编译出现了各种问题1. 安装Cygwin安装 Cygwin的时候,要安装make,binutils 、 gcc 、 gcc-mingw 、 gdb给Cygwin配置环境变量2. 编译darkn...转载 2020-03-22 11:55:51 · 856 阅读 · 0 评论