python 和 matlab的caffe读数据细节
(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读数据细节的更多相关文章
- python和matlab
一.python简介 python是一种面向对象的解释型计算机程序设计语言.python是纯粹的自由软件,源代码和解释器CPython遵循GPL协议.Python语法简介清晰,特色之一是强制用空白符作 ...
- Windows下对文件夹下所有图片批量重命名(附C++,python,matlab代码)
https://blog.csdn.net/u011574296/article/details/72956446: Windows下对文件夹下所有图片批量重命名(附C++,python,matlab ...
- [转]numpy线性代数基础 - Python和MATLAB矩阵处理的不同
转自:http://blog.csdn.net/pipisorry/article/details/45563695 http://blog.csdn.net/pipisorry/article/de ...
- [python][matlab]使用python调用matlab程序
问题引入 在做实验的时候,需要用到python和matlab工具来进行不同的处理,比如在run神经网络的时候,需要使用pytorch框架得到网络的各个参数,在得到参数后需要使用matlab进行聚类规划 ...
- 四大机器学习编程语言对比:R、Python、MATLAB、Octave
本文作者是一位机器学习工程师,他比较了四种机器学习编程语言(工具):R.Python.MATLAB 和 OCTAVE.作者列出了这些语言(工具)的优缺点,希望对想开始学习它们的人有用. 图源:Pixa ...
- 无线智联-程序篇:让python与matlab牵手
python和matlab本来是青梅竹马的好基友,奈何相爱相杀,经常放在一起做对比,就好比经常听到的,“你看看隔壁xx家的孩子”,其实每个孩子都有每个孩子的优点,如果能发挥每个孩子的优点,岂不是更好. ...
- python——读取MATLAB数据文件 *.mat
鉴于以后的目标主要是利用现有的Matlab数据(.mat或者.txt),主要考虑python导入Matlab数据的问题.以下代码可以解决python读取.mat文件的问题.主要使用sicpy.io即可 ...
- python 与 matlab 混编
用于 Python 的 MATLAB 引擎 API 快速入门 安装用于 Python 的 MATLAB 引擎 API Matlab的官方文档中介绍了 Matlab 与其余编程语言之间的引擎接口,其中包 ...
- python调用matlab
官网链接: https://ww2.mathworks.cn/help/matlab/matlab_external/call-user-script-and-function-from-python ...
随机推荐
- 【转】vue+axios 前端实现登录拦截(路由拦截、http拦截)
一.路由拦截 登录拦截逻辑 第一步:路由拦截 首先在定义路由的时候就需要多添加一个自定义字段requireAuth,用于判断该路由的访问是否需要登录.如果用户已经登录,则顺利进入路由, 否则就进入登录 ...
- [LeetCode] 231. Power of Two ☆(是否2 的幂)
描述 Given an integer, write a function to determine if it is a power of two. 给定一个整数,编写一个函数来判断它是否是 2 的 ...
- Sql server2008如何导入Excel文件数据?
sql server 中如何使用Excel文件导入数据?我做个测试,首先建立一个测试表(民族表) --创建一个民族表-- create table BdsNation( Uid int not nul ...
- 神奇的口袋(dp)
有一个神奇的口袋,总的容积是40,用这个口袋可以变出一 些物品,这些物品的总体积必须是40. John现在有n(1≤n ≤ 20)个想要得到的物品,每个物品 的体积分别是a1,a2……an.John可 ...
- 逆袭之旅DAY17.东软实训.Oracle.PLSQL.过程,函数,包,练习
2018-07-13 14:54:46 --1.创建一个包,包含一个为雇员加薪的过程,一个为雇员减薪的过程 CREATE OR REPLACE PACKAGE pac_test1 IS PROCEDU ...
- 1.python函数式编程-map函数
编程方法论 面向过程 函数式 面向对象 面向过程 将编程过程拆分成多个步骤,在函数中按照每个步骤进行编程: 函数式编程 编程语言定义的函数+数学意义的函数 1.不可变,不用变量保存状态,不修改变量: ...
- Win10系列:UWP界面布局进阶7
Canvas Canvas元素用于定义一个区域,可以向这个区域中添加不同的XAML界面元素.Canvas会对其内部的元素采用绝对布局方式进行布局,下面通过三个示例来介绍Canvas的使用方法. (1) ...
- NTT模板(无讲解)
#include<bits/stdc++.h>//只是在虚数部分改了一下 using namespace std; typedef long long int ll; ; ; ; ; ll ...
- MATLAB 图片折腾4
重新安排矩阵的x,y,z , 在二维中就相当于把x,y 对换,在三维中相当于可以把三个坐标的位置互换. 比如A = A(:,:,1)=repmat(1,3,3);A(:,:,2)=repmat(2,3 ...
- ubuntu gnome桌面隐藏顶栏
注意:ubuntu 14.04.5默认的为unity桌面,有多点触发,没有自带Tweak Tool工具.需安装gnome 桌面,可参见我的另一随笔. 环境: ubuntu 14.04.5 gnome ...