《深度学习——实战caffe》——利用mnist数据集训练好的lenet_iter_10000.caffemodel模型测试一张自己的手写体数字

标签: caffe mnist
8人阅读 评论(0) 收藏 举报
分类:
1、利用模型lenet_iter_10000.caffemodel测试单张手写体数字所需要的文件:

(1)待测试图片(自己画的也行,网络上下的也行);需要注意的是,不管是什么格式,都要转换为28*28大小的黑白灰度图像,具体转化方法请自行百度,不想转化的我这里提供给大家一组我转化好的图片资源供大家下载链接: https://pan.baidu.com/s/1Ck6l7bAncK2BpcqWXG67Dg 密码:csig
(2)deploy.prototxt(模型描述型文件);
(3)network.caffemodel(模型权值文件),在本例中就是lenet_iter_10000.caffemodel
(4)labels.txt(标签文件);
(5)mean.binaryproto(二进制图像均值文件);
(6)classification.bin(二进制程序名)。与二进制均值文件配合使用,只是均值文件不同的模型有不同的均值文件,而这个bin文件为通用的,就是任何模型都可以做分类使用。

2、步骤1:生成待测试图片

     具体要求在1中已有说明,这里不做过多阐述。如还有人不懂如何做图请自行百度。

3、步骤2:生成deploy.prototxt文件

     deploy.prototxt文件的作用和lenet_train_test.prototxt文件类似,或者说对后者改动可得到前者。在熟悉生成文件的原理及方法之后我们可以之间在原训练prototxt网络文件中改动。在examples/mnist目录下复制一份lenet_train_test.prototxt修改并保存后得到deploy.prototxt如下:
name: "LeNet"  

   
layer {  
  name:"data"  
 type: "Input"  
 top: "data"  
 input_param { shape: { dim: 1 dim: 1 dim: 28 dim: 28 } }  
}  
   
  
layer {  
  name:"conv1"  
 type: "Convolution"  
 bottom: "data"  
 top: "conv1"  
 convolution_param {  
   num_output: 20  
   kernel_size: 5  
   stride: 1  
   weight_filler {  
     type: "xavier"  
   }  
 }  
}  
layer {  
  name:"pool1"  
 type: "Pooling"  
 bottom: "conv1"  
 top: "pool1"  
 pooling_param {  
   pool: MAX  
   kernel_size: 2  
   stride: 2  
  }  
}  
layer {  
  name:"conv2"  
 type: "Convolution"  
 bottom: "pool1"  
 top: "conv2"  
 convolution_param {  
   num_output: 50  
   kernel_size: 5  
   stride: 1  
   weight_filler {  
     type: "xavier"  
   }  
 }  
}  
layer {  
  name:"pool2"  
 type: "Pooling"  
 bottom: "conv2"  
 top: "pool2"  
 pooling_param {  
   pool: MAX  
   kernel_size: 2  
   stride: 2  
  }  
}  
layer {  
  name:"ip1"  
 type: "InnerProduct"  
 bottom: "pool2"  
 top: "ip1"  
 inner_product_param {  
   num_output: 500  
   weight_filler {  
     type: "xavier"  
   }  
 }  
}  
layer {  
  name:"relu1"  
 type: "ReLU"  
 bottom: "ip1"  
 top: "ip1"  
}  
layer {  
  name:"ip2"  
 type: "InnerProduct"  
 bottom: "ip1"  
 top: "ip2"  
 inner_product_param {  
   num_output: 10  
   weight_filler {  
     type: "xavier"  
   }  
 }  
}  
   
 
layer {  
  name:"prob"  
 type: "Softmax"  
 bottom: "ip2"  
 top: "prob"  
}  

     pass:具体利用python生成deploy.prototxt文件请参看博文:点击博文地址

4、步骤3:生成labels.txt标签文件

     在当前目录下新建一个txt文件,命名为synset_words.txt,里面内容为我们训练mnist的图片内容,共有0~9十个数,那么我们就建立如下内容的标签文件:

5、步骤4:生成mean.binaryproto二进制均值文件

     均值文件分为二进制均值文件和python类均值文件。因为博主还未配置python接口,故未采用python方法,这也是之前一直出错的原因。

     生成均值文件的两种方法请参看博文:点击博文链接

     caffe作者为我们提供了一个计算均值的文件compute_image_mean.cpp,放在caffe根目录下的tools文件夹里面,运行下面命令生成mean.binaryproto二进制均值文件。

sudo build/tools/compute_image_mean examples/mnist/mnist_train_lmdb examples/mnist/mean.binaryproto 

     生成的mean.binaryproto均值文件保存在了examples/mnist目录下。

       在example文件夹中有一个cpp_classification的文件夹,打开它,有一个名为classification的cpp文件,这就是caffe提供给我们的调用分类网络进行前向计算,得到分类结果的接口。就是这个文件在命令中会得到classification.bin,具体我们可以不用管它,在其他caffemodel下不用修改也可以用,不像均值文件,不同的模型需要不同的均值文件。

       需要详细了解classification请参看博文(或其他资料):点击博文链接

       如果是按照python接口方法做此测试,均值文件及分类classification以及测试过程请参看博文:点击博文链接

7、步骤6:准备测试

      万事具备,只欠东风。下面我们就在caffe根目录下命令:

./build/examples/cpp_classification/classification.bin examples/mnist/deploy.prototxt examples/mnist/lenet_iter_10000.caffemodel examples/mnist/mean.binaryproto examples/mnist/synset_words.txt examples/images/3.jpg   
      读者也可以根据你们自己建立的文件的具体位置更改路径,这个相信我不用多说。
      下面看看我们的测试结果吧!

     

三、参考博文

           参考博文链接:http://blog.csdn.net/jiongnima/article/details/52681816?locationNum=11&fps=1
查看评论

caffe之利用mnist数据集训练好的lenet_iter_10000.caffemodel模型测试一张自己的手写体数字

一、前沿         写这篇博文,是因为一开始在做《21天学习caffe》第6天6.4练习题1的时候看着自己搜索的博文,在不理解其根本的情况下做的,结果显然是错的。在接下来阅读完源代码之后,在第1...
  • xunan003
  • xunan003
  • 2017-06-13 12:36:45
  • 3343

caffe---利用自己的手写数字进行测试

准备若干张手写数字用画图工具,画出28X28的数字 利用OpenCV进行图片预处理/*将图片转换成归一化的灰度图,这个程序只能一张一张处理,后面会写一个批处理的程序 *注意,opencv的图像都要放...
  • xinyu3307
  • xinyu3307
  • 2017-02-17 16:51:10
  • 1369

用caffe训练好的lenet_iter_10000.caffemodel测试单张mnist图片

接上个博客:http://blog.csdn.net/lanxuecc/article/details/52474476,前面已经生成了deploy.proto.txt。下面具体记录用lenet_it...
  • lanxueCC
  • lanxueCC
  • 2016-09-09 14:05:09
  • 11682

奔跑吧Caffe(在MNIST手写体数字集上用Caffe框架训练LeNet模型)

数据集背景: MNIST 是一个大型的手写体数字数据库,广泛应用于机器学习领域的训练和测试,由纽约大学Yann LeCun教授整理。 MNIST包括60000个训练集和10000测试集,图...
  • inslow
  • inslow
  • 2017-01-12 15:23:20
  • 1823

深度学习框架Caffe学习笔记(6)-测试自己的手写数字图片

Caffe测试自己的手写数字图片
  • u013407923
  • u013407923
  • 2016-11-08 17:53:09
  • 4402

深度学习框架Caffe学习笔记(2)-MNIST手写数字识别例程

MNIST(Mixed National Institute of Standards and Technology)是一个大型手写体数字识别数据库,广泛应用与机器学习领域的训练和测试。MNIST包括...
  • u013407923
  • u013407923
  • 2016-11-08 00:34:20
  • 2411

使用caffe训练好的模型测试单张手写数字

使用caffe训练好的模型测试单张手写数字
  • AUTO1993
  • AUTO1993
  • 2017-04-28 21:51:53
  • 1596

《21天实战Caffe》第六章习题6.4 自己的手写体数字图片送入lenet测试

在看完卜居老师的《21天实战Caffe》第六章后收获颇丰,对之前在Caffe官网看的Tutorial,超入门的examples mnist的训练与识别终于有了一个比较清晰的认识。 果然还是对英语写的指...
  • roach_zfq
  • roach_zfq
  • 2016-12-01 21:23:19
  • 2131

Caffe学习笔记(七):使用训练好的model做预测(mnist)

转载请注明作者和出处: http://blog.csdn.net/c406495762 Python版本: Python2.7 运行平台: Ubuntu14.04...
  • c406495762
  • c406495762
  • 2017-04-22 15:37:47
  • 7221

使用caffemodel模型(由mnist训练)测试单张手写数字样本

caffe中训练和测试mnist数据集都是批处理,可以反馈识别率,但是看不到单张样本的识别效果,这里使用windows自带的画图工具手写制作0~9的测试数字,然后使用caffemodel模型识别。 ...
  • dcrmg
  • dcrmg
  • 2017-06-21 20:56:12
  • 1246
    个人资料
    等级:
    访问量: 350
    积分: 341
    排名: 28万+
    文章存档