这一节是用caffe推理得到pytorh一样的结果
参考:使用Caffe的Python接口进行推理 - 简书 (jianshu.com)
#coding = utf-8
import numpy as np
import sys, os
sys.path.insert(0, caffe_root + 'python')
import caffe
os.chdir(caffe_root)
#caffe.set_device(0)
#caffe.set_mode_gpu()
####下面三行根据自己的路径修改
net_file = './dock_googlenet_dog.prototxt'
caffe_model = './dock_googlenet_dog.caffemodel'
imagenet_labels_filename = './class_names.txt'
# load model
net = caffe.Net(net_file, caffe_model, caffe.TEST)
#resize
transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})
#通道数拿到前面来 变为【1,3 224,224】
transformer.set_transpose('data', (2, 0, 1))
# # 调用均值文件
# # transformer.set_mean('data', np.load(mean_file).mean(1).mean(1))
#python中将图片存储为[0, 1],而caffe中将图片存储为[0, 255],所以需要一个转换
# transformer.set_raw_scale('data', 255)
#caffe中图片是RGB格式,而网络格式BGR,要转化
# transformer.set_channel_swap('data', (2, 1, 0))
###根据自己的路径更改
im = caffe.io.load_image('./cat.2.jpg')
net.blobs['data'].data[...] = transformer.preprocess('data',im)
# net.blobs['data'].data[...] =
out = net.forward()
print (net.blobs['data'].data.shape)
print (net.blobs['data'].data.dtype)
print (net.blobs[net.blobs.keys()[-1]].data.shape)
print (net.blobs[net.blobs.keys()[-1]].data.dtype)
labels = np.loadtxt(imagenet_labels_filename, str, delimiter='\t')
top_k = net.blobs[net.blobs.keys()[-1]].data[0].flatten().argsort()[-1:-6:-1]
for i in np.arange(top_k.size):
print (top_k[i], labels[top_k[i]])
#打印最后得分
print (net.blobs[net.blobs.keys()[-1]].data[0])
./class_names.txt就是
0 dog
1 cat
注意我训练是没有使用normlize,
而且我的格式是RGB的,所以预处理我有几个没用
caffe的caffe.io.load_image('./cat.2.jpg')是RGB的
我的也是RBG的
如果你用老哥的docker环境跑我的代码会报三个错
###got an unexpected keyword argument ‘as_grey‘
https://blog.csdn.net/hjxu2016/article/details/113541609
###TypeError: 'float' object cannot be interpreted as an integer
https://blog.csdn.net/qq_28634403/article/details/81224291
###dict_keys‘ object is not subscriptable
https://blog.csdn.net/le___le/article/details/103617431
我用的自己配置的caffe,我的caffe没有ceil mode参数,用round_mode代替的,如果ceil mode为true 则round_mode为0,否则反之。准确度基本不会影响Pytorch maxpool的ceil_mode及与caffe中maxpool的比较_zl3090的博客-CSDN博客
如何自己配caffe看我另一个博客: