教你自己训练的pytorch模型转caffe(三)

这一节是用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看我另一个博客:

终于ubuntu编译完CPU版caffe了_FeboReigns的博客-CSDN博客

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值