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 字符串操作方法大全
Mar 11 Python
Python实现在Linux系统下更改当前进程运行用户
Feb 04 Python
怎么使用pipenv管理你的python项目
Mar 12 Python
对numpy中二进制格式的数据存储与读取方法详解
Nov 01 Python
解决pyecharts在jupyter notebook中使用报错问题
Apr 23 Python
Django 静态文件配置过程详解
Jul 23 Python
python实现指定ip端口扫描方式
Dec 17 Python
屏蔽Django admin界面添加按钮的操作
Mar 11 Python
django实现更改数据库某个字段以及字段段内数据
Mar 31 Python
Django如何使用asyncio协程和ThreadPoolExecutor多线程
Oct 12 Python
python 利用openpyxl读取Excel表格中指定的行或列教程
Feb 06 Python
python 破解加密zip文件的密码
Apr 22 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实现框架(一)
2006/10/09 PHP
php入门学习知识点六 PHP文件的读写操作代码
2011/07/14 PHP
PHP句法规则详解 入门学习
2011/11/09 PHP
php正则preg_replace_callback函数用法实例
2015/06/01 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
2017/03/24 PHP
Firefox getBoxObjectFor getBoundingClientRect联系
2008/10/26 Javascript
javascript 字符 Escape,encodeURI,encodeURIComponent
2009/07/09 Javascript
JQUERY1.6 使用方法四 检测浏览器
2011/11/23 Javascript
js实现连续英文字符自动换行兼容ie6 ie7和firefox
2013/09/06 Javascript
jQuery的live()方法对hover事件的处理示例
2014/02/27 Javascript
浅谈JavaScript Date日期和时间对象
2014/12/29 Javascript
JavaScript操作HTML DOM节点的基础教程
2016/03/11 Javascript
Vue.js实现一个自定义分页组件vue-paginaiton
2016/09/05 Javascript
获取jqGrid中选择的行的数据
2016/11/30 Javascript
浅谈Nodejs中的作用域问题
2016/12/26 NodeJs
VUE元素的隐藏和显示(v-show指令)
2017/06/23 Javascript
让axios发送表单请求形式的键值对post数据的实例
2018/08/11 Javascript
Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解
2019/08/07 Javascript
解决echarts 一条柱状图显示两个值,类似进度条的问题
2020/07/20 Javascript
[00:28]DOTA2北京网鱼队选拔赛
2015/04/08 DOTA
使用python为mysql实现restful接口
2018/01/05 Python
Python 爬取携程所有机票的实例代码
2018/06/11 Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
2019/05/06 Python
Python可迭代对象操作示例
2019/05/07 Python
Django 在iframe里跳转顶层url的例子
2019/08/21 Python
Python计算不规则图形面积算法实现解析
2019/11/22 Python
Python TKinter如何自动关闭主窗口
2020/02/26 Python
python实现定时发送邮件
2020/12/23 Python
美国手工艺品市场的领导者:Annie’s
2019/04/04 全球购物
运动会开幕式解说词
2014/02/05 职场文书
男女朋友协议书
2014/04/23 职场文书
高校教师个人工作总结2014
2014/12/17 职场文书
无违反计划生育证明格式
2015/06/24 职场文书
小学生暑假生活总结
2015/07/13 职场文书
小程序教您怎样你零成本推广获取数万用户的方法
2019/07/30 职场文书
springboot应用服务启动事件的监听实现
2022/04/06 Java/Android