一、几个经常使用的
- 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]]
#==============================================================================
共同学习,共同进步。