CIFAR-10 数据集的简介

CIFAR-10 数据集的简介

CIFAR-10 数据集是一个广泛使用的图像数据集,具体可见CIFAR-10 和 CIFAR-100 数据集,它包含 60,000 张 32x32 像素的彩色(3 channels)图像,分为 10 个类别,每个类别有 6,000 张图像。每个类别的图像数量分布如下:

  • 飞机 (airplane): 6,000 张
  • 汽车 (automobile): 6,000 张
  • 鸟类 (bird): 6,000 张
  • 猫 (cat): 6,000 张
  • 鹿 (deer): 6,000 张
  • 狗 (dog): 6,000 张
  • 蛙 (frog): 6,000 张
  • 马 (horse): 6,000 张
  • 船 (ship): 6,000 张
  • 卡车 (truck): 6,000 张
文件结构

CIFAR-10 数据集通常以二进制文件的形式提供,每个类别的图像存储在一个单独的文件中。文件名通常遵循以下格式:

在这里插入图片描述

  • data_batch_1, data_batch_2, …, data_batch_5:每个文件包含 10,000 张图像,总共 50,000 张图像用于训练。
  • test_batch:包含 10,000 张图像,用于测试。

每个二进制文件包含以下结构:

  • 一个描述符,通常是一个小的文本块,说明文件中数据的类型和数量。
  • 紧随其后的是实际的图像数据。
图像数据结构

每张图像由以下部分组成:

  • 一个 32x32 像素的 RGB 图像,每个像素由 3 个字节表示红色、绿色和蓝色通道的强度(范围通常是 0-255)。
  • 一个标签,表示图像的类别,通常是一个整数(0-9)。
访问数据

要访问 CIFAR-10 数据集中的图像,通常需要执行以下步骤:

  1. 下载数据集:从官方网站或数据集提供者处下载 CIFAR-10 数据集的二进制文件。
  2. 读取二进制文件:使用适当的编程语言(如 Python)和库(如 PILopencv)读取二进制文件。
  3. 解析图像数据:从二进制文件中解析图像数据,并将其转换为图像矩阵或张量。
  4. 解析标签数据:从文件中读取标签,并将其转换为适合机器学习模型的格式。
Python代码
编辑器解释器
Pycharm Pro 2024.1Python3.10

使用 PIL 库加载 CIFAR-10 数据集中的图像:

ps:可查看cifar10数据集读取和显示

from matplotlib import pyplot as plt

# 数据集读取
def unpickle(file):
    import pickle
    with open(file, 'rb') as fo:
        dict = pickle.load(fo, encoding='bytes')
    return dict

# 输出数据格式
dict = unpickle('E:\Deep Learning\cifar-10-python\cifar-10-batches-py\data_batch_1')
# print(dict)
img = dict[b'data']
print(img.shape)

# 显示图片
show_image = img[666]
img_reshape = show_image.reshape(3, 32, 32)
pic = img_reshape.transpose(1, 2, 0)  # (3, 32, 32) --> (32, 32, 3)
plt.imshow(pic)
plt.show()

# 输出label
label = dict[b'labels']
image_label = label[666]
print(image_label)

输出(output):

{b'batch_label': b'training batch 1 of 5', 
 b'labels': [6, 9 ... 1, 5], 
 b'data': array([[ 59,  43,  50, ..., 140,  84,  72],
                                 ...
                 [ 62,  61,  60, ..., 130, 130, 131]], dtype=uint8),
 b'filenames': [b'leptodactylus_pentadactylus_s_000004.png', b'camion_s_000148.png',
                                 ...
                b'estate_car_s_001433.png', b'cur_s_000170.png']}

CIFAR-10 数据集的数据格式

​ 在 CIFAR-10 数据集的二进制文件中,标签数据并不是直接存储在图像数据的旁边。相反,标签是以单独的数字形式存储的,通常在图像数据块之后。每个标签代表一个图像所属的类别,并以整数形式给出,范围从 0 到 9,对应于数据集中的 10 个类别。

在解析 CIFAR-10 数据集的二进制文件时,你需要按照数据集的格式说明来读取和解析这些标签。以下是 CIFAR-10 数据集文件中标签数据存储的一般结构:

  1. 描述符:文件开始处有一个魔术数字(magic number),一个 32 位的整数,表示文件中数据块的数量。对于 CIFAR-10 的训练批次文件,这个数字通常是 1000,意味着每个批次包含 1000 张图像。
  2. 数据记录:每个数据块紧跟在魔术数字之后,每个数据块包含一张图像的数据以及对应的标签。
  3. 标签数据:紧接着描述符的是一系列整数,每个整数代表一个图像的标签。
  4. 图像数据:标签数据之后是实际的图像数据,每张图像的像素值以某种顺序(通常是连续的)存储在文件中。

在 CIFAR-10 的 data_batch 文件中,每个批次包含 10,000 张图像的数据,图像数据和标签数据是交错存储的。具体来说,文件中的前 10,000 个整数是标签,紧接着的大量数据是图像的像素值。
在 CIFAR-10 的 data_batch 文件中,每个批次包含 10,000 张图像的数据,图像数据和标签数据是交错存储的。具体来说,文件中的前 10,000 个整数是标签,紧接着的大量数据是图像的像素值。

  • 36
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值