程序结构:
其中:
rotman.jpg 为个人头像。
index.py 代码如下:
import caffe
import numpy as np
import matplotlib.pyplot as plt
caffe.set_mode_cpu()
model_def = 'data/deploy.prototxt'
model_weights = 'data/bvlc_reference_caffenet.caffemodel'
net = caffe.Net(model_def,model_weights,caffe.TEST)
mu = np.load('data/ilsvrc_2012_mean.npy')
mu = mu.mean(1).mean(1)
print 'mean-subtracted values:', zip('BGR', mu)
transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})
transformer.set_transpose('data', (2,0,1))
transformer.set_mean('data', mu)
transformer.set_raw_scale('data', 255)
transformer.set_channel_swap('data', (2,1,0))
net.blobs['data'].reshape(50,3,227, 227)
image = caffe.io.load_image('rotman.jpg')
transformed_image = transformer.preprocess('data', image)
# plt.imshow(image)
# plt.show()
net.blobs['data'].data[...] = transformed_image
output = net.forward()
output_prob = output['prob'][0]
print 'predicted class is:', output_prob.argmax()
labels_file ='data/synset_words.txt'
labels = np.loadtxt(labels_file, str, delimiter='\t')
print 'output label:', labels[output_prob.argmax()]
# sort top five predictions from softmax output
top_inds = output_prob.argsort()[::-1][:5] # reverse sort and take five largest items
print 'probabilities and labels:'
print zip(output_prob[top_inds], labels[top_inds])
更多内容,参考链接