caffe的python接口示例

用到的python的包:

图像处理:opencv(需要自己编译) 或者 scipy(scipy中的image子类)

矩阵相关:numpy


获取已经训练好的模型的结果和中间特征:

import caffe #导入caffe的python接口


caffe.set_mode_gpu()  #设置成gpu模式或者设置成cpu模式 caffe.set_mode_cpu()


net = caffe.Classifier(
model_file='deploy prototxt文件路径',
pretrained_file='生成的二进制caffemodel模型的路径',
mean=np.load('均值文件的路径'),
raw_scale=255 #若使用的原始图像值在0-255,则保留该参数
) #至此,初始化caffe的分类器模型,保存到变量


nettransformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape}) # caffe.io.Transformer 是用于预处理的类。事先填写进行预处理的要求。
transformer.set_transpose('data', (2,0,1)) #将 高x宽x通道,转化为,通道x高x宽的格式


img=caffe.io.load_image('图片路径') #读取图像
newImg=transformer.preprocess('data',img ) #设置data层的数据,这里以单张图像为例。将读取的图像传入,获得按之前设置的预处理方式处理好的新图像(通道x高x宽)。


net.blobs['data'].reshape(图像数,原来训练时定义的通道数,训练时图像的高,训练时图像的宽) #
net.blobs['data'].data[...] = newImg #让网络模型的数据层获取预处理好的图像,要传入多张图像,参考numpy的教程,将图像堆叠成多维矩阵(图像数x通道x高x宽)。

out = net.forward() #让数据通过整个训练好的模型,前向传播


filters = net.params['层的名称,如文件中定义好的conv1'][0].data #获取指定层的filters
feat = net.blobs['conv1'].data #获取conv1层的特征图谱
prediction=out['loss'].argmax() #直接得到模型输出的最终结果


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值