caffe学习(一):CIFAR-10
2016-08-01 11:48
267 查看
前段时间一直在弄tensorflow,现在实习公司项目需要对比tensorflow与caffe在图像分类上哪个更好,所以小编我现在只能先把tensorflow放一边,搞一搞caffe。
网上有很多这样的资源,可是大家写的都一样,运行起来还有好多没有写明白的,为了以后再用到,同时方便像我这样的新手学习,我将把我在caffe上运行CIFAR-10例子的过程尽可能的写的详细一点。
先简单介绍一下CIFAR-10。
![](http://static.open-open.com/lib/uploadImg/20150123/20150123144050_362.jpg)
具体操作实现:
(1)获取数据库
#下面假定caffe的根目录是 CAFFE_ROOT,在终端输入命令下载数据集:
cd $CAFFE_ROOT
./data/cifar10/get_cifar10.sh #该脚本会下载二进制的cifar,并解压,会在/data/cifar10中出现很多batch文件./examples/cifar10/create_cifar10.sh #运行后将会在examples中出现数据集./cifar10_xxx_lmdb和数据集图像均值./mean.binaryprot
上边是比较笼统的数据下载过程,主要分为两步:下载与转换。但是,对于一个新手来说,这点提示完全不知道该怎么做,小编我就不明白,后来经过自己的不断尝试,终于搞定了。所以好多东西靠网上还是不靠谱的,还是要靠自己不断尝试。下面给出具体的步骤:
1)运行get_cifar10.sh 文件。
小编这里,该文件所在位置为 Downloads/caffe-master/data/cifar10
用 cd 命令定位到该文件所在处:
如:
然后再执行: ./get_cifar10.sh 命令,下载数据
2)运行create_cifar10.sh 文件。
小编这里,该文件所在位置为 Downloads/caffe-master/examples/cifar10
由于create_cifar10.sh 文件只在根目录下运行,所以如果先将位置定位到create_cifar10 所在文件夹处,再运行 create_cifar10 是会报错误的。
报出如下错误:
./create_cifar10.sh: 13: ./create_cifar10.sh: ./build/examples/cifar10/convert_cifar_data.bin: not found
所以用如下语句执行 create_cifar10.sh 文件。 运行后将会在examples中出现数据集./cifar10_xxx_lmdb和数据集图像均值./mean.binaryproto
create_cifar10.sh 所做的工作就是将图片库转成leveldb格式,并计算均值二进制文件
运行之后,将会在examples中出现数据库文件./cifar10-leveldb和数据库图像均值二进制文件./mean.binaryproto
(2)开始训练 #$CAFFE_ROOT为 caffe 的根目录
cd $CAFFE_ROOT
./examples/cifar10/train_quick.sh
具体操作如下:
训练完成后我们会得到:
cifar10_quick_iter_4000.caffemodel.h5
cifar10_quick_iter_4000.solverstate.h5
此时,我们就训练得到了模型,用于后面的分类
运行中出现的问题:
在执行训练语句后,出现提示问题:
sgg@ubuntu:~/Downloads/caffe-master$ ./examples/cifar10/train_quick.sh
I0802 17:42:26.469802 5520 caffe.cpp:217] Using GPUs 0
F0802 17:42:26.470361 5520 common.cpp:66] Cannot use GPU in CPU-only Caffe: check mode.
在配置Makefile.config已经将其变为CPU-only 了,可还是出现这样的问题,这是由于在 cifar10_quick_solver.prototxt中未将其解决模式改为CPU。其他的找到相应的solver.prototxt进行更改。
![](http://img.blog.csdn.net/20160803091852639?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
(3)使用训练的模型来分类新数据
先直接用一下别人的模型分类试一下:(默认用的ImageNet的模型)
python python/classify.py examples/images/cat.jpg foo
下面我们来指定自己的模型进行分类:
上面这句话的意思是,使用cifar10_quick.prototxt网络 + cifar10_quick_iter_4000.caffemodel.h5模型,对examples/images/cat.jpg图片进行分类。
默认的classify脚本不会直接输出结果,而是会把结果输入到foo文件里,不太直观,这里我在网上找了一个修改版,添加了一些参数,可以输出概率最高的分类。
替换python/classify.py,下载地址:http://download.csdn.net/detail/caisenchuan/9513196
这个脚本添加了两个参数,可以指定labels_file,然后可以直接把分类结果输出出来:
输出结果:
Tips
最后,总结一下训练一个网络用到的相关文件:
cifar10_quick_solver.prototxt:方案配置,用于配置迭代次数等信息,训练时直接调用caffe train指定这个文件,就会开始训练
cifar10_quick_train_test.prototxt:训练网络配置,用来设置训练用的网络,这个文件的名字会在solver.prototxt里指定
cifar10_quick_iter_4000.caffemodel.h5:训练出来的模型,后面就用这个模型来做分类
cifar10_quick_iter_4000.solverstate.h5:也是训练出来的,应该是用来中断后继续训练用的文件
cifar10_quick.prototxt:分类用的网络
模型介绍
模型描述在examples/cifar10/cifar10_quick_solver.prototxt 和 examples/cifar10/cifar10_quick_train_test.prototxt 中。
模型训练是 执行 train_quick.sh
网上有很多这样的资源,可是大家写的都一样,运行起来还有好多没有写明白的,为了以后再用到,同时方便像我这样的新手学习,我将把我在caffe上运行CIFAR-10例子的过程尽可能的写的详细一点。
先简单介绍一下CIFAR-10。
使用数据库:CIFAR-10
60000张 32X32 彩色图像 10类,50000张训练,10000张测试![](http://static.open-open.com/lib/uploadImg/20150123/20150123144050_362.jpg)
具体操作实现:
(1)获取数据库
#下面假定caffe的根目录是 CAFFE_ROOT,在终端输入命令下载数据集:
cd $CAFFE_ROOT
./data/cifar10/get_cifar10.sh #该脚本会下载二进制的cifar,并解压,会在/data/cifar10中出现很多batch文件./examples/cifar10/create_cifar10.sh #运行后将会在examples中出现数据集./cifar10_xxx_lmdb和数据集图像均值./mean.binaryprot
上边是比较笼统的数据下载过程,主要分为两步:下载与转换。但是,对于一个新手来说,这点提示完全不知道该怎么做,小编我就不明白,后来经过自己的不断尝试,终于搞定了。所以好多东西靠网上还是不靠谱的,还是要靠自己不断尝试。下面给出具体的步骤:
1)运行get_cifar10.sh 文件。
小编这里,该文件所在位置为 Downloads/caffe-master/data/cifar10
用 cd 命令定位到该文件所在处:
如:
sgg@ubuntu:~$ cd Downloads sgg@ubuntu:~/Downloads$ cd caffe-master #定位到根目录
然后再执行: ./get_cifar10.sh 命令,下载数据
sgg@ubuntu:~/Downloads/caffe-master$ ./data/cifar10/get_cifar10.sh
#该脚本会下载二进制的cifar,并解压,会在/data/cifar10中出现很多batch文件
2)运行create_cifar10.sh 文件。
小编这里,该文件所在位置为 Downloads/caffe-master/examples/cifar10
由于create_cifar10.sh 文件只在根目录下运行,所以如果先将位置定位到create_cifar10 所在文件夹处,再运行 create_cifar10 是会报错误的。
报出如下错误:
./create_cifar10.sh: 13: ./create_cifar10.sh: ./build/examples/cifar10/convert_cifar_data.bin: not found
所以用如下语句执行 create_cifar10.sh 文件。 运行后将会在examples中出现数据集./cifar10_xxx_lmdb和数据集图像均值./mean.binaryproto
sgg@ubuntu:~$ cd Downloads sgg@ubuntu:~/Downloads$ cd caffe-master sgg@ubuntu:~/Downloads/caffe-master$ ./examples/cifar10/create_cifar10.sh
create_cifar10.sh 所做的工作就是将图片库转成leveldb格式,并计算均值二进制文件
运行之后,将会在examples中出现数据库文件./cifar10-leveldb和数据库图像均值二进制文件./mean.binaryproto
(2)开始训练 #$CAFFE_ROOT为 caffe 的根目录
cd $CAFFE_ROOT
./examples/cifar10/train_quick.sh
具体操作如下:
sgg@ubuntu:~$ cd Downloads sgg@ubuntu:~/Downloads$ cd caffe-master sgg@ubuntu:~/Downloads/caffe-master$ ./examples/cifar10/train_quick.sh# ./train_quick.sh 命令,训练数据
训练完成后我们会得到:
cifar10_quick_iter_4000.caffemodel.h5
cifar10_quick_iter_4000.solverstate.h5
此时,我们就训练得到了模型,用于后面的分类
运行中出现的问题:
在执行训练语句后,出现提示问题:
sgg@ubuntu:~/Downloads/caffe-master$ ./examples/cifar10/train_quick.sh
I0802 17:42:26.469802 5520 caffe.cpp:217] Using GPUs 0
F0802 17:42:26.470361 5520 common.cpp:66] Cannot use GPU in CPU-only Caffe: check mode.
在配置Makefile.config已经将其变为CPU-only 了,可还是出现这样的问题,这是由于在 cifar10_quick_solver.prototxt中未将其解决模式改为CPU。其他的找到相应的solver.prototxt进行更改。
(3)使用训练的模型来分类新数据
先直接用一下别人的模型分类试一下:(默认用的ImageNet的模型)
python python/classify.py examples/images/cat.jpg foo
下面我们来指定自己的模型进行分类:
python python/classify.py --model_def examples/cifar10/cifar10_quick.prototxt --pretrained_model examples/cifar10/cifar10_quick_iter_4000.caffemodel.h5 --center_only examples/images/cat.jpg foo
上面这句话的意思是,使用cifar10_quick.prototxt网络 + cifar10_quick_iter_4000.caffemodel.h5模型,对examples/images/cat.jpg图片进行分类。
默认的classify脚本不会直接输出结果,而是会把结果输入到foo文件里,不太直观,这里我在网上找了一个修改版,添加了一些参数,可以输出概率最高的分类。
替换python/classify.py,下载地址:http://download.csdn.net/detail/caisenchuan/9513196
这个脚本添加了两个参数,可以指定labels_file,然后可以直接把分类结果输出出来:
python python/classify.py --print_results --model_def examples/cifar10/cifar10_quick.prototxt --pretrained_model examples/cifar10/cifar10_quick_iter_4000.caffemodel.h5 --labels_file data/cifar10/cifar10_words.txt --center_only examples/images/cat.jpg foo
输出结果:
Loading file: examples/images/cat.jpg Classifying 1 inputs. predict 3 inputs. Done in 0.02 s. Predictions : [[ 0.03903743 0.00722749 0.04582177 0.44352672 0.01203315 0.11832549 0.02335102 0.25013766 0.03541689 0.02512246]] python/classify.py:176: FutureWarning: sort(columns=....) is deprecated, use sort_values(by=.....) labels = labels_df.sort('synset_id')['name'].values [('cat', '0.44353'), ('horse', '0.25014'), ('dog', '0.11833'), ('bird', '0.04582'), ('airplane', '0.03904')] 上面标明了各个分类的顺序和置信度 Saving results into foo
Tips
最后,总结一下训练一个网络用到的相关文件:
cifar10_quick_solver.prototxt:方案配置,用于配置迭代次数等信息,训练时直接调用caffe train指定这个文件,就会开始训练
cifar10_quick_train_test.prototxt:训练网络配置,用来设置训练用的网络,这个文件的名字会在solver.prototxt里指定
cifar10_quick_iter_4000.caffemodel.h5:训练出来的模型,后面就用这个模型来做分类
cifar10_quick_iter_4000.solverstate.h5:也是训练出来的,应该是用来中断后继续训练用的文件
cifar10_quick.prototxt:分类用的网络
模型介绍
模型描述在examples/cifar10/cifar10_quick_solver.prototxt 和 examples/cifar10/cifar10_quick_train_test.prototxt 中。
模型训练是 执行 train_quick.sh
相关文章推荐
- caffe学习1--cifar10
- Caffe深度学习进阶之Cifar-10分类任务(下)
- caffe学习--cifar10学习-ubuntu16.04-gtx650tiboost--1g--03--20171103
- Windows Caffe 学习笔记(零)CIFAR-10数据的格式转换
- 【caffe学习】caffe第二个比较典型的识别例子CIFAR_10的运行详解
- caffe学习笔记之Caffe for Windows 训练cifar10
- caffe读书笔记1 CIFAR-10在caffe上进行训练与学习
- 【神经网络与深度学习】基于Windows+Caffe的Minst和CIFAR—10训练过程说明
- CIFAR-10在caffe上进行训练与学习出现compute_image_mean: not found问题
- CIFAR-10 在Caffe上训练学习
- caffe读书笔记1 CIFAR-10在caffe上进行训练与学习
- 【深度学习】笔记4_caffe第二个比较经典的[小图片]识别例子CIFAR_10的运行,网络模型的详解
- Caffe深度学习进阶之Cifar-10分类任务(上)
- caffe学习:CIFAR-10
- Caffe学习-CIFAR-10
- 深度学习Caffe平台实例——CIFAR-10数据集在caffe平台上模型训练及实例使用模型进行预测
- CIFAR-10在caffe上进行训练与学习
- Caffe学习记录:Cifar-10 自定义网络训练记录
- 薛开宇学习笔记一之总结笔记(CIFAR-10 在 在 caffe 上进行训练与学习)--Linux语法总结
- Windows Caffe 学习笔记(一)训练和测试CIFAR-10数据集