pycaffe的使用一

参考连接:caffe入门:pycaffe的使用

一、几个经常使用的

  • net.params[‘layerName’][0].data访问权重(num_filter,channel,weight,high)
  • net.params[‘layerName’][1].data访问biase,格式是(biase)。
  • net.blobs[‘layerName’].data访问输入数据,这里最常用的也就是net.blob s[‘data’]相关的使用,例如得到输入图片的大小net.blobs[‘data’].data.shape。

二、使用训练好的模型进行图像预测的代码

运行需要mnist的训练model,以及测试图像下载地址如下,注意:运行时要修改参数
运行程序所需材料百度云链接: ,密码:5mu3

import caffe
import os
import sys
import numpy as np
import matplotlib as plt

#plt.rcParams['image.cmap'] = 'gray'

deploy_file_path = './lenet_train_test.prototxt'
model_file_path = './lenet_iter_10000.caffemodel'
input_data_path = './5.jpg'

if __name__ ==  '__main__':
    net = caffe.Net(deploy_file_path,model_file_path,caffe.TEST);
    # 得到data的形状,这里的图片是默认matplotlib底层加载的 
    transformer = caffe.io.Transformer({'data':net.blobs['data'].data.shape})
# matplotlib加载的image是像素[0-1],图片的数据格式[weight,high,channels],RGB  
# caffe加载的图片需要的是[0-255]像素,数据格式[channels,weight,high],BGR,那么就需要转换  

# channel 放到前面 
    transformer.set_transpose('data', (2,0,1))  
# RGB-->BGR 转换
#    transformer.set_channel_swap('data', (2,1,0))  
    im=caffe.io.load_image(input_data_path,color=False)  
    net.blobs['data'].data[...] = transformer.preprocess('data',im)  
    out = net.forward()  
    output_prob = out['prob'][0]  

    top_inds = output_prob.argsort()[::-1][:5]    
    print 'probabilities and labels:' , output_prob[top_inds] , top_inds
#==============================================================================
#     zip(output_prob[top_inds], labels[top_inds])  
#       
#     #
#     imagenet_labels_filename = caffe_root + 'data/ilsvrc12/synset_words.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]]  
#==============================================================================

共同学习,共同进步。

你可能感兴趣的:(caffe,pycharm使用教程)