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 pickle模块用法实例分析
May 27 Python
详解PyTorch批训练及优化器比较
Apr 28 Python
python实现最长公共子序列
May 22 Python
python利用百度AI实现文字识别功能
Nov 27 Python
python系列 文件操作的代码
Oct 06 Python
python__new__内置静态方法使用解析
Jan 07 Python
Python faker生成器生成虚拟数据代码实例
Jul 20 Python
Django DRF认证组件流程实现原理详解
Aug 17 Python
Python使用Selenium模拟浏览器自动操作功能
Sep 08 Python
pycharm Tab键设置成4个空格的操作
Feb 26 Python
Python绘制K线图之可视化神器pyecharts的使用
Mar 02 Python
python 模拟在天空中放风筝的示例代码
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
用在PHP里的JS打印函数
2006/10/09 PHP
深入for,while,foreach遍历时间比较的详解
2013/06/08 PHP
php实现将Session写入数据库
2015/07/26 PHP
PHP实现统计在线人数功能示例
2016/10/15 PHP
jQuery get和post 方法传值注意事项
2009/11/03 Javascript
jQuery DOM操作小结与实例
2010/01/07 Javascript
JQuery为textarea添加maxlength属性并且兼容IE
2013/04/25 Javascript
js实现从数组里随机获取元素
2015/01/12 Javascript
jquery中键盘事件小结
2016/02/24 Javascript
jQuery简单验证上传文件大小及类型的方法
2016/06/02 Javascript
JS实现的自定义显示加载等待图片插件(loading.gif)
2016/06/17 Javascript
jQuery+HTML5实现弹出创意搜索框层
2016/12/29 Javascript
jQuery插件zTree实现删除树节点的方法示例
2017/03/08 Javascript
bootstrap table表格插件使用详解
2017/05/08 Javascript
微信小程序开发之animation循环动画实现的让云朵飘效果
2017/07/14 Javascript
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
2017/10/19 jQuery
详解滑动穿透(锁body)终极探索
2019/04/16 Javascript
layui的布局和表格的渲染以及动态生成表格的方法
2019/09/18 Javascript
小谈angular ng deploy的实现
2020/04/07 Javascript
[28:07]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第二场 12.13
2020/12/17 DOTA
Python实现去除代码前行号的方法
2015/03/10 Python
pygame学习笔记(2):画点的三种方法和动画实例
2015/04/15 Python
Pyhthon中使用compileall模块编译源文件为pyc文件
2015/04/28 Python
用Python写一段用户登录的程序代码
2018/04/22 Python
Python采集猫眼两万条数据 对《无名之辈》影评进行分析
2018/12/05 Python
用django-allauth实现第三方登录的示例代码
2019/06/24 Python
推荐一些比较有用的css3新属性
2014/11/11 HTML / CSS
中东地区最大的奢侈品市场:The Luxury Closet
2019/04/09 全球购物
Linux管理员面试题 Linux admin interview questions
2016/07/08 面试题
护士自我评价
2014/02/01 职场文书
高中毕业自我评价
2014/02/08 职场文书
优秀党支部书记事迹材料
2014/05/29 职场文书
医院护士见习期自我鉴定
2014/09/15 职场文书
离婚协议书范本2014
2014/10/27 职场文书
2015年导购员工作总结
2015/04/25 职场文书
刑事附带民事上诉状
2015/05/23 职场文书