![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MNN源码笔记
文章平均质量分 82
MNN源码阅读学习笔记
弹与征鸿
……***……
展开
-
MNN量化源码解析
Int8量化流程收集激活值的直方图;基于不同的阈值产生不同的量化分布;然后计算每个分布与原分布的相对熵,然后选择熵最少的一个,也就是跟原分布最像的一个。MNN量化代码分析量化代码入口int main(int argc, const char* argv[]) { if (argc < 4) { DLOG(INFO) << "Usage: ./quantized.out src.mnn dst.mnn preTreatConfig.json\n";原创 2021-07-16 14:31:41 · 1809 阅读 · 2 评论 -
MNN源码阅读之模型转换
模型转换每一个开源框架,都有自己的模型格式,MNN中支持,CAFFE,TensorFLow,ONNX等格式的网络结构转换成mnn格式。为了方便大多都会将训练好的网络模型转成ONNX第三方通用的结构,这里主要分析mnn如何将ONNX的结构转换成自己支持的mnn格式。模型转换的流程:Created with Raphaël 2.2.0开始读取模型转换成mnn模型mnn模型写入文件结束0. onnx结构在此之前,需要先了解下onnx的结构。onnx最外层是model,包含一些基础信息,onnx版本,原创 2021-05-12 10:49:06 · 1114 阅读 · 0 评论 -
MNN源码阅读之推理流程(三)——Session run
之前两篇博客介绍了,Interpreter和Session的创建,接下来就是如何执行推理。1. 数据拷贝在执行推理之前,必然需要将图片数据拷贝到Session的input中,先来简单看下数据拷贝。1.1 输入MNN中的demo中加载图片以及normalize的代码如下。 auto dims = input->shape(); int inputDim = 0; int size_w = 0; int size_h = 0; int bp原创 2021-05-06 15:39:35 · 1074 阅读 · 0 评论 -
MNN源码阅读之推理流程(二)——创建Session
上篇博客中,了解了解释器Interpreter的创建(MNN源码阅读解析(一)——Interpreter),按照推理步骤,接下来就要创建Session。ScheduleConfig config;config.type = MNN_FORWARD_AUTO;auto session = net->createSession(config);可见Interpreter创建Session分为两个过程,创建Schedule配置信息根据配置创建Session0. 创建SessionS原创 2021-04-30 14:51:06 · 1278 阅读 · 0 评论 -
MNN源码阅读之推理流程(一)——Interpreter
根据MNN源码所提供的demo可以考出推理的流程。根据模型文件创建解释器Interpreter。根据ScheduleConfig配置创建会话Session。将数据填入session的input tensor中。run session。从output tensor获取推理结果。1. Interpreter先来看Interpreter的定义。class MNN_PUBLIC Interpreter {public: /** * @brief create net from原创 2021-04-28 16:30:04 · 1984 阅读 · 0 评论