(1).prototxt中的输入表示一样,如

dim: 10
dim: 3
dim: 227
dim: 227

(2)代码喂入数据不一样:

python:    

input_blob = np.zeros((config.batchsize, 3, config.crop_h, config.crop_w), dtype=np.float32)

#im.shape是3,h,w

matlab:

data=zeros(config.crop_h,config.crop_w,1,config.batchsize);

(3)什么不变?什么在变?opencv库有哪些坑人之处

首先,看看到底是row-major还是column-major?

row-major:python 的numpy库, opencv c++

column-major:matlab

对接时,Python:越靠左,级别越大,就是Python的存储row-major本质,就是Python---->连续内存----->c++;而对于matlab,越靠右级别越大,就是matlab的存储本质column-major,即,matlab---->连续内存----->c++;这非常重要,尤其是输入图片不为方矩阵时,会导致非常严重结果,(网络太大也能收敛)。因为传给opencv c++时,c++重新将连续内容重组成图片。假设一个单通道图片本来是matlab的存法,大小是10*20,切成一条连续内存,column-major优先,切成10个像素10个像素的共20份串接起来放在内存中,c++从内存中拿出来,组装成20个像素一行,那么就会把图像的两列凑成一行,图像结构变形。特殊地,如果是方矩阵,则不会顾及这些,最多图像“被躺下”了,即旋转了90度,这其实对网络训练来说不要紧。

关键是注意什么?

关键是按照内存连续性来写入,知道对那个接数组(行,列,通道是否是按照opencv对图像排列的方式:先对第一个通道的第一行扫描,然后第二行扫描),比如一个大坑是:

python的cv2.imread读出来numpy是:480*640*3,这还是matlab那种形式,不过存的时候按照Python的存法实际是,在连续内容中对图像块的解释是,先是第一个通道的第一行第一列,然后第二个通道的第一行第一列...

只会出问题的。等一下opencv c++读入还是按自己那一套先行,后列,再通道。

可能大家都懂了这个道理了,但还是很混沌,是吗?这样吧,写个教条:  工具(各种函数)---->根据下图arr.transpose或者permute成右图,举个例子用python的cv2.imread工具读(可以是Python其他的工具)

虽然matlab的imread读入之后形式看起来也是(480,640,3),但是matlab是column-major的,因此,画出的图如下:

注意:

tranpose和permute是在改变内存的连续方式,reshape没有改变。另外,matlab还有rgb跟opencv通道上的bgr的不同,但目前觉得卷积都看起来一样,除非考虑pre-train得到的bgr均值要减。

python 和 matlab的caffe读数据细节的更多相关文章

  1. python和matlab

    一.python简介 python是一种面向对象的解释型计算机程序设计语言.python是纯粹的自由软件,源代码和解释器CPython遵循GPL协议.Python语法简介清晰,特色之一是强制用空白符作 ...

  2. Windows下对文件夹下所有图片批量重命名(附C++,python,matlab代码)

    https://blog.csdn.net/u011574296/article/details/72956446: Windows下对文件夹下所有图片批量重命名(附C++,python,matlab ...

  3. [转]numpy线性代数基础 - Python和MATLAB矩阵处理的不同

    转自:http://blog.csdn.net/pipisorry/article/details/45563695 http://blog.csdn.net/pipisorry/article/de ...

  4. [python][matlab]使用python调用matlab程序

    问题引入 在做实验的时候,需要用到python和matlab工具来进行不同的处理,比如在run神经网络的时候,需要使用pytorch框架得到网络的各个参数,在得到参数后需要使用matlab进行聚类规划 ...

  5. 四大机器学习编程语言对比:R、Python、MATLAB、Octave

    本文作者是一位机器学习工程师,他比较了四种机器学习编程语言(工具):R.Python.MATLAB 和 OCTAVE.作者列出了这些语言(工具)的优缺点,希望对想开始学习它们的人有用. 图源:Pixa ...

  6. 无线智联-程序篇:让python与matlab牵手

    python和matlab本来是青梅竹马的好基友,奈何相爱相杀,经常放在一起做对比,就好比经常听到的,“你看看隔壁xx家的孩子”,其实每个孩子都有每个孩子的优点,如果能发挥每个孩子的优点,岂不是更好. ...

  7. python——读取MATLAB数据文件 *.mat

    鉴于以后的目标主要是利用现有的Matlab数据(.mat或者.txt),主要考虑python导入Matlab数据的问题.以下代码可以解决python读取.mat文件的问题.主要使用sicpy.io即可 ...

  8. python 与 matlab 混编

    用于 Python 的 MATLAB 引擎 API 快速入门 安装用于 Python 的 MATLAB 引擎 API Matlab的官方文档中介绍了 Matlab 与其余编程语言之间的引擎接口,其中包 ...

  9. python调用matlab

    官网链接: https://ww2.mathworks.cn/help/matlab/matlab_external/call-user-script-and-function-from-python ...

随机推荐

  1. centos命令行系列之升级glibc到

    1.从http://ftp.gnu.org/gnu/glibc/glibc-2.17.tar.gz 下载文件 2.安装部署 [root@kafzook1 /]# tar -xf glibc-2.17. ...

  2. 二、工作中常用的SQL优化

    除了给table建立索引之外,保持良好的SQL语句编写. 1.通过变量的方式来设置参数 比如动态查询的时候,尽量这样写 好:string strSql=" SELECT * FROM PEO ...

  3. flex入门----基础知识

    传统的页面布局   在flex出现之前,双列布局,三列布局,动态盒居中,绝对居中布局等常见的布局均是采用dispaly+float+定位来布局的,一般包括以下几种布局策略: normal flow(文 ...

  4. NOIP2018复赛获奖名单

    根据<CCF NOIP2018复赛获奖分数线及名额分配办法>,现将NOIP2018复赛获奖名单公告如下: 复赛提高组一等奖获奖名单 复赛提高组二等奖获奖名单 复赛提高组三等奖获奖名单 复赛 ...

  5. javascript es6系列教程 - 不定参数与展开运算符(...)

    三个点(...)在es6中,有两个含义: 用在形参中, 表示传递给他的参数集合, 类似于arguments, 叫不定参数. 语法格式:  在形参面前加三个点( ... ) 用在数组前面,可以把数组的值 ...

  6. jenkins+findbugs+checkstyle+PMD静态代码检查(二)

    可以根据自己的需求选中对应的插件进行配置(不一定非要同时配置三个插件) jenkins:持续集成的工具 fundbugs:检测代码静态错误的插件  例如:定义了没有用到的对象,string类型的比较使 ...

  7. 前端基础之JavaScript进阶

    一.流程控制 if - else var a = 10; if (a >5){ console.log("yes"); }else { console.log("n ...

  8. (C/C++学习笔记) 二十四. 知识补充

    二十四. 知识补充 ● 子类调用父类构造函数 ※ 为什么子类要调用父类的构造函数? 因为子类继承父类,会继承到父类中的数据,所以子类在进行对象初始化时,先调用父类的构造函数,这就是子类的实例化过程. ...

  9. JavaScript 基础,登录前端验证

    <script></script>的三种用法: 放在<body>中 放在<head>中 放在外部JS文件 <!DOCTYPE html> & ...

  10. Office 365 企业应用以及服务概览 分享记录

    博客地址:http://blog.csdn.net/FoxDave 分享时间: 2017年9月14日 分享地点: 部门内部 参与人数: 16人 分享内容: 讲解微软MVP项目计划的相关内容:讲解O ...