由于caffe发布较早,基于opencv下读取图片时是以BGR的通道顺序进行的,所以输入网络时需要进行通道变换,一下翻译自https://groups.google.com/forum/#!topic/caffe-users/-_c5m5YnaQ4,对于部分常见的数据变换操作进行解读。源代码在https://github.com/BVLC/caffe/blob/master/python/caffe/io.py
transformer.set_transpose('data', (2,0,1))
transformer.set_raw_scale('data', 255) # the reference model operates on images in [0,255] range instead of [0,1]
transformer.set_channel_swap('data', (2,1,0)) # the reference model has channels in BGR order instead of RGB
第一行和第三行仅仅是把你的数据转换成caffe支持的格式。对(227,227,3)的输入数据进行(2,0,1)的set_transpose操作,可以转换成(3,227,227),set_channel_swap会改变通道顺序,如把BGR改为RGB。set_raw_scale用于把诸如0-1的灰阶像素重整到0-255。
译者注:
另外还有set_mean(‘data’, [104,117,123])操作,用于标准化时减去均值;
set_input_scale(‘data’,1),用于对data之前乘上一个系数。