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将人民币转换大写的脚本代码
Feb 10 Python
跟老齐学Python之通过Python连接数据库
Oct 28 Python
bat和python批量重命名文件的实现代码
May 19 Python
深入理解Python3中的http.client模块
Mar 29 Python
Python编程实现及时获取新邮件的方法示例
Aug 10 Python
Python实现图片转字符画的示例
Aug 22 Python
Python进程间通信Queue实例解析
Jan 25 Python
Python 对输入的数字进行排序的方法
Jun 23 Python
使用python获取(宜宾市地震信息)地震信息
Jun 20 Python
python+openCV对视频进行截取的实现
Nov 27 Python
Python爬虫实战之爬取京东商品数据并实实现数据可视化
Jun 07 Python
Python matplotlib绘制条形统计图 处理多个实验多组观测值
Apr 21 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
【星际争霸1】人族1v7家ZBath
2020/03/04 星际争霸
用php的ob_start来生成静态页面的方法分析
2011/03/09 PHP
thinkphp3.2.2实现生成多张缩略图的方法
2014/12/19 PHP
使用PHP生成二维码的方法汇总
2015/07/22 PHP
javascript 浏览器检测代码精简版
2010/03/04 Javascript
jQuery1.6 类型判断实现代码
2011/09/01 Javascript
每天一篇javascript学习小结(Date对象)
2015/11/13 Javascript
一些实用性较高的js方法
2016/04/19 Javascript
Node.js的Koa框架上手及MySQL操作指南
2016/06/13 Javascript
ajax异步请求详解
2017/01/06 Javascript
JS基于贪心算法解决背包问题示例
2017/11/27 Javascript
vue中echarts3.0自适应的方法
2018/02/26 Javascript
微信小程序实现的日期午别医生排班表功能示例
2019/01/09 Javascript
详解Bootstrap 学习(一)入门
2019/04/12 Javascript
基于JavaScript判断两个对象内容是否相等
2020/01/10 Javascript
[55:35]VGJ.S vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
mysql 之通过配置文件链接数据库
2017/08/12 Python
Python 查找list中的某个元素的所有的下标方法
2018/06/27 Python
python scipy求解非线性方程的方法(fsolve/root)
2018/11/12 Python
Python pip 安装与使用(安装、更新、删除)
2019/10/06 Python
python的faker库用法
2019/11/28 Python
python GUI库图形界面开发之PyQt5线程类QThread详细使用方法
2020/02/26 Python
如何在python中实现线性回归
2020/08/10 Python
什么是三层交换,说说和路由的区别在那里
2014/09/01 面试题
超市实习总结自我鉴定
2013/09/19 职场文书
麦当劳辞职信范文
2014/01/18 职场文书
国际贸易专业个人求职信格式
2014/02/02 职场文书
学生请假条格式
2014/04/11 职场文书
好学生评语大全
2014/05/05 职场文书
安全横幅标语
2014/06/09 职场文书
社会学专业求职信
2014/07/17 职场文书
关于运动会的广播稿
2014/09/22 职场文书
2015年班级元旦晚会活动总结
2014/11/28 职场文书
六年级数学教学反思
2016/02/16 职场文书
2019年七夕情人节浪漫祝福语大全!
2019/08/08 职场文书
MySQL脏读,幻读和不可重复读
2022/05/11 MySQL