一. 装完caffe当然要来跑跑自带的demo,在examples文件夹下。

先来试试用于手写数字识别的mnist,在 examples/mnist/ 下有需要的代码文件,但是没有图像库。

mnist库有50000个训练样本,10000个测试样本,都是手写数字图像。

  caffe支持的数据格式为:LMDB  LEVELDB

  IMDB比LEVELDB大,但是速度更快,且允许多种训练模型同时读取同一数据集。

  默认情况,examples里支持的是IMDB文件,不过你可以修改为LEVELDB,后面详解。

  mnist数据集建议网上搜索下载,网盘有很多,注意将文件夹放到\examples\mnist目录下,且最好命名为图中格式,

否则可能无法读取文件需手动配置。

  笔者之前下的数据集命名的下划线是连接线就会报错无法读取文件,所以注意文件夹名字!

Windows下最好选择LEVELDB文件,Linux则随意了。下好了LEVELDB文件就不用再使用convert_imageset函数了,省去了转换图片格式和计算均值的步骤。

  二. 训练mnist模型

  mnist的网络训练模型文件为: lenet_train_test.prototxt

name: "LeNet"
layer {
name: "mnist"
type: "Data"
top: "data"
top: "label"
include {
phase: TRAIN
}
transform_param {
scale: 0.00390625
}
data_param {
source: "examples/mnist/mnist_train_leveldb"
batch_size:
backend: LEVELDB
}
}
layer {
name: "mnist"
type: "Data"
top: "data"
top: "label"
include {
phase: TEST
}
transform_param {
scale: 0.00390625
}
data_param {
source: "examples/mnist/mnist_test_leveldb"
batch_size:
backend: LEVELDB
}
}
layer {
name: "conv1"
type: "Convolution"
bottom: "data"
top: "conv1"
param {
lr_mult:
}
param {
lr_mult:
}
convolution_param {
num_output:
kernel_size:
stride:
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layer {
name: "pool1"
type: "Pooling"
bottom: "conv1"
top: "pool1"
pooling_param {
pool: MAX
kernel_size:
stride:
}
}
layer {
name: "conv2"
type: "Convolution"
bottom: "pool1"
top: "conv2"
param {
lr_mult:
}
param {
lr_mult:
}
convolution_param {
num_output:
kernel_size:
stride:
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layer {
name: "pool2"
type: "Pooling"
bottom: "conv2"
top: "pool2"
pooling_param {
pool: MAX
kernel_size:
stride:
}
}
layer {
name: "ip1"
type: "InnerProduct"
bottom: "pool2"
top: "ip1"
param {
lr_mult:
}
param {
lr_mult:
}
inner_product_param {
num_output:
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layer {
name: "relu1"
type: "ReLU"
bottom: "ip1"
top: "ip1"
}
layer {
name: "ip2"
type: "InnerProduct"
bottom: "ip1"
top: "ip2"
param {
lr_mult:
}
param {
lr_mult:
}
inner_product_param {
num_output:
weight_filler {
type: "xavier"
}
bias_filler {
type: "constant"
}
}
}
layer {
name: "accuracy"
type: "Accuracy"
bottom: "ip2"
bottom: "label"
top: "accuracy"
include {
phase: TEST
}
}
layer {
name: "loss"
type: "SoftmaxWithLoss"
bottom: "ip2"
bottom: "label"
top: "loss"
}

一般修改两个DATA层的 “source”文件路径就行,上面的例子中,我已经改了,改为mnist的训练集和测试集文件夹路径。再就是注意“backend: LEVELDB”,默认的backend应该是IMDB要修改!

  网络模型 lenet_train_test.prototxt修改后再修改 lenet_solver.prototxt

该文件主要是一些学习参数和策略:

  

 # The train/test net protocol buffer definition
net: "examples/mnist/lenet_train_test.prototxt"
# test_iter specifies how many forward passes the test should carry out.
# In the case of MNIST, we have test batch size and test iterations,
# covering the full , testing images.
test_iter:
# Carry out testing every training iterations.
test_interval:
# The base learning rate, momentum and the weight decay of the network.
base_lr: 0.01
momentum: 0.9
weight_decay: 0.0005
# The learning rate policy
lr_policy: "inv"
gamma: 0.0001
power: 0.75
# Display every iterations
display:
# The maximum number of iterations
max_iter:
# snapshot intermediate results
snapshot:
snapshot_prefix: "examples/mnist/lenet"
# solver mode: CPU or GPU
solver_mode: CPU

带#的注释可以不管,能理解最好:

  第二行的 net:  路径需改为自己的网络模型xx_train_test.prototxt路径。其他的学习率 base_lr,lr_policy等不建议修改;max_iter最大迭代次数可以稍微改小,display显示间隔也可以随意修改~最后一行,我是只有CPU模式所以设为CPU,如果可以用GPU加速可设为GPU!

  到这基本设置就结束了,然后就是写命令执行测试程序了:

我选择写了批处理.bat文件执行,也可以直接在CMD环境输命令执行。

  新建mnist_train.bat,内容如下:

cd ../../
"Build/x64/Debug/caffe.exe" train --solver=examples/mnist/lenet_solver.prototxt
pause

根据自己的情况修改第二行的路径位置,Windows应该都是在Build/x64目录下,有的博客写的/bin/目录其实是Linux的并不适用于Windows环境。还要注意使用斜线“/”,不要使用“\”无法识别,Python代码多为后者要修改!

我的环境只有Debug目录,如果你有Realease目录,使用Realease目录。

运行.bat成功后,会开始训练,训练结束界面如下:

  最后几行可以看到accuracy的准确率可以达到99%,也是相当准确了!

提示,caffe文件夹内会生成.caffemodel文件

使用caffemodel文件开始测试:

  三.测试数据

  由于测试数据集也是直接下载好了的LEVELDB文件,所以省了不少步骤

  直接新建mnist_test.bat文件,类似训练mnist模型一样,对该模型进行数据测试。  

cd ../../
"Build/x64/Debug/caffe.exe" test --model=examples/mnist/lenet_train_test.prototxt -weights=examples/mnist/lenet_iter_10000.caffemodel
pause

  类似mnits_train.bat,修改文件路径名,test表示用于测试,model指向自己的网络模型文件,最后添加权值文件.caffemodel进行测试。

  运行mnist_test.bat后,成功界面如下:

  

  最后一行还是有98%的准确率还是很不错的,说明模型生成的还不错。

  

总结:其实还遇到了不少零零碎碎的问题,大多都可以百度解决,主要是记得修改对自己的文件路径目录,Windows下一定要使用LEVELDB数据文件,.prototxt也记得修改,然后就是等待模型跑完看结果了,看到高准确率还是很开心的~

  四. 使用该模型

  模型训练好了,数据也只是测试了,那么我们要使用该模型判断一张图片是数字几该如何做呢?

这个时候需要生成 classification.exe,然后执行相应的.bat命令来预测图片的分类结果。

  mnist分类使用可以参考http://www.cnblogs.com/yixuan-xu/p/5862657.html

  发现OpenCV可以加载caffe 框架模型,准备再写一篇博客进行实践介绍~

http://docs.opencv.org/3.1.0/d5/de7/tutorial_dnn_googlenet.html

Windows caffe 跑mnist实例的更多相关文章

  1. 用caffe跑自己的数据,基于WINDOWS的caffe

    本文详细介绍,如何用caffe跑自己的图像数据用于分类. 1 首先需要安装过程见 http://www.cnblogs.com/love6tao/p/5706830.html 同时依据上面教程,生成了 ...

  2. 运行caffe自带的mnist实例教程

    运行caffe自带的mnist实例教程 本文结合几篇博文总结下来的,附上其中一篇原博文链接以供参考:http://blog.sina.com.cn/s/blog_168effc7e0102xjr1.h ...

  3. caffe mnist实例 --lenet_train_test.prototxt 网络配置详解

    1.mnist实例 ##1.数据下载 获得mnist的数据包,在caffe根目录下执行./data/mnist/get_mnist.sh脚本. get_mnist.sh脚本先下载样本库并进行解压缩,得 ...

  4. Windows下用Caffe跑自己的数据(遥感影像)

    1 前言 Caffe对于像我这样的初学者来说是一款非常容易上手的深度学习框架.关于用Caffe跑自己的数据这样的博客已经非常多,感谢前辈们为我们提供的这么好的学习资源.这里我主要结合我所在的行业,说下 ...

  5. windows下使用caffe测试mnist数据集

    在win10机子上装了caffe,感谢大神们的帖子,要入坑caffe-windows的朋友们看这里,还有这里,安装下来基本没什么问题. 好了,本博文写一下使用caffe测试mnist数据集的步骤. 1 ...

  6. Windows+Caffe+VS2013+python接口配置过程

    前段时间在笔记本上配置了Caffe框架,中间过程曲曲折折,但由于懒没有将详细过程总结下来,这两天又在一台配置较高的台式机上配置了Caffe,配置时便非常后悔当初没有写到博客中去,现已配置好Caffe, ...

  7. caffe 试运行MNIST

    转自:http://www.cnblogs.com/NanShan2016/p/5469942.html 编译完caffe后,在D:\caffe\caffe-master\caffe-master\b ...

  8. mxnet实战系列(一)入门与跑mnist数据集

    最近在摸mxnet和tensorflow.两个我都搭起来了.tensorflow跑了不少代码,总的来说用得比较顺畅,文档很丰富,api熟悉熟悉写代码没什么问题. 今天把两个平台做了一下对比.同是跑mn ...

  9. Caffe系列4——基于Caffe的MNIST数据集训练与测试(手把手教你使用Lenet识别手写字体)

    基于Caffe的MNIST数据集训练与测试 原创:转载请注明https://www.cnblogs.com/xiaoboge/p/10688926.html  摘要 在前面的博文中,我详细介绍了Caf ...

随机推荐

  1. redis cli命令

    redis安装后,在src和/usr/local/bin下有几个以redis开头的可执行文件,称为redis shell,这些可执行文件可做很多事情. 可执行文件 作用 redis-server  启 ...

  2. centos7之rsync+serrsync

    Rsync+Inotify-tools与Rsync+sersync这两种架构有什么区别 1.Rsync+Inotify-tools(1):Inotify-tools只能记录下被监听的目录发生了变化(包 ...

  3. Scanner和BufferReader的效率问题

    先给出一道题,测试平台是Acwing, 这道题是腾讯2019年春招提前批笔试第二题.题目不难,但是如果不注意细节,很容易TLE(超时) https://www.acwing.com/problem/c ...

  4. Python——Django-模板

    一.模板的种类 1.变量 {{变量名}} 2.语句类{% %} 2.1 {%for i in booklist%} {{i}} {%endfor%} 2.2 {%if 10>5%} {%else ...

  5. Linux 学习 (十) 网络配置

    Linux网络管理 学习笔记 配置 IP 地址 ifconfig 命令临时配置 IP 地址 ifconfig eth0 192.168.0.200 netmask 255.255.255.0 #临时设 ...

  6. 【数学建模】偏最小二乘回归分析(PLSR)

    PLSR的基本原理与推导,我在这篇博客中有讲过. 0.偏最小二乘回归集成了多元线性回归.主成分分析和典型相关分析的优点,在建模中是一个更好的选择,并且MATLAB提供了完整的实现,应用时主要的问题是: ...

  7. [十二省联考2019]字符串问题——后缀自动机+parent树优化建图+拓扑序DP+倍增

    题目链接: [十二省联考2019]字符串问题 首先考虑最暴力的做法就是对于每个$B$串存一下它是哪些$A$串的前缀,然后按每组支配关系连边,做一遍拓扑序DP即可. 但即使忽略判断前缀的时间,光是连边的 ...

  8. shell脚本自动化部署服务

    shell脚本自动化部署 !/bin/bash #export PATH=$PATH:/export/maven/bin run_flag_dir="/data0/shell/deploy_ ...

  9. 【dp】求最长上升子序列

    题目描述 给定一个序列,初始为空.现在我们将1到N的数字插入到序列中,每次将一个数字插入到一个特定的位置.我们想知道此时最长上升子序列长度是多少? 输入 第一行一个整数N,表示我们要将1到N插入序列中 ...

  10. 【mysql】mysql存储引擎

    了解存储引擎我们先看下mysql的体系架构. 上图是mysql的逻辑架构图,可以看到分了几层. 第一层是大部分网路客户端工具,比如php,python  ,JDBC等,主要功能就是连接处理,授权认证等 ...