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 12 Python
python如何去除字符串中不想要的字符
Jul 05 Python
浅谈Python中的bs4基础
Oct 21 Python
对python中大文件的导入与导出方法详解
Dec 28 Python
python Jupyter运行时间实例过程解析
Dec 13 Python
如何解决tensorflow恢复模型的特定值时出错
Feb 06 Python
Python文本文件的合并操作方法代码实例
Mar 31 Python
QML实现钟表效果
Jun 02 Python
keras打印loss对权重的导数方式
Jun 10 Python
Python爬虫定时计划任务的几种常见方法(推荐)
Jan 15 Python
Python就将所有的英文单词首字母变成大写
Feb 12 Python
总结Python常用的魔法方法
May 25 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
Mysql中分页查询的两个解决方法比较
2013/05/02 PHP
php读取目录所有文件信息dir示例
2014/03/18 PHP
php实现字符串反转输出的方法
2015/03/14 PHP
分享自定义的几个PHP功能函数
2015/04/15 PHP
CI框架整合widget(页面格局)的方法
2016/05/17 PHP
用Javascript读取中文COOKIE的解决办法
2007/02/15 Javascript
JS Array对象入门分析
2008/10/30 Javascript
JQuery 学习笔记 选择器之四
2009/07/23 Javascript
Jquery实现的一种常用高亮效果示例代码
2014/01/28 Javascript
javascript实现了照片拖拽点击置顶的照片墙代码
2015/04/03 Javascript
详解Node.js串行化流程控制
2017/05/04 Javascript
Flask中获取小程序Request数据的两种方法
2017/05/12 Javascript
bootstrap是什么_动力节点Java学院整理
2017/07/14 Javascript
详解js跨域请求的两种方式,支持post请求
2018/05/05 Javascript
Angularjs Ng_repeat中实现复选框选中并显示不同的样式方法
2018/09/12 Javascript
浅谈webpack SplitChunksPlugin实用指南
2018/09/17 Javascript
JavaScript对象的特性与实践应用深入详解
2018/12/30 Javascript
ES6中let、const的区别及变量的解构赋值操作方法实例分析
2019/10/15 Javascript
vue 二维码长按保存和复制内容操作
2020/09/22 Javascript
Python生成验证码实例
2014/08/21 Python
利用Django框架中select_related和prefetch_related函数对数据库查询优化
2015/04/01 Python
python保存数据到本地文件的方法
2018/06/23 Python
Python3单行定义多个变量或赋值方法
2018/07/12 Python
python实现杨氏矩阵查找
2019/03/02 Python
django的聚合函数和aggregate、annotate方法使用详解
2019/07/23 Python
简单了解python中的与或非运算
2019/09/18 Python
Python 如何测试文件是否存在
2020/07/31 Python
Python实现Canny及Hough算法代码实例解析
2020/08/06 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
2020/12/01 Python
说出数据连接池的工作机制是什么?
2013/04/19 面试题
网络编辑职责
2014/03/01 职场文书
少先队学雷锋活动月总结
2014/03/09 职场文书
科研课题实施方案
2014/03/18 职场文书
横幅标语大全
2014/06/17 职场文书
列车乘务员工作不细心检讨书
2014/10/07 职场文书
JS中forEach()、map()、every()、some()和filter()的用法
2022/05/11 Javascript