深度学习(九)caffe预测、特征可视化python接口调用
2016-10-16 22:13
633 查看
caffe预测、特征可视化Python接口调用
原文地址:http://blog.csdn.net/hjimce/article/details/48972877
作者:hjimce
网上有很多caffe训练好的模型,有的时候我们仅仅想要方便的调用已经训练好的模型,利用python进行预测分类测试,查看可视化结果,这个时候,我们可以使用caffe为我们写好的python接口文件,我们在安装caffe的时候,有一步:make pycaffe。这个便是安装caffe的python 结果函数,把自己用的代码记录一下,以便日后直接复制粘贴使用。感觉使用python就是轻松,如果用caffe的c++接口,挺麻烦的。
下面的使用例子是自己搞利用CNN进行性别预测的python接口调用实例:
[python] view
plain copy
# coding=utf-8
import os
import numpy as np
from matplotlib import pyplot as plt
import cv2
import shutil
import time
#因为RGB和BGR需要调换一下才能显示
def showimage(im):
if im.ndim == 3:
im = im[:, :, ::-1]
plt.set_cmap('jet')
plt.imshow(im)
plt.show()
#特征可视化显示,padval用于调整亮度
def vis_square(data, padsize=1, padval=0):
data -= data.min()
data /= data.max()
#因为我们要把某一层的特征图都显示到一个figure上,因此需要计算每个图片占用figure多少比例,以及绘制的位置
n = int(np.ceil(np.sqrt(data.shape[0])))
padding = ((0, n ** 2 - data.shape[0]), (0, padsize), (0, padsize)) + ((0, 0),) * (data.ndim - 3)
data = np.pad(data, padding, mode='constant', constant_values=(padval, padval))
# tile the filters into an image
data = data.reshape((n, n) + data.shape[1:]).transpose((0, 2, 1, 3) + tuple(range(4, data.ndim + 1)))
data = data.reshape((n * data.shape[1], n * data.shape[3]) + data.shape[4:])
showimage(data)
#设置caffe源码所在的路径
caffe_root = '../../../caffe/'
import sys
sys.path.insert(0, caffe_root + 'python')
import caffe
#加载均值文件
mean_filename='./imagenet_mean.binaryproto'
proto_data = open(mean_filename, "rb").read()
a = caffe.io.caffe_pb2.BlobProto.FromString(proto_data)
mean = caffe.io.blobproto_to_array(a)[0]
#创建网络,并加载已经训练好的模型文件
gender_net_pretrained='./caffenet_train_iter_1500.caffemodel'
gender_net_model_file='./deploy_gender.prototxt'
gender_net = caffe.Classifier(gender_net_model_file, gender_net_pretrained,mean=mean,
channel_swap=(2,1,0),#RGB通道与BGR
raw_scale=255,#把图片归一化到0~1之间
image_dims=(256, 256))#设置输入图片的大小
#预测分类及其可特征视化
gender_list=['Male','Female']
input_image = caffe.io.load_image('1.jpg')#读取图片
prediction_gender=gender_net.predict([input_image])#预测图片性别
#打印我们训练每一层的参数形状
print 'params:'
for k, v in gender_net.params.items():
print 'weight:'
print (k, v[0].data.shape)#在每一层的参数blob中,caffe用vector存储了两个blob变量,用v[0]表示weight
print 'b:'
print (k, v[1].data.shape)#用v[1]表示偏置参数
#conv1滤波器可视化
filters = gender_net.params['conv1'][0].data
vis_square(filters.transpose(0, 2, 3, 1))
#conv2滤波器可视化
'''''filters = gender_net.params['conv2'][0].data
vis_square(filters[:48].reshape(48**2, 5, 5))'''
#特征图
print 'feature maps:'
for k, v in gender_net.blobs.items():
print (k, v.data.shape);
feat = gender_net.blobs[k].data[0,0:4]#显示名字为k的网络层,第一张图片所生成的4张feature maps
vis_square(feat, padval=1)
#显示原图片,以及分类预测结果
str_gender=gender_list[prediction_gender[0].argmax()]
print str_gender
plt.imshow(input_image)
plt.title(str_gender)
plt.show()
原文地址:http://blog.csdn.net/hjimce/article/details/48972877
作者:hjimce
网上有很多caffe训练好的模型,有的时候我们仅仅想要方便的调用已经训练好的模型,利用python进行预测分类测试,查看可视化结果,这个时候,我们可以使用caffe为我们写好的python接口文件,我们在安装caffe的时候,有一步:make pycaffe。这个便是安装caffe的python 结果函数,把自己用的代码记录一下,以便日后直接复制粘贴使用。感觉使用python就是轻松,如果用caffe的c++接口,挺麻烦的。
下面的使用例子是自己搞利用CNN进行性别预测的python接口调用实例:
[python] view
plain copy
# coding=utf-8
import os
import numpy as np
from matplotlib import pyplot as plt
import cv2
import shutil
import time
#因为RGB和BGR需要调换一下才能显示
def showimage(im):
if im.ndim == 3:
im = im[:, :, ::-1]
plt.set_cmap('jet')
plt.imshow(im)
plt.show()
#特征可视化显示,padval用于调整亮度
def vis_square(data, padsize=1, padval=0):
data -= data.min()
data /= data.max()
#因为我们要把某一层的特征图都显示到一个figure上,因此需要计算每个图片占用figure多少比例,以及绘制的位置
n = int(np.ceil(np.sqrt(data.shape[0])))
padding = ((0, n ** 2 - data.shape[0]), (0, padsize), (0, padsize)) + ((0, 0),) * (data.ndim - 3)
data = np.pad(data, padding, mode='constant', constant_values=(padval, padval))
# tile the filters into an image
data = data.reshape((n, n) + data.shape[1:]).transpose((0, 2, 1, 3) + tuple(range(4, data.ndim + 1)))
data = data.reshape((n * data.shape[1], n * data.shape[3]) + data.shape[4:])
showimage(data)
#设置caffe源码所在的路径
caffe_root = '../../../caffe/'
import sys
sys.path.insert(0, caffe_root + 'python')
import caffe
#加载均值文件
mean_filename='./imagenet_mean.binaryproto'
proto_data = open(mean_filename, "rb").read()
a = caffe.io.caffe_pb2.BlobProto.FromString(proto_data)
mean = caffe.io.blobproto_to_array(a)[0]
#创建网络,并加载已经训练好的模型文件
gender_net_pretrained='./caffenet_train_iter_1500.caffemodel'
gender_net_model_file='./deploy_gender.prototxt'
gender_net = caffe.Classifier(gender_net_model_file, gender_net_pretrained,mean=mean,
channel_swap=(2,1,0),#RGB通道与BGR
raw_scale=255,#把图片归一化到0~1之间
image_dims=(256, 256))#设置输入图片的大小
#预测分类及其可特征视化
gender_list=['Male','Female']
input_image = caffe.io.load_image('1.jpg')#读取图片
prediction_gender=gender_net.predict([input_image])#预测图片性别
#打印我们训练每一层的参数形状
print 'params:'
for k, v in gender_net.params.items():
print 'weight:'
print (k, v[0].data.shape)#在每一层的参数blob中,caffe用vector存储了两个blob变量,用v[0]表示weight
print 'b:'
print (k, v[1].data.shape)#用v[1]表示偏置参数
#conv1滤波器可视化
filters = gender_net.params['conv1'][0].data
vis_square(filters.transpose(0, 2, 3, 1))
#conv2滤波器可视化
'''''filters = gender_net.params['conv2'][0].data
vis_square(filters[:48].reshape(48**2, 5, 5))'''
#特征图
print 'feature maps:'
for k, v in gender_net.blobs.items():
print (k, v.data.shape);
feat = gender_net.blobs[k].data[0,0:4]#显示名字为k的网络层,第一张图片所生成的4张feature maps
vis_square(feat, padval=1)
#显示原图片,以及分类预测结果
str_gender=gender_list[prediction_gender[0].argmax()]
print str_gender
plt.imshow(input_image)
plt.title(str_gender)
plt.show()
相关文章推荐
- 深度学习之-caffe预测、特征可视化python接口调用 (6)
- 深度学习(九)caffe预测、特征可视化python接口调用
- caffe预测、特征可视化python接口调用(caffe python接口调用示例)
- caffe预测、特征可视化python接口调用
- 深度学习(九)caffe预测、特征可视化python接口调用
- 深度学习(九)caffe预测、特征可视化python接口调用
- caffe预测、特征可视化python接口调用
- 【深度学习】笔记14 windows下caffe的python接口的配置(数据的可视化环境)
- 深度学习Caffe实战笔记(10)Windows Caffe使用MATLAB接口提取和可视化特征
- 深度学习之Caffe(一) 用c++接口提取特征后用SVM分类
- caffe19 《深度学习--Caffe之经典模型详解与实战》笔记01 分类测试python调用
- Caffe入门实验八:python接口学习 调用
- Win10下配置深度学习框架Caffe及python接口 CUDA8.0+CUDNn5.1
- caffe的python接口学习(8):caffemodel中的参数及特征的抽取
- caffe的python接口学习(11):特征的批量提取
- 【神经网络与深度学习】【python开发】caffe-windows使能python接口使用draw_net.py绘制网络结构图过程
- caffe的python接口学习(8):caffemodel中的参数及特征的抽取
- caffe的python接口学习(8):caffemodel中的参数及特征的抽取
- Caffe学习笔记13:数据可视化环境(python接口)配置
- caffe python接口:可视化每层图像特征