CIFAR-10和CIFAR-100数据集是8000万张微小图像数据集的标记子集。CIFAR-10和CIFAR-100都是由AlexKrizhevsky、VinodNair和GeoffreyHinton创建。数据集说明的网页:https://www.cs.toronto.edu/~kriz/cifar.html
一、CIFAR-10数据集
(一)CIFAR-10数据集说明
CIFAR-10数据集由10个类的60000张32x32彩色图像组成,每个类有6000张图像。有50000张训练图像和10000张测试图像。
数据集分为5个训练批次和1个测试批次,每个批次有10000张图像。测试批次包含每个类中随机选择的1000张图像。训练批次包含按随机顺序排列的剩余图像,但某些训练批次可能包含来自一个类的图像多于另一个类的图像。在它们之间,训练批次包含来自每个类的5000张图像。
以下是数据集中的类,以及每个类的10张随机图像:
这些类是完全互斥的。汽车和卡车之间没有重叠。“汽车”包括轿车、SUV等类似的东西。“卡车”仅包括大型卡车。两者都不包括皮卡车。
(二)CIFAR-10数据集下载
如果您打算使用此数据集,请引用本页底部的技术报告。
版本 |
大小 |
md5sum |
163兆字节 |
c58f30108f718f92721af3b95e74349a |
|
175兆字节 |
70270af85842c9e89bb428ec9976c926 |
|
162兆字节 |
c32a1d4ab5d03f1284b67883e8d87530 |
(三)基线结果
你可以在 cuda-convnet的项目页面上找到此数据集上的一些基线可复制结果。这些结果是通过卷积神经网络获得的。简而言之,在没有数据增强的测试误差为18%,有数据增强的测试误差为11%。此外,Jasper Snoek 在一篇新论文中,他使用贝叶斯超参数优化来找到权重衰减和其他超参数的不错设置,这使他能够在使用15%的网络架构能力的基础上,能够获得18%的测试错误率(没有数据增强)。
(四)数据集布局
1.Python/Matlab版本
这里描述Python版本数据集的布局。Matlab版本的布局是相同的。
存档包含文件 data_batch_1、 data_batch_2、...、 data_batch_5 以及 test_batch。这些文件中的每一个都是使用 cPickle 生成的Python“pickled”对象。
下载到本地并解压后的结果如下:
下面是一个python2例程,通过以下方法打开data_batch文件并返回一个字典:
def unpickle(file):
import cPickle
with open(file, 'rb') as fo:
dict = cPickle.load(fo)
return dict
python3版本:以以下方式加载,每个批处理data_batch文件都包含一个带有以下元素的字典:
def unpickle(file):
import pickle
with open(file, 'rb') as fo:
dict = pickle.load(fo, encoding='bytes')
return dict
每个data_batch中:
(1)data :一个 uint8的numpy 数组大小是10000 x 3072 (每个批次10000张图像)。数组的每一行存储一个32x32彩色图像(图像总共有1024个像素点,每个像素点具有红绿蓝三个通道值,所以总共有3072个数值)。前1024个条目包含红色通道值,接下来的1024个条目包含绿色通道值,最后1024个条目包含蓝色通道值。图像按行优先顺序存储,因此数组的前32个值是图像第一行的红色通道值。
(2)labels(标签):范围0-9的10000个数字的列表。索引 i 处的数字表示数组数据中第 i张图像的标签。
该数据集包含另一个名为 batches.meta 的文件。它也包含一个Python dictionary对象。它包含以下条目:
(1)label_names:一个包含10个元素的列表,它为上述 labels 数组中的数字标签提供有意义的名称。例如,label_names[0]==“飞机”, label_names[1]==“汽车”等。
2.二进制版本
二进制版本包含文件 data_batch_1.bin、data_batch_2.bin、...、data_batch_5.bin 以及 test_batch.bin。其中每个文件的格式如下:换句话说,第一个字节是第一个图像的标签,它是一个范围在0-9之间的数字。接下来的3072字节是图像像素的值。前1024个字节是红色通道值,接下来的1024个字节是绿色通道值,最后1024个字节是蓝色通道值。这些值按行优先顺序存储,因此前32个字节是图像第一行的红色通道值。
每个文件包含10000个3073字节的“行”图像,尽管没有分隔这些行的内容。因此,每个文件的长度应正好为30730000字节。
还有另一个名为 batches.meta.txt 的文件。这是一个ASCII文件,用于将0-9范围内的数字标签映射到有意义的类名称。它只是10个类名的列表,每行一个。第 i 行上的类名对应于数字标签 i。
<1 x label><3072 x pixel>
...
<1 x label><3072 x pixel>
二、CIFAR-100数据集
(一)CIFAR-100数据集说明
此数据集与CIFAR-10类似,不同之处在于它有100个类,每个类包含600张图像。每个类有500张训练图像和100张测试图像。CIFAR-100中的100个类被分为20个超类。每个图像都带有一个“fine”标签(它所属的类)和一个“coarse”标签(它所属的超类)。
以下是CIFAR-100中的类列表:
超类 |
类 |
水生哺乳动物 |
海狸,海豚,水獭,海豹,鲸鱼 |
鱼 |
观赏鱼,比目鱼,鳐鱼,鲨鱼,鳟鱼 |
花 |
兰花、罂粟花、玫瑰、向日葵、郁金香 |
食品容器 |
瓶子、碗、罐、杯、盘 |
水果和蔬菜 |
苹果、蘑菇、橙子、梨、甜椒 |
家用电器 |
时钟,电脑键盘,灯,电话,电视 |
家用家具 |
床、椅子、沙发、桌子、衣柜 |
昆虫 |
蜜蜂,甲虫,蝴蝶,毛毛虫,蟑螂 |
大型食肉动物 |
熊、豹、狮子、老虎、狼 |
大型人造户外物品 |
桥,城堡,房子,路,摩天大楼 |
大型自然户外场景 |
云,森林,山,平原,海 |
大型杂食动物和食草动物 |
骆驼,牛,黑猩猩,象,袋鼠 |
中型哺乳动物 |
狐狸,豪猪,负鼠,浣熊,臭鼬 |
非昆虫无脊椎动物 |
螃蟹,龙虾,蜗牛,蜘蛛,蠕虫 |
人 |
婴儿,男孩,女孩,男人,女人 |
爬行动物 |
鳄鱼,恐龙,蜥蜴,蛇, |
小型哺乳动物 |
仓鼠,小鼠,兔子,鼩鼱,松鼠 |
树 |
枫树,橡树,棕榈树,松树,柳树 |
车辆1 |
自行车、公共汽车、摩托车、皮卡车、火车 |
载具2 |
割草机,火箭,有轨电车,坦克,拖拉机 |
是的,我知道蘑菇不是真正的水果或蔬菜,熊也不是真正的食肉动物。
(二)下载
版本 |
大小 |
md5sum |
CIFAR-100 python版本 |
161兆字节 |
eb9058c3a382ffc7106e4002c42a8d85 |
CIFAR-100 Matlab版本 |
175兆字节 |
6a4bfa1dcd5c9453dda6bb54194911f4 |
CIFAR-100 二进制版本(适用于C程序) |
161兆字节 |
03b5dce01913d631647c71ecec9e9cb8 |
(三)数据集布局
1.Python/Matlab版本
python和Matlab版本在布局上与CIFAR-10相同。
2.二进制版本
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>
三、原始8000万张微小图像数据集的索引
SivanSabato很好心地提供了这个文件,它将CIFAR-100图像映射到8000万张微小图像数据集中的图像。Sivan写道:
The file has 60000 rows, each row contains a single index into the tiny db,
where the first image in the tiny db is indexed "1". "0" stands for an image that is not from the tiny db.
The first 50000 lines correspond to the training set, and the last 10000 lines correspond
to the test set.
参考
本技术报告(第3章)更详细地描述了数据集和收集数据集时遵循的方法。如果您打算使用此数据集,请引用它。
Learning Multiple Layers of Features from Tiny Images, Alex Krizhevsky, 2009.