查看原文
其他

深度学习100问-12:深度学习有哪些经典数据集?

louwill 机器学习实验室 2019-12-24


     很多朋友在学习了神经网络和深度学习之后,早已迫不及待要开始动手实战了。第一个遇到的问题通常就是数据。作为个人学习和实验来说,很难获得像工业界那样较高质量的贴近实际应用的大量数据集,这时候一些公开数据集往往就成了大家通往AI路上的反复摩擦的对象。


     深度学习(CV方向)的经典数据集包括MNIST手写数字数据集、Fashion MNIST数据集、CIFAR-10和CIFAR-100数据集、ILSVRC竞赛的ImageNet数据集、用于检测和分割的PASCAL VOC和COCO数据集等等。本节就分别对这些经典数据集进行一个概述。


MNIST

     MNIST(Mixed National Institute of Standards and Technology database)数据集大家可以说是耳熟能详。可以说是每个入门深度学习的人都会使用MNIST进行实验。作为领域内最早的一个大型数据集,MNIST于1998年由Yann LeCun等人设计构建。MNIST数据集包括60000个示例的训练集以及10000个示例的测试集,每个手写数字的大小均为28*28。


     MNIST数据集官网地址:

http://yann.lecun.com/exdb/mnist/


     MNIST在TensorFlow中可以直接导入使用。在TensorFlow2.0中使用示例如下:

from tensorflow.keras.datasets import mnist(x_train, y_train), (x_test, y_test) = mnist.load_data()print(x_train.shape, y_train.shape, x_test.shape, y_test.shape)
(60000, 28, 28) (60000,) (10000, 28, 28) (10000,)


     可视化展示0-9十个数字:

import matplotlib.pyplot as pltimport numpy as npplt.figure(figsize=(12,8))
for i in range(10):    plt.subplot(2,5,i+1)    plt.xticks([])    plt.yticks([])    img = x_train[y_train == i][0].reshape(28, 28)    plt.imshow(img, cmap=plt.cm.binary)


Fashion MNIST

     可能是见MNIST太烂大街了,德国的一家名为Zalando的时尚科技公司提供了Fashion-MNIST来作为MNIST数据集的替代数据集。Fashion MNIST包含了10种类别70000个不同时尚穿戴品的图像,整体数据结构上跟MNIST完全一致。每张图像的尺寸同样是28*28。


     Fashion MNIST数据集地址:

https://research.zalando.com/welcome/mission/research-projects/fashion-mnist/


     Fashion MNIST同样也可以在TensorFlow中直接导入。

from tensorflow.keras.datasets import fashion_mnist(x_train, y_train), (x_test, y_test) = fashion_mnist.load_data()print(x_train.shape, y_train.shape, x_test.shape, y_test.shape)
(60000, 28, 28) (60000,) (10000, 28, 28) (10000,)


     可视化展示10种类别:

class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',               'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']plt.figure(figsize=(12,8))
for i in range(10):    plt.subplot(2,5,i+1)    plt.xticks([])    plt.yticks([])    plt.grid(False)    img = x_train[y_train == i][0].reshape(28, 28)    plt.imshow(x_train[i], cmap=plt.cm.binary) plt.xlabel(class_names[y_train[i]])


CIFAR-10

     相较于MNIST和Fashion MNIST的灰度图像,CIFAR-10数据集由10个类的60000个32*32彩色图像组成,每个类有6000个图像。有50000个训练图像和10000个测试图像。


     CIFAR-10是由Hinton的学生Alex Krizhevsky(AlexNet的作者)和Ilya Sutskever 整理的一个用于识别普适物体的彩色图像数据集。一共包含10个类别的RGB彩色图片:飞机( airplane)、汽车(automobile)、鸟类(bird)、猫(cat)、鹿(deer)、狗(dog)、蛙类(frog)、马(horse)、船(ship)和卡车(truck)。


     CIFAR-10的官方地址如下:

https://www.cs.toronto.edu/~kriz/cifar.html


     CIFAR-10在TensorFlow中导入方式如下:

from tensorflow.keras.datasets import cifar10(x_train, y_train), (x_test, y_test) = cifar10.load_data()print(x_train.shape, y_train.shape, x_test.shape, y_test.shape)

(50000, 32, 32, 3) (50000, 1) (10000, 32, 32, 3) (10000, 1)


     CIFAR-10的可视化展示如下:

plt.figure(figsize=(12,8))
for i in range(10):    plt.subplot(2,5,i+1)    plt.xticks([])    plt.yticks([])    plt.grid(False) plt.imshow(x_train[i], cmap=plt.cm.binary)




CIFAR-100

     CIFAR-100可以看作是CIFAR-10的扩大版,CIFAR-100将类别扩大到100个类,每个类包含了600张图像,分别有500张训练图像和100张测试图像。CIFAR-100的100个类被分为20个大类,每个大类又有一定数量的小类,大类和大类之间区分度较高,但小类之间有些图像具有较高的相似度,这对于分类模型来说会更具挑战性。


     CIFAR-100数据集地址:

https://www.cs.toronto.edu/~kriz/cifar.html


     CIFAR-10在TensorFlow中导入方式如下:

from tensorflow.keras.datasets import cifar100(x_train, y_train), (x_test, y_test) = cifar100.load_data()print(x_train.shape, y_train.shape, x_test.shape, y_test.shape)

(50000, 32, 32, 3) (50000, 1) (10000, 32, 32, 3) (10000, 1)


     CIFAR-100的可视化展示如下:

plt.figure(figsize=(12,8))
for i in range(100):    plt.subplot(10,10,i+1)    plt.xticks([])    plt.yticks([])    plt.grid(False) plt.imshow(x_train[i], cmap=plt.cm.binary)


ImageNet

     ImageNet图像数据集是在2009年由斯坦福的李飞飞主导的一个项目形成的一个数据集。李飞飞在CVPR2009上发表了一篇名为《ImageNet: A Large-Scale Hierarchical Image Database》的论文,之后从2010年开始基于ImageNet数据集的7届ILSVRC大赛,这使得ImageNet极大的推动了深度学习和计算机视觉的发展。ILSVRC大赛历届经典网络。




     目前ImageNet中总共有14197122张图像,分为21841个类别,数据官网地址为:

http://www.image-net.org/


     ImageNet数据集示例:


PASCAL VOC

     PASCAL VOC挑战赛(The PASCAL Visual Object Classes)是一个世界级的计算机视觉挑战赛, 其全称为Pattern Analysis, Statical Modeling and Computational Learning,从2005年开始到2012年结束,PASCAL VOC最初主要用于目标检测,很多经典的目标检测网络都是在PASCAL VOC上训练出来的,比如Fast R-CNN系列的各种网络。后来逐渐增加了分类、分割、动作识别和人体布局等五类比赛。


     目前PASCAL VOC主要分为VOC2007和VOC2012两个版本的数据集。VOC2007和

VOC2012的数据统计对比:




     VOC数据集示例:



     PASCAL VOC 数据集地址:

http://host.robots.ox.ac.uk/pascal/VOC/


COCO

     COCO数据集是微软在ImageNet和PASCAL VOC数据集标注上的基础上产生的,主要是用于图像分类、检测和分割等任务。COCO全称为Common Objects in Context,2014年微软在ECCV Workshops里发表了Microsoft COCO: Common Objects in Context。文章中说明了COCO数据集以场景理解为目标,主要从复杂的日常场景中截取,图像中的目标通过精确的分割进行位置的标定。COCO包括91个类别目标,其中有82个类别的数据量都超过了5000张。


     COCO数据集主页地址:

http://cocodataset.org/#home


     COCO数据集示例:


     当然,笔者这里所列的主要都是视觉方向的通用数据集,关于NLP和其他细分领域的一些经典数据集,我们后续内容再做介绍。



往期精彩:

深度学习100问-11:什么是学习率衰减?

深度学习100问-10:如何部署一个轻量级的深度学习项目?

深度学习100问-9:为什么EfficientNet号称是最好的分类网络?

深度学习100问-8:什么是Batch Normalization?

深度学习100问-7:dropout有哪些细节问题?

深度学习100问-6:有哪些经典的卷积类型?

深度学习100问-5:如何阅读一份深度学习项目代码?

深度学习100问-4:深度学习应遵循怎样的论文研读路线?

深度学习100问-3:深度学习应掌握哪些Linux开发技术?

深度学习100问-2:深度学习应掌握哪些Git开发技术?

深度学习100问-1:深度学习环境配置有哪些坑?







一个算法工程师的成长之路

长按二维码.关注机器学习实验室


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存