caffe.io.Transformer 用于 LeNet 分类

caffe.io.Transformer to use for LeNet classification

我正在尝试使用 LeNet 对数字 (0-9) 进行分类。

我读取尺寸为 28x28 的图像,转置它们,并将一个颜色通道发送到网络中。

bild = mpimg.imread('pathToImg')
bild = np.transpose(bild,(2,0,1))

并得到毫无意义的预测。 我看到 PyCaffe 有一个 Transformer 可以完成这项工作,但我不知道如何将它用于 LeNet。


我正在使用来自 caffe/examples/mnist 的网络(希望它能回答网络期望的数据类型)。

唯一不同的是现在的输入是:

input_shape {
  dim: 1
  dim: 1
  dim: 28
  dim: 28
}

由于您直接使用 deploy prototxt,因此您应该查看 lenet_train_test.prototxt 中的 "data" 层(或具有类似名称的文件),这将向您说明如何数据已预处理。

通过查看我的文件,LeNet 示例似乎对所有输入数据执行了缩放。这由 "data" 层

中的以下几行表示
transform_param {
    scale: 0.00390625
}

所以这是您可能遗漏的一件事。查看 imagenet tutorial 以获取有关预处理(尤其是 Transformer)的指示。其次,您正在阅读图像

bild = np.transpose(bild,(2,0,1))

根据您正在执行的通道交换,这看起来像是一个错误,因此请确保发送到网络的数据的尺寸为 - 1(批量大小)x 1(通道)x 28(高度)x 28 (宽度).