模型构建问题

来源:互联网 发布:grub4dos 引导linux 编辑:程序博客网 时间:2024/06/05 06:22
  1. 图像预处理:减去的均值是数据集所有图片的RGB三个通道的均值构成的向量[Rmean, Gmean, Bmean],每个通道各一个均值。然后所有图像都减去此向量。

    MEAN_VALUE = np.array([103.939, 116.779, 123.68])   # BGRdef 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

    在训练集得到的均值要应用于测试集,保证变换形式相同。

  2. 通道的顺序:用caffe训练的模型使用BGR,所以需要把图像的RGB顺序颠倒。

  3. maxout和network in network的预处理:使用pylearn2的ZCA处理方法,具体参考pylearn2的预处理函数。分别是有GCN和没有GCN的实现(global contrast normalization)。还有一种预处理方法是不做ZCA,直接去均值和归一化到-1~1之间,这样的预处理也可用于训练,但不是论文中的处理方法。
    注意:获得的训练集的均值和白化矩阵要应用于测试集,保证变换一致。

  4. Imagenet数据集预处理:仅仅剪裁大小和去均值,不做ZCA或者归一化。

    MEAN_VALUE = np.array([103.939, 116.779, 123.68])   # BGRdef 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])
0 0
原创粉丝点击