在本章中,我们将讨论ImageNet数据集和相关的ImageNet大规模视觉识别挑战赛(ILSVRC)[9]。这项挑战是评估图像分类算法的事实上的基准。自2012年Krizhevsky等人发表其开创性的AlexNet工作[8]以来,ILSVRC的排行榜一直被卷积神经网络和深度学习技术所主导。
此后,深度学习方法不断扩大CNN与其他传统计算机视觉分类方法之间的准确性差距。毫无疑问,CNN是强大的图像分类器,现在已经成为计算机视觉和机器学习文献中的一个固定组成部分。在本章的后半部分,我们将探讨如何获得ImageNet数据集,这是为了让你在本章后面复制最先进的神经网络的结果而提出的要求。
在计算机视觉和深度学习社区,你可能会遇到一些围绕ImageNet是什么和不是什么的上下文混淆。ImageNet实际上是一个项目,旨在根据一组定义好的单词和短语,将图像标记和分类到所有的22000个类别。在写这篇文章的时候,ImageNet项目中有超过1400万张图片。
那么,ImageNet是如何组织的呢?为了对如此大量的数据进行排序,ImageNet实际上遵循了WordNet的层次结构[10]。WordNet中每个有意义的词/短语都被称为 "同义词集 "或简称为synset。在ImageNet项目中,图像是根据这些同义词集进行分类的;项目的目标是每个同义词集有1000多张图像。
在计算机视觉和深度学习的背景下,每当你听到人们谈论图像网,他们很可能指的是ImageNet大规模视觉识别挑战赛[9],简称ILSVRC。这个挑战赛中的图像分类赛道的目标是训练一个模型,能够正确地将图像分为1000个独立的物体类别,其中一些被认为是细粒度的分类,另一些则不是。ImageNet数据集内的图像是通过汇编以前的数据集和刮取流行的在线网站收集的。然后对这些图像进行人工标注、注释和标记。
自2012年以来,ILSVRC挑战赛的排行榜一直被基于深度学习的方法所占据,排名第一和排名第五的准确率逐年上升(图4.1)。模型在120万张训练图像上进行训练,另有5万张图像用于验证(每个词组50张),10万张图像用于测试(每个词组100张)。
这1000张图片类别代表了我们在日常生活中可能遇到的各种物体类别,如狗的种类、猫、各种家用物品、车辆类型等等。你可以在这个ImageNet官方文档页面(http://pyimg.co/1ogm0)上找到ILSVRC挑战中的全部对象类别列表。
在入门教材的第5章中,我附上了一张图,展示了ImageNet大规模视觉识别挑战赛中与ImageNet数据集有关的一些挑战。与一般的 “鸟”、"猫 "和 "狗 "类不同,ImageNet与以前的图像分类基准数据集(如PASCAL VOC[12])相比,包括了更精细的类别。PASCAL VOC将 "狗 "限定为一个单一的类别,而ImageNet则包括120个不同品种的狗。这种分类要求意味着我们的深度学习网络不仅需要将图像识别为 “狗”,而且还要有足够的辨别力来确定狗的种类。
此外,ImageNet中的图像在物体尺度、实例数量、图像杂乱/排斥、可变形性、纹理、颜色、形状和真实世界的大小方面有很大的不同。这个数据集至少可以说是具有挑战性的,在某些情况下,即使是人类也很难正确标记。由于这个数据集的挑战性,在ImageNet上表现良好的深度学习模型很可能对验证和测试集以外的图像有很好的概括性–这也是我们对这些模型也应用迁移学习的确切原因。
我们将在第五章讨论更多的图像和特定类别的例子,届时我们将开始探索ImageNet数据集并编写代码来准备我们的图像进行训练。然而,在那之前,我强烈建议你花10-20分钟,在你的网络浏览器中浏览一下synsets(http://pyimg.co/1ogm0),感受一下与正确分类这些图像有关的规模和挑战。
ImageNet分类挑战数据集相当大,训练图像为138GB,验证图像为6.3GB,测试图像为13GB。在下载ImageNet之前,你首先需要获得对ILSVRC挑战赛的访问权,并下载图像和相关的类别标签。本节将帮助你获得ImageNet数据集。
ILSVRC挑战赛是普林斯顿大学和斯坦福大学的一项联合工作,因此是一个学术项目。ImageNet不拥有图像的版权,只允许为非商业研究和/或教育目的访问原始图像文件(尽管这一点有待商榷–见下文第4.2.5节)。如果你属于这个阵营,你可以简单地在ILSVRC网站(http://pyimg.co/fy844)上注册一个账户。
但是请注意,ImageNet不接受免费的电子邮件地址,如Gmail、Yahoo等。- 相反,你需要提供你的大学或政府/研究机构的电子邮件地址。如图4.2所示,我只需要提供我的大学电子邮件地址,从那里我就能验证我的电子邮件地址,然后接受访问条款。
一旦你接受了访问条款,你就可以进入下载原始图像页面–点击ILSVRC 2015图像数据链接。在那里,请确保你下载开发工具包,一个包含README、训练/测试分割信息、不应该用于训练的黑名单文件等的.zip文件(图4.3)。
然后,你要下载CLS-LOC数据集,其中包含ImageNet数据集中的120万张图像(图4.3)。请记住,这是一个很大的文件,根据你的网络连接(以及image-net.org的稳定性),这个下载可能需要几天时间。我个人的建议是使用wget命令行程序来下载档案,使你能够从你离开的地方重新开始下载,以防出现连接问题(可能会有少数问题)。解释如何使用wget超出了本书的范围,所以请参考下面的页面,了解如何用wget重新启动下载(http://pyimg.co/97u59)。
下载完.tar压缩文件后,下一步是解压,这也是一个计算成本很高的过程,因为你需要解压≈120万张图片–我建议让你的系统在一夜之间解决这个任务。
如果你被拒绝访问ILSVRC的原始图像数据,不要担心–还有其他方法可以获得数据,尽管这些方法略显繁琐。请记住,ImageNet并不 "拥有 "数据集内的图像,所以他们可以自由地分发图像的URLs。数据集中每张图片的URL(一个.txt文件,每行一个URL)都可以在这里找到。http://pyimg.co/kw64x
同样,你需要使用wget来下载图片。你在这里可能遇到的一个常见问题是,一些图片的URL可能在最初的网络抓取之后就自然而然地被404了,你将无法访问它们。因此,以编程方式下载图片可能相当麻烦、乏味,我不推荐这种方法。
由于ImageNet数据集的巨大规模和在全球范围内传播的需要,该数据集很适合通过BitTorrent进行传播。AcademicTorrents.com网站提供训练集和验证集的下载(http://pyimg.co/asdyi)[13]。该网页的截图见图4.4。
在这里插入图片描述
测试集不包括在洪流中,因为我们将无法访问ImageNet评估服务器来提交我们对测试数据的预测。请记住,即使您使用AcademicTorrents等外部服务来下载ImageNet数据集,您仍然受到访问条款的隐含约束。您可以使用ImageNet来研究和开发您自己的模型,但您不能重新包装ImageNet并将其用于营利–这完全是一个由斯坦福大学和普林斯顿大学的合资企业提供的学术数据集。请尊重科学界,不要违反使用条款。
在下载实际的ImageNet数据集的同时,请确保下载ImageNet开发工具包(http://pyimg.co/wijj7),我们以后将其简称为 “DevKit”。
我也在这里放置了一个DevKit的镜像:http://pyimg.co/ounw6 DevKit包含:
DevKit是一个很小的下载,只有7.4MB,应该在几秒钟内完成。一旦你下载了DevKit,将其解压缩,并花时间熟悉目录结构,包括许可证(复制)和readme.txt。当我们建立ImageNet数据集并为训练CNN做准备时,我们将在下一章中详细回顾DevKit。
乍一看,ImageNet数据集和相关的ILSVRC挑战似乎是一个版权要求的雷区–究竟谁拥有ImageNet数据集中的什么?为了回答这个问题,让我们把这个问题分成三个具体的资产类别。
首先,原始图像本身属于拍摄图像的人/实体,他们拥有这些图像的全部版权。ImageNet项目的运作受到与Google、Bing等搜索引擎相同的限制。- 他们被允许提供原始版权图像的链接,但必须保留版权。这一规定就是为什么允许ImageNet网站提供数据集中的原始图像的URL,而不要求你注册和创建一个账户–实际下载这些图像是你的责任。
这个过程似乎相当清晰;然而,一旦我们看了ILSVRC的实际挑战,水就开始变得浑浊。由于终端用户不再负责逐一下载每张图片(而是可以下载整个数据集的档案),我们遇到了版权问题–为什么用户可以下载预先编译好的(潜在的)有版权的图片档案?这不是侵犯了拍摄原始照片的人的版权吗?这是艺术界和科学界的一个争论点,但就目前的情况来看,由于我们在参与ILSVRC时接受的访问条款,我们被允许下载ILSVRC的图像档案。
原来的版权问题没有得到直接的回答,但通过对预编译数据集档案的限制,在一定程度上得到了缓解。此外,ImageNet网站为那些希望从数据集中删除其图像的版权人提供了DMCA移除申请。
最后,让我们来看看资产#3,即在ImageNet数据集上训练卷积神经网络后得到的某个模型的序列化权重–这些模型权重也受版权保护吗?
答案有点不清楚,但就我们目前对法律的理解而言,对公开发布学习过的模型权重没有任何限制[14]。因此,只要我们牢记公平使用和适当归属的精神,我们就可以自由地分发我们训练过的模型。
我们之所以被允许分发我们自己的模型(甚至可以用我们自己的限制条件来为它们争取版权)是由于参数化学习(Starter Bundle,第8章)–我们的CNN并不存储原始图像的 “内部副本”(比如k-NN算法)。由于模型不存储原始图像(无论是全部还是部分),模型本身不受原始ImageNet数据集的版权要求约束。因此,我们可以自由地分发我们的模型权重,或在其上放置额外的版权(例如,最终用户可以自由地使用我们现有的架构,但在商业应用中使用之前,必须在原始数据集上从头开始重新训练网络)。
但是,在ImageNet上训练的模型如果被用于商业应用,又该如何处理呢?
在ImageNet数据集上训练并用于商业应用的模型是否违反了访问条款?根据访问条款的措辞,是的,从技术上讲,这些商业应用有违反合同的风险。
另一方面,还没有人对使用ImageNet数据集从头开始训练自己的网络的深度学习公司/创业公司提起诉讼。请记住,除非强制执行,否则版权是没有力量的–关于ImageNet,从来没有做过这样的强制执行。
简而言之:这是深度学习社区的一个灰色地带。有大量的深度学习初创公司依靠在ImageNet数据集上训练的CNN(公司名称特意省略)–他们的收入完全基于这些网络的性能。事实上,如果没有ImageNet和ILSVRC,这些公司就不会有创造其产品所需的数据集(除非他们自己投资数百万美元和多年收集和注释数据集)。
在我看来,ImageNet数据集的公平使用有一套不为人知的规则。我认为这些规则如下(尽管肯定会有很多人不同意我的观点)。
第三条规则会引起激烈的争论,我肯定会收到许多关于它的电子邮件–但问题是–虽然规则不明确,但还没有关于如何使用从ILSVRC得出的网络权重的诉讼,包括商业应用。再次,请记住,版权只有在实际执行的情况下才有效–仅仅持有版权并不能作为一种保护形式。
此外,在ILSVRC上训练的深度学习模型的使用既是一个法律问题,也是一个经济问题–计算机科学行业正经历着深度学习应用的巨大热潮。如果通过全面的立法,限制在受版权保护的图像数据上从头开始训练的CNN的商业使用(即使由于参数化学习,没有原始数据的复制),我们将扼杀一个正在经历高增长和数十亿美元估值的经济的一部分。
在本章中,我们回顾了ImageNet数据集和相关的ILSVRC挑战,这是用来评估图像分类算法的事实基准。然后,我们研究了获得ImageNet数据集的多种方法。
在本书的其余章节中,我将假设你无法获得测试集和相关的ImageNet评估服务器;因此,我们将从训练数据中得出我们自己的测试集。这样做将确保我们能够在本地评估我们的模型,并获得我们网络准确性的合理代理。
现在花点时间在你的机器上开始下载ImageNet数据集。我建议使用ILSVRC的官方挑战网站来下载ImageNet数据,因为这种方法是最简单和最可靠的。如果您没有大学、政府或研究机构的电子邮件地址,请随时向您的同事请求访问,但请记住,无论您如何获得数据,您仍然受到访问条款的约束(即使您通过AcademicTorrents下载)。
我的观点是,通过在ILSVRC数据集上的训练获得的模型权重可以按照你的意愿使用;但是,请记住,这仍然是一个有争议的问题。在部署一个利用ImageNet训练的模型的商业应用之前,我鼓励你咨询适当的法律顾问。
在下一章中,我们将探索ImageNet数据集,了解它的文件结构,并编写Python辅助工具,以促进我们从磁盘上加载图像并为训练做准备的能力。