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+django实现文件下载
Jan 17 Python
基于Python函数的作用域规则和闭包(详解)
Nov 29 Python
Python绘制3D图形
May 03 Python
利用python如何处理nc数据详解
May 23 Python
浅谈Tensorflow由于版本问题出现的几种错误及解决方法
Jun 13 Python
Python 支付整合开发包的实现
Jan 23 Python
详细介绍pandas的DataFrame的append方法使用
Jul 31 Python
python对象转字典的两种实现方式示例
Nov 07 Python
详解Python中字符串前“b”,“r”,“u”,“f”的作用
Dec 18 Python
Python 内置变量和函数的查看及说明介绍
Dec 25 Python
浅析python函数式编程
Sep 26 Python
Python网络编程之ZeroMQ知识总结
Apr 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 水平的题目
2007/05/30 PHP
php中的注释、变量、数组、常量、函数应用介绍
2012/11/16 PHP
浅析php header 跳转
2013/06/17 PHP
PHP生成可点击刷新的验证码简单示例
2016/05/13 PHP
php实现的二叉树遍历算法示例
2017/06/15 PHP
javascript里的条件判断
2007/02/27 Javascript
统一接口:为FireFox添加IE的方法和属性的js代码
2007/03/25 Javascript
javascript中运用闭包和自执行函数解决大量的全局变量问题
2010/12/30 Javascript
Javasipt:操作radio标签详解
2013/12/30 Javascript
javascript html实现网页版日历代码
2016/03/08 Javascript
jquery获取img的src值的简单实例
2016/05/17 Javascript
js css+html实现简单的日历
2016/07/14 Javascript
flag和jq on 的绑定多个对象和方法(必看)
2017/02/27 Javascript
Js判断H5上下滑动方向及滑动到顶部和底部判断的示例代码
2017/11/15 Javascript
apicloud拉起小程序并传递参数的方法示例
2018/11/21 Javascript
JavaScript设计模式---单例模式详解【四种基本形式】
2020/05/16 Javascript
python time模块用法实例详解
2014/09/11 Python
Python实现字典依据value排序
2016/02/24 Python
Python的Tornado框架实现异步非阻塞访问数据库的示例
2016/06/30 Python
总结python爬虫抓站的实用技巧
2016/08/09 Python
python扫描proxy并获取可用代理ip的实例
2017/08/07 Python
Python基于TCP实现会聊天的小机器人功能示例
2018/04/09 Python
Tensorflow卷积神经网络实例
2018/05/24 Python
Python操作Excel的学习笔记
2021/02/18 Python
家得宝加拿大家装网上商店:The Home Depot加拿大
2016/08/27 全球购物
LEGO玩具英国官方商店:LEGO Shop GB
2018/03/27 全球购物
印度化妆品购物网站:Nykaa
2018/07/22 全球购物
德国高端单身人士交友网站:ElitePartner
2018/12/02 全球购物
String和StringBuffer的区别
2015/08/13 面试题
试解释COMMIT操作和ROLLBACK操作的语义
2014/07/25 面试题
培训主管的岗位职责
2013/11/23 职场文书
应聘编辑职位自荐信范文
2014/01/05 职场文书
中学生自我评价范文
2014/02/08 职场文书
个人买房协议书范本
2014/10/06 职场文书
2014个人年终工作总结范文
2014/12/15 职场文书
环保建议书作文400字
2015/09/14 职场文书