0
点赞
收藏
分享

微信扫一扫

CIFAR数据集解读

CIFAR-10 数据集

CIFAR数据集由 Alex Krizhevsky,Vinod Nair 和 Geoffrey Hinton 收集整理自​​8000万张微型图像数据集​​​,其中CIFAR数据集又根据所涉及的分类对象数量,可分为CIFAR-10和CIFAR-100。该数据集主要用于深度学习的图像分类,目前已被广泛应用。
CIFAR数据集解读_python
CIFAR数据集官网:​​​http://www.cs.toronto.edu/~kriz/cifar.html​​

基本介绍

CIFAR数据集解读_python

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

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

即已经分好了的五个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>

未经作者授权,禁止转载 THE END

举报

相关推荐

0 条评论