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之用Python计算
Sep 12 Python
使用tensorflow实现AlexNet
Nov 20 Python
python将处理好的图像保存到指定目录下的方法
Jan 10 Python
Python 保存矩阵为Excel的实现方法
Jan 28 Python
解决Python3用PIL的ImageFont输出中文乱码的问题
Aug 22 Python
python中seaborn包常用图形使用详解
Nov 25 Python
基于Tensorflow高阶读写教程
Feb 10 Python
python微信公众号开发简单流程实现
Mar 09 Python
如何导出python安装的所有模块名称和版本号到文件中
Jun 05 Python
Python sqlalchemy时间戳及密码管理实现代码详解
Aug 01 Python
详解Python中import机制
Sep 11 Python
Python+Pillow+Pytesseract实现验证码识别
May 11 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函数
2010/02/16 PHP
php导出word文档与excel电子表格的简单示例代码
2014/03/08 PHP
yii框架配置默认controller和action示例
2014/04/30 PHP
php 生成签名及验证签名详解
2016/10/26 PHP
PHP远程连接oracle数据库操作实现方法图文详解
2019/04/11 PHP
JQUBar 基于JQUERY的柱状图插件
2010/11/23 Javascript
用Juery网页选项卡实现代码
2011/06/13 Javascript
JavaScript 命名空间 使用介绍
2013/08/29 Javascript
基于jQuery和Bootstrap框架实现仿知乎前端动态列表效果
2016/11/09 Javascript
清除浏览器缓存的几种方法总结(必看)
2016/12/09 Javascript
AngularJS 防止页面闪烁的方法
2017/03/09 Javascript
原生JS封装animate运动框架的实例
2017/10/12 Javascript
angularjs实现时间轴效果的示例代码
2017/11/29 Javascript
React教程之封装一个Portal可复用组件的方法
2018/01/02 Javascript
浅谈vue项目如何打包扔向服务器
2018/05/08 Javascript
vue devtools的安装与使用教程
2018/08/08 Javascript
vue中的v-if和v-show的区别详解
2019/09/01 Javascript
Python HTMLParser模块解析html获取url实例
2015/04/08 Python
小议Python中自定义函数的可变参数的使用及注意点
2016/06/21 Python
详解python调度框架APScheduler使用
2017/03/28 Python
使用apidocJs快速生成在线文档的实例讲解
2018/02/07 Python
python ipset管理 增删白名单的方法
2019/01/14 Python
python 批量修改 labelImg 生成的xml文件的方法
2019/09/09 Python
浅析pandas 数据结构中的DataFrame
2019/10/12 Python
如何基于Python批量下载音乐
2019/11/11 Python
python如何将两张图片生成为全景图片
2020/03/05 Python
解决Jupyter Notebook开始菜单栏Anaconda下消失的问题
2020/04/13 Python
python中导入 train_test_split提示错误的解决
2020/06/19 Python
区分python中的进程与线程
2020/08/13 Python
CSS中垂直居中的简单实现方法
2015/07/06 HTML / CSS
分享一个页面平滑滚动小技巧(推荐)
2019/10/23 HTML / CSS
给排水工程师岗位职责
2013/11/21 职场文书
危货运输企业安全生产责任书
2014/07/28 职场文书
红领巾广播站广播稿
2014/10/19 职场文书
机关单位保密工作责任书
2015/05/11 职场文书
解析MySQL索引的作用
2022/03/03 MySQL