(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. Git的各种状态

    考:http://blog.csdn.net/wirelessqa/article/details/19548057 按照文件的存放位置分: 在你自建的Git本地仓库中,有三个区域:本地目录.暂存区. ...

  2. spring-boot 全面认知

    https://blog.csdn.net/ityouknow/article/details/80490926,这个链接非常全面的讲解了spring-boot的内容,从初级到中级,到最后的提升,觉得 ...

  3. FJUT16级第一周寒假作业题解G题

    题目链接:http://210.34.193.66:8080/vj/Contest.jsp?cid=160#P6 涨姿势题1 TimeLimit:1000MS  MemoryLimit:128000K ...

  4. Windows下安装 Memcache

    1.下载Memcached Windows服务端程序.(memcached >= 1.4.5 版本安装32 32位系统 1.4.5版本:http://static.runoob.com/down ...

  5. 在Vue中关闭Eslint 的方法

    在vue项目中关闭ESLint方法:找到 webpack.base.conf.js 将这些代码注释掉, { test: /\.(js|vue)$/, loader: 'eslint-loader', ...

  6. 常用java命令

    javap 反编译 javap xxx.class 查看大概 javap -v -p xxx.class 查看详细 jps 查看有哪些java进程 jinfo 查看或设置java进程的 vm 参数,只 ...

  7. pycharm 配置使用

    1. 如何添加Package File-> Settings -> Project :XXXX -> Project Interpreter 点右边的"+"号,输 ...

  8. ACCESS数据库基本使用

    ACCESS是Office自带的数据库,使用起来非常方便. 相比,其它数据库来说,使用率较低,但是同MYSQL一样,免费.正因为如此,所以很多建站的程序员,还是会选择使用它. 部分代码: <sc ...

  9. astah-professional-7_2_0安装

    astah-professional-7_2_0-1安装 1● 下载文件 2● 安装       replace   D:\Program\astahprofessional\inst\astah-p ...

  10. 学习笔记-AngularJs(七)

    在学习笔记-AngularJs(六)提及了事件处理器和过滤器以及它们的例子,而我们知道之前我是使用$http服务去获得我们需要的json数据,但是$http是比较底层的用法,有时候我们想把获取json ...