CIFAR‑10(Canadian Institute For Advanced Research)是机器学习与计算机视觉领域最常用的基准图像分类数据集之一。它由 Alex Krizhevsky、Vinod Nair 与 Geoffrey Hinton 在 2009‑2010 年收集并公开发布。
项目 | 内容 |
---|---|
数据规模 | 共 60 000 张 32 × 32 像素的彩色图像,其中 50 000 张用于训练,10 000 张用于测试 |
类别 | 10 类,每类 6 000 张图像,分别是:飞机、汽车、鸟、猫、鹿、狗、青蛙、马、船、卡车 |
来源 | 从更大的 TinyImages 数据集(约 8000 万张小图)中抽取而来 |
文件格式 | 提供三种常用格式: • Python pickle (.pkl )• MATLAB .mat • 原始二进制 .bin ,每张图像占 3072 字节(RGB 按顺序存储) |
下载地址 | 官方主页:http://www.cs.toronto.edu/\~kriz/cifar.html (可直接下载 cifar-10-python.tar.gz 等压缩包) |
常见使用场景 | - 验证卷积神经网络(CNN)结构与训练技巧 - 对比不同机器学习模型(SVM、随机森林、深度学习等)的分类性能 - 研究数据增强、正则化、迁移学习等技术的效果 - 作为教学示例,帮助学生快速上手图像分类任务 |
数据组织 | 训练集被划分为 5 个批次(data_batch_1 ~data_batch_5 ),每批 10 000 张;测试集为 test_batch (10 000 张) |
标签映射 | batches.meta 文件中保存了 0‑9 与类别名称的对应关系,便于在代码中将数值标签转为可读文字 |
为什么 CIFAR‑10 仍然重要?
- 规模适中:相较于 ImageNet(上千万张)更易在普通硬件上快速实验;相较于 MNIST(灰度手写数字)更具挑战性,因为图像是彩色且包含真实物体的多样外观。
- 标准化基准:几乎所有新提出的图像分类模型都会在 CIFAR‑10 上报告准确率,以便与已有工作直接比较。
- 丰富的衍生工作:如 CIFAR‑100、CIFAR‑10‑W(扩展真实世界测试集)等,进一步推动模型的鲁棒性研究。
获取与使用示例(Python)
import pickle, numpy as np, os
def load_batch(file):
with open(file, 'rb') as f:
dict = pickle.load(f, encoding='bytes')
data = dict[b'data'] # shape (10000, 3072)
labels = dict[b'labels']
# reshape 为 (N, 3, 32, 32)
images = data.reshape(-1, 3, 32, 32).transpose(0, 2, 3, 1)
return images, np.array(labels)
train_images, train_labels = [], []
for i in range(1, 6):
imgs, lbls = load_batch(f'cifar-10-batches-py/data_batch_{i}')
train_images.append(imgs); train_labels.append(lbls)
train_images = np.concatenate(train_images)
train_labels = np.concatenate(train_labels)
test_images, test_labels = load_batch('cifar-10-batches-py/test_batch')
上述代码演示了如何读取官方提供的 Python pickle
文件,得到形状为 (N, 32, 32, 3)
的 RGB 图像数组,直接可用于 TensorFlow、PyTorch 等深度学习框架的 DataLoader
。
总结:CIFAR‑10 是一个包含 60 000 张 32 × 32 彩色图像、分属 10 类的经典视觉基准。它来源于 TinyImages,提供多种文件格式,下载链接在官方主页。由于规模适中且难度适中,成为评估和比较图像分类算法的首选数据集。若需要进一步的技术细节或最新的衍生数据集(如 CIFAR‑10‑W),可参考相应的学术论文与社区博客。
声明:文章均为AI生成,请谨慎辨别信息的真伪和可靠性!