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 plaincopy
  1. # coding=utf-8
  2. import os
  3. import numpy as np
  4. from matplotlib import pyplot as plt
  5. import cv2
  6. import shutil
  7. import time
  8. #因为RGB和BGR需要调换一下才能显示
  9. def showimage(im):
  10. if im.ndim == 3:
  11. im = im[:, :, ::-1]
  12. plt.set_cmap('jet')
  13. plt.imshow(im)
  14. plt.show()
  15. #特征可视化显示,padval用于调整亮度
  16. def vis_square(data, padsize=1, padval=0):
  17. data -= data.min()
  18. data /= data.max()
  19. #因为我们要把某一层的特征图都显示到一个figure上,因此需要计算每个图片占用figure多少比例,以及绘制的位置
  20. n = int(np.ceil(np.sqrt(data.shape[0])))
  21. padding = ((0, n ** 2 - data.shape[0]), (0, padsize), (0, padsize)) + ((0, 0),) * (data.ndim - 3)
  22. data = np.pad(data, padding, mode='constant', constant_values=(padval, padval))
  23. # tile the filters into an image
  24. data = data.reshape((n, n) + data.shape[1:]).transpose((0, 2, 1, 3) + tuple(range(4, data.ndim + 1)))
  25. data = data.reshape((n * data.shape[1], n * data.shape[3]) + data.shape[4:])
  26. showimage(data)
  27. #设置caffe源码所在的路径
  28. caffe_root = '../../../caffe/'
  29. import sys
  30. sys.path.insert(0, caffe_root + 'python')
  31. import caffe
  32. #加载均值文件
  33. mean_filename='./imagenet_mean.binaryproto'
  34. proto_data = open(mean_filename, "rb").read()
  35. a = caffe.io.caffe_pb2.BlobProto.FromString(proto_data)
  36. mean  = caffe.io.blobproto_to_array(a)[0]
  37. #创建网络,并加载已经训练好的模型文件
  38. gender_net_pretrained='./caffenet_train_iter_1500.caffemodel'
  39. gender_net_model_file='./deploy_gender.prototxt'
  40. gender_net = caffe.Classifier(gender_net_model_file, gender_net_pretrained,mean=mean,
  41. channel_swap=(2,1,0),#RGB通道与BGR
  42. raw_scale=255,#把图片归一化到0~1之间
  43. image_dims=(256, 256))#设置输入图片的大小
  44. #预测分类及其可特征视化
  45. gender_list=['Male','Female']
  46. input_image = caffe.io.load_image('1.jpg')#读取图片
  47. prediction_gender=gender_net.predict([input_image])#预测图片性别
  48. #打印我们训练每一层的参数形状
  49. print 'params:'
  50. for k, v in gender_net.params.items():
  51. print 'weight:'
  52. print (k, v[0].data.shape)#在每一层的参数blob中,caffe用vector存储了两个blob变量,用v[0]表示weight
  53. print 'b:'
  54. print (k, v[1].data.shape)#用v[1]表示偏置参数
  55. #conv1滤波器可视化
  56. filters = gender_net.params['conv1'][0].data
  57. vis_square(filters.transpose(0, 2, 3, 1))
  58. #conv2滤波器可视化
  59. '''''filters = gender_net.params['conv2'][0].data
  60. vis_square(filters[:48].reshape(48**2, 5, 5))'''
  61. #特征图
  62. print 'feature maps:'
  63. for k, v in gender_net.blobs.items():
  64. print (k, v.data.shape);
  65. feat = gender_net.blobs[k].data[0,0:4]#显示名字为k的网络层,第一张图片所生成的4张feature maps
  66. vis_square(feat, padval=1)
  67. #显示原图片,以及分类预测结果
  68. str_gender=gender_list[prediction_gender[0].argmax()]
  69. print str_gender
  70. plt.imshow(input_image)
  71. plt.title(str_gender)
  72. plt.show()

**********************作者:hjimce   时间:2015.10.11   地址:http://blog.csdn.net/hjimce   原创文章,版权所有,转载请保留本行信息********************

深度学习(九)caffe预测、特征可视化python接口调用相关推荐

  1. caffe预测、特征可视化python接口调用

    转载自: 深度学习(九)caffe预测.特征可视化python接口调用 - hjimce的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/hjimce/articl ...

  2. 基于深度学习的可解释特征准确预测混凝土抗压强度

    基于深度学习的可解释特征准确预测混凝土抗压强度 Accurate prediction of concrete compressive strength based on explainable fe ...

  3. 深度学习库 caffe使用 源码分析 依赖库分析 caffe glog gflags openBlas prototxt yolo_darknet 转 caffe

    深度学习库 caffe使用 源码分析 依赖库分析 caffe glog gflags openBlas 本文github链接 yolo_darknet 转 caffe caffe 安装 Caffe代码 ...

  4. 如何一夜暴富?深度学习教你预测比特币价格

    如何一夜暴富?深度学习教你预测比特币价格 2018年08月06日 17:50:00 近年来,以比特币为代表的加密数字货币一直是社交媒体和搜索引擎上的热门.但是,比特币价格浮动也使各位看官们经历了过山车 ...

  5. 基于深度学习的视频预测研究综述

    原址:http://html.rhhz.net/tis/html/201707032.htm (收集材料ing,为论文做准备)[综述性文章,,,可以做背景资料] 莫凌飞, 蒋红亮, 李煊鹏 摘要:近年 ...

  6. 基于深度学习的文本数据特征提取方法之Word2Vec

    点击上方"AI公园",关注公众号,选择加"星标"或"置顶" 作者:Dipanjan (DJ) Sarkar 编译:ronghuaiyang ...

  7. 损失能收敛到0么 深度学习_人工智能-Tensorflow进行深度学习的一些损失函数的可视化...

    TensorFlow目前是数值计算的最佳开源库,它使机器学习更快更容易.在这篇文章中,您将学习机器学习中使用的一些损失函数.损失函数在机器学习领域非常重要.它们用作测量模型预测输出Y_out与grou ...

  8. 常用深度学习框——Caffe/TensorFlow / Keras/ PyTorch/MXNet

    常用深度学习框--Caffe/TensorFlow / Keras/ PyTorch/MXNet 一.概述 近几年来,深度学习的研究和应用的热潮持续高涨,各种开源深度学习框架层出不穷,包括Tensor ...

  9. 深度学习多变量时间序列预测:Encoder-Decoder LSTM算法构建时间序列多变量模型预测交通流量+代码实战

    深度学习多变量时间序列预测:Encoder-Decoder LSTM算法构建时间序列多变量模型预测交通流量+代码实战 LSTM是一种时间递归神经网络,适合于处理和预测时间序列中间隔和延迟相对较长的重要 ...

最新文章

  1. pythonweb开发需要学哪些知识,python web需要了解哪些
  2. iOS里面MVC模式详解
  3. Luogu1979 NOIP2013D2T3 华容道 搜索、最短路
  4. VS2013在Release情况下使用vector有时候会崩溃的一个可能原因
  5. html----学习笔记
  6. 电气一次图自适应屏幕,定位精确,无参考代码,只是解决方案,技术科行,已经用于项目
  7. Android ViewPager示例教程
  8. 生成并解析cron表达式
  9. LaTeX组件:texlive2019+texstudio+sumatraPDF 安装包及学习手册
  10. 飞思卡尔单片机KEA128之ADC学习
  11. 一文入门智能开关的3种功能形态
  12. 2020全球C++及系统软件技术大会议程
  13. 7-53 奥运排行榜 (25 分)
  14. Golang语言快速上手到综合实战视频教程
  15. 慢慢欣赏linux CPU占用率和负载
  16. 使用easyexcel快速导出xlsx表格(简洁、高效、易懂)
  17. GetContactInfoUtils(一个获取手机联系人名称,电话,头像的工具类)
  18. MethodParameter
  19. Vue页面偶尔样式错乱,刷新即恢复
  20. 计算机名无法更改成中文,电脑磁盘名无法修改的两种解决方法

热门文章

  1. 一句话介绍区块链是什么
  2. 揭秘高效协作工具背后的技术架构
  3. 共识算法(POW、POS、PBFT、DPOS)介绍-
  4. Redis进阶-Stream多播的可持久化的消息队列
  5. Spring-基于Spring使用自定义注解及Aspect实现数据库切换
  6. linux关闭硬件蜂鸣器,linux 关闭主板上的蜂鸣器声音
  7. cookie获取java_java中如何获取cookie
  8. 北京计算机工业学校96届,刘驰_北京理工大学计算机学院
  9. Redis 与 MQ 的区别
  10. 超市收银程序_超市收银系统案例|千平超市再开2家,星耀助力门店年关创收...