【数据】深度学习从“数据集”开始
从今天开始增加一个新板块,数据集介绍
作者 | 言有三(微信号Longlongtogo)
编辑 | 言有三
数据是深度学习的输入,很重要而又容易被人忽视,而且缺乏系统性的介绍资料,从这个板块开始,我们来给大家系统性的介绍深度学习中的数据集。
从最常用的数据集开始到各个子任务领域中使用的数据集,对于轻视数据的朋友,请关注大佬们早期都在做什么。
今天说5个最常用的,他们对于深度学习网络的发展,通用的分类/分割/检测任务的评测具有其他数据集不可比拟的作用。
01 mnist【1】
数据集链接:http://yann.lecun.com/exdb/mnist/,发布于1998年。
如果说LeNet-5是深度学习的hello world,那么mnist就是深度学习数据集里的“hello world”,看看文【1】的作者,Yann Lecun,Y.Bengio,Patrick Haffner就知道了。
如果你想了解早期学者们对gradient-based learning(基于梯度的学习方法)方法的一点努力,想了解为什么卷积神经网络需要local reception field(局部感受野),需要sub-sample(下采样),需要shared weights(共享权重)不妨细读这篇40多页的论文,不只是LeNet-5这个网络,更是一个完整的系统的描述。
mnist是一个手写数字的数据集,来自美国国家标准与技术研究所(National Institute of Standards and Technology),简称 NIST。样本来自250个不同人的手写数字, 其中50%是高中学生,50%是人口普查局的工作人员。数字从0~9,图片大小是28*28,训练数据集包含 60000个样本,测试数据集包含10000个样本,示例图如下。
数据集由Chris Burges和Corinna Cortes搜集,他们裁剪出数字,将其放在20x20像素的框中,并保持了长宽比率,然后放在28*28的背景中,这也是Lecun提供给我们的数据集版本,数字的重心在图的正中间。
原来20*20的数字是二值图,在经过插值后放在28*28的背景下成了灰度图。在LeNet5中使用的输入是32*32,远大于数字本身尺度最大值,也就是20*20。这是因为对于分类来说潜在的重要的笔触信息,需要在最高层的检测子的感受野中心,而LeNet-5经历了两个5*5的卷积,并且没有padding操作,最后卷积层的featuremap大小10*10正好能够覆盖原图正中间20*20的区域。
02 cifar10和cifar100【2】
数据集链接:http://www.cs.toronto.edu/~kriz/cifar.html,发布于2009年。
cifar数据集由Alex Krizhevsky, Vinod Nair, and Geoffrey Hinton等人收集。这里的Alex Krizhevsky正是alexnet那个“alex”,这个hinton就不用说了,你看大牛们谁还没倒过数据,而现在很多学生还不愿意整理数据。
cifar数据集包含两个,一个是cifar10,一个是cifar100。
mnist数据集有几个缺陷(1)只是灰度图像(2)类别少,只是手写数字(3)并非真实数据,没有真实数据的局部统计特性
所以将mnist用于评估越来越深的神经网络当然不再恰当,因此需要更大的真实的彩色数据集,需要更好的多样性。
cifar10被适时地整理出来,这也是一个只用于分类的数据集,是tiny数据集的子集。后者是通过选取wordnet中的关键词,从google,flick等搜索引擎中爬取,去重得来。
数据集共有60000张彩色图像,图像大小是32*32,共10个类,每类6000张图。其中50000张组成训练集合,每一类均等,都是5000张图。另外10000为测试集合,每一类也是均等,各1000张。
cifar10里的图片满足一些基本的要求(1)都是真实图片而不是手稿等(2)图中只有一个主体目标(3)可以有部分遮挡,但是必须可辨识,这可以成为我们以后整理数据集的参考。
可以看出,cifar10有点类似于类别多样性得到了扩充的mnist的彩色增强版,图像大小差不多,数据集大小也一样,类别也相等。
如上图,10个类别分别是airplane,automobile,bird,cat,deer,dog,frog,horse,ship,truck,其中airplane,automobile,ship,truck都是交通工具,bird,cat,deer,dog,frog,horse都是动物,可以认为是两个大的品类。而交通工具内部,动物内部,都是完全不同的物种,这些都是语义上完全可以区分的对象,所以cifar10的分类任务,可以看作是一个跨物种语义级别的图像分类问题。类间方差大,类内方差小。
cifar100数据集则包含100小类,每小类包含600个图像,其中有500个训练图像和100个测试图像。与cifar10不同的是,100类被分组为20个大类,而每一个大类,又可以细分为子类,所以每个图像带有1个小类的“fine”标签和1个大类“coarse”标签。
大类之间,没有重叠容易区分,但是小类之间,会有一定的相似性,以第一个大类为例;aquatic mammals,就是水生哺乳动物,它包括beaver河狸, dolphin海豚, otter水獭, seal海豹, whale 鲸鱼,感受一下差别。
03 PASCAL【3】
数据集链接:http://host.robots.ox.ac.uk/pascal/VOC/,初始发布于2005年,至2012年止。
The PASCAL Visual Object Classes (VOC)项目是由Mark Everingham等人牵头举办的比赛,这是一个时间跨度很大的比赛,从2005年到2012年,起初主要用于object detection(目标检测),最后包含了5个比赛,classification,detection,segmentation,action classification,person layout。
PASCAL是什么呢?即Pattern Analysis, Statistical Modelling and Computational learning,不要用了这么久都不知道这是什么意思。顾名思义,这是一个用于模式分析和统计建模的数据集,包括图像分类,目标检测,分割等任务。
2005年,数据集还只有4类,即bicycles, cars, motorbikes, people,共1578张图片,现在已经没有人用05年的数据集了。
2007年增加到了20类,如下
图都是来源于图片社交网站flickr,总共9,963 张图,24,640个标注目标。
12年最后一届比赛将数据增加到11,530张图,27,450个目标框标注,6,929个分割标注,07年和12年的数据集,各自仍然被广泛使用。
从07年开始引进了图像分割的标注和人体布局的标注。
从10年开始引进了行为分类标注。
从07年开始,使用average precision替换掉了ROC曲线下面的AUC(area under curve),提高了评估算子的敏感性,因为在VOC2006很多方法的AUC超过了95%,不好进一步区分算法的能力。此后要想获得高的指标,必须要在各种recall级别下保证精度,这也就意味着仅以很高精度召回部分样本的算法评测指标下降,这对于样本数量不均衡的数据集评测效果更好。
更多详细评测方法可以精读手册和参考文【6】,此处不再详述。
04 imagenet【4】
数据集链接:http://www.image-net.org/,09年李飞飞实验室发布。
ImageNet是李飞飞实验室主导的一个项目,目标是构建一个计算机视觉研究的大型数据库,关键词从WordNet中选取。完整的Imagenet数据集有1400多万幅图片,涵盖2万多个类别的标注与超过百万的边界框的标注,每一个类别大概是500~1000张图片,标注采用了亚马逊的众包平台,这个平台之后被用于构建各种数据集。
09年cvpr正式发布了imagenet,此后从10年到17年共举办了8届Large Scale Visual Recognition Challenge(ILSVRC)比赛,包括图像分类,目标检测,目标定位单元。
开始的开始,imagenet是一个连经费都申请不到的整理数据的项目,为很多研究者们不耻,但科技公司的竞赛热情以及数据集史无前例的多样性,让陷身于过拟合的算法,从数据集本身看到了新的出路,之后的故事大家也就都知道了。
由于类别多,imagenet不可能像mnist那样简单的将所有图片分成互不相干的10类,而是采用了wordnet中树形结构的组织方式。
下面展示了从哺乳动物到有胎盘哺乳动物到肉食动物到犬科的到狗到工作中的狗到哈士奇的这样的不断精细分的类。
imagenet竞赛中使用的是imagenet的一个子类,包括1000类,其中大部分是动物,所以我们常常看到拿动物说事的例子,不是猫就是狗,事实上李飞飞等在整理出imagenet之前,确实有过一些dogs vs cats的数据集,猫狗大战,不亦乐乎。
虽然我们经常用着imagenet调试出来的模型,不过大部分人未必真的知道imagenet的构建过程和历史,有兴趣的同学应该去了解一下,此处我们也没法过于详述了。
05 mircosoft coco【5】
数据集链接:http://cocodataset.org/,发布于2014年,MSRA出品必属精品了。
microsoft coco数据集,可以说就是对标pascal,imagenet数据集出现的,同样可以用于图像分类,分割,目标检测等任务,共30多万的数据。COCO数据集有91类,以人类4岁小孩能够辨识为基准。其中82个有超过5000个instance(instance即同一个类不同的个体,比如图像中不同的人)。
从coco的全称Common Objects in Context可以看出,这个数据集以场景理解为目标,特别选取比较复杂的日常场景,相比于pascal的建立是为了推进目标检测任务,coco的建立则是为了推进自然背景下的定位与分割任务,所以图像中的目标通过非常精确的segmentation掩模进行位置的标定。
数据集的建立动机是研究3个问题(1)non-iconic views(2)
contextual reasoning between objects(3)precise 2D localization。
第一个问题,要求数据集中的图像,尽量不要只是包括一个大的目标或者一个空的场景的图像,而是都有,如下图中的c而不是a,b。
第二个问题就是场景的覆盖性,需要广而且足够复杂。数据集总共有328,000图像和2,500,000个label。与ImageNet和sun相比,类别数目更少,但是每一个类别的instance更多,这其实是有利于目标定位任务的,因为多样性更好。对比PASCAL VOC,COCO则要大的多,有更多类和instance。
第三个问题精确定位,我们可以看下面的instance segmention的标注结果,非常精确,而定位的边框也是从该掩膜生成,非常准确。
总的来说,coco相对于imagenet和pascal是一个更难的数据集,因此在相关任务上我们也需要多关注比较。
06 总结
好了,这篇作为这个系列的总纲,我们往后会进行任务的分类单独介绍。很多人天天在用数据集但是从没有认真看过数据集的构建和背后的动机,希望这个系列能给大家带来更多理解。
如果你能静下心来看论文,那么,发送关键词“数据集0”到公众号,就可以直接获取下载链接。
【1】LeCun Y, Bottou L, Bengio Y, et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998, 86(11): 2278-2324.
【2】Krizhevsky A, Hinton G. Learning multiple layers of features from tiny images[R]. Technical report, University of Toronto, 2009.
【3】Everingham M, Van Gool L, Williams C K I, et al. The pascal visual object classes (voc) challenge[J]. International journal of computer vision, 2010, 88(2): 303-338.
【4】Deng J, Dong W, Socher R, et al. Imagenet: A large-scale hierarchical image database[C]//Computer Vision and Pattern Recognition, 2009. CVPR 2009. IEEE Conference on. Ieee, 2009: 248-255.
【5】Lin T Y, Maire M, Belongie S, et al. Microsoft coco: Common objects in context[C]//European conference on computer vision. Springer, Cham, 2014: 740-755.
【6】Davis J, Goadrich M. The relationship between Precision-Recall and ROC curves[C]//Proceedings of the 23rd international conference on Machine learning. ACM, 2006: 233-240.
如果想加入我们,后台留言吧
转载文章请后台联系
侵权必究
技术交流请移步知识星球
更多请关注知乎专栏《有三AI学院》和公众号《有三AI》