cifar10的模型测试

1.把二进制均值文件mean.binaryproto转换成mean.npy:建立一个switch.py如下:
#coding=utf-8
import sys,os  
caffe_root ='/home/lhu/caffe/'   
sys.path.insert(0,caffe_root + 'python')  
import caffe  
os.chdir(caffe_root)  
import numpy as np  
  
  
print "Usage: python convert_protomean.py proto.mean out.npy"  
blob = caffe.proto.caffe_pb2.BlobProto()  
BINARY_PROTO_FILE_NAME  ='mean.binaryproto'   
#二进制均值文件名称不必写地址你可以把它放到caffe根目录下  
BINARY_PROTO_FILE_PATH  = os.path.join(os.getcwd(),BINARY_PROTO_FILE_NAME)  
NPY_FILE_NAME  ='mean.npy'#转换后npy名称  
NPY_FILE_PATH  = os.path.join(os.getcwd(),NPY_FILE_NAME)  
  
data = open( BINARY_PROTO_FILE_PATH, 'rb' ).read()  
blob.ParseFromString(data)  
arr = np.array( caffe.io.blobproto_to_array(blob) )  
out = arr[0]  
np.save( NPY_FILE_PATH , out )  
注意注释部分,这样会在caffe根目录产生mean.npy文件
2.在~/caffe/python/文件夹下建立,一个myclassify.py,用来分类单张图片:
#coding=utf-8
import numpy as np    
import sys,os  
caffe_root ='/home/lhu/caffe/'  
sys.path.insert(0,caffe_root + 'python')  
import caffe  
os.chdir(caffe_root)  
  
net_file = caffe_root +'examples/cifar10/cifar10_quick.prototxt'#这个是*_deploy.prototxt文件  
caffe_model = caffe_root + 'data/cifar10/cifar10_quick_iter_5000.caffemodel.h5'#我的model  
mean_file = caffe_root + 'examples/cifar10/mean.npy'#我们刚刚得到的均值文件,我把它放在examples  
  
net = caffe.Net(net_file,caffe_model,caffe.TEST)  
transformer = caffe.io.Transformer({'data':net.blobs['data'].data.shape})  
transformer.set_transpose('data',(2,0,1))  
transformer.set_mean('data',np.load(mean_file).mean(1).mean(1))  
transformer.set_raw_scale('data',255)  
transformer.set_channel_swap('data',(2,1,0))  
  
im=caffe.io.load_image(caffe_root + 'examples/images/cat.jpg')#待测图片  
net.blobs['data'].data[...] = transformer.preprocess('data',im)  
out = net.forward()  
  
#这个是类别的txt文件,自己制作的数据集和model的话这个也得自己制作,我采用的是cifar10里面现存的。  
imagenet_labels_filename = caffe_root + 'data/cifar10/batches.meta.txt'  
labels = np.loadtxt(imagenet_labels_filename,str,delimiter='\t')  
top_k = net.blobs['prob'].data[0].flatten().argsort()[-1:-6:-1]  
for i in np.arange(top_k.size):    
      print top_k[i], labels[top_k[i]]    
3.打开终端,我们需要在python文件夹下运行my_classify.py,如果在caffe根目录,可以输入:
cd python 
sudo python my_classify.py ./examples/images/cat,jpg   #注意更改你的带测图片位置#coding=utf-8import numpy as np import sys,os caffe_root ='/home/lhu/caffe/' sys.path.insert(0,caffe_root + 'python') import caffe os.chdir(caffe_root) net_file = caffe_root +'examples/cifar10/cifar10_quick.prototxt'#这个是*_deploy.prototxt文件 caffe_model = caffe_root + 'examples/cifar10/cifar10_quick_iter_5000.caffemodel.h5'#我的model mean_file = caffe_root + 'examples/cifar10/mean.npy'#我们刚刚得到的均值文件,我把它放在examples net = caffe.Net(net_file,caffe_model,caffe.TEST) transformer = caffe.io.Transformer({'data':net.blobs['data'].data.shape}) transformer.set_transpose('data',(2,0,1)) transformer.set_mean('data',np.load(mean_file).mean(1).mean(1)) transformer.set_raw_scale('data',255) transformer.set_channel_swap('data',(2,1,0)) im=caffe.io.load_image(caffe_root + 'examples/images/cat.jpg')#待测图片 net.blobs['data'].data[...] = transformer.preprocess('data',im) out = net.forward() #这个是类别的txt文件,自己制作的数据集和model的话这个也得自己制作,我采用的是cifar10里面现存的。 imagenet_labels_filename = caffe_root + 'data/cifar10/batches.meta.txt' labels = np.loadtxt(imagenet_labels_filename,str,delimiter='\t') top_k = net.blobs['prob'].data[0].flatten().argsort()[-1:-6:-1] print top_kprob= net.blobs['prob'].data[0].flatten() #取出最后一层(prob)属于某个类别的概率值,并打印 print prob order=top_k.argsort()[-1] #将概率值排序,取出最大值所在的序号 for i in np.arange(top_k.size): print top_k[i], labels[top_k[i]]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值