我的博客

CIFAR 数据集介绍:下载、查看和使用

目录
  1. 下载
  2. 载入数据
    1. batch 文件
    2. readme.html
    3. batches.meta
  3. 显示图片

CIFAR 是 Canadian Institute For Advanced Research(加拿大高级研究所)的缩写。CIFAR 数据集官方网站是:

http://www.cs.toronto.edu/~kriz/cifar.html

该数据集分为 CIFAR-10 和 CIFAR-100,CIFAR-10 包括 6 万张图片,分为 10 个类别:飞机、汽车、鸟类、猫、鹿、狗、青蛙、马、轮船和卡车,每个类别各有 6000 张图片。

CIFAR-100 则有 100 个分类,每类 600 张图片,一共也是 6 万张。但是这 100 类又可以归为 20 个大类,每个大类中包含了 5 个小类,例如人这一类中包含了:婴儿、男孩、女孩、男人、女人这五个小类。

官网上提供数据集的下载,压缩包大概有 160 多 MB。

每张照片都是 32 × 32 像素大小,每个像素用 3 个字节分别表示 RGB 值。也就是说每张照片大小是 32 32 3 = 3072 B。




































































































































airplane
automobile
bird
cat
deer
dog
frog
horse
ship
truck

下载

官网可以下载,提供 python、matlab、binary(二进制)三个版本。

载入数据

我下载了 python 版本的 CIFAR-10。解压以后可以看到有 8 个文件:

[medivh@medivh-pc cifar-10-batches-py]$ ls -lht
总用量 178M
-rw-r--r-- 1 medivh medivh   88  6月  5  2009 readme.html
-rw-r--r-- 1 medivh medivh  158  3月 31  2009 batches.meta
-rw-r--r-- 1 medivh medivh  30M  3月 31  2009 data_batch_4
-rw-r--r-- 1 medivh medivh  30M  3月 31  2009 data_batch_1
-rw-r--r-- 1 medivh medivh  30M  3月 31  2009 data_batch_5
-rw-r--r-- 1 medivh medivh  30M  3月 31  2009 data_batch_2
-rw-r--r-- 1 medivh medivh  30M  3月 31  2009 data_batch_3
-rw-r--r-- 1 medivh medivh  30M  3月 31  2009 test_batch

batch 文件

每一个 batch 文件可以直接使用 pickle 包载入为一个 python 字典,官方给出了示例:

1
2
3
4
5
6
import pickle

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

使用官方示例函数载入 batch 1 数据:

1
2
3
4
5
6
7
8
9
data1 = unpickle('data_batch_1')

print(data1.keys()) # dict_keys([b'batch_label', b'labels', b'data', b'filenames'])

print(data1[b'batch_label']) # b'training batch 1 of 5'

print(len(data1[b'labels'])) # 10000

print(data1[b'data'][0].shape) # (3072,)

这个字典有 4 个键,

  1. batch_label 是这一组数据标题
  2. labels 是 1 - 9 的数字代表的类别,有 1 万个
  3. data 是图片数据,本身是一个 numpy 的 array,1 万个图片,每个图片是一个 长度为 3072 的 numpy 数组,元素类型是 uint8,前 1024 个是 32 × 32 的红色通道的数值,之后 1024 个是绿色,最后 1024 个是蓝色。
  4. filename 是文件名称

readme.html

说明文件,实际上是自动打开官网

batches.meta

1
2
meta = unpickle('batches.meta')
print(meta)

结果如下:

1
{b'num_cases_per_batch': 10000, b'label_names': [b'airplane', b'automobile', b'bird', b'cat', b'deer', b'dog', b'frog', b'horse', b'ship', b'truck'], b'num_vis': 3072}

显示图片

1
2
3
4
5
6
7
8
9
10
import numpy as np
import matplotlib.pyplot as plt

def show_img(img):
img3 = img.reshape(3,1024, 1)
pic = np.hstack(img3).reshape(32,32,3)
plt.imshow(pic)
plt.show()

show_img(data1[b'data'][7])

cow_pony_s_001168.png

这就是 batch 1 中的第七个图片,是一只马。

图片相关信息:

1
2
print(data1[b'filenames'][7]) # b'cow_pony_s_001168.png'
print(data1[b'labels'][7]) # 7

评论无需登录,可以匿名,欢迎评论!