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接口)的更多相关文章

  1. windows10下基于vs2015的 caffe安装教程及python接口实现

    啦啦啦:根据网上的教程前一天安装失败,第二天才安装成功.其实caffe的安装并不难,只是网上的教程不是很全面,自己写一个,留作纪念. 准备工作 Windows10 操作系统 vs2015(c++编译器 ...

  2. ubuntu16.04+caffe+python接口配置

    在Windows上用了一个学期的caffe了.深感各种不便,于是乎这几天在ubuntu上配置了caffe和它的python接口,现在记录配置过程,亲测可用: 环境:ubuntu16.04 , caff ...

  3. 【caffe】Caffe的Python接口-官方教程-00-classification-详细说明(含代码)

    00-classification 主要讲的是如何利用caffenet(与Alex-net稍稍不同的模型)对一张图片进行分类(基于imagenet的1000个类别) 先说说教程到底在哪(反正我是找了半 ...

  4. Windows7 64下搭建Caffe+python接口环境

    参考链接: http://www.cnblogs.com/yixuan-xu/p/5858595.html http://www.cnblogs.com/zf-blog/p/6139044.html ...

  5. ubuntu16.04 安装caffe以及python接口

    http://blog.csdn.net/qq_25073253/article/details/72571714http://blog.csdn.net/greed7480/article/deta ...

  6. caffe的python接口学习(7):绘制loss和accuracy曲线

    使用python接口来运行caffe程序,主要的原因是python非常容易可视化.所以不推荐大家在命令行下面运行python程序.如果非要在命令行下面运行,还不如直接用 c++算了. 推荐使用jupy ...

  7. caffe的python接口学习(4):mnist实例---手写数字识别

    深度学习的第一个实例一般都是mnist,只要这个例子完全弄懂了,其它的就是举一反三的事了.由于篇幅原因,本文不具体介绍配置文件里面每个参数的具体函义,如果想弄明白的,请参看我以前的博文: 数据层及参数 ...

  8. caffe的python接口学习(1):生成配置文件

    caffe是C++语言写的,可能很多人不太熟悉,因此想用更简单的脚本语言来实现.caffe提供matlab接口和python接口,这两种语言就非常简单,而且非常容易进行可视化,使得学习更加快速,理解更 ...

  9. caffe中python接口的使用

    下面是基于我自己的接口,我是用来分类一维数据的,可能不具通用性: (前提,你已经编译了caffe的python的接口) 添加 caffe塻块的搜索路径,当我们import caffe时,可以找到. 对 ...

随机推荐

  1. Scala进阶之路-Scala中的高级类型

    Scala进阶之路-Scala中的高级类型 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.类型(Type)与类(Class)的区别 在Java里,一直到jdk1.5之前,我们说 ...

  2. 如何正确的覆盖equals和hashCode

    一.Object所有的非final方法 public boolean equals(Object obj) public native int hashCode() public String toS ...

  3. 多目标遗传算法 ------ NSGA-II (部分源码解析)两个个体支配判断 dominance.c

    /* Domination checking routines */ # include <stdio.h> # include <stdlib.h> # include &l ...

  4. 【转载】掌握 HTTP 缓存——从请求到响应过程的一切(下)

    作者:Ulrich Kautz 编译:胡子大哈 翻译原文:http://huziketang.com/blog/posts/detail?postId=58bd4dd1204d50674934c3b0 ...

  5. JavaScript数组倒序函数reverse()

    左边为原数组,右边为array.reverse()的结果: 函数很简单,但是 var temp = ChartConfig.getMonthData(); $scope.monthList = tem ...

  6. B树学习总结

    1,B树的基本介绍 ①B树,相比于二叉树.红黑树而言,它的特点就是树的高度比其他类型的树要低很多.如何做到低呢?B树中的每个结点的分支数目非常大,即每个结点有很多很多孩子结点.这样,在相同结点数目情况 ...

  7. offset[Parent/Width/Height/Top/Left] 、 client[Width/Height/Top/Left] 、 Element.getBoundingClientRect()

    开篇提示:以下内容都经个人测试,参考API文档总结,但还是不能保证完全正确,若有错误,还请留言指出___________________________________________________ ...

  8. json 不能 dumps datetime 解决办法

    backend.myviews.json_time.py from datetime import date import json from datetime import datetime cla ...

  9. 第15月第22天 libz.dylib

    1. 3.在弹出的对话框中输入"cmd"+"shift"+"g" 4 4.输入/usr/lib https://jingyan.baidu. ...

  10. Failed to load or instantiate TagLibraryValidator class: org.apache.taglibs.standard.tlv.JstlCoreTLV

    今天在使用JSP,引入<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> ...