介绍
Fashion-MNIST是一个替代MNIST手写数字集的图像数据集。 它是由Zalando(一家德国的时尚科技公司)旗下的研究部门提供。其涵盖了来自10种类别的共7万个不同商品的正面图片。
Fashion-MNIST的大小、格式和训练集/测试集划分与原始的MNIST完全一致。60000/10000的训练测试数据划分,28x28的灰度图片。你可以直接用它来测试你的机器学习和深度学习算法性能,且不需要改动任何的代码。
这个数据集的样子大致如下(每个类别占三行):
为什么要做这个数据集
经典的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,000 | 26 MBytes | 下载 | 8d4fb7e6c68d591d4c3dfef9ec88bf0d |
train-labels-idx1-ubyte.gz | 训练集的类别标签 | 60,000 | 29 KBytes | 下载 | 25c81989df183df01b3e8a0aad5dffbe |
t10k-images-idx3-ubyte.gz | 测试集的图像 | 10,000 | 4.3 MBytes | 下载 | bef4ecab320f06d8554ea6380940ec79 |
t10k-labels-idx1-ubyte.gz | 测试集的类别标签 | 10,000 | 5.1 KBytes | 下载 | bb300cfdad3c16e7a12a480ee83cd310 |
或者,你可以直接克隆这个代码库。数据集就放在data/fashion下。这个代码库还包含了一些用于评测和可视化的脚本。
git clone git@github.com:zalandoresearch/fashion-mnist.git
类别标注
每个训练和测试样本都按照以下类别进行了标注:
标注编号 | 描述 |
---|---|
0 | T-shirt/top(T恤) |
1 | Trouser(裤子) |
2 | Pullover(套衫) |
3 | Dress(裙子) |
4 | Coat(外套) |
5 | Sandal(凉鞋) |
6 | Shirt(汗衫) |
7 | Sneaker(运动鞋) |
8 | Bag(包) |
9 | Ankle 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即可使用此数据集。
- Apache MXNet Gluon:https://mxnet.incubator.apache.org/api/python/gluon/data.html
- deeplearn.js:https://deeplearnjs.org/demos/model-builder/
- Kaggle:https://www.kaggle.com/zalando-research/fashionmnist
- Pytorch:http://pytorch.org/docs/master/torchvision/datasets.html#fashion-mnist
- Keras:https://keras.io/datasets/#fashion-mnist-database-of-fashion-articles
- Edward:http://edwardlib.org/api/observations/fashion_mnist
- Tensorflow:https://www.tensorflow.org/versions/r1.5/api_docs/python/tf/keras/datasets/fashion_mnist
- Torch:https://github.com/mingloo/fashion-mnist
- JuliaML:https://github.com/JuliaML/MLDatasets.jl
- Chainer (latest):https://docs.chainer.org/en/latest/reference/generated/chainer.datasets.get_fashion_mnist.html?highlight=fashion-mnist
基准测试
我们使用scikit-learn做了一套自动评测系统。它涵盖了除深度学习之外的129种经典机器学习模型(包含不同的参数)。你可以在这里以互动的方式查看结果。
查看结果:http://fashion-mnist.s3-website.eu-central-1.amazonaws.com/
你可以运行benchmark/runner.py对结果进行重现。而我们更推荐的方法是使用Dockerfile打包部署后以Container的方式运行。
我们欢迎你提交自己的模型评测。请使用Github新建一个Issue。不妨先看看如何贡献。如果你提交自己的模型,请先确保这个模型没有在这个列表中被测试过。
更多测试结果可以查看:
https://github.com/zalandoresearch/fashion-mnist
更多在Fashion-MNIST上的探索和尝试
- Fashion-MNIST: 年度总结
https://hanxiao.io/2018/09/28/Fashion-MNIST-Year-In-Review/
在Google Scholar中查看引用Fashion-MNIST的论文
生成对抗网络 (GANs)
Tensorflow implementation of various GANs and VAEs. (推荐阅读! 注意不同GANs的算法在Fashion-MNIST上生成的样本明显不同,而这点在经典的MNIST数据集上是观察不到的。)
- Make a ghost wardrobe using DCGAN
https://twitter.com/spaceLenny/status/901488938023403520 - fashion-mnist的gan玩具
http://kexue.fm/archives/4540/
*CGAN output after 5000 steps
https://github.com/a7b23/Conditional-GAN-using-tensorflow-slim
- live demo of Generative Adversarial Network model with deeplearn.js
http://cognitivechaos.com/playground/fashion-gan/ - GAN Playground - Explore Generative Adversarial Nets in your Browser
https://reiinakano.github.io/gan-playground/
聚类
- Xifeng Guo's implementation of Unsupervised Deep Embedding for Clustering Analysis (DEC)
http://proceedings.mlr.press/v48/xieb16.pdf - Leland McInnes's Uniform Manifold Approximation and Projection (UMAP)
https://github.com/lmcinnes/umap
视频教程
- Machine Learning Meets Fashion by Yufeng G @ Google Cloud:https://youtu.be/RJudqel8DVA
- Machine Learning Meets Fashion:https://youtu.be/FloMHMOU5Bs
- Introduction to Kaggle Kernels by Yufeng G @ Google Cloud:https://youtu.be/kGktiYF5upk
- Introduction to Kaggle Kernels:https://youtu.be/H66GDuLsGl4