1. CIFAR简介
CIFAR是一个图像分类的数据集,包含60,000张32*32的图片,分十个类别(飞机、机动车、鸟类等等),每个类有1000张图片。整个数据集被分成50,000和10,000两部分,50,000是training set,用来做训练;10,000是test set,用来做验证
2. CIFAR结构介绍
官方数据源提供多种语言的数据集,如果你从官方数据源下载CIFAR的python版的数据集的话,数据集的结构是这样的:
- batches.meta
- data_batch_1
- data_batch_2
- data_batch_3
- data_batch_4
- data_batch_5
- test_batch
- readme.html
其中batches.meta保存的是元数据,是一个字典结构,包括
- num_cases_per_batch: 每一个batch的数据的数据的多少,这里是10,000
- label_names:标签的名称,在数据集中标签是按index分类,相应的index的名字就在这里
- num_vis:数据的维度,这里是3072
3. 读取CIFAR中的Image和Label
3.0 CIFAR数据集的数据结构
CIFAR是按一个字典的方式进行组织的,的每一个batch包含以下的内容
1. data:图片的信息,组织成10,000 * 3072的大小,3072就是把原来3* 32 * 32的图片序列化以后的大小,原来32*32的RGB图像按照R、G、B三个通道分别摆放成一个向量,所以恢复的时候会分别恢复出三个通道,在显示图像的时候要merge一下
2. labels:对应data里面每一个图片,所属的label
3. batch_label:当前所使用的的batch的编号
4. filenames:数据集里面每一张图片所对应的的文件名(这个不太重要)
CIFAR的数据集是用python的pickle包进行组织的,要读取数据集,首先要了解pickle的使用方法
3.1用pickle进行数据的序列化,保存到磁盘
pickle.dump( obj, file, protocol )
obj:你想要序列化的对象