(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. Linux下Tomcat项目启动报错

    Linux下Tomcat项目启动报错 org.springframework.beans.factory.CannotLoadBeanClassException: Error loading cla ...

  2. maven聚合工程tomcat插件启动没有 Starting ProtocolHandler ["http-bio-8081"]

    Starting ProtocolHandler ["http-bio-8081"]无法显示,一般有三个原因: (1)数据库连不上: (2)注册中心连不上(我这里用的是zookee ...

  3. mybatis标签之——<trim>及 <foreach collection>

    https://www.cnblogs.com/zjfjava/p/8882614.html trim标记是一个格式化的标记,主要用于拼接sql的条件语句(前缀或后缀的添加或忽略),可以完成set或者 ...

  4. IntelliJ Idea 快捷键列表

    最重要:1Ctrl+Alt+Shift+T:查找类2重构3提取父类 Ctrl+Shift + Enter,语句完成“!”,否定完成,输入表达式时按 “!”键Ctrl+E,最近的文件Ctrl+Shift ...

  5. learning ddr state diagram

  6. Ubuntu16.04无法使用WiFi

    本人联想431,安装ubuntu16.04  lts,打开之后没有wife,参考这个解决 http://blog.csdn.net/bubblem/article/details/53575017 U ...

  7. ie浏览器get url返回404问题

    昨晚同事说之前给的接口不能get方式的,直接在ie浏览器访问返回404,说明是参数有问题. 同样的接口使用curl和postman请求都正常,其他ie之外的浏览器也都正常响应. 记录下排查过程: 问题 ...

  8. ural1519

    题解: 插头dp 具体可以看看cdq论文 代码: #include<bits/stdc++.h> using namespace std; typedef long long ll; ; ...

  9. Ant在Java项目中的使用(一眼就看会)

    参考:http://www.cnblogs.com/zhengqiang/p/5557155.html Ant是跨平台的构建工具,它可以实现项目的自动构建和部署等功能.在本文中,主要让读者熟悉怎样将A ...

  10. vue-1-模板语法

    文本 <span>Message: {{ msg }}</span><span v-once>这个将不会改变: {{ msg }}</span> 原始 ...