PS:要转载请注明出处,本人版权所有。

PS: 这个只是基于《我自己》的理解,

如果和你的原则及想法相冲突,请谅解,勿喷。

前置说明

  本文作为本人csdn blog的主站的备份。(BlogID=066)

  本文发布于 2018-06-25 11:25:09,现用MarkDown+图床做备份更新。blog原图已丢失,使用csdn所存的图进行更新。(BlogID=066)

环境说明

  2018.06.25

  ncnn master commit id:b3e24cafc37483dcc97ee61e6f0f6ff1b094300e

前言


  由于公司算法组的算法在某些arm板子的表现不佳,于是需要使用此框架进行优化,初步测试得出的结论为:此框架表现不错,于是需要对此框架进行深入学习。根据相关源码分析,要学习此框架的,最好的开始(突破口)应该在模型参数加载和网络加载部分。今天本文介绍网络文件的格式相关信息(根据其源码分析得出)。

格式分析


param文件举例:
上文例图中第一行(版本信息):

  其数值其实代表的是此param文件的版本。

  相关源码说明:

    int magic = 0;
fscanf(fp, "%d", &magic);
if (magic != 7767517)
{
fprintf(stderr, "param is too old, please regenerate\n");
return -1;
}
上文例图中第二行(层与数据交换结构数量):

  第一个数:层(layer)数量

  第二个数:数据交换结构(blob)数量

  相关源码说明:

    // parse
int layer_count = 0;
int blob_count = 0;
fscanf(fp, "%d %d", &layer_count, &blob_count);
上文例图第三四行(相关层的信息):

  前4个值的含义固定:

  1. 层的类型
  2. 层的名称
  3. 输入数据结构(blob)数量(bottom)(input层特殊点)
  4. 输出数据结构(blob)数量(top)

  后面有三种类型的值《《《严格按照顺序排序》》》:

  • 第一种:网络输入层名(一个层可能有多个输入,于是有多个网络输入层名)
  • 第二种:网络输出层名(一个层可能有多个输出,于是有多个网络输出层名)
  • 第三种(可能没有):特殊参数层,一是k=v的类型存在。二是k=len,v1,v2,v3....(数组类型)。此层在ncnn中是存放到paramDict结构中,不同类型层,各种参数意义不一样,需要具体分析。
这里就上文图中第四行的BinaryOp层进行举例分析(其他不同的分析需要具体看不同层的源码)

  层类型:BinaryOp

  层名称:_minusscalar0

  输入数据结构数量(bottom blob):1

  输出数据结构数量(top blob):1

  特殊参数1(第一个k=v):id=0,op_type=1(代表加法Operation_SUB)

  特殊参数2(第二个k=v):id=1,scale val=1

  特殊参数3(第三个k=v):id=2,b=127.50000(因为操作类型为减法,所以此值代表减数)

  By the way:上文图中第五行是做乘法。第四五行合在一起代表的是对输入图像进行归一化。

  相关源码:

    op_type = pd.get(0, 0);
with_scalar = pd.get(1, 0);
b = pd.get(2, 0.f);

后记


  无

参考文献


打赏、订阅、收藏、丢香蕉、硬币,请关注公众号(攻城狮的搬砖之路)

PS: 请尊重原创,不喜勿喷。

PS: 要转载请注明出处,本人版权所有。

PS: 有问题请留言,看到后我会第一时间回复。

《TencentNCNN系列》 之param文件(网络结构文件)格式分析的更多相关文章

  1. after effects的xml格式工程文件aepx的格式分析(一)

    表面上看,AE的工程文件可以另存为xml格式,我们可以通过直接编辑XML来做一些事情. 很可惜,通过aepx文件修改AE工程,能做到的非常有限.理由是: 1.重要的属性都放在了标签的bdata这个属性 ...

  2. EML文件(MIME邮件)格式分析

    电子邮件普遍遵循的邮件技术规范.MIME邮件由邮件头和邮件体两部分组成.邮件头包括:标题,送信人,收信人,创建日期,邮件体内容类型和邮件体编码方式等内容.邮件体包括:正文,超文本,内嵌数据和附件等内容 ...

  3. PDF格式分析

    系列文章是csdn作者'秋风之刀'写的,我只是把目录列出来而已,感谢作者辛苦付出. PDF格式分析(一)简介 PDF格式分析(二)语法之对象 PDF格式分析(三)语法之Filter PDF格式分析(四 ...

  4. zlib压缩一个文件为gzip格式

    网上有很多针对zlib的总结,但是很零散,自己经过总结,实现了用zlib压缩一个文件为gzip格式,似的可以直接使用winr工具解压. 具体方法是使用zlib的deflate系列函数,将buffer压 ...

  5. HTTP POST请求报文格式分析与Java实现文件上传

    时间 2014-12-11 12:41:43  CSDN博客 原文  http://blog.csdn.net/bboyfeiyu/article/details/41863951 主题 HTTPHt ...

  6. C#压缩文件为zip格式

    Vercher   C#压缩文件为zip格式 需要ICSharpCode.SharpZipLib.dll,网上下载的到. 代码是从网上找来的: 1 public class ZipClass 2 { ...

  7. EF+LINQ事物处理 C# 使用NLog记录日志入门操作 ASP.NET MVC多语言 仿微软网站效果(转) 详解C#特性和反射(一) c# API接受图片文件以Base64格式上传图片 .NET读取json数据并绑定到对象

    EF+LINQ事物处理   在使用EF的情况下,怎么进行事务的处理,来减少数据操作时的失误,比如重复插入数据等等这些问题,这都是经常会遇到的一些问题 但是如果是我有多个站点,然后存在同类型的角色去操作 ...

  8. [Web Chart系列之六] canvas Chart 导出图文件

    前言 博主正在参加CSDN2013年度博客之星评选,如果这篇文章对您有用,请投他一票: 投票地址:http://vote.blog.csdn.net/blogstaritem/blogstar2013 ...

  9. SpringBoot系列之@PropertySource读取yaml文件

    SpringBoot系列之@PropertySource支持yaml文件读取 最近在做实验,想通过@PropertySource注解读取配置文件的属性,进行映射,习惯上用properties都是测试没 ...

  10. 28.XSD(XML Schema Definition)用法实例介绍以及C#使用xsd文件验证XML格式

    转自https://www.cnblogs.com/gdjlc/archive/2013/09/08/3308229.html XML Schema 语言也称作 XML Schema 定义(XML S ...

随机推荐

  1. Vulkan学习苦旅05:马不停蹄地渲染(创建交换链VkSwapchainKHR)

    通俗地说,渲染图像就是为图像的每个像素选择合适的颜色.例如,如果图像的分辨率为1920x1080,表示图像中有1920x1080个像素,渲染的过程,就是为每个位置的像素计算出合适的颜色.具体来说,假设 ...

  2. DBGRIDEH 底部多列 发现

    1.设置底部行数 2.点击footers 单独对每一行进行设置 3.单独对这两行 进行设置 5.看下辅助 所以用的时候可以这样用:WeiTopTradeShow.FieldColumns['top_x ...

  3. 如何在Windows端安装scala

    一.首先确保jdk安装成功   首先在安装之前,确保本地已经安装了JDK1.5以上的版本,在此安装的是1.8版本.并且已经设置了JAVA_HOME 环境变量及JDK的bin目录. 1.新建JAVA_H ...

  4. Linux--top命令解释

    top命令解释 1.1 系统运行时间和平均负载: top命令的顶部显示与uptime命令相似的输出 这些字段显示: 当前时间 系统已运行的时间 当前登录用户的数量 相应最近5.10和15分钟内的平均负 ...

  5. Python-open函数-读写文件

    一.open 函数语法 open() 函数的作用是打开一个文件,并返回一个 file对象(即文件对象). open 是一个动作,可以理解为我们打开文档的点击动作. file 对象是一个实物,可以理解为 ...

  6. [Java]Map接口有关总结

    Map接口 1.HashMap和Hashtable的区别 线程安全方面.HashMap是非线程安全的,Hashtable是线程安全的.因为Hashtable内部方法基本都经过synchronized修 ...

  7. python 不显示科学计数法

    pandas方法 import pandas as pd pd.set_option('display.float_format',lambda x : '%.3f' % x) 禁用科学计数法,小数保 ...

  8. NC17193 简单瞎搞题

    题目链接 题目 题目描述 一共有 n个数,第 i 个数是 xi xi 可以取 [li , ri] 中任意的一个值. 设 \(S = \sum{{x_i}^2}\) ,求 S 种类数. 输入描述 第一行 ...

  9. Ubuntu/Centos 管理员权限获取

    OS:Ubuntu 18.04.1 打开Terminal; 输入命令:sudo su; 屏幕上会回显要求输入当前用户密码的提示,输入密码即可获得管理员权限; 若想退出管理员权限可输入命令:su 用户名 ...

  10. C语言,变长数组的用法

    在我的<C语言,结构体成员的地址>文章中,定义了一个demo_node结构体,其中用到变长数组char addr[0].本文以此为例,对C语言变长数组的基本用法展开介绍. typedef ...