caffe(三)用训练好的模型简单训练一下
2017-08-17 11:25
225 查看
小菜准备了几张验证的图片存放路径为caffe根目录下的 examples/images/, 如果我们想用一个微调训练好的caffemodel来对这张图片进行分类,那该怎么办呢?下面小菜来详细介绍一下这一任务的步骤。一般可以同两种方式进行测试,分别是基于c++接口和Python接口。不管是用c++来进行分类,还是用python接口来分类,我们都应该准备这样三个文件:
1、 caffemodel文件。
就是之前小菜fine-tuning训练好的caffemodel,小菜用的是result_iter_1000.caffemodel。
2、均值文件。
有了caffemodel文件,就需要对应的均值文件,在测试阶段,需要把测试数据减去均值。这个文件我们用脚本来下载,在caffe根目录下执行:
data/ilsvrc12/get_ilsvrc_aux.sh
执行并下载后,均值文件放在 data/ilsvrc12/ 文件夹里。不过小菜用的是自己的数据集的均值文件,也就是fine-tuning时生成的均值文件mean.binaryproto。
3、synset_words.txt文件
在调用脚本文件下载均值的时候,这个文件也一并下载好了。里面放的是1000个类的名称。小菜自己在examples/myfile/目录下建立一个自己的ynset_words.txt,里面写了根据小菜需要分类的6个类别文本。
python方法
python接口可以使用jupyter notebook来进行可视化操作,因此推荐使用这种方法。建立一个test.py格式的脚本代码如下,在test.py根目录下(CMD)通过运行Python test.py来验证测试图片的分类结果,也可以在cygwin中运行。代码如下:
1、 caffemodel文件。
就是之前小菜fine-tuning训练好的caffemodel,小菜用的是result_iter_1000.caffemodel。
2、均值文件。
有了caffemodel文件,就需要对应的均值文件,在测试阶段,需要把测试数据减去均值。这个文件我们用脚本来下载,在caffe根目录下执行:
data/ilsvrc12/get_ilsvrc_aux.sh
执行并下载后,均值文件放在 data/ilsvrc12/ 文件夹里。不过小菜用的是自己的数据集的均值文件,也就是fine-tuning时生成的均值文件mean.binaryproto。
3、synset_words.txt文件
在调用脚本文件下载均值的时候,这个文件也一并下载好了。里面放的是1000个类的名称。小菜自己在examples/myfile/目录下建立一个自己的ynset_words.txt,里面写了根据小菜需要分类的6个类别文本。
python方法
python接口可以使用jupyter notebook来进行可视化操作,因此推荐使用这种方法。建立一个test.py格式的脚本代码如下,在test.py根目录下(CMD)通过运行Python test.py来验证测试图片的分类结果,也可以在cygwin中运行。代码如下:
**#coding=utf-8 ****#加载必要的库****** import numpy as np import sys,os,caffe **#设置当前目录** caffe_root = 'd:/caffe-master/' sys.path.insert(0, caffe_root + 'python') import caffe os.chdir(caffe_root) net_file=caffe_root + 'examples/myfile/deploy.prototxt' caffe_model=caffe_root + 'examples/myfile/result_iter_1000.caffemodel' mean_file=caffe_root + 'examples/myfile/mean.npy' ****#python/caffe/imagenet/ilsvrc_2012_mean.npy**** net = caffe.Net(net_file,caffe_model,caffe.TEST) transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape}) transformer.set_transpose('data', (2,0,1)) transformer.set_mean('data', np.load(mean_file).mean(1).mean(1)) transformer.set_raw_scale('data', 255) transformer.set_channel_swap('data', (2,1,0)) im=caffe.io.load_image(caffe_root+'examples/images/2.jpg') net.blobs['data'].data[...] = transformer.preprocess('data',im) out = net.forward() ****#imagenet_labels_filename = caffe_root + 'data/ilsvrc12/synset_words.txt'**** imagenet_labels_filename = caffe_root + 'examples/myfile/synset_words.txt' labels = np.loadtxt(imagenet_labels_filename, str, delimiter='\t') top_k = net.blobs['prob'].data[0].flatten().argsort()[-1:-6:-1] for i in np.arange(top_k.size): print top_k[i], labels[top_k[i]]
相关文章推荐
- linux下运行caffe自带的两个简单例子(格式转换及训练模型)
- caffe入门4:使用训练好的模型对数据分类
- 深度学习-CAFFE利用CIFAR10网络模型训练自己的图像数据获得模型-2生成图像库的均值文件
- 有关Caffe训练好的模型在Python接口下使用分类不准确的问题解决
- 21天实战caffe - 运行基于已训练模型的图片分类例程 - 报错:Unable to decode image
- 在c++程序中调用caffe训练完毕的模型进行分类
- 使用训练好的caffe模型识别图片
- 深度学习与人脸识别系列(3)__利用caffe训练深度学习模型
- Caffe训练AlexNet网络模型——问题三
- 使用caffe训练并且测试一个自己的模型
- Caffe深度学习入门——python调用caffe训练好的模型检测单帧图片
- 使用MATLAB加载训练好的caffe模型进行识别分类
- 深度学习-CAFFE利用CIFAR10网络模型训练自己的图像数据获得模型-3结合caffe中的CIFAR10修改相关配置文件并训练
- Windows下使用训练好的Caffe模型
- 基于caffe的图像分类(3)——修改网络并训练模型
- 使用caffe训练并且测试一个自己的模型
- 用训练好的caffe模型来测试样本
- caffe的python接口学习(3):训练模型(training)
- 【深度学习框架Caffe学习与应用】第三课 使用训练好的模型
- caffe学习系列(10):如何测试caffe训练出来的模型