caffe 数据的标准化方式

(1) 减去均值方式1

从caffe 给的 models/bvlc_reference_caffenet/下的训练协议train_val.prototxt

  transform_param {
    mirror: true
    crop_size: 227
    mean_file: "data/ilsvrc12/imagenet_mean.binaryproto"
  }
# mean pixel / channel-wise mean instead of mean image
#  transform_param {
#    crop_size: 227
#    mean_value: 104
#    mean_value: 117
#    mean_value: 123
#    mirror: true
#  }

以及,给定的分类示例:

mu = np.load(caffe_root + 'python/caffe/imagenet/ilsvrc_2012_mean.npy')
mu = mu.mean(1).mean(1) # average over pixels to obtain the mean (BGR) pixel values
print 'mean-subtracted values:', zip('BGR', mu)
# create transformer for the input called 'data'
transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})
transformer.set_transpose('data', (2,0,1)) # move image channels to outermost dimension
transformer.set_mean('data', mu) # subtract the dataset-mean value in each channel
transformer.set_raw_scale('data', 255) # rescale from [0, 1] to [0, 255]
transformer.set_channel_swap('data', (2,1,0)) # swap channels from RGB to BGR

我们看到,减去均值文件的方式是:

img - [104,117,123];

即三个通道,每个通道减去对应的值。

(2) 减均值方式2

就是我们通常意义上的减去均值,即

img - mean(img_all);

img 和 mean(img_all)拥有同样的size。

(3) 减去均值在除以标准差

假定图像中每一个位置的像素为一个随机变量,那么标准化的方式为:

xμσ

img = img - mean(img_all);
img = img ./ std(img_all);

三种处理数据的方式,在识别率上有啥差距呢?有空做一下调查。当然,对于图像来说,进行标准化是好的,曾经做过一个实验,使用标准化和未标准化数据相差大约10个百分点。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值