用已有的caffemodel和python脚本进…
来源:互联网 发布:阿里云备案网站名称 编辑:程序博客网 时间:2024/06/11 12:21
2月13日更新:
在使用python脚本之前,首先需要在根目录makepycaffe,同时确保环境变量PYTHONPATH是指向当前caffe/python这一子目录下的,如果指向其他版本caffe的python目录,可能导致程序无法运行
==========================================================
当已有caffemodel之后,整个学习过程并没有结束,还有最后一个步骤——预测。这个也就是常见的deploy.txt这个文件的用处,打开文件可以看到,没有data_layer,只有一个inputdim,这是因为,这个文件不能单独运行,必须配合python或者c++的脚本来预处理数据,把数据变成第一个conv层能接受的形式,再输入到网络中。
下面就是一个简单的python预测脚本。根据TSP网络,一次输入三张图片,分别用transformer转变后,统一赋给blob里面的'data'数组,就能作为网络的输入。需要注意的是,原TSP网络的dim四1、3、224、224,第一维是1,也就是只能输入一张图片,要输入3张的话,需要手动把第一个dim改成3。
import caffe
caffe_root='/home/hadoop/whx/tsncaffe/'
data_root='/home/hadoop/whx/dataset/ucf101/ucf_videoframedata_jpeg/'
model_root='/home/hadoop/whx/exp-result/'
import numpy as np
import scipy
import sys
import os
def rgb_predict()
net = caffe.Net(caffe_root +'mywork/ucf101/tsn_bn_inception_rgb_deploy.prototxt',model_root+'2017-1-7/ucf_rgb_bn_inception_iter_80000.caffemodel',caffe.TEST)
transformer = caffe.io.Transformer({'data':net.blobs['data'].data.shape})#设置transformer
transformer.set_transpose('data',(2,0,1))#本来是224*224*3,改成3*224*224
transformer.set_mean('data', np.load(caffe_root +'python/caffe/imagenet/ilsvrc_2012_mean.npy').mean(1).mean(1))#读取均值文件
transformer.set_raw_scale('data', 255)#本来的像素值是0-1,扩展为0-255
transformer.set_channel_swap('data', (2,1,0))#caffe接收的图片彩色通道应该是BGR这样排列,而原图是RGB格式
image1=caffe.io.load_image(data_root +'PlayingViolin/v_PlayingViolin_g01_c01/frame000001.jpg')
image2=caffe.io.load_image(data_root +'PlayingViolin/v_PlayingViolin_g01_c01/frame000010.jpg')
image3=caffe.io.load_image(data_root +'PlayingViolin/v_PlayingViolin_g01_c01/frame000020.jpg')
net.blobs['data'].reshape(3,3,224,224)
net.blobs['data'].data[...] = [transformer.preprocess('data',image1),transformer.preprocess('data',image2),transformer.preprocess('data', image3)]#transformer设置的是3维(即针对单个图片)而不是4维,因此需要先transformer,再把转换后的3张图拼接在一起。
net.forward()
out = net.blobs['pool_fc'].data[...]
out =out[0][0][0]#得到的data[...]是一个(1,1,1,101)的四维数组,因此取最后一维即可
print out.argmax()+1
阅读全文
0 0
- 用已有的caffemodel和python脚本进…
- python django 集成已有的数据库
- Django集成已有的数据库和应用
- python读取caffemodel文件
- python读取caffemodel
- eclipse+pydev 怎么导入已有的python项目
- Python入门记——使用一个已有的模块
- 【django 学习笔记】17-集成已有的数据库和应用
- SVN清除本地已有的用户名和密码
- NIO.2 Path和Java已有的File类
- 在已有的图像上画方框和实心圆
- 修改已有的应用程序
- 放弃已有的
- 扩展已有的LVM
- 润乾平台 - 用已有的xml与json文件为数据集设置宏和参数
- finetune入门,如何用已有的caffem…
- 用 seagull 已有的module创建一个简单站点
- 用sqlcipher对已有的SQLite数据库加密
- leetcode:Gray Code +&n…
- leetcode:Maximum Subarray+Find M…
- leetcode:Longest Increasing…
- leetcode:Multiply Strings +…
- leetcode:Permutations1+2 + Rotat…
- 用已有的caffemodel和python脚本进…
- leetcode:Pow(x, n) + N-Quee…
- linux中$* $@ 以及各自…
- leetcode:Simplify Path+Edit…
- C++虚函数的内存管理
- visual studio无法查看局部变…
- 将博客搬至CSDN
- 着色语言 Shading Language(二)
- 404页面怎么做?