文章目录
CIFAR-10 简介
官网:http://www.cs.toronto.edu/~kriz/cifar.html
CIFAR-10和CIFAR-100是8000个万小图像数据集的标记子集。它们由Alex Krizhevsky, Vinod Nair和Geoffrey Hinton收集。
CIFAR-10数据集包含60000张32x32彩色图像,分为10个类,每类6000张。有50000张训练图片和10000张测试图片。
数据集分为五个训练batches和一个测试batch,每个batch有10000张图像。测试batch包含从每个类中随机选择的1000个图像。训练batches以随机顺序包含剩余的图像,但有些训练batches可能包含一个类的图像多于另一个类的图像。在它们之间,训练batches包含来自每个类的5000张图像。
下面是数据集中的类,以及每个类的10张随机图片:
一共包含10 个类别的RGB 彩色图片:飞机( airplane )、汽车( automobile )、鸟类( bird )、猫( cat )、鹿( deer )、狗( dog )、蛙类( frog )、马( horse )、船( ship )和卡车( truck )。
这些类是完全相互排斥的。汽车和卡车之间没有重叠。“汽车”包括轿车、越野车之类的东西。“卡车”只包括大卡车。这两项都不包括皮卡。
该数据集的Python版本的布局:
存档包含文件data_batch_1, data_batch_2,…、data_batch_5以及test_batch。它们中各有10000 个样本。这些文件中的每一个都是使用 cPickle 生成的 Python“pickle” 对象(Python的序列化数据,详情参见:【Python】Python 中实现数据序列化)。下面是一个 Python2 的例子,它将打开这样一个文件并返回一个字典(Python2 的反序列化过程):
def unpickle(file):
import cPickle
with open(file, 'rb') as fo:
dict = cPickle.load(fo)
return dict
Python3 的反序列化过程:
def unpickle(file):
import pickle
with open(file, 'rb') as fo:
dict = pickle.load(fo, encoding='bytes')
return dict
以这种方式加载(反序列化后),每个批处理文件都包含一个字典,该字典包含以下元素:
-
数据——10000(样本数)x3072 (1024*3个通道值)numpy阵列的uint8。数组的每一行存储一个32x32的彩色图像。前1024项包含红色通道值,中间1024项包含绿色通道值,最后1024项包含蓝色通道值。图像按以行为主(row-major)的顺序存储,因此数组的前32个条目是图像第一行的红色通道值。
-
标签——从0到9的10000个数字的列表。索引
i
处的数字表示数组数据中第i
个图像的标签。
该数据集包含另一个名为 batch .meta 的文件。它也包含一个Python字典对象。它有以下条目:
- Label_names——一个10个元素的列表,为上面描述的标签数组中的数字标签提供有意义的名称。例如,label_names[0] == “airplane”, label_names[1] == “automobile”,等等。