使用caffe模型测试图片(python接口)
1、加载相关模块
1.1 加载numpy
import numpy as np
1.2 加载caffe
有两种方法。
方法一(静态导入):
找到当前环境使用的python的site-packages目录,寻找方法:
>>> import os
>>> os.path.dirname(os.__file__)
'/usr/lib64/python2.7'
如例则site-packages目录为/usr/lib64/python2.7/site-packages,在该目录下新建caffe.pth文件,输入已编译pycaffe的caffe路径:/xxx/xxx/caffe/python
方法二(动态导入):
import sys
caffe_root = '/xxx/xxx/caffe/'
sys.path.insert(0, caffe_root + 'python')
import caffe
# 如果你看到"No module named _caffe",那么要么就是你没有正确编译pycaffe;要么就是你的路径有错误。
2、加载caffe模型
# 1.使用CPU
caffe.set_mode_cpu()
# 2.使用GPU
caffe.set_device(0) # 指定GPU编号
caffe.set_mode_gpu() model_def = '/xxx/xxx/deploy.prototxt' # caffe网络结构配置文件的路径
model_weights = '/xxx/xxx/xxx.caffemodel' # 网络权重文件的路径
net = caffe.Net(model_def, # 定义模型结构
model_weights, # 包含了模型的训练权值
caffe.TEST) # 使用测试模式(不执行dropout)
3、输入预处理
# 对输入数据进行变换
transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape})
transformer.set_transpose('data', (2, 0, 1)) # 将图像的通道数设置为outermost的维数 ## 均值操作有两种情况
### 情况1:
mu = np.load(caffe_root + 'python/caffe/imagenet/ilsvrc_2012_mean.npy')
mu = mu.mean(1).mean(1) # 对所有像素值取平均以此获取BGR的均值像素值
transformer.set_mean('data', mu) # 对于每个通道,都减去BGR的均值像素值
### 情况2:
caffe_transformer.set_mean('data', np.array([104, 117, 123])) transformer.set_raw_scale('data', 255) # 将像素值从[0,255]变换到[0,1]之间
transformer.set_channel_swap('data', (2, 1, 0)) # 数据通道交换,从RGB变换到BGR
4、图像加载与识别
# 设置输入图像大小
net.blobs['data'].reshape(50, # batch 大小
3, # 3-channel (BGR) images
227, 227) # 图像大小为:227x227
image = caffe.io.load_image(img_path) # img_path 为图片路径
transformed_image = transformer.preprocess('data', image) # 将图像数据拷贝到为net分配的内存中
net.blobs['data'].data[...] = transformed_image ### 执行分类
output = net.forward()
output_prob = output['prob'][0] #batch中第一张图像的概率值
使用caffe模型测试图片(python接口)的更多相关文章
- windows10下基于vs2015的 caffe安装教程及python接口实现
啦啦啦:根据网上的教程前一天安装失败,第二天才安装成功.其实caffe的安装并不难,只是网上的教程不是很全面,自己写一个,留作纪念. 准备工作 Windows10 操作系统 vs2015(c++编译器 ...
- ubuntu16.04+caffe+python接口配置
在Windows上用了一个学期的caffe了.深感各种不便,于是乎这几天在ubuntu上配置了caffe和它的python接口,现在记录配置过程,亲测可用: 环境:ubuntu16.04 , caff ...
- 【caffe】Caffe的Python接口-官方教程-00-classification-详细说明(含代码)
00-classification 主要讲的是如何利用caffenet(与Alex-net稍稍不同的模型)对一张图片进行分类(基于imagenet的1000个类别) 先说说教程到底在哪(反正我是找了半 ...
- Windows7 64下搭建Caffe+python接口环境
参考链接: http://www.cnblogs.com/yixuan-xu/p/5858595.html http://www.cnblogs.com/zf-blog/p/6139044.html ...
- ubuntu16.04 安装caffe以及python接口
http://blog.csdn.net/qq_25073253/article/details/72571714http://blog.csdn.net/greed7480/article/deta ...
- caffe的python接口学习(7):绘制loss和accuracy曲线
使用python接口来运行caffe程序,主要的原因是python非常容易可视化.所以不推荐大家在命令行下面运行python程序.如果非要在命令行下面运行,还不如直接用 c++算了. 推荐使用jupy ...
- caffe的python接口学习(4):mnist实例---手写数字识别
深度学习的第一个实例一般都是mnist,只要这个例子完全弄懂了,其它的就是举一反三的事了.由于篇幅原因,本文不具体介绍配置文件里面每个参数的具体函义,如果想弄明白的,请参看我以前的博文: 数据层及参数 ...
- caffe的python接口学习(1):生成配置文件
caffe是C++语言写的,可能很多人不太熟悉,因此想用更简单的脚本语言来实现.caffe提供matlab接口和python接口,这两种语言就非常简单,而且非常容易进行可视化,使得学习更加快速,理解更 ...
- caffe中python接口的使用
下面是基于我自己的接口,我是用来分类一维数据的,可能不具通用性: (前提,你已经编译了caffe的python的接口) 添加 caffe塻块的搜索路径,当我们import caffe时,可以找到. 对 ...
随机推荐
- Tensorflow-gpu版本安装
目录 服务器选型 NVIDIA GPU驱动安装 cuda和cudnn的安装 cuda安装 cudnn的安装 tensorflow-gpu安装 最近给公司部署一套深度学习相关的环境,以tensorflo ...
- 函数和常用模块【day05】:生成器(四)
本节内容 1.概述 2.列表生成式 3.生成器 4.函数实现生成器 5.生成器表达式 一.概述 我们在使用一组数据时,通常情况下会定义一个列表,然后循环里面的元素,但是你想过没有,如果你只需要使用列表 ...
- Spark记录-Scala基础程序实例
object learn { def main(args:Array[String]):Unit={ println("请输入两个数字:") var a:Int=Console.r ...
- bzoj千题计划299:bzoj1856: [Scoi2010]字符串
http://www.lydsy.com/JudgeOnline/problem.php?id=1856 卡特兰数 从(1,1)走到(n,m),不能走y=x 上方的点,求方案数 从(1,1)走到(n, ...
- numpy笔记—np.squeeze用法
import numpy as np x = np.array([[[0], [1], [2]]]) print(x.shape) d = np.squeeze(x) # 从数组的形状中删除单维条目, ...
- .Net进阶系列(15)-异步多线程(线程的特殊处理和深究委托赋值)(被替换)
1. 线程的异常处理 我们经常会遇到一个场景,开启了多个线程,其中一个线程报错,导致整个程序崩溃.这并不是我们想要的,我需要的结果是,其中一个线程报错,默默的记录下,其它线程正常进行,保证程序整体可以 ...
- bootstrap modal垂直居中 (转)
根据博友的经验,总结后请使用方法一就行了 一,修改bootstrap.js 源码 原来的: Modal.prototype.adjustDialog = function () { ].scrollH ...
- writen.c
#include <unistd.h> #include <errno.h> ssize_t writen(int fd, const void *vptr, size_t n ...
- 虚拟机centos7系统下安装hadoop ha和yarn ha(详细)
一:基础环境准备 (一):虚拟机新建五个centos7系统(复制文件夹的方式) (二):角色分配 (三)按照角色分配表配置 (1)更改主机ip(自行查找),如果只是个人搭建玩一玩,可选择安装cento ...
- flash GC
所有应用程序都要管理内存.应用程序的内存管理包括用于确定何时分配内存,分配多少内存,何时将内容放入回收站,以及何时清空回收站的准则.MMgc是 Flash Player用于几乎所有内存分配工作的通用内 ...