caffe中各语言预处理方式

一、 caffe预处理方式
caffe有C++、matlab和python三种实现方法,每种方法的预处理方式各不相同。

1.1 C++读入
C++用opencv读入的是BGR格式,CV_32FC3,0-255之间,[h,w,c]排列,需要用warpInputLayer转换成[c, h ,w]排列(c代表通道数,h代表图像的高,w代表图像的宽),然后再减去均值。
$ cv::Mat sample_normalized;
$ cv:: substract(sample_float, mean_, sample_normalized);

1.2 matlab读入
matlab读入的是RGB,排列是[h,w,c],所谓的列主序,因此需要交换h和w,转换成BGR,再减去均值。
$ im_data = im(:, :, [3, 2, 1]); #通道由RGB改为BGR
$ im_data = permute(im_data, [2, 1, 3]); #图片的h、w改为w、h
$ im_data = single(im_data); #convert from uint8 to single
$ im_data = imresize(im_data,[IMAGE_DIM IMAGE_DIM], ‘bilinear’); #改变图像的尺寸
$ im_data = im_data -mean_data; #减去平均值(already in W x H x C, BGR)

1.3 用python读入
1.3.1 caffe.io
caffe.io读进去的是RGB,0-1之间的浮点数,排序方式是[h,
w, c]改为[c, h, w],变换到0-255,减去均值,再转换为BGR。

$ transformer = caffe.io.Transformer({‘data’:
net.blobs[‘data’].data.shape})
$ transformer.set_transpose(‘data’, (2,0,1))
$ transformer.set_mean(‘data’,np.load(mean_file).mean(1).mean(1))

$ transformer.set_raw_scale(‘data’, 255)
$ transformer.set_channel_swap(‘data’,(2,1,0))
$ net.blobs[‘data’].reshape(1,3,227,227)
$ im = caffe.io.load_image(imgfileapth)
$ net.blobs[‘data’].data[…] = transformer.preprocess(‘data’,im)

1.3.2 opencv

读入的是BGR格式,像素值是0-255,需要转换到[c, h, w],再减去均值。
$ transformer = caffe.io.Transformer({‘data’:
net.blobs[‘data’].data.shape})
$ transformer.set_transpose(‘data’, (2, 0, 1))
$ transformer.set_mean(‘data’, np.array([104, 117, 123]))

原文链接:https://blog.csdn.net/minstyrain/article/details/78373914
caffe各类网络介绍:https://blog.csdn.net/mounty_fsc/article/category/6136645

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值