自定义Caffe数据集中的图像平均减法?

时间:2017-06-22 15:13:56

标签: neural-network computer-vision caffe conv-neural-network pycaffe

我目前正在创建图像数据集,以使用Caffe训练,验证和测试基本的自定义ConvNet。

具体来说,我已经收集了我的JPG图像(RGB),现在正在决定如何为我的网络预处理图像。我希望对图像应用基本的标准化,例如将图像平均值减去“居中”图像。

ImageNet教程http://caffe.berkeleyvision.org/gathered/examples/imagenet.html提到了此操作,描述了如何通过将LMDB传递到.binaryproto中的compute_image_mean可执行文件来为数据集生成平均$CAFFE_HOME/build/tools文件。 / p>

我已经完成了这个,现在我的训练LMDB有一个.binaryproto文件。据我所知,该文件基本上包含传递的LMDB中所有图像的平均像素值的表示。因此,我认为它存储了某种形式的包含三个通道的像素值的数组。

问题:

如何使用此.binaryproto文件执行平均减法?

我应该为每个LMDB创建单独的.binaryproto文件(训练,验证,测试)吗?或者我应该首先创建一个包含数据集中所有图像的LMDB,从中生成均值,并将减法应用于所有子集?

非常感谢任何建议。

1 个答案:

答案 0 :(得分:2)

您只需使用训练集获取.binaryproto文件,并在训练,验证和测试时使用它。

这是因为如果您采用所有图像的平均值,则在训练时间接向网络提供有关验证和测试图像性质的信息,这可能有助于它比其他方式更好地执行。

您可能知道,您需要将其添加到prototxttransform_param文件的数据层中。

layer {
    name: "data" #the name
    # other attributes
    transform_param {
        mean_file: "path/to/training/binaryproto"
    }
}
This question上的

stats.stackexchange.com也引用相同的查询,该查询也链接到this useful resource