我一直在使用TensorFlow,但我是咖啡馆的新手。我想尝试一个在ImageNet上训练过的AlexNet的可靠实现,我在official Caffe repository中找到了一个。在
我能够在一个非常短的Caffe代码中将包装在bvlc_alexnet.caffemodel文件中的权重与deploy.prototxt中指定的模型链接起来,并获得与网络将图像分类到的1000个类别相对应的1000个概率的输出向量。在import numpy as np
import matplotlib.pyplot as plt
import sys
import caffe
import operator
MODEL_FILE = 'D:\\Desktop\\caffe\\models\\bvlc_alexnet\\deploy.prototxt'
PRETRAINED = 'D:\\AlexNet_Caffe\\bvlc_alexnet.caffemodel'
net = caffe.Classifier(MODEL_FILE, PRETRAINED)
IMAGE_FILE = 'D:\\Desktop\\caffe\\python\\testIm1.jpg'
input_image1 = caffe.io.load_image(IMAGE_FILE)
IMAGE_FILE = 'D:\\Desktop\\caffe\\python\\testIm2.jpg'
input_image2 = caffe.io.load_image(IMAGE_FILE)
pred = net.predict([input_image1, input_image2])
print pred # prints the array of 1000 probabilities
index, value = max(enumerate(pred[0]), key=operator.itemgetter(1))
print index # prints the index of max probability
print value # prints the max probability
index, value = max(enumerate(pred[1]), key=operator.itemgetter(1))
print index # prints the index of max probability
print value # prints the max probability
在我的例子中,我可以指定模型和权重并获得一个输出,但是无论我输入什么图像,输出似乎都是相同的(669)。
在Caffe存储库中,有一个script for fetching ImageNet dataset。它下载和提取的tarball包含以下文件:
^{pr2}$
我不确定是否还需要使用文件imagenet_mean.binaryproto
和imagenet.bet.pickle
有人能澄清一下吗?在