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使用Flask框架同时上传多个文件的方法
Mar 21 Python
python实现中文分词FMM算法实例
Jul 10 Python
基于python select.select模块通信的实例讲解
Sep 21 Python
Python cookbook(数据结构与算法)在字典中将键映射到多个值上的方法
Feb 18 Python
浅谈Python中函数的定义及其调用方法
Jul 19 Python
python创建n行m列数组示例
Dec 02 Python
pytorch 数据处理:定义自己的数据集合实例
Dec 31 Python
python数据库编程 Mysql实现通讯录
Mar 27 Python
解决django无法访问本地static文件(js,css,img)网页里js,cs都加载不了
Apr 07 Python
python批量处理多DNS多域名的nslookup解析实现
Jun 28 Python
一文解决django 2.2与mysql兼容性问题
Jul 15 Python
Python面向对象特殊属性及方法解析
Sep 16 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和Mysqlweb应用开发核心技术 第1部分 Php基础-3 代码组织和重用2
2011/07/03 PHP
php中使用addslashes函数报错问题的解决方法
2013/02/06 PHP
php中的常用魔术方法总结
2013/08/02 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
2020/04/05 PHP
ThinkPHP3.1新特性之对Ajax的支持更加完善
2014/06/19 PHP
php实现指定字符串中查找子字符串的方法
2015/03/17 PHP
php文件操作相关类实例
2015/06/18 PHP
thinkphp制作404跳转页的简单实现方法
2016/09/22 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
用函数模板,写一个简单高效的 JSON 查询器的方法介绍
2013/04/17 Javascript
javascript中使用正则计算中文长度的例子
2014/04/29 Javascript
jQuery中detach()方法用法实例
2014/12/25 Javascript
jQuery中empty()方法用法实例
2015/01/16 Javascript
实例讲解避免javascript冲突的方法
2016/01/03 Javascript
jQuery联动日历的实例解析
2016/12/02 Javascript
bootstrap模态框示例代码分享
2017/05/17 Javascript
详解React Native 采用Fetch方式发送跨域POST请求
2017/11/15 Javascript
Vue 递归多级菜单的实例代码
2019/05/05 Javascript
JQuery中的常用事件、对象属性与使用方法分析
2019/12/23 jQuery
JS绘图Flot如何实现可选显示曲线图功能
2020/10/16 Javascript
[02:22:36]《加油!DOTA》总决赛
2014/09/19 DOTA
python 获取list特定元素下标的实例讲解
2018/04/09 Python
python实现在函数中修改变量值的方法
2019/07/16 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
2020/05/11 Python
python怎么对数字进行过滤
2020/07/05 Python
Python的logging模块基本用法
2020/12/24 Python
python生成word合同的实例方法
2021/01/12 Python
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
初三化学教学反思
2014/01/23 职场文书
优秀乡村医生事迹材料
2014/05/28 职场文书
伦敦奥运会口号
2014/06/13 职场文书
镇人大副主席民主生活会对照检查材料思想汇报
2014/10/01 职场文书
营销计划书
2015/01/17 职场文书
2016年小学“公民道德宣传日”活动总结
2016/04/01 职场文书
SpringCloud Alibaba项目实战之nacos-server服务搭建过程
2021/06/21 Java/Android
java设计模式--三种工厂模式详解
2021/07/21 Java/Android