Caffe Minist 教程

Caffe Minist 教程

一、准备工作

  1. 下载 Caffe

    https://github.com/BVLC/caffe

    https://github.com/BVLC/caffe/tree/windows
  2. 下载 Mnist 数据集并解压
name describe
train-images-idx3-ubyte.gz 训练集图片文件
train-labels-idx1-ubyte.gz 训练集对应的标签文件
t10k-images-idx3-ubyte.gz 测试集图片文件
t10k-labels-idx1-ubyte.gz 测试集对应的标签文件

3.使用 convert_mnist_data.exe 工具转换数据

convert_mnist_data.exe
Usage:
convert_mnist_data [FLAGS] input_image_file input_label_file output_db_file

[FLAGS]:转换文件格式,可设置`lmdb`和`leveldb`格式,默认`lmdb`。
input_image_file:输入训练集图片文件
input_label_file:输入训练集标签文件
output_db_file:输出转换结果文件

例如:
convert_mnist_data.exe --backend=leveldb E:\GoogleDownloads\caffe\mnist\t10k-images.idx3-ubyte E:\GoogleDownloads\caffe\mnist\t10k-labels.idx1-ubyte E:\GoogleDownloads\caffe\mnist\mnist_test_leveldb


二、使用 Caffe.exe 工具进行训练和测试

usage:
caffe <command> <args>

command:
train           train or finetune a model          //训练或调整模型
test            score a model		                  //评估模型
device_query    show GPU diagnostic informatio   //显示GPU信息
time            benchmark model execution time  //检测模型执行时间

args:
-solver               //必须 ,模型配置文件
-gpu                  //可选,指定那一块GPU用来训练
-snapshot             //可选,从快照中恢复训练
-weights              //可选,不能和 snapshot 同时使用,用预先训练好的权重来微调模型
-iteration            //可选,迭代次数,默认50
-model                //可选,定义模型,也可以在 solver配置文件中指定。
-sighup_effect        //可选,可选参数。用来设定当程序发生挂起事件时,执行的操作,可以设置为snapshot, stop或none, 默认为snapshot
-sigint_effect        //可选参数。用来设定当程序发生键盘中止事件时(ctrl+c), 执行的操作,可以设置为snapshot, stop或none, 默认为stop
  1. 获取 配置文件lenet_solver.prototxt 和 网络模型lenet_train_test.prototxt 文件
获取位置:
在下载的 Caffe 源代码 caffe-windows\examples\mnist 目录
  1. 修改文件
修改 lenet_solver.prototxt 文件,把 net 即网络模型设置成你自己的路径,把快照备份路径更改为自己的路径
修改 lenet_train_test.prototxt 文件,把训练和验证数据路径更改为你自己的路径
mean_file:"xxx.mean"
  1. 使用 Caffe.exe 训练 并 测试
caffe.exe  train --solver=E:\\GoogleDownloads\\caffe\\mnist\\lenet_solver.prototxt

三、使用 classification.exe 工具进行分类测试

Usage:
classification.exe deploy.prototxt network.caffemodel mean.binaryproto labels.txt img.jpg

1. 准备网络模型文件

2. 准备训练好的 lenet_iter_10000.caffemodel 模型文件

3. 准备计算好的二进制均值文件 mnist.mean

4. 准备好与标签对应的解释文件,就是指这个标签的具体描述文件

5. 准备输入的图片文件

classification.exe E:\GoogleDownloads\caffe\mnist\lenet.prototxt \
E:\GoogleDownloads\caffe\mnist\lenet_iter_10000.caffemodel
E:\GoogleDownloads\caffe\mnist\mnist.mean \
E:\GoogleDownloads\caffe\mnist\synset_labels.txt \
E:\GoogleDownloads\caffe\mnist\Snipaste_2017-10-14_19-48-42.png

四、附录

1. 使用 convert_imageset.exe 工具把图像数据转换成db数据

Usage:
convert_imageset [FLAGS] ROOTFOLDER/ LISTFILE DB_NAME
FLAGS:
-gray: 是否以灰度图的方式打开图片。程序调用opencv库中的imread()函数来打开图片,默认为false
-shuffle: 是否随机打乱图片顺序。默认为false
-backend:需要转换成的db文件格式,可选为leveldb或lmdb,默认为lmdb
-resize_width/resize_height: 改变图片的大小。在运行中,要求所有图片的尺寸一致,因此需要改变图片大小。 程序调用opencv库的resize()函数来对图片放大缩小,默认为0,不改变
-check_size: 检查所有的数据是否有相同的尺寸。默认为false,不检查
-encoded: 是否将原图片编码放入最终的数据中,默认为false
-encode_type: 与前一个参数对应,将图片编码为哪一个格式:‘png','jpg'......

ROOTFOLDER/:图片数据集存放路径
LISTFILE:图片集标签文件,一般一个 txt 文件,一行一张图片和标签
DB_NAME:生成的 db 文件保存路径

2. 使用 compute_image_mean.exe 工具计算二进制均值文件

Usage:
compute_image_mean [FLAGS] INPUT_DB [OUTPUT_FILE]
FLAGS:
INPUT_DB:输入数据文件
OUTPUT_FILE:输出二进制均值文件
例如:
compute_image_mean.exe E:\GoogleDownloads\caffe\mnist\mnist_train_lmdb E:\GoogleDownloads\caffe\mnist\mnist.mean
posted @ 2017-10-14 20:18  學海無涯  阅读(314)  评论(0编辑  收藏  举报