详解MNIST数据集
作者:graviti
发布于 11/30/2020

一、MNIST数据集发布方

1、杨立昆(Yann LeCun)| 法籍计算机科学家,Facebook首席人工智能科学家,纽约大学达拉生物科学、计算机科学、神经科学和电气工程学教授;ACM图灵奖获得者,2014年IEEE神经网络先锋奖的获得者

       研究领域:人工智能、机器学习、计算机感知、移动机器人、计算神经科学

  • 已发表180多篇技术论文和书籍章节,涉及机器学习、计算机视觉、机器人学、模式识别、神经网络、手写识别、图像压缩、文档理解、图像处理、VLSI设计和信息论
  • 同Léon Bottou和Patrick Haffner等人创建了DjVu图像压缩技术,使高质量的扫描图像可以轻易在上进行发布
  • 最著名的工作是在光学字符识别和计算器视觉上使用卷积神经网络 (CNN),因此也被称为卷积神经网络之父。他应用卷积神经网络设计的图像识别模型被Facebook、Google、微软、NEC、百度、AT&T/NCR等公司用于图像识别和标记、文档识别、智能亭和其他应用和服务

2、科琳娜·科尔特斯(Corinna Cortes)| 谷歌研究副总裁

    研究领域:大规模机器学习理论和应用问题

3、克⾥斯多夫·博格斯(Christopher J.C. Burges)| 微软雷蒙德研究院

    研究领域:音频指纹、说话人分割聚类、图像压缩、新型优化算法以及机器学习的核心方法

二、MNIST数据集介绍

MNIST数据集(Mixed National Institute of Standards and Technology database)是一个用来训练各种图像处理系统的二进制图像数据集,该数据集也广泛应用于机器学习中的训练和测试,是最受欢迎的深度学习数据集之一。

MNIST手写数字识别模型的主要任务是将28x28像素的灰度手写数字图片识别为相应的数字(数字范围:0~9)。您可以通过MNIST的真实世界数据(Real-World Data)学习机器学习技术和模式识别方法。如果您想在数据预处理和格式化方面节省精力,那么MNIST是个不错的数据集。

MNIST数据集由NIST数据集的两个特殊数据库构成:特殊数据库1(即Special Database-1,SD-1)和特殊数据库3(即Special Database-3,SD-3)。SD-1中的数字图像由美国高中生进行书写,SD-3中的数字图像由美国人口调查局的员工书写而成。因此SD-3比SD-1更干净也更容易识别。

数据集包含 60,000个训练集图像以及10,000个测试集图像。训练集取自SD-3的30,000个图像和SD-1的30,000个图像;测试集取自SD-3的5,000个图像和SD-1的5,000个图像。数据集中每张图像的大小固定(28x28像素),上面的数字都经过了尺寸标准化及居中处理,数字范围从0到9,共10个模式;将 28 x 28 的像素展开为一个一维的行向量, 这些行向量就是图片数组里的行(每行784 个值,即每行代表了一张图)。

另外,MNIST发布方保存了一些测试过的方法列表,在其发布官网展示了所有模型在MNIST上的运行结果。

2017年,MNIST的扩展数据集EMNIST腾空出世。该数据集包含24万张训练图像和4万张手写体数字和字符的测试图像。

三、MNIST数据集的文件格式

MNIST数据集中的数据以一种非常简单的文件格式——IDX格式存储,该文件格式用于存储向量和多维矩阵。

文件中的所有整数都以大多数非英特尔处理器使用的MSB优先(高字节序)格式存储。英特尔处理器和其他小端机器的用户必须翻转报头的字节。

MNIST数据集共包含4个文件:

文件名称 内容 大小
train-images-idx3-ubyte 训练集图像文件:55,000 张训练图像,5,000 张验证图像 1.57MB
train-labels-idx1-ubyte 训练集标签文件:训练图像对应的数字标签 4KB
t10k-images-idx3-ubyte 测试集图像文件:10,000张测试图像 9.45MB
t10k-labels-idx1-ubyte 测试集标签文件:测试图像对应的数字标签 28KB

训练集包含60,000个示例图像,测试集包含10,000个示例图像,测试集的前5,000个图像(取自SD-3)比 后5,000个图像( 取自SD-1)更干净也更容易识别。

  • 训练集标签文件(train-labels-idx1-ubyte)
    • 标签值为0到9
[offset] [type]          [value]          [description]
0000     32 bit integer  0x00000801(2049) magic number(MSB first)
0004     32 bit integer  60000            number of items
0008     unsigned byte   ??               label
0009     unsigned byte   ??               label
........
xxxx     unsigned byte   ??               label
  • 训练集图像文件(train-images-idx3-ubyte)
    • 像素按行组织,像素值为0到255,0表示背景(白色),255表示前景(黑色)
[offset] [type]          [value]          [description]
0000     32 bit integer  0x00000803(2051) magic number
0004     32 bit integer  60000            number of images
0008     32 bit integer  28               number of rows
0012     32 bit integer  28               number of columns
0016     unsigned byte   ??               pixel
0017     unsigned byte   ??               pixel
........
xxxx     unsigned byte   ??               pixel
  • 测试集标签文件(t10k-labels-idx1-ubyte)
    • 标签值为0到9
[offset] [type]          [value]          [description]
0000     32 bit integer  0x00000801(2049) magic number (MSB first)
0004     32 bit integer  10000            number of items
0008     unsigned byte   ??               label
0009     unsigned byte   ??               label
........
xxxx     unsigned byte   ??               label
  • 测试集图像文件(t10k-images-idx3-ubyte)
    • 像素按行组织,像素值从0到255,0表示背景(白色),255表示前景(黑色)
[offset] [type]          [value]          [description]
0000     32 bit integer  0x00000803(2051) magic number
0004     32 bit integer  10000            number of images
0008     32 bit integer  28               number of rows
0012     32 bit integer  28               number of columns
0016     unsigned byte   ??               pixel
0017     unsigned byte   ??               pixel
........
xxxx     unsigned byte   ??               pixel

关于IDM格式

MNIST数据集所用的IDX文件格式是用于各种数值类型的向量和多维矩阵的一种简单格式。

基本格式为:

magic number`
size in dimension 0
size in dimension 1
size in dimension 2
.....
size in dimension N
data

魔数是整数(MSB优先),前2个字节始终为0。

第三个字节编码数据的类型:

0x08:无符号字节

0x09:有符号字节

0x0B:短整型(2个字节)

0x0C:整型(4个字节)

0x0D:浮点型(4个字节)

0x0E:双精度浮点型(8个字节)

第4个字节编码向量/矩阵的维数: 1表示向量,2表示矩阵....

每个维度的大小都是4字节整数(像大多数非Intel处理器一样,MSB在前,高字节在前)。

数据像C数组一样存储,即最后一个维度的索引变化最快。

四、MNIST数据集下载

针对海外数据获取难、下载慢的问题,Graviti给出了一站式解决方案——将全球资源Host至国内镜像,无需VPN访问即可享受高速下载。

您可以轻松在Graviti下载MNIST数据集~下载步骤如下:

1、进入Graviti公开数据集-MNIST数据集主页,点击「获取数据集

2、将MNIST数据集加入我的公开数据集,点击「确认

3、系统自动跳转到GAS控制台后,点击进入MNIST数据集

4、下载MNIST数据集

分享到:
立即开始构建AI