Caffe windows下入门级别的从编译到训练然后到分类(用python接口)测试自己的图片数据(四)
2017-02-27 09:06
603 查看
前言
前面我们已经训练好了模型这时候模型文件是这样的:
我这里演示的所以设置的迭代次数不多的。
测试自己的数据
转换均值文件(将二进制的均值文件转换为npy这里要使用的均值文件):
import numpy as np import caffe import sys BinaryMeanPath = '~~~~~~~~~~/mean.binaryproto' NpyMeanOuPath = '~~~~~~~~~~/meannpy.npy' print 'Start.............' blob = caffe.proto.caffe_pb2.BlobProto() data = open( BinaryMeanPath , 'rb' ).read() blob.ParseFromString(data) arr = np.array( caffe.io.blobproto_to_array(blob) ) out = arr[0] np.save( NpyMeanOuPath , out ) print 'Complete.............'
然后caffe-windows\models\bvlc_reference_caffenet\这个文件夹中取出deploy这个文件,修改最后的输出数量改为我们自己的分类数量 最后,这里测试自己的数据的代码是直接从官网上拿下来的:
# coding:utf-8 import numpy as np MyCaffeRoot = '~~~~~~~~~~/mymnist/' ImgTestPath = '~~~~~~~~~~/1/pic_hashiqi_Pos120.jpg' #测试图片路径 LabelsPath = MyCaffeRoot + 'labels.txt' import sys import caffe import os CaffeModelPath = MyCaffeRoot + 'caffenet_train_iter_4500.caffemodel' DeployPath = MyCaffeRoot + 'deploy.prototxt' NpyMeanPath = '~~~~~~~~~~/mean/meannpy.npy' if os.path.exists(CaffeModelPath) == False: print u'找不到模型的路径' else: print u'找到模型的路径......' caffe.set_mode_cpu(); net = caffe.Net(DeployPath, CaffeModelPath, caffe.TEST) #创建网络 #负载均衡减去均值 mu = np.load(NpyMeanPath) mu = mu.mean(1).mean(1) print u'各个颜色通道的均值:', zip('BGR', mu) transformer = caffe.io.Transformer({'data':net.blobs['data'].data.shape}) transformer.set_transpose('data',(2, 0, 1)) transformer.set_mean('data',mu) transformer.set_raw_scale('data', 255) transformer.set_channel_swap('data',(2, 1, 0)) net.blobs['data'].reshape(50, 3, 227, 227) #执行测试 out = net.forward() # transform it and copy it into the net image = caffe.io.load_image(ImgTestPath) net.blobs['data'].data[...] = transformer.preprocess('data', image) # perform classification net.forward() # obtain the output probabilities output_prob = net.blobs['prob'].data[0] #验证标签文件是否存在 if os.path.exists(LabelsPath) == False: print u'标签文件不存在' exit(0) #读取标签文件 labels = np.loadtxt(LabelsPath, str, delimiter='\t') sort = output_prob.argsort()[::-1][:2] #labels[0] = '哈士奇' print output_prob print u'这个是--->:' , str(labels[sort[0]]).decode('utf-8') print u'这个是--->:' , str(labels[sort[1]]).decode('utf-8')
本教程到此结束,如果有哪里错误的欢迎指出来我会及时修改的。
相关文章推荐
- Caffe windows下入门级别的从编译到训练然后到分类(用python接口)制作自己的数据和训练网络(三)
- Caffe windows下入门级别的从编译到训练然后到分类(用python接口)资源下载(一)
- Caffe windows下入门级别的从编译到训练然后到分类(用python接口)Caffe编译和环境(二)
- pytorch: 准备、训练和测试自己的图片数据
- caffe的python接口学习(6):用训练好的模型(caffemodel)来分类新的图片
- 利用tensorflow训练自己的图片数据(5)——测试训练网络
- caffe windows 训练自己的图片数据
- Caffe训练、测试自己的图片数据
- 【神经网络与深度学习】在Windows8.1上用VS2013编译Caffe并训练和分类自己的图片
- 在Windows8.1上用VS2013编译Caffe并训练和分类自己的图片
- Tensorflow学习笔记:用minst数据集训练卷积神经网络并用训练后的模型测试自己的BMP图片
- caffe的python接口学习(6):用训练好的模型(caffemodel)来分类新的图片
- python+caffe训练自己的图片数据流程
- python+caffe训练自己的图片数据流程
- caffe的python接口学习(6):用训练好的模型(caffemodel)来分类新的图片
- Caffe深度学习入门—— caffenet 微调网络 训练自己的数据并测试训练的模型
- caffe的python接口学习:用训练好的模型(caffemodel或者h5)来分类新的图片
- caffe的python接口学习(6):用训练好的模型(caffemodel)来分类新的图片
- caffe用自己的数据训练模型,并测试输出图片类别
- tensorflow训练分类自己的图片(超详细入门版)