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中使用M2Crypto模块实现AES加密的教程
Apr 08 Python
python中Genarator函数用法分析
Apr 08 Python
详解Python中for循环的使用方法
May 14 Python
Python字符串格式化输出方法分析
Apr 13 Python
python利用sklearn包编写决策树源代码
Dec 21 Python
Python编程中NotImplementedError的使用方法
Apr 21 Python
python脚本实现验证码识别
Jun 07 Python
Flask框架学习笔记之路由和反向路由详解【图文与实例】
Aug 12 Python
python线程中的同步问题及解决方法
Aug 29 Python
用Python制作mini翻译器的实现示例
Aug 17 Python
Python列表元素删除和remove()方法详解
Jan 04 Python
只用Python就可以制作的简单词云
Jun 07 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
利用curl抓取远程页面内容的示例代码
2013/07/23 PHP
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
2014/07/05 PHP
PHP借助phpmailer发送邮件
2015/05/11 PHP
jQuery下通过$.browser来判断浏览器.
2011/04/05 Javascript
js螺旋动画效果的具体实例
2013/11/15 Javascript
javascript图片预加载完整实例
2015/12/10 Javascript
JS实现添加,替换,删除节点元素的方法
2016/06/30 Javascript
JQuery判断正整数整理小结
2017/08/21 jQuery
JS删除数组里的某个元素方法
2018/02/03 Javascript
解析Json字符串的三种方法日常常用
2018/05/02 Javascript
JS+HTML实现的圆形可点击区域示例【3种方法】
2018/08/01 Javascript
微信小程序实现列表页的点赞和取消点赞功能
2018/11/02 Javascript
微信小程序下拉框功能的实例代码
2018/11/06 Javascript
JavaScript如何实现元素全排列实例代码
2019/05/14 Javascript
javascript实现的时间格式加8小时功能示例
2019/06/13 Javascript
JS前端知识点总结之内置对象,日期对象和定时器相关操作
2019/07/05 Javascript
Javascript模拟实现new原理解析
2020/03/03 Javascript
python实现apahce网站日志分析示例
2014/04/02 Python
MySQL适配器PyMySQL详解
2017/09/20 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
2018/04/21 Python
Django跨域请求问题的解决方法示例
2018/06/16 Python
对python借助百度云API对评论进行观点抽取的方法详解
2019/02/21 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
2019/06/24 Python
pyQt5实时刷新界面的示例
2019/06/25 Python
python读取ini配置文件过程示范
2019/12/23 Python
python实现银行实战系统
2020/02/26 Python
python GUI库图形界面开发之PyQt5窗口类QMainWindow详细使用方法
2020/02/26 Python
python中线程和进程有何区别
2020/06/17 Python
python opencv肤色检测的实现示例
2020/12/21 Python
详解matplotlib绘图样式(style)初探
2021/02/03 Python
详解HTML5如何使用可选样式表为网站或应用添加黑暗模式
2020/04/07 HTML / CSS
乌克兰第一的珠宝网上商店:Gold.ua
2019/11/29 全球购物
学校安全工作制度
2014/01/19 职场文书
高中生的自我鉴定范文
2014/01/24 职场文书
计划生育证明格式及范本
2014/10/09 职场文书
如何使用Python对NetCDF数据做空间相关分析
2021/04/21 Python