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 08 Python
python web框架学习笔记
May 03 Python
使用Python对SQLite数据库操作
Apr 06 Python
Python中正则表达式详解
May 17 Python
浅谈python jieba分词模块的基本用法
Nov 09 Python
Python之web模板应用
Dec 26 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
Feb 01 Python
Python TestCase中的断言方法介绍
May 02 Python
Python安装Flask环境及简单应用示例
May 03 Python
检测python爬虫时是否代理ip伪装成功的方法
Jul 12 Python
pytorch中的embedding词向量的使用方法
Aug 18 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
PHP jQuery+Ajax结合写批量删除功能
2017/05/19 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
PHP htmlspecialchars()函数用法与实例讲解
2019/03/08 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
基于jQuery的投票系统显示结果插件
2011/08/12 Javascript
JQuery中SetTimeOut传参问题探讨
2013/05/10 Javascript
JavaScript中创建类/对象的几种方法总结
2013/11/29 Javascript
jQuery实现下拉框左右选择的简单实例
2014/02/22 Javascript
javascript实现网页背景烟花效果的方法
2015/08/06 Javascript
详解Angular2中的编程对象Observable
2016/09/17 Javascript
JavaScript和jQuery获取input框的绝对位置实现方法
2016/10/13 Javascript
JS中IP地址与整数相互转换的实现代码
2017/04/10 Javascript
ES6新特性之类(Class)和继承(Extends)相关概念与用法分析
2017/05/24 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
2017/09/19 Javascript
ionic3+Angular4实现接口请求及本地json文件读取示例
2017/10/11 Javascript
使用 Node.js 模拟滑动拼图验证码操作的示例代码
2017/11/02 Javascript
mint-ui在vue中的使用示例
2018/04/05 Javascript
Node.js实现一个HTTP服务器的方法示例
2019/05/13 Javascript
详解vue 2.6 中 slot 的新用法
2019/07/09 Javascript
微信小程序商品详情页底部弹出框
2019/11/22 Javascript
vue+ts下对axios的封装实现
2020/02/18 Javascript
VsCode里的Vue模板的实现
2020/08/12 Javascript
toString.call()通用的判断数据类型方法示例
2020/08/28 Javascript
详解JavaScript作用域、作用域链和闭包的用法
2020/09/03 Javascript
python统计一个文本中重复行数的方法
2014/11/19 Python
Python中利用sqrt()方法进行平方根计算的教程
2015/05/15 Python
jupyter安装小结
2016/03/13 Python
你所不知道的Python奇技淫巧13招【实用】
2016/12/14 Python
python实现flappy bird小游戏
2018/12/24 Python
如何在python开发工具PyCharm中搭建QtPy环境(教程详解)
2020/02/04 Python
python实现读取类别频数数据画水平条形图案例
2020/04/24 Python
css3实现平移效果(transfrom:translate)的示例
2020/11/13 HTML / CSS
大学生简历的个人自我评价
2013/12/04 职场文书
农村婚礼证婚词
2014/01/08 职场文书
Go语言基础切片的创建及初始化示例详解
2021/11/17 Golang
详细介绍MySQL中limit和offset的用法
2022/05/06 MySQL