Caffe学习:pycaffe利用caffemodel进行分类

转自:http://blog.csdn.net/u011762313/article/details/48342495

  • 导入相关库
import caffe

  • 配置
# caffemodel文件

MODEL_FILE = 'model/_iter_10000.caffemodel'

# deploy文件,参考/caffe/models/bvlc_alexnet/deploy.prototxt

DEPLOY_FILE = 'deploy.prototxt'

# 测试图片存放文件夹

TEST_ROOT = 'datas/'

  • GPU模式测试
caffe.set_mode_gpu()

net = caffe.Net(DEPLOY_FILE, MODEL_FILE, caffe.TEST)

  • 数据输入预处理
# 'data'对应于deploy文件:

# input: "data"

# input_dim: 1

# input_dim: 3

# input_dim: 32

# input_dim: 96

transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})

# python读取的图片文件格式为H×W×K,需转化为K×H×W

transformer.set_transpose('data', (2, 0, 1))

# python中将图片存储为[0, 1],而caffe中将图片存储为[0, 255],

# 所以需要一个转换

transformer.set_raw_scale('data', 255)

# caffe中图片是BGR格式,而原始格式是RGB,所以要转化

transformer.set_channel_swap('data', (2, 1, 0))

# 将输入图片格式转化为合适格式(与deploy文件相同)

net.blobs['data'].reshape(1, 3, 32, 96)

  • 读取图片
# 详见/caffe/python/caffe/io.py

img = caffe.io.load_image('temp.jpg')

# 读取的图片文件格式为H×W×K,需转化

  • 进行分类
# 数据输入、预处理

net.blobs['data'].data[...] = transformer.preprocess('data', img)

# 前向迭代,即分类

out = net.forward()

# 输出结果为各个可能分类的概率分布

pridects = out['prob']

# 上述'prob'来源于deploy文件:

# layer {

# name: "prob"

# type: "Softmax"

# bottom: "ip2"

# top: "prob"

# }

  • 最可能分类
pridect = pridects.argmax()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值