计算机视觉caffe之路第三篇:CIFAR-10数据集训练及预测实例
2017-06-12 11:40
423 查看
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.txt
2.图片格式转换和计算图片数据的均值
在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.sh
CPU和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数据集预测结果准确率较低,此处只作为实验用。
参考文献:
CNN训练Cifar-10技巧
Caffe学习笔记(一):CIFRA-10在Caffe上进行训练学习
深度学习Caffe平台实例——CIFAR-10数据集在caffe平台上模型训练及实例使用模型进行预测
相关文章推荐
- 计算机视觉caffe之路第五篇:ImageNet数据集训练及预测实例
- 计算机视觉caffe之路第四篇:VOC2007数据集训练及预测实例
- caffe初探之-caffe使用CIFAR-10数据集训练网络
- 深度学习Caffe平台实例——CIFAR-10数据集在caffe平台上模型训练及实例使用模型进行预测
- Windows Caffe 学习笔记(零)CIFAR-10数据的格式转换
- 计算机视觉caffe之路附1:Ubuntu+Opencv+Caffe开发深度学习常见错误及经验
- 计算机视觉caffe之路附2:caffe资源汇总
- 计算机视觉caffe之路第五篇:关于ssd_detect.cpp的使用方法
- 计算机视觉caffe之路第二篇:TX1基本操作和测试
- 计算机视觉标准数据集整理—CIFAR-100数据集
- 计算机视觉caffe之路附3: Caffe均值文件mean.binaryproto转mean.npy
- 计算机视觉caffe之路第一篇:Ubuntu16.04_Jetson TX1_Caffe_ssd环境配置
- Windows Caffe 学习笔记 CIFAR-10数据的格式转换
- caffe学习(五):cifar-10数据集训练及测试(Ubuntu)
- TensorFlow实现Cifar-10数据集训练
- 胖子哥的大数据之路(10)- 基于Hive构建数据仓库实例
- 机器学习、数据挖掘、计算机视觉等领域经典书籍推荐
- 机器学习、数据挖掘、计算机视觉等领域经典书籍推荐
- 经典的机器学习方面源代码库(非常全,数据挖掘,计算机视觉,模式识别,信息检索相关领域都适用的了)
- 机器学习、数据挖掘、计算机视觉等领域经典书籍推荐