基于pycaffe从零开始写mnist(第三篇)——生成deploy.prototxt,做最后的验证
2017-07-29 22:13
495 查看
deploy.prototxt和之前的train.prototxt文件内容差不多,因此可以不需要用代码进行生成,直接将不一样的地方进行修改即可
下面是用代码生成的deploy.prototxt
----------------------------------------------------------------------------------------------------------------------------------------
最后对于训练的模型caffemodel进行预测,随机找出测试集当中的一张图片进行测试
下面是用代码生成的deploy.prototxt
# -*- coding: utf-8 -*- __author__ = 'xuy' import caffe def creat_deploy(): net = caffe.NetSpec() net.conv1 = caffe.layers.Convolution(bottom = 'data', kernel_size = 5, num_output = 20, weight_filler = dict(type = 'xavier')) net.pool1 = caffe.layers.Pooling(net.conv1, kernel_size = 2, stride = 2, pool = caffe.params.Pooling.MAX) net.conv2 = caffe.layers.Convolution(net.pool1, kernel_size = 5, num_output = 50, weight_filler = dict(type = 'xavier')) net.pool2 = caffe.layers.Pooling(net.conv2, kernel_size = 2, stride = 2, pool = caffe.params.Pooling.MAX) net.fc1 = caffe.layers.InnerProduct(net.pool2, num_output = 500, weight_filler = dict(type = 'xavier')) net.relu1 = caffe.layers.ReLU(net.fc1, in_place = True) net.score = caffe.layers.InnerProduct(net.relu1, num_output = 10, weight_filler = dict(type = 'xavier')) net.prob = caffe.layers.Softmax(net.score) return net.to_proto() def write_net(deploy_proto): #写入deploy.prototxt文件 with open(deploy_proto, 'w') as f: #写入第一层数据描述 f.write('input:"data"\n') f.write('input_dim:1\n') f.write('input_dim:3\n') f.write('input_dim:28\n') f.write('input_dim:28\n') f.write(str(creat_deploy())) if __name__ == '__main__': my_project_root = "/home/xuy/桌面/code/python/caffe/python_mnist/" #my-caffe-project目录 deploy_proto = my_project_root + "mnist/deploy.prototxt" write_net(deploy_proto)
----------------------------------------------------------------------------------------------------------------------------------------
最后对于训练的模型caffemodel进行预测,随机找出测试集当中的一张图片进行测试
# -*- coding: utf-8 -*- __author__ = 'xuy' ''' labels_filename的作用是:将数字标签转换回类别名称 ''' import caffe import os import numpy as np # Caffe_root='/home/xuy/caffe-master' # os.chdir(Caffe_root)#将当前的路径换成了~/caffe def test(my_project_root, deploy_proto):#对于已经训练好的caffemodel进行测试 caffe_model = my_project_root + 'mnist_iter_9380.caffemodel' #caffe_model文件的位置 img = my_project_root + 'mnist/test/8/00542.png' #随机找的一张待测图片 labels_filename = my_project_root + 'mnist/test/labels.txt' #类别名称文件,将数字标签转换回类别名称 net = caffe.Net(deploy_proto, caffe_model, caffe.TEST) #加载model和deploy #图片预处理设置 transformer = caffe.io.Transformer({'data': net.blobs['data'].data.shape}) #设定图片的shape格式(1,3,28,28) transformer.set_transpose('data', (2,0,1)) #改变维度的顺序,由原始图片(28,28,3)变为(3,28,28) transformer.set_raw_scale('data', 255) # 缩放到【0,255】之间 transformer.set_channel_swap('data', (2,1,0)) #交换通道,将图片由RGB变为BGR im = caffe.io.load_image(img) #加载测试图片 net.blobs['data'].data[...] = transformer.preprocess('data',im) #执行上面设置的图片预处理操作,也就是上面四步:1)设定图片格式2)改变维度顺序3)缩放到【0,255】之间4)换颜色通道:RGB->BGR,并将图片载入到blob中 out = net.forward() #执行测试,对于deploy.prototxt进行前向传播测试 labels = np.loadtxt(labels_filename, str, delimiter='\t') #读取类别名称文件当中的所有labels内容 prob = net.blobs['prob'].data[0].flatten() #取出最后一层(Softmax)属于某个类别的概率值 # print net.blobs['prob'].data order = prob.argsort()[-1] #将概率值排序,取出最大值所在的序号 print '图片数字为:',labels[order] #将该序号转换成对应的类别名称,并打印 if __name__ == '__main__': my_project_root = "/home/xuy/桌面/code/python/caffe/python_mnist/" #my-caffe-project目录 deploy_proto = my_project_root + "mnist/deploy.prototxt" #保存deploy.prototxt文件的位置 test(my_project_root, deploy_proto)
相关文章推荐
- 基于pycaffe从零开始写mnist(第一篇)——生成txt文件
- 基于pycaffe从零开始写mnist(第二篇)——生成训练网络结构文件(train.prototxt)+测试网络结构文件(test.prototxt)
- 基于pycaffe从零开始写mnist(第四篇)——生成train_loss图片
- caffe生成lenet-5的deploy.prototxt文件(prototxt内容解析)
- 根据 *_train_test.prototxt文件生成 *_deploy.prototxt文件
- 使用pycaffe生成train.prototxt、test.prototxt文件
- caffe中根据 *_train_test.prototxt文件生成 *_deploy.prototxt文件 (转载)
- 使用pycaffe生成solver.prototxt文件并进行训练
- 根据 *_train_test.prototxt文件生成 *_deploy.prototxt文件
- caffe中mnist中 lenet_train_test.prototxt和lenet.prototxt(deploy文件)区别
- caffe生成lenet-5的deploy.prototxt文件
- 由train_val.prototxt 生成deploy.prototxt
- 根据 *_train_val.prototxt文件生成 *_deploy.prototxt文件
- 根据 *_train_test.prototxt文件生成 *_deploy.prototxt文件
- Caffe学习笔记(四):使用pycaffe生成train.prototxt、test.prototxt文件
- Caffe学习笔记(五):使用pycaffe生成solver.prototxt文件并进行训练
- 使用pycaffe 编写train_test.prototxt和deploy.prototxt
- 根据 *_train_test.prototxt文件生成 *_deploy.prototxt文件
- RuntimeError: Could not open file SqueezeNet_deploy.prototxt
- 关于测试自己的单张图片所需要的lenet.prototxt(deploy)文件