1.简介
Cifar-10是由Hinton的两个大弟子Alex Krizhevsky、Ilya Sutskever收集的一个用于普适物体识别的数据集。Cifar是加拿大政府牵头投资的一个先进科学项目研究所。Cifar-10由60000张32*32的RGB彩色图片构成,共10个分类。50000张训练,10000张测试(交叉验证)。这个数据集最大的特点在于将识别迁移到了普适物体,而且应用于多分类,姊妹数据集Cifar-100达到100类,ILSVRC比赛则是1000类。 
 
2.下载数据集
特别注意:以下所有操作指令均需在caffe根目录下运行,否则当前路径和代码中路径不统一,运行不能成功,最简单就按照步骤在根目录下操作。 
 1)下载 
 在终端运行以下指令:
./data/cifar10/get_cifar10.sh查看get_cifar10.sh源码可知:
#!/usr/bin/env sh
# This scripts downloads the CIFAR10 (binary version) data and unzips it.
DIR="$( cd "$(dirname "$0")" ; pwd -P )"
cd "$DIR"
echo "Downloading..."
wget --no-check-certificate http://www.cs.toronto.edu/~kriz/cifar-10-binary.tar.gz
echo "Unzipping..."
tar -xf cifar-10-binary.tar.gz && rm -f cifar-10-binary.tar.gz
mv cifar-10-batches-bin/* . && rm -rf cifar-10-batches-bin
# Creation is split out because leveldb sometimes causes segfault
# and needs to be re-created.
echo "Done."
代码对cifar-10-binary.tar.gz目标文件分别执行了:下载→解压→删除→移动→删除操,操作。如果在Linux下载慢的话,我们可以将下载部分屏蔽,改为手动下载,下载地址:https://www.cs.toronto.edu/~kriz/cifar.html,将下载好的cifar-10-binary.tar.gz拷贝到CAFFE_ROOT/data/cifar10目录下,再执行屏蔽了下载步骤的get_cifar10.sh,不嫌麻烦也可按照代码内容手动完成所有步骤。
2)结果 
 以上操作后在CAFFE_ROOT/data/cifar10目录下得到如下文件:
- 训练集原始图片:
data_batch_1.bin data_batch_2.bin data_batch_3.bin data_batch_4.bin data_batch_5.bin在介绍Cifar-10数据集的时候已经说过,这五个文件就是那50000个训练集,每一个bin文件存放了1万张32*32的RGB彩色图片。
- 测试集原始图片:
test_batch.bin同样的,这个bin文件就是存放了1万张32*32的RGB彩色图片,这些图片是用来测试的。
- 类别说明文件:
batches.meta.txt2.图片格式转换和计算图片数据的均值
在CAFFE_ROOT下执行:
./examples/cifar10/create_cifar10.sh生成了三个文件: 
 - cifar10_train_lmdb:用于Caffe训练的lmdb文件 
 - cifar10_test_lmdb:用于Caffe测试的lmdb文件 
 - mean.binaryproto:根据cifar10_train_lmdb计算出的图片数据均值
3.prototxt配置文件编写
可以直接使用CAFFE_ROOT/examples/cifar10/cifar10_quick.prototxt 。 
 Caffe框架就是根据设置的prototxt文件,选择相应的模型进行训练的。此例程根据examples/cifar10/cifar10_quick_solver.prototxt这个配置文件建立模型。名为cifar10_quick_solver的CNN模型由卷基层(convolution)、池化层(pooling)、非线性ReLU层(rectified linear unit (ReLU) nonlinearities)和在顶端的局部对比归一化线性分类器组成(local contrast normalization with a linear classifier on top of it all)。 
4.训练模型
在CAFFE_ROOT下执行:
./examples/cifar10/train_quick.shCPU和GPU硬件加速,只需要简单地更改所有’cifar*solver.prototxt’(*是通配符)文件中的第一行solver_mode即可,solver_mode: CPU就是用CPU进行训练,solver_mode:GPU就是用GPU进行训练。 
  
 训练生成的文件:
- cifar10_quick_iter_5000.caffemodel.h5:迭代5000次训练出来的模型,后面就用这个模型来做分类
- cifar10_quick_iter_5000.solverstate.h5:也是迭代5000次训练出来的模型,应该是用来中断后继续训练用的文件。
5.使用python接口应用模型预测
(1)caffe开发团队实际上也编写了一个Python版本的分类文件,路径为CAFFE_ROOT/python/classify.py,使用classify.py代码进行图像文件预测,该文件有两个问题:第一、均值计算错误。第二、预测结果保存至文件中看不到。
- 修改均值计算错误 
 在classify.py文件找到
mean = np.load(args.mean_file)  在下面加上一行:
mean = np.load(args.mean_file)  
mean=mean.mean(1).mean(1)  - 添加结果显示 
 最简单的方法是,在CAFFE_ROOT/python/classify.py添加:
print("Predictions:%s" % predictions) 
 (2)准备测试图片,在CAFFE_ROOT/examples/images下有cat.jpg等图片,也可以自己添加其他类别,如狗、鸟等。 
  
 选择我自己添加的dog2.jpg为例,执行如下指令:
python python/classify.py --model_def examples/cifar10/cifar10_quick.prototxt --pretrained_model examples/cifar10/cifar10_quick_iter_5000.caffemodel.h5  --center_only  examples/images/dog2.jpg foo得到如下结果:
...
Loading file: examples/images/dog2.jpg
Classifying 1 inputs.
Done in 0.02 s.
Predictions:[[ 0.17054561  0.00093318  0.08521238  0.10496119  0.05348967  0.35711768  0.00478963  0.01122217  0.20208922  0.00963932]]
Saving results into foo最大数值0.35711768下标5,在分类标签文件CAFFE_ROOT/data/clfar10/batches.meta.txt中对应‘dog’。 
 
cifar10数据集预测结果准确率较低,此处只作为实验用。
 
 参考文献:
 
                   
                   
                   
                   
                            
 
                             本文介绍如何使用Caffe框架处理Cifar-10数据集,包括数据集下载、图片格式转换、计算图片均值、配置prototxt文件、训练模型以及使用模型进行预测的过程。
本文介绍如何使用Caffe框架处理Cifar-10数据集,包括数据集下载、图片格式转换、计算图片均值、配置prototxt文件、训练模型以及使用模型进行预测的过程。
           
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
              
             
                   1143
					1143
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
            


 
            