图像预处理:减去的均值是数据集所有图片的RGB三个通道的均值构成的向量[Rmean, Gmean, Bmean],每个通道各一个均值。然后所有图像都减去此向量。
MEAN_VALUE = np.array([103.939, 116.779, 123.68]) # BGR def preprocess(img): # img is (height, width, channels), values are 0-255 im = np.swapaxes(np.swapaxes(im, 1, 2), 0, 1) # Shuffle axes to c01 im = im[::-1, :, :] # switch to BGR img -= MEAN_VALUE # substract mean return img
在训练集得到的均值要应用于测试集,保证变换形式相同。
通道的顺序:用caffe训练的模型使用BGR,所以需要把图像的RGB顺序颠倒。
maxout和network in network的预处理:使用pylearn2的ZCA处理方法,具体参考pylearn2的预处理函数。分别是有GCN和没有GCN的实现(global contrast normalization)。还有一种预处理方法是不做ZCA,直接去均值和归一化到-1~1之间,这样的预处理也可用于训练,但不是论文中的处理方法。
注意:获得的训练集的均值和白化矩阵要应用于测试集,保证变换一致。Imagenet数据集预处理:仅仅剪裁大小和去均值,不做ZCA或者归一化。
MEAN_VALUE = np.array([103.939, 116.779, 123.68]) # BGR def prep_image(im): # Resize so smallest dim = 256, preserving aspect ratio h, w, _ = im.shape if h < w: im = skimage.transform.resize(im, (256, w*256/h), preserve_range=True) else: im = skimage.transform.resize(im, (h*256/w, 256), preserve_range=True) # Central crop to 224x224 h, w, _ = im.shape im = im[h//2-112:h//2+112, w//2-112:w//2+112] # Shuffle axes to c01 im = np.swapaxes(np.swapaxes(im, 1, 2), 0, 1) # Convert to BGR im = im[::-1, :, :] im = im - MEAN_IMAGE return floatX(im[np.newaxis])
模型构建问题
最新推荐文章于 2024-08-08 16:27:24 发布