如何测试使用mnist数据集创建的模型

时间:2016-03-14 13:37:28

标签: caffe pycaffe

我是caffe的新手,因此试图使用MNIST数据集。我运行了以下命令

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

我没有改变caffe中的任何文件,只执行了上面的3行。

我的示例/ 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来完成。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

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

  2. 您已经以LMDB格式创建了一个数据集:

    • ./数据/ MNIST / get_mnist.sh
    • ./实例/ MNIST / create_mnist.sh
  3. 已经训练了模型:

    • ./实例/ MNIST / lenet_train_test.prototxt

    其权重存储为:

    • ./实例/ MNIST / lenet_iter_10000.caffemodel

    您现在想要部署分类器。 lenet.prototxt是核心相同的模型,除了它的输入和输出已经改变。部署时,您希望在实践中输入常规图像。

    • ./ examples / mnist / lenet.prototxt:deployment model
    • ./ 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),但我再也不确定平均图像。