所有文章 > 日积月累 > CIFAR-10数据集介绍
CIFAR-10数据集介绍

CIFAR-10数据集介绍

CIFAR-10数据集是由加拿大多伦多大学计算机视觉研究组所创建的一个著名的图像数据集,广泛应用于图像识别、机器学习和其他相关领域的研究。下面我们将详细介绍CIFAR-10数据集的结构、特点和应用。

CIFAR-10数据集概述

CIFAR-10数据集包含60000张32×32的彩色图片,分为10类,每一类包含6000张图片。其中50000张用于训练,10000张用于测试。每类图片包含飞机、汽车、鸟类、猫、鹿、狗、青蛙、马、船和卡车等,这些类别之间是完全不相交的。

CIFAR-10数据集示例图片

训练集与测试集

CIFAR-10数据集被划分为5个训练batch和1个测试batch,每个batch包含10000张图片。测试集的图片是从每个类别中随机挑选的1000张图片组成的,而训练集的图片则是以随机顺序包含剩下的50000张图片。需要注意的是,一些训练集batch可能会出现包含某一类图片比其他类的图片数量多的情况。

数据集特点

CIFAR-10数据集的特点是图像尺寸较小,但类别丰富,且每个类别的样本数量均衡。这使得CIFAR-10成为一个理想的图像识别基准数据集,尤其是在评估卷积神经网络等深度学习模型时。

CIFAR-10数据集下载与解压

官方提供了多个版本的CIFAR-10数据集,包括Python版本、Matlab版本和二进制版本。这里我们下载Python版本。下载完成后,解压得到包含以下文件的文件夹:

CIFAR-10文件结构

文件结构说明

  • batches.meta:程序中不需要使用的文件。
  • data_batch_1:训练集的第一个batch,含有10000张图片。
  • data_batch_2:训练集的第二个batch,含有10000张图片。
  • data_batch_3:训练集的第三个batch,含有10000张图片。
  • data_batch_4:训练集的第四个batch,含有10000张图片。
  • data_batch_5:训练集的第五个batch,含有10000张图片。
  • readme.html:网页文件,程序中不需要使用的文件。
  • test_batch:测试集的batch,含有10000张图片。

CIFAR-10数据集解析

每个batch文件包含一个Python字典结构,包含以下元素:

  • b’data’:一个10000×3072的array,每一行的元素组成了一个32×32的3通道图片,共10000张。
  • b’labels’:一个长度为10000的list,对应包含data中每一张图片的label。
  • b’batch_label’:这一份batch的名称。
  • b’filenames’:一个长度为10000的list,对应包含data中每一张图片的名称。

真正重要的两个关键字是data和labels,剩下的两个并不是十分重要。

获取每个batch文件中的字典信息

import numpy as np
import pickle

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

提取每张图片的RGB通道数据

import numpy as np

def GetPhoto(pixel):
    assert len(pixel) == 3072
    r = pixel[0:1024]; r = np.reshape(r, [32, 32, 1])
    g = pixel[1024:2048]; g = np.reshape(g, [32, 32, 1])
    b = pixel[2048:3072]; b = np.reshape(b, [32, 32, 1])

    photo = np.concatenate([r, g, b], -1)

    return photo

提取训练集batch中的数据


import numpy as np

def GetTrainDataByLabel(label):
    batch_label = []
    labels = []
    data = []
    filenames = []
    for i in range(1, 1+5):
        batch_label.append(unpickle(
#你可能也喜欢这些API文章!