0

我是 caffe 的新手,因此试图玩弄 MNIST dataset 。我运行了以下命令

./data/mnist/get_mnist.sh
./examples/mnist/create_mnist.sh
./examples/mnist/train_lenet.sh

我没有更改 caffe 中的任何文件,并且只执行了上述 3 行。

我的 example/mnist 文件夹结构如下:

examples/mnist/
|-- convert_mnist_data.cpp
|-- create_mnist.sh
|-- lenet_adadelta_solver.prototxt
|-- lenet_auto_solver.prototxt
|-- lenet_consolidated_solver.prototxt
|-- lenet_iter_10000.caffemodel
|-- lenet_iter_10000.solverstate
|-- lenet_iter_5000.caffemodel
|-- lenet_iter_5000.solverstate
|-- lenet_multistep_solver.prototxt
|-- lenet.prototxt
|-- lenet_solver_adam.prototxt
|-- lenet_solver.prototxt
|-- lenet_solver_rmsprop.prototxt
|-- lenet_train_test.prototxt
|-- mnist_autoencoder.prototxt
|-- mnist_autoencoder_solver_adadelta.prototxt
|-- mnist_autoencoder_solver_adagrad.prototxt
|-- mnist_autoencoder_solver_nesterov.prototxt
|-- mnist_autoencoder_solver.prototxt
|-- mnist_test_lmdb
|   |-- data.mdb
|   `-- lock.mdb
|-- mnist_train_lmdb
|   |-- data.mdb
|   `-- lock.mdb
|-- readme.md
|-- train_lenet_adam.sh
|-- train_lenet_consolidated.sh
|-- train_lenet_docker.sh
|-- train_lenet_rmsprop.sh
|-- train_lenet.sh
|-- train_mnist_autoencoder_adadelta.sh
|-- train_mnist_autoencoder_adagrad.sh
|-- train_mnist_autoencoder_nesterov.sh
`-- train_mnist_autoencoder.sh

我想测试通过传递大小为 256*256 但不知道如何做的图像创建的模型,并想使用 python 来做。任何帮助,将不胜感激 。

4

1 回答 1

1
  1. 您需要将图像缩小到所需的 28x28 尺寸。

  2. 您已经创建了 LMDB 格式的数据集:

    • ./data/mnist/get_mnist.sh
    • ./examples/mnist/create_mnist.sh

并且已经训练了模型:

  • ./examples/mnist/lenet_train_test.prototxt

其权重存储为:

  • ./examples/mnist/lenet_iter_10000.caffemodel

您现在要部署分类器。lenet.prototxt 的核心是相同的模型,只是它的输入和输出发生了变化。部署时,您希望在实践中使用常规图像作为输入。

  • ./examples/mnist/lenet.prototxt :部署模型
  • ./examples/mnist/lenet_iter_10000.caffemodel : 学习权重

.

我不知道您是否可以简单地使用 caffe 工具并在图像上运行测试命令。

最简单的分类方法似乎是使用 matlab 或 python。

这是一个matlab示例:

model = 'lenet.prototxt';
weights = 'lenet_iter_10000.caffemodel';
%caffe.set_mode_gpu();
%caffe.set_device(0);
net = caffe.Net(model, weights, 'test');
image = imread('example.png');
res = net.forward({image});
prob = res{1}

这是一个使用 python ( ./examples/00-classification.ipynb ) 的分类教程。但是,它是为 ilsvrc12 类型的数据集设计的。如果您只是忽略减去平均图像,它可能会起作用。

还有一个 CPP 示例 (./examples/cpp_classification),但我再次不确定平均图像。

于 2016-06-16T15:05:10.817 回答