vlambda博客
学习文章列表

图像识别—CIFAR-10/CIFAR-100数据集解析



点击蓝字
关注我们



AI研习图书馆,发现不一样的世界


数据
资源


CIFAR-10/CIFAR-100数据集解析

算法未动,数据先行! 一般情况下,工程师进行算法设计的前提是:确定的应用场景和充足的实验数据,少了数据支撑的深度学习技术寸步难行,因此数据是深度学习研究的基础。
今天我们来看一下图像识别/图像分类的经典数据集,属于图像分类论文中的常用评价数据集—CIFAR-10和CIFAR-100。它们被标记为 8000万个微小图像数据集 的子集,由Alex Krizhevsky,Vinod Nair和Geoffrey Hinton收集创建,如今广泛应用于图像识别领域研究,也算是图像识别入门数据集了。

一、CIFAR-10数据集

CIFAR-10数据集,由10个类别,共60000个彩色图像组成,图像大小32x32,每个类有6000个图像,其中包括50000个训练图像和10000个测试图像。

数据集分为五个训练批次和一个测试批次,每个批次有10000个图像。测试批次包含来自每个类别的1000个随机选择的图像。训练批次以随机顺序包含剩余图像,但一些训练批次可能包含来自一个类别的图像比另一个更多。总体来说,五个训练集之和,包含来自每个类的正好5000张图像。

以下是数据集中的类别示例,以及来自每个类的10个随机图像示例:

图像识别—CIFAR-10/CIFAR-100数据集解析


这些类完全相互排斥。例如,汽车和卡车之间没有重叠。“汽车”包括轿车,SUV,这类车辆。“卡车”只包括大卡车,而且它们都不包括皮卡车。十个类别英文名称如下:

airplane/automobile/bird/cat/deer/dog/frog/horse/ship/truck

1. CIFAR-10下载

CIFAR-10 python版本
CIFAR-10 Matlab版本
CIFAR-10二进制版本(适用于C程序)

2. 数据集布局

(1)Python / Matlab版本

这里描述数据集的Python版本的布局。Matlab版本的布局是相同的。
该存档包含文件data_batch_1,data_batch_2,...,data_batch_5以及test_batch。这些文件中的每一个都是用cPickle生成的Python“pickled”对象

这里是一个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

图像识别—CIFAR-10/CIFAR-100数据集解析

以这种方式加载的每个批处理文件都包含一个以下元素的字典:
数据 - 一个10000x3072 uint8的numpy数组。阵列的每一行存储32x32彩色图像即每一行存储32323=3072个数字信息。前1024个条目包含红色通道值,下一个1024个绿色,最后1024个蓝色。图像以行优先顺序存储,以便数组的前32个条目是图像第一行的红色通道值。
标签 - 范围为0-9的10000个数字的列表。索引i处的数字表示阵列数据中第i个图像的标签。该数据集包含另一个名为batches.meta的文件。它也包含一个Python字典对象。它有以下条目:
label_names - 一个10个元素的列表,它为上述标签数组中的数字标签赋予了有意义的名称。例如,label_names [0] ==“飞机”,label_names [1] ==“汽车”等。

(2)二进制版本

二进制版本包含文件data_batch_1.bin,data_batch_2.bin,...,data_batch_5.bin以及test_batch.bin。这些文件中的每一个格式如下:

<1×标签> <3072×像素>...<1×标签> <3072×像素>
换句话说,第一个字节是第一个图像的标签,它是一个0-9范围内的数字。接下来的3072个字节是图像像素的值。前1024个字节是红色通道值,下1024个绿色,最后1024个蓝色。值以行优先顺序存储,因此前32个字节是图像第一行的红色通道值。
每个文件都包含10000个这样的3073字节的“行”图像,但没有任何分隔行的限制。因此每个文件应该完全是30730000字节长。
还有另一个文件,称为batches.meta.txt。这是一个ASCII文件,它将0-9范围内的数字标签映射到有意义的类名称。它仅仅是10个类名的列表,每行一个。第i行的类名称对应于数字标签i。

图像识别—CIFAR-10/CIFAR-100数据集解析

二、CIFAR-100数据集

这个数据集类似于CIFAR-10,除了它有100个类,每个类包含600个图像。每类各有500个训练图像和100个测试图像。CIFAR-100中的100个类被分成20个超类。每个图像都带有一个“精细”标签(它所属的类)和一个“粗糙”标签(它所属的超类)

以下是CIFAR-100中的类别列表:

图像识别—CIFAR-10/CIFAR-100数据集解析

图像识别—CIFAR-10/CIFAR-100数据集解析

1. CIFAR-100下载

CIFAR-100 python版本
CIFAR-100 Matlab版本
CIFAR-100二进制版本(适用于C程序)

2. 数据集布局

(1)Python/matlab版本

python和Matlab版本的布局与CIFAR-10相同.

(2)二进制版本

CIFAR-100的二进制版本与CIFAR-10的二进制版本相似,只是每个图像都有两个标签字节(粗略和细小)和3072像素字节,所以二进制文件如下所示:

<1 x粗标签> <1 x精标签> <3072 x像素>...<1 x粗标签> <1 x精标签> <3072 x像素>
本期分享到此结束,更多数据解析,敬请关注~

祝你深度学习快乐~~


点击阅读原文,可跳转至CSDN博客继续学习~

推荐阅读文章

[1] 
[2] 
[3] 
[4] 
[5] 
[6] 

[7] 

[8] 

[9] 

[10] 

[11] 

[12] 

[13] 

[14] 

[15] 

[16] 

[17] 

[18] 

   ......



图像识别—CIFAR-10/CIFAR-100数据集解析


图像识别—CIFAR-10/CIFAR-100数据集解析
点击"在看"了解更多精彩内容
图像识别—CIFAR-10/CIFAR-100数据集解析


图像识别—CIFAR-10/CIFAR-100数据集解析
转载是一种动力 分享是一种美德


图像识别—CIFAR-10/CIFAR-100数据集解析
Bilibili : 洛必达数数
CSDN博客:算法之美DL
GitHub:statisticszhang



关注AI研习图书馆,发现不一样的精彩世界