我正在使用Caffe (http://caffe.berkeleyvision.org/)进行图像分类。我正在Windows上使用它,一切似乎都编译得很好。
为了开始学习,我遵循了MNIST教程(http://caffe.berkeleyvision.org/gathered/examples/mnist.html)。我下载了数据并运行了..\caffe.exe train --solver=...examples\mnist\lenet_solver.prototxt.它运行了10.000次迭代,打印出精度为98.5%,并生成了两个文件: lenet_iter_10000.solverstate和lenet_iter_10000.caffemodel。
所以,我认为尝试对自己的形象进行分类会很有趣,这应该很容易,对吧?
我可以找到这样的资源:https://software.intel.com/en-us/articles/training-and-deploying-deep-learning-networks-with-caffe-optimized-for-intel-architecture#Examples,告诉我如何准备,训练和计时我的模型。但每次教程/文章涉及到将单个实例放入CNN时,他们都会跳到下一个点,并告诉下载一些新的模型。一些参考资料告诉您要使用classfier.bin/.exe,但此文件需要一个imagenet_mean.binaryproto或类似的mnist。我不知道在哪里可以找到或生成这个文件。
因此,简而言之:当我使用Caffe训练CNN时,如何输入单个图像并使用已有的文件获得输出?
更新:基于帮助,我让网络识别一张图像,但即使网络的准确率为99.0%,识别也不正确。我使用了以下python代码来识别图像:
NET_FILE = 'deploy.prototxt'
MODEL_FILE = 'lenet_iter_10000.caffemodel'
net = caffe.Net(NET_FILE, MODEL_FILE, caffe.TEST)
im = Image.open("img4.jpg")
in_ = np.array(im, dtype=np.float32)
net.blobs['data'].data[...] = in_
out = net.forward() # Run the network for the given input image
print out;我不确定是否为MNIST示例正确地格式化了图像。这个图像是一个28x28的灰度图像,它的基本值是4。我需要对这个图像做更多的变换吗?
网络(部署)如下所示(开始和结束):
input: "data"
input_shape {
dim: 1 # batchsize
dim: 1 # number of colour channels - rgb
dim: 28 # width
dim: 28 # height
}
....
layer {
name: "loss"
type: "Softmax"
bottom: "ip2"
top: "loss"
}发布于 2016-10-10 21:06:44
如果我没理解错的话,你有一个经过训练的模型,你想用你自己的输入图像来测试这个模型。有很多方法可以做到这一点。
我常用的一种方法是运行一个类似于here的python脚本。
请记住,您必须使用make pycaffe在caffe中构建python,并通过编辑sys.path.append('../../../python')行指向文件夹
另外,将以下行编辑为您的模型文件名。
NET_FILE = 'deploy.prototxt'
MODEL_FILE = 'fcn8s-heavy-pascal.caffemodel'编辑以下行。你应该使用网络的最后一层来获得输出,而不是得分。
out = net.blobs['score'].data发布于 2016-10-12 02:01:20
您需要从原始network.prototxt文件创建一个deploy.prototxt文件。数据层必须如下所示:
input: "data"
input_shape {
dim: 1
dim: [channles]
dim: [width]
dim: [height]
}将通道、宽度和高度替换为图像的正确值。
你还需要移除所有得到“标签”作为底部输入的层(这通常只是你的损失层)。
然后,您可以使用此deploy.prototxt文件通过MATLAB或PYTHON测试您的输入。
https://stackoverflow.com/questions/39958037
复制相似问题