您的位置:首页 > Web前端

Windows下使用训练好的Caffe模型

2018-02-27 16:05 330 查看
使用训练好的Caffe模型可以直接通过调用Caffe的Classifier文件,具体代码如下:import numpy as np
import matplotlib.pyplot as plt
import sys
import caffe

classes = ('others','qly')

caffe_root = "D:/Micro_Caffe/caffe-master/"
sys.path.insert(0, caffe_root + 'python')

root = "D:/Micro_Caffe/caffe-master/examples/myfile/AR/"

prototxt = root + 'deploy.prototxt'
model = root + 'models/alexnet_face_iter_2000.caffemodel'

images = ['m-093-24.jpg','m-083-25.jpg','m-073-26.jpg','m-023-24.jpg','m-018-25.jpg','m-013-26.jpg']
im_class = []
caffe.set_mode_cpu()

net = caffe.Classifier(prototxt, model,
mean=np.load(root + 'mean.npy').mean(1).mean(1),
channel_swap=(2,1,0),
raw_scale=255,
image_dims=(256, 256))

for image in images:

im = root + "val/" + image

input_image = caffe.io.load_image(im)
prediction = net.predict([input_image])
im_class.append(prediction[0].argmax())

for image in images:

print '\nDemo for {}'.format(image)
print 'predicted class:', classes[im_class[images.index(image)]]
注意,如果训练网络时减去了均值文件,那么用图片进行demo也需要减均值文件,且必须是.npy文件,而不是训练时所用.binaryproto的二进制文件。
至于.binaryproto转.npy可以参考以下代码(convert_mean.py):import numpy as np
import sys,caffe

if len(sys.argv)!=3:
print "Usage: python convert_mean.py mean.binaryproto mean.npy"
sys.exit()

blob = caffe.proto.caffe_pb2.BlobProto()
bin_mean = open( sys.argv[1] , 'rb' ).read()
blob.ParseFromString(bin_mean)
arr = np.array( caffe.io.blobproto_to_array(blob) )
npy_mean = arr[0]
np.save( sys.argv[2] , npy_mean )将该脚本放到和二进制均值文件相同路径下,通过cmd执行以下指令即可:python convert_mean.py mean.binaryproto mean.npy如果遇到ImportError: No module named _caffe,参考方法如下:http://www.bubuko.com/infodetail-2014081.html
方法有两个,一是环境变量中新建名为PythonPath,值为:“Caffe根目录”+Build\x64\Release\pycaffe;
二是直接将Caffe根目录下\Build\x64\Release\pycaffe文件夹下的caffe文件夹复制到python的site-packge目录中。
亲测方法二成功。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Caffe