CIFAR数据集解读

CIFAR数据集解读

CIFAR数据集由 Alex Krizhevsky,Vinod Nair 和 Geoffrey Hinton 收集整理自8000万张微型图像数据集,其中CIFAR数据集又根据所涉及的分类对象数量,可分为CIFAR-10和CIFAR-100。该数据集主要用于深度学习的图像分类,目前已被广泛应用。

CIFAR数据集官网:http://www.cs.toronto.edu/~kriz/cifar.html

CIFAR-10 数据集

基本介绍

CIFAR数据集解读

如上图所示,CIFAR-10数据集包含了飞机、汽车、鸟等10个类别物体的32×32大小的彩色图片,每个类别有6000张图,计算可知,整个数据集一共有 6000×10=60000 张图。其中,automobiles (汽车)和 trucks(卡车)尽管都属于车类,但二者在分类时属于不同的类,不存在重叠。汽车主要包括轿车、越野车之类的车;而卡车则只包含大卡车,皮卡车这样的车则不属于上述任意类别。

数据集划分了训练集和测试集。训练集一共50000张图,每10000张作为一个批次(batch),每个批次包含了来自10个类别的10000张图片。训练集的批次是随机抽取的各个类中的图像,因此存在某一个类的图像数量多于另一个类的图像数量。测试集一共10000张图,也包含了随机从每个类中抽取的1000张图。

下载

CIFAR-10 数据集提供了供 python、matlab、c 读取的数据文件,具体如下:

版本 文件大小 MD5检验码
CIFAR-10 python version 163 MB c58f30108f718f92721af3b95e74349a
CIFAR-10 Matlab version 175 MB 70270af85842c9e89bb428ec9976c926
CIFAR-10 binary version (suitable for C programs) 162 MB c32a1d4ab5d03f1284b67883e8d87530

数据解读

python和matlab版本

对于python和matlab版本,下载得到文件解压后,会得到如下结构的文件:

CIFAR数据集解读

即已经分好了的五个batch数据以及一个测试batch数据。

这些文件中的每一个都是用 cPickle 生成的 Python“ pickle”对象。 下面是一个 python 2例程,它将打开这样一个文件并返回一个字典:

def unpickle(file):
    import cPickle
    with open(file, 'rb') as fo:
        dict = cPickle.load(fo)
    return dict

对于python 3 而言:

def unpickle(file):
    import pickle
    with open(file, 'rb') as fo:
        dict = pickle.load(fo, encoding='bytes')
    return dict

利用上面这种方式读取批数据后,将返回以下元素的字典:

  • data

    这是一个10000×3072的numpy数组,数据格式为unit8。其中每一行存储了一张32×32的彩色图像。即对于3072个值,每1024个值(32×32=1024)为图片的一个通道数据,一共按顺序包含了红绿蓝三个通道。

  • labels

    这是一个长度为10000的数字列表,数字的取值范围为0到9之间的整数,表示图片所对应的标签值。

此外,对于 batches.meta 文件,读取后将返回字典:

  • label_names

    这是一个10元素的列表,用于根据标签值获取对应的标签名字,例如:

    label_names[0] == "airplane", 
    label_names[1] == "automobile
    

二进制版本

二进制版本的文件解压后,将得到 data_batch_1.bin, data_batch_2.bin, ..., data_batch_5.bin,以及 test_batch.bin. 每个文件按照下面的格式生成:

<1 x label><3072 x pixel>
...
<1 x label><3072 x pixel>

换句话说,第一个字节是第一个图像的标签,它是一个范围为0-9的数字。 接下来的3072字节是图像的像素值。 前1024个字节是红色通道值,接下来的1024是绿色的,最后的1024是蓝色的。 这些值按照行大小顺序存储,因此前32个字节是图像第一行的红色通道值。

每个文件包含10000个这样的3073字节的“行”图像,尽管没有划分行。 因此,每个文件应该正好是30730000字节长。

还有一个名为 batches.meta.txt 的文件。 这是一个 ASCII 文件,它将0-9范围内的数字标签映射到有意义的类名。 它仅仅是10个类名的列表,每行一个。 行 i 上的类名对应于数字标签 i。

CIFAR-100 数据集

这个数据集就像 CIFAR-10,只不过它有100个类,每个类包含600张图像。 每个班级有500个训练图像和100个测试图像。 Cifar-100中的100个类被分成20个超类。 每个图像都带有一个“罚”标签(它所属的类)和一个“粗”标签(它所属的超类)。

与CIFAR-10类似,CIFAR-100包含了100个类别的物体,其中每个类别有600张图片。每个类取500张作为训练图像,100张作为测试图像。

在CIFAR-100 中,100各类别可以分类父类(Superclass)和子类(Classes)。一共有20个父类,其下又分子类。具体如下:

Superclass Classes
aquatic mammals beaver, dolphin, otter, seal, whale
fish aquarium fish, flatfish, ray, shark, trout
flowers orchids, poppies, roses, sunflowers, tulips
food containers bottles, bowls, cans, cups, plates
fruit and vegetables apples, mushrooms, oranges, pears, sweet peppers
household electrical devices clock, computer keyboard, lamp, telephone, television
household furniture bed, chair, couch, table, wardrobe
insects bee, beetle, butterfly, caterpillar, cockroach
large carnivores bear, leopard, lion, tiger, wolf
large man-made outdoor things bridge, castle, house, road, skyscraper
large natural outdoor scenes cloud, forest, mountain, plain, sea
large omnivores and herbivores camel, cattle, chimpanzee, elephant, kangaroo
medium-sized mammals fox, porcupine, possum, raccoon, skunk
non-insect invertebrates crab, lobster, snail, spider, worm
people baby, boy, girl, man, woman
reptiles crocodile, dinosaur, lizard, snake, turtle
small mammals hamster, mouse, rabbit, shrew, squirrel
trees maple, oak, palm, pine, willow
vehicles 1 bicycle, bus, motorcycle, pickup truck, train
vehicles 2 lawn-mower, rocket, streetcar, tank, tractor

下载

版本 文件大小 MD5校验码
CIFAR-100 python version 161 MB eb9058c3a382ffc7106e4002c42a8d85
CIFAR-100 Matlab version 175 MB 6a4bfa1dcd5c9453dda6bb54194911f4
CIFAR-100 binary version (suitable for C programs) 161 MB 03b5dce01913d631647c71ecec9e9cb8

数据解读

python和matlab版本

这里和CIFAR-10的类似,不多做解释。

二进制版本

CIFAR-100的二进制版本与 CIFAR-10的二进制版本相似,只是每个图像有两个标签字节(粗和细)和3072个像素字节,因此二进制文件看起来像这样:

<1 x coarse label><1 x fine label><3072 x pixel>
...
<1 x coarse label><1 x fine label><3072 x pixel>
上一篇:ResNet-50模型图像分类示例


下一篇:折半查找法之美