python接口调用已训练好的caffe模型测试分类方法


Posted in Python onAugust 26, 2019

训练好了model后,可以通过python调用caffe的模型,然后进行模型测试的输出。

本次测试主要依靠的模型是在caffe模型里面自带训练好的结构参数:~/caffe/models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel,以及结构参数

:~/caffe/models/bvlc_reference_caffenet/deploy.prototxt相结合,用python接口进行调用。

训练的源代码以及相应的注释如下所示:

# -*- coding: UTF-8 -*-
import os
import caffe
import numpy as np
root='/home/zf/caffe/'#指定根目录
deploy=root+'models/bvlc_reference_caffenet/deploy.prototxt'#结构文件
caffe_model=root + 'models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel'
#已经训练好的model
 
dir =root+'examples/images/'#保存测试图片的集合
filelist=[]
filenames=os.listdir(dir)
for fn in filenames:
  fullfilename = os.path.join(dir,fn)
  filelist.append(fullfilename)
#filelist.append(fn)
def Test(img):
#加载模型
  net = caffe.Net(deploy,caffe_model,caffe.TEST)
 
# 加载输入和配置预处理
  transformer = caffe.io.Transformer({'data':net.blobs['data'].data.shape})
  transformer.set_mean('data', np.load('/home/zf/caffe/python/caffe/imagenet/ilsvrc_2012_mean.npy').mean(1).mean(1))
  transformer.set_transpose('data', (2,0,1))
  transformer.set_channel_swap('data', (2,1,0))
  transformer.set_raw_scale('data', 255.0)
 
#注意可以调节预处理批次的大小
#由于是处理一张图片,所以把原来的10张的批次改为1
  net.blobs['data'].reshape(1,3,227,227)
 
#加载图片到数据层
  im = caffe.io.load_image(img)
  net.blobs['data'].data[...] = transformer.preprocess('data', im)
 
#前向计算
  out = net.forward()
 
# 其他可能的形式 : out = net.forward_all(data=np.asarray([transformer.preprocess('data', im)]))
 
#预测分类
  print out['prob'].argmax()
 
#打印预测标签
  labels = np.loadtxt("/home/zf/caffe/data/ilsvrc12/synset_words.txt", str, delimiter='\t')
  top_k = net.blobs['prob'].data[0].flatten().argsort()[-1]
  print 'the class is:',labels[top_k]
  f=file("/home/zhengfeng/caffe/examples/zf/label.txt","a")
  f.writelines(img+' '+labels[top_k]+'\n')
labels_filename=root +'data/ilsvrc12/synset_words.txt'
#循环遍历文件夹root+'examples/images/'下的所有图片
for i in range(0,len(filelist)):
  img=filelist[i]
  Test(img)

ps:主要有以下的文件需要说明

待测试的文件夹里面的图片数据为:

python接口调用已训练好的caffe模型测试分类方法

最后的输出结果如下:

以下是本人定义的label.txt文件写入的预测的数据:

python接口调用已训练好的caffe模型测试分类方法

如果在编译的时候出现import caffe error的话,说明没有导入caffe

Export PYTHONPATH=$PYTHONPATH:/home/zf/caffe/python,如果还是不行,可能是你的caffe的python接口未编译,cd /home/zf/caffe,然后执行make pycaffe,接着再测试。

以上这篇python接口调用已训练好的caffe模型测试分类方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中类的定义、继承及使用对象实例详解
Apr 30 Python
python实现识别相似图片小结
Feb 22 Python
利用Python生成文件md5校验值函数的方法
Jan 10 Python
利用python求相邻数的方法示例
Aug 18 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
Nov 11 Python
Python实现的基数排序算法原理与用法实例分析
Nov 23 Python
简单实现python收发邮件功能
Jan 05 Python
python实现多张图片拼接成大图
Jan 15 Python
扩展Django admin的list_filter()可使用范围方法
Aug 21 Python
如何基于windows实现python定时爬虫
May 01 Python
使用OpenCV对车道进行实时检测的实现示例代码
Jun 19 Python
如何正确理解python装饰器
Jun 15 Python
深入学习python多线程与GIL
Aug 26 #Python
用python生成与调用cntk模型代码演示方法
Aug 26 #Python
python list转置和前后反转的例子
Aug 26 #Python
python3 map函数和filter函数详解
Aug 26 #Python
python爬虫 2019中国好声音评论爬取过程解析
Aug 26 #Python
解决Python计算矩阵乘向量,矩阵乘实数的一些小错误
Aug 26 #Python
对Python中一维向量和一维向量转置相乘的方法详解
Aug 26 #Python
You might like
使用PHP Socket写的POP3类
2013/10/30 PHP
使用php计算排列组合的方法
2013/11/13 PHP
php中Session的生成机制、回收机制和存储机制探究
2014/08/19 PHP
PHP中变量引用与变量销毁机制分析
2014/11/15 PHP
PHP中Enum(枚举)用法实例详解
2015/12/07 PHP
IE和FireFox(FF)中js和css的不同
2009/04/13 Javascript
利用jquery写的左右轮播图特效
2014/02/12 Javascript
JavaScript的作用域和块级作用域概念理解
2014/09/21 Javascript
JavaScript阻止事件冒泡示例分享
2014/12/28 Javascript
jQuery实现当前页面标签高亮显示的方法
2015/03/10 Javascript
jQuery使用post方法提交数据实例
2015/03/25 Javascript
浅谈JavaScript中指针和地址
2015/07/26 Javascript
JavaScript实现移动端滑动选择日期功能
2016/06/21 Javascript
原生js实现验证码功能
2017/03/16 Javascript
Angular模板表单校验方法详解
2017/08/11 Javascript
vue.js项目中实用的小技巧汇总
2017/11/29 Javascript
解决vue路由后界面没有变化,但是链接有的问题
2018/09/01 Javascript
详解js删除数组中的指定元素
2018/10/31 Javascript
详解微信小程序之一键复制到剪切板
2019/04/24 Javascript
nodejs log4js 使用详解
2019/05/31 NodeJs
js获取浏览器地址(获取第1个斜杠后的内容)
2019/09/03 Javascript
微信小程序页面渲染实现方法
2019/11/06 Javascript
[02:56]DOTA2英雄基础教程 巨魔战将
2013/12/10 DOTA
[28:28]Ti4 冒泡赛第二天NEWBEE vs NaVi 2
2014/07/15 DOTA
python 图片验证码代码
2008/12/07 Python
python字典序问题实例
2014/09/26 Python
Python 把序列转换为元组的函数tuple方法
2019/06/27 Python
Python 用turtle实现用正方形画圆的例子
2019/11/21 Python
python seaborn heatmap可视化相关性矩阵实例
2020/06/03 Python
canvas实现圆形进度条动画的示例代码
2017/12/26 HTML / CSS
美国领先的礼品卡网站:GiftCards.com
2016/11/02 全球购物
Airbnb爱彼迎官网:成为爱彼迎房东,赚取收入
2019/03/14 全球购物
施华洛世奇匈牙利官网:SWAROVSKI匈牙利
2019/07/06 全球购物
Java的基础面试题附答案
2016/01/10 面试题
秘书英文求职信
2014/04/16 职场文书
政治学专业毕业生求职信
2014/08/11 职场文书