zoukankan      html  css  js  c++  java
  • CIFAR数据集解读

    CIFAR-10 数据集

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

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

    基本介绍

    如上图所示,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版本,下载得到文件解压后,会得到如下结构的文件:

    即已经分好了的五个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>
    
  • 相关阅读:
    dubbo开发中使用到的一些服务配置方式
    jedis连接池详解(Redis)
    《Java线程池》:任务拒绝策略
    BlockingQueue(阻塞队列)详解
    洛谷 P3275 BZOJ 2330 [SCOI2011]糖果
    LaTeX的简单使用方法
    洛谷 P1131 BZOJ 1060 [ZJOI2007]时态同步
    洛谷 P2587 BZOJ 1034 [ZJOI2008]泡泡堂
    苦酒入喉心作痛,红酒入鹅鹅想哭——震惊!勒索病毒想哭靠wine感染了Ubuntu16.04
    洛谷 P2144 BZOJ 1003 [FJOI2007]轮状病毒
  • 原文地址:https://www.cnblogs.com/gshang/p/13055318.html
Copyright © 2011-2022 走看看