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 相关文章推荐
Google开源的Python格式化工具YAPF的安装和使用教程
May 31 Python
Python中在脚本中引用其他文件函数的实现方法
Jun 23 Python
python中reload(module)的用法示例详解
Sep 15 Python
python中requests使用代理proxies方法介绍
Oct 25 Python
对Python3中的print函数以及与python2的对比分析
May 02 Python
python无限生成不重复(字母,数字,字符)组合的方法
Dec 04 Python
对python 生成拼接xml报文的示例详解
Dec 28 Python
Python后台开发Django会话控制的实现
Apr 15 Python
python 解压、复制、删除 文件的实例代码
Feb 26 Python
Python基于BeautifulSoup爬取京东商品信息
Jun 01 Python
Pytorch 卷积中的 Input Shape用法
Jun 29 Python
Django DRF认证组件流程实现原理详解
Aug 17 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 命令行工具 shell_exec, exec, passthru, system详细使用介绍
2011/09/11 PHP
PHP 使用header函数设置HTTP头的示例解析 表头
2013/06/17 PHP
js操作时间(年-月-日 时-分-秒 星期几)
2010/06/20 Javascript
jquery 倒计时效果实现秒杀思路
2013/09/11 Javascript
js阻止冒泡及jquery阻止事件冒泡示例介绍
2013/11/19 Javascript
javascript bom是什么及bom和dom的区别
2015/11/26 Javascript
jQuery插件学习教程之SlidesJs轮播+Validation验证
2016/07/12 Javascript
jQuery实现的右下角广告窗体跟随效果示例
2016/09/16 Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
2017/03/15 Javascript
jQuery实现的滑块滑动导航效果示例
2018/06/04 jQuery
Vue CLI3 开启gzip压缩文件的方式
2018/09/30 Javascript
Vue将页面导出为图片或者PDF
2020/08/17 Javascript
Layui数据表格跳转到指定页的实现方法
2019/09/05 Javascript
[00:49]完美世界DOTA2联赛10月28日开团时刻:随便打
2020/10/29 DOTA
Python生成验证码实例
2014/08/21 Python
Python实现分割文件及合并文件的方法
2015/07/10 Python
Python中time模块与datetime模块在使用中的不同之处
2015/11/24 Python
python 全文检索引擎详解
2017/04/25 Python
教你用 Python 实现微信跳一跳(Mac+iOS版)
2018/01/04 Python
Python读取txt某几列绘图的方法
2018/10/14 Python
在Python中构建增广矩阵的实现方法
2019/07/01 Python
详解Python对JSON中的特殊类型进行Encoder
2019/07/15 Python
如何在sublime编辑器中安装python
2020/05/20 Python
关于python中remove的一些坑小结
2021/01/04 Python
世界著名的顶级牛排:Omaha Steak(奥马哈牛排)
2016/09/20 全球购物
马来西亚最大的电器网站:Senheng
2017/10/13 全球购物
业务代表的岗位职责
2013/11/16 职场文书
学生党员思想汇报范文
2014/01/09 职场文书
表决心的诗句大全
2014/03/11 职场文书
2014年五一活动策划方案
2014/03/15 职场文书
爽歪歪广告词
2014/03/20 职场文书
留学顾问岗位职责
2014/04/14 职场文书
保护环境倡议书100字
2014/05/19 职场文书
党员专题组织生活会发言材料
2014/10/17 职场文书
2015年司法局工作总结
2015/05/22 职场文书
Python包管理工具pip的15 个使用小技巧
2021/05/17 Python