介绍

Fashion-MNIST是一个替代MNIST手写数字集的图像数据集。 它是由Zalando(一家德国的时尚科技公司)旗下的研究部门提供。其涵盖了来自10种类别的共7万个不同商品的正面图片。

Fashion-MNIST的大小、格式和训练集/测试集划分与原始的MNIST完全一致。60000/10000的训练测试数据划分,28x28的灰度图片。你可以直接用它来测试你的机器学习和深度学习算法性能,且不需要改动任何的代码。

这个数据集的样子大致如下(每个类别占三行):

fashion-mnist-sprite.png

为什么要做这个数据集

经典的MNIST数据集包含了大量的手写数字。十几年来,来自机器学习、机器视觉、人工智能、深度学习领域的研究员们把这个数据集作为衡量算法的基准之一。你会在很多的会议,期刊的论文中发现这个数据集的身影。实际上,MNIST数据集已经成为算法作者的必测的数据集之一。有人曾调侃道:"如果一个算法在MNIST不work, 那么它就根本没法用;而如果它在MNIST上work, 它在其他数据上也可能不work!"

Fashion-MNIST的目的是要成为MNIST数据集的一个直接替代品。作为算法作者,你不需要修改任何的代码,就可以直接使用这个数据集。Fashion-MNIST的图片大小,训练、测试样本数及类别数与经典MNIST完全相同。

写给专业的机器学习研究者

我们是认真的。取代MNIST数据集的原因由如下几个:

  • MNIST太简单了。 很多深度学习算法在测试集上的准确率已经达到99.6%!不妨看看我们基于scikit-learn上对经典机器学习算法的评测 和这段代码: "Most pairs of MNIST digits can be distinguished pretty well by just one pixel"(翻译:大多数MNIST只需要一个像素就可以区分开!)
  • MNIST被用烂了。 参考:"Ian Goodfellow wants people to move away from mnist"(翻译:Ian Goodfellow希望人们不要再用MNIST了。)
  • MNIST数字识别的任务不代表现代机器学习。 参考:"François Cholle: Ideas on MNIST do not transfer to real CV" (翻译:在MNIST上看似有效的想法没法迁移到真正的机器视觉问题上。)

获取数据

很多的机器学习库已经内置了Fashion-MNIST数据或接口,方便你直接使用。

你可以使用以下链接下载这个数据集。Fashion-MNIST的数据集的存储方式和命名与经典MNIST数据集完全一致。

名称描述样本数量文件大小链接MD5校验和
train-images-idx3-ubyte.gz训练集的图像60,00026 MBytes下载8d4fb7e6c68d591d4c3dfef9ec88bf0d
train-labels-idx1-ubyte.gz训练集的类别标签60,00029 KBytes下载25c81989df183df01b3e8a0aad5dffbe
t10k-images-idx3-ubyte.gz测试集的图像10,0004.3 MBytes下载bef4ecab320f06d8554ea6380940ec79
t10k-labels-idx1-ubyte.gz测试集的类别标签10,0005.1 KBytes下载bb300cfdad3c16e7a12a480ee83cd310

或者,你可以直接克隆这个代码库。数据集就放在data/fashion下。这个代码库还包含了一些用于评测和可视化的脚本。

git clone git@github.com:zalandoresearch/fashion-mnist.git

类别标注

每个训练和测试样本都按照以下类别进行了标注:

标注编号描述
0T-shirt/top(T恤)
1Trouser(裤子)
2Pullover(套衫)
3Dress(裙子)
4Coat(外套)
5Sandal(凉鞋)
6Shirt(汗衫)
7Sneaker(运动鞋)
8Bag(包)
9Ankle boot(踝靴)

如何载入数据?

使用Python (需要安装numpy)

  • 你可以直接使用utils/mnist_reader:
import mnist_reader
X_train, y_train = mnist_reader.load_mnist('data/fashion', kind='train')
X_test, y_test = mnist_reader.load_mnist('data/fashion', kind='t10k')

使用Tensorflow

请确保你已经下载了我们的数据集并把它放到了data/fashion下。不然, Tensorflow会自动下载并使用原始的MNIST。

from tensorflow.examples.tutorials.mnist import input_data
data = input_data.read_data_sets('data/fashion')

data.train.next_batch(BATCH_SIZE)

注意,Tensorflow (master ver.) 支持向read_data_sets函数传入MNIST数据集的地址。你可以使用:

data = input_data.read_data_sets('data/fashion', source_url='http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/')

Tensorflow的官网也提供了一份使用高级APItf.keras训练Fashion-MNIST的详细教程,你可以在这里查看它。

使用其它机器学习库

截止今日,以下软件库中已内置了对Fashion-MNIST的支持。你只需要按照他们的文档载入Fashion-MNIST即可使用此数据集。

基准测试

我们使用scikit-learn做了一套自动评测系统。它涵盖了除深度学习之外的129种经典机器学习模型(包含不同的参数)。你可以在这里以互动的方式查看结果。
查看结果:http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/

benchmark.gif

你可以运行benchmark/runner.py对结果进行重现。而我们更推荐的方法是使用Dockerfile打包部署后以Container的方式运行。

我们欢迎你提交自己的模型评测。请使用Github新建一个Issue。不妨先看看如何贡献。如果你提交自己的模型,请先确保这个模型没有在这个列表中被测试过。

更多测试结果可以查看:
https://github.com/zalandoresearch/fashion-mnist

更多在Fashion-MNIST上的探索和尝试

在Google Scholar中查看引用Fashion-MNIST的论文

生成对抗网络 (GANs)

Tensorflow implementation of various GANs and VAEs. (推荐阅读! 注意不同GANs的算法在Fashion-MNIST上生成的样本明显不同,而这点在经典的MNIST数据集上是观察不到的。)

*CGAN output after 5000 steps
https://github.com/a7b23/Conditional-GAN-using-tensorflow-slim

聚类

视频教程

数据可视化

t-SNE在Fashion-MNIST(上)和经典MNIST上的可视化(下)

t-SNE在Fashion-MNIST.png

经典MNIST上的可视化.png

PCA在Fashion-MNIST(上)和经典MNIST上的可视化(下)

PCA在Fashion-MNIST.png

经典MNIST上的可视化2.png

UMAP在Fashion-MNIST(上)和经典MNIST上的可视化(下)

UMAP在Fashion-MNIST.png

经典MNIST上的可视化3.png

来源:https://github.com/zalandoresearch/fashion-mnist

作者:https://hanxiao.io/about/

最后修改:2019 年 12 月 16 日
文章有用,请随意赞赏