《ncnn数据归一化和结果解析》

  近两年都在使用ncnn进行工程化部署,这里记录一下ncnn进行数据归一化的运算,以及得到的结果ncnn::Mat如何解析。

Key Words:ncnn、数据归一化、结果解析

Beijing, 2020

Agile Pioneer  

inference 数据标准化

// for color image
const float mean_vals[3] = {127.5f, 127.5f, 127.5f};
const float norm_vals[3] = {0.007843f, 0.007843f, 0.007843f};
// for gray image
const float mean_vals[1] = {0};
const float norm_vals[1] = {0.0078125f}; // 数据标准化乘以的系数// ncnn::Mat::PIXEL_GRAY 表示灰度图
// ncnn::Mat::PIXEL_BGR  表示输入的是bgr图
ncnn::Mat in = ncnn::Mat::from_pixels_resize(gray.data,ncnn::Mat::PIXEL_GRAY, img_w, img_h,target_width, target_height);
in.substract_mean_normalize(mean_vals, norm_vals);

ncnn结果接收

out.dims // ncnn::Mat 查看dims的个数# 不知道维度的情况下
// 方法一:
const float *src = (float *)out.data;  // void* 转float*
vector<float> result(src, src + sizeof(src) / sizeof(float));
// 方法二(注意这里的数据类型(ncnn::Mat::PIXEL_GRAY)不容易确定,分割问题可以用这个来直接接收结果):
cv::Mat result;
out.to_pixels(result.data, ncnn::Mat::PIXEL_GRAY);# 知道维度的情况下
cv::Mat result = cv::Mat(1, 2, CV_32F, out.data);# ncnn::Mat 转为 float*
void ncnnMat2bytes(ncnn::Mat m, float *bytes) {//#pragma omp parallel forfor (int i = 0; i < m.c; i++) {const float *src = m.channel(i);// 把bytes 的某部分的头给dst, dst指针到后面把这部分开始的内容填满float *dst = bytes + (m.w * m.h) * i;memcpy(dst, src, m.w * m.h * sizeof(float));// memcpy (destination_data, source_data, space size)}
}# ncnn::Mat 转为 vector<Mat>, 可以理解为多channel的Mat对象
void ncnnMat2cvMat(ncnn::Mat m, vector<Mat> &vm, int rows, int cols) {for (int i = 0; i < m.c; i++) {float *src = m.channel(i);cv::Mat tempMat(rows, cols, CV_32F, src);vm.push_back(tempMat);}}

ncnn 输入debug

// 输入图片转为ncnn::Mat并处理之后,可以如下代码转为Mat对象进行debug
cv::Mat result;
out.to_pixels(result.data, ncnn::Mat::PIXEL_GRAY);

ncnn数据归一化和结果解析相关推荐

  1. 数据归一化 minmax_scale()函数解析

    minmax_scale()函数是来自sklearn.preprocessing包中.sklearn.preprocessing.minmax_scale(X, feature_range=(0, 1 ...

  2. 【机器学习】 - 数据预处理之数据归一化(标准化)与实战分析,正则化

    一.为什么要进行数据归一化 定义:把所有数据的特征都归到 [0,1] 之间 或  均值0方差1 的过程. 原则:样本的所有特征,在特征空间中,对样本的距离产生的影响是同级的: 问题:特征数字化后,由于 ...

  3. python 数据归一化_python 实现对数据集的归一化的方法(0-1之间)

    python 实现对数据集的归一化的方法(0-1之间) 多数情况下,需要对数据集进行归一化处理,再对数据进行分析 #首先,引入两个库 ,numpy,sklearn from sklearn.prepr ...

  4. 为什么要进行数据归一化

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 原文:https://medium.com/@urvashillu ...

  5. R语言使用pheatmap绘制热力图(数据归一化、行列聚类、注释、文字角度、字体)

    R语言使用pheatmap绘制热力图(数据归一化.行列聚类.注释.文字角度.字体) 目录

  6. 经典大数据面试题及解析

    经典大数据面试题及解析 1.下列哪个属性是hdfs-site.xml中的配置? A.dfs.replication B.fs.defaultFS C.mapreduce.framework.name ...

  7. TensorFlow数据归一化

    TensorFlow数据归一化 1. tf.nn.l2_normalize     - l2_normalize(x, dim, epsilon=1e-12,name=None)     - outp ...

  8. Xml 格式数据的生成和解析

    相关阅读 XML约束 Xml 格式数据的生成和解析 XML解析器 什么是XML XML全称为Extensible Markup Language, 意思是可扩展的标记语言,它是 SGML(标准通用标记 ...

  9. sklearn 笔记:数据归一化(StandardScaler)

    1 StandardScaler原理 去均值和方差归一化.且是针对每一个特征维度来做的,而不是针对样本. ,其中μ为所有样本数据的均值,σ为所有样本数据的标准差. 2 用sklearn 实现数据归一化 ...

最新文章

  1. 猫猫学IOS(四十)UI之核心动画_抖动效果_CAKeyframeAnimation
  2. [Redux/Mobx] 你有使用过redux-saga中间件吗?它是干什么的?
  3. vue概述、vue文件特点、vue核心思想、双向数据流、单文件、启动一个vue项目、声明式渲染
  4. python 数据库驱动开发实例_Python驱动概述
  5. eclipse添加源码的另外一种方法
  6. sql去重常用的基本方法
  7. 3DMM及eos人脸重建
  8. 编写matlab程序设计状态反馈增益阵,利用MATLAB设计状态观测器.pdf
  9. iOS不能显示英文音标问题
  10. 驱动人生教你佳能打印机驱动程序无法使用怎么解决
  11. 《崩坏3》评测:游戏设计中整体性和利用率分析(上)
  12. 关于苹果的iOS cercertificate的创建问题
  13. java丧尸危机全城爆发_伤尸危机-全城爆发BT版
  14. python爬取美女_知乎大神用Python爬取高颜值美女(Python爬虫+人脸检测+颜值检测)...
  15. 使用idb操作IndexedDB
  16. java内存 phd文件抓取,WAS 常常有heapdump.phd和javacore.txt文件产生
  17. 【HBZ分享】突破微信支付系统--单秒600QPS这个上限
  18. 计算机科学与技术专接本试题,计算机科学与技术专业专接本入学考试试题.doc...
  19. 私有云行业破局者 极空间家庭私有云Z4/Z2正式发布
  20. HCIP/HCIE RoutingSwitching / Datacom备考宝典系列(一)OSPF知识点全面总结

热门文章

  1. 收集的图像处理网站http://blog.csdn.net/chief1985/article/details/1898358
  2. 怎么查看php是否安装了symfony_为什么开发人员讨厌PHP???
  3. hibernate hql 关联查询_Hibernate【关联查询篇】
  4. vscode更改配置文件路径_VsCode的jsconfig配置文件说明详解
  5. java分布性_java大型分布系统性能优化实战教程
  6. java java se_Java SE 9:不可变集的工厂方法
  7. angularjs 实例_AngularJS过滤器示例教程
  8. [msi]获取msi安装包的ProductCode
  9. C++基础知识:C++语言中的表达式求值
  10. 基于OpenCV的计算机视觉入门(3)图像特效