Cifar-10 是由 Hinton 的学生 Alex Krizhevsky、Ilya Sutskever 收集的一个用于普适物体识别的计算机视觉数据集,它包含 60000 张 32 X 32 的 RGB 彩色图片,总共 10 个分类。其中,包括 50000 张用于训练集,10000 张用于测试集。
从网上下载该数据集,解压包含如下文件:
文件名称 文件大小
data_batch_1.bin 30010KB
data_batch_2.bin 30010KB
data_batch_3.bin 30010KB
data_batch_4.bin 30010KB
data_batch_5.bin 30010KB
test_batch.bin 30010KB
其中 data_batch_1.bin、data_batch_2.bin、data_batch_3.bin、data_batch_4.bin、data_batch_5.bin是训练集,test_batch.bin是测试集。
Tensorflow里面提供了使用CIFAR-10数据集的方法
1、从Tensorflow官网下载models模块,在 【tensorflow-models\tutorials\image\cifar10】 路径下有以下文件:
cifar10_input.py 读取cifar-10数据集文件
cifar10.py 建立cifar-10模型
cifar10_train.py 训练cifar-10数据集
cifar10_multi_gpu_train.py 在多GPU上训练cifar-10数据集
cifar10_eval.py 评估cifar-10模型的预测性能
其中,读取训练集数据的时候,在 cifar10_input.py 中做了数据增强处理,包括:
1)、裁剪图片到 24 x 24 像素,训练数据随机裁剪,测试数据裁剪中央区域
2)、近似白化处理图片
3)、随机左右翻转图像
4)、随机变换图像亮度
5)、随机变换图像对比度
处理过后的图片,用于训练或测试。
注意:如果你要在windows下使用这几个文件的话,你可能需要修改文件中的路径。
2、执行 cifar10_train.py 文件,进行训练。
源代码里的最大迭代次数为1000000
,我训练的时候迭代次数是6100
,loss最后收敛到0.94,一次迭代耗时 1.5 秒左右。
2017-03-31 16:56:41.185184: step 6030, loss = 1.05 (134.1 examples/sec; 0.955 sec/batch)
2017-03-31 16:56:50.849880: step 6040, loss = 0.92 (132.2 examples/sec; 0.969 sec/batch)
2017-03-31 16:57:00.620310: step 6050, loss = 0.93 (131.0 examples/sec; 0.977 sec/batch)
2017-03-31 16:57:10.433439: step 6060, loss = 1.05 (130.7 examples/sec; 0.980 sec/batch)
2017-03-31 16:57:20.313770: step 6070, loss = 1.03 (128.7 examples/sec; 0.995 sec/batch)
2017-03-31 16:57:31.502405: step 6080, loss = 1.01 (55.7 examples/sec; 2.300 sec/batch)
2017-03-31 16:57:52.039641: step 6090, loss = 0.91 (63.8 examples/sec; 2.007 sec/batch)
2017-03-31 16:58:09.060896: step 6100, loss = 0.94 (104.0 examples/sec; 1.230 sec/batch)
3、执行 cifar10_eval.py 文件,进行验证。
我迭代训练6100次的时候,验证结果为78.6%
2017-03-31 16:46:53.172024: precision @ 1 = 0.783
2017-03-31 16:52:28.170958: precision @ 1 = 0.783
2017-03-31 16:58:04.805582: precision @ 1 = 0.786