运用合成数据集来做目标检测:目标检测的介绍_数据_目的
编译:ronghuaiyang
导读
本文谈论利用天生数据集来做目标检测的一些根本观点。
本日,我们开始一系列专门谈论一个特定的机器学习问题,这个问题常日由合成数据来补充:物体检测。在这个系列的第一篇文章中,我们将谈论什么是目标检测,以及数据从哪里来,以及如何让你的网络来检测物体的边界框下面。
问题设定:什么是物体检测
如果你有过打算机视觉方面的履历,或者听过许多关于当代深度学习的神奇之处的先容,你可能知道图像分类问题:如何区分猫和狗?
只管这只是一个二元分类(一个回答是/否的问题),但这已经是一个非常繁芜的问题了。真实天下的图像“生活”在一个非常高维的空间中,以数百万计的特色为数量级:例如,从数学上讲,一张一百万像素的彩色照片是一个超过三百万数字的向量!
因此,图像分类的重点不在于实际学习决策面(分离类),而在于特色提取:我们如何将这个巨大的空间投射到更易于管理的东西上,而分割平面可以相对大略?
这正是深度学习取得如此成功的缘故原由:它不依赖于人们以前用于打算机视觉的手工功能SIFT,而是从零开始学习自己的特色。分类器本身仍旧非常大略和经典:险些所有用于分类的深度神经网络都带有一个softmax层,即基本的逻辑回归。关键是如何将图像空间转换为逻辑回归足够的表示,而这正是网络的其他部分的切入点。如果你看一些早期文章你可以找到例子,人们学习深度神经网络提取特色,然后运用其他分类器,如支持向量机:
但到目前为止,这是很少见的:一旦我们有足够的数据来演习最前辈的特色提取器,在最后进行大略的逻辑回归就随意马虎得多,也足够了。在过去的十年里,人们已经开拓了大量的图像特色提取器:AlexNet, VGG, Inception, ResNet, DenseNet, EfficientNet……
要把它们全部阐明清楚,光靠一篇博客文章是远远不足的,但常见的思路是,你有一个特色提取主干,后面随着一个大略的分类层,然后你在一个大型图像分类数据集中从头到尾地演习全体东西,常日是ImageNet,这是一个巨大的人工标记和管理的数据集,有超过1400万张图片,标记了近22000个种别,以语义层次组织:
一旦你完成了这些,网络已经学会了为真实天下的拍照图像提取信息丰富的、有用的特色,以是纵然你的类不是来自ImageNet,它也常日是一个调度以适应这个新信息的问题。当然,你仍旧须要新的数据,但常日不是数以百万计的图像。当然,除非这是一个完备新颖的图像领域,如x射线或显微镜,在那里ImageNet不会有太大帮助。
但视觉并不是这样事情的。当我环顾四周,我在脑海中看到的不仅仅是单一的标签。我在我的视野中区分不同目标:现在我看到了键盘,我自己的手,一个监视器,一个咖啡杯,一个网络摄像头等等,基本上是在同一韶光。我能够从一个单一的静止图像中同样区分所有这些物体。
这意味着我们须要从分类开始连续下去、分类时为全体图像分配一个标签(你可以分配多个multilabel分类模型,但是他们仍旧是全体图像打标签),其他问题,须要更细粒度的剖析图像中的目标。人们常日会区分几种不同的问题:
分类,就像我们上面谈论的那样。分类 + 定位,你假设图像中只有一个中央目标,你须要去定位这个目标,画一个包围框出来。物体检测,我们本日的主题,须要在一张图像中找到多个目标,并框出来。末了,分割是更加繁芜的问题,你须要找到物体的实际轮廓,即,基本上把图像上的每一个像素划分为一个物体或背景,分割也有几种不同的办法(语义分割、边界分割和实例分割)。用猫和狗阐明如下:
从数学上讲,这意味着网络的输出不再仅仅是一个类标签。它现在是几个不同的类标签,每个都有干系联的矩形。矩形由四个数字定义(两个相对角的坐标,或一个角的坐标,宽度和高度),以是现在每个输出在数学上是四个数字和一个类标签。
从机器学习的角度来看,在我们开始思考如何办理问题之前,我们须要找到数据。基本的ImageNet数据集没有什么用:它是一个分类数据集,以是它有像“Cat”这样的标签,但是它没有边界框!
手动标注现在是一个更困难的问题:你必须为每个目标供应一个边界框,而不仅仅是点击精确的类标签,而且在一张照片上可能有许多目标。
下面是一个用于通用目标检测问题的标注的例子。
你可以想象,为目标检测而手动标注一幅图像须要整整几分钟,而不是像用于分类那样须要几秒钟。那么像这样的大型数据集从何而来呢?
目标检测数据集:真实让我们首先看看我们有什么样的利用真实目标和人工标注的目标检测数据集。首先,让我们快速回顾最盛行的数据集。
ImageNet数据集作为ImageNet大规模视觉识别寻衅(ILSVRC)的关键部分而受到欢迎,这是2010年至2017年举办的一系列比赛。ILSVRC系列见证了一些卷积神经网络中最有趣的进展:AlexNet、VGG、GoogLeNet、ResNet和其他著名的架构都在这里首次亮相。
一个不太为人所知的事实是ILSVRC也一贯有一个物体检测竞赛,而ILSVRC系列实际上是与另一个著名的竞赛互助发展起来的,2005年至2012年举办的PASCAL Visual Object Classes (VOC) Challenge。这些寻衅也从一开始就表示了目标检测,这便是第一个著名的数据集的由来,常日被称为PASCAL VOC数据集。以下是“飞机”和“自行车”类别的一些示例图片:
按照本日的标准,PASCAL VOC是相称小的:20个类,只有11530张图片,27450个目标标注,这意味着PASCAL VOC每幅图片只有不到2.5个目标。目标常日是相称大的和突出的照片,以是PASCAL VOC是一个“随意马虎”的数据集。只管如此,在很长一段韶光里,它仍旧是最大的手动标注的目标检测数据集之一,并在数百篇关于目标检测的论文中默认利用。
在规模和繁芜性方面的下一步是Microsoft Common Objects in Context (Microsoft COCO)数据集。到目前为止,它已经超过200K带有150万个目标实例的标记图像,它不仅供应了边界框,而且还供应了(相称粗糙的)分割轮廓。以下是一些示例图片:
正如你所看到的,现在的目标更加多样化,它们可以有非常不同的大小。这实际上是一个物体检测的大问题:很难让一个单一的网络同时检测大大小小的物体,这也是为什么MS COCO被证明是一个比PASCAL VOC更难的数据集的紧张缘故原由。数据集仍旧是非常干系的,在目标检测,实例分割和其他赛道每年举行比赛。
我想评论辩论的末了一个通用目标检测数据集是目前最大的可用数据集:谷歌的Open Images Dataset。到目前为止,他们到了Open Images V6,它有大约190万张图片和1600万个边界框600个目标类。这相称于每幅图像有8.4个边界框,以是场景相称繁芜,物体的数量也更加均匀分布:
这些例子看起来有趣、多样,有时非常繁芜:
实际上,Open Images之以是成为可能,是由于目标检测本身的进步。如上所述,手工绘制边界框非常耗时。幸运的是,在某种程度上,现有的目标检测器变得非常好,以至于我们可以将边界框委托给机器学习模型,而只用人类来验证结果。也便是说,你可以将模型设置为一个相对较低的灵敏度阈值,这样你就不会错过任何主要的信息,但结果可能会有很多误报。然后请人工标注确认精确的边界框并谢绝误报。
据我所知,这一范式的转变发生在2016年前后Papadopoulos等人的一篇论文之后。它更易于管理,这便是Open Images成为可能的缘故原由,但是对付人类标注者来说,它仍旧有很多事情要做,以是只有像谷歌这样的巨人才能供应如此规模的目标检测数据集。
当然,还有更多的工具检测数据集,常日用于更专门的运用程序:这三个是覆盖通用目标检测的紧张数据集。但等等,这是一个关于合成数据的博客,我们还没有说过一个字!
让我们办理这个问题。
有了像Open Images这样的数据集,紧张的问题就变成了:我们到底为什么须要合成数据来进行目标检测?Open Images看起来险些和ImageNet一样大,我们还没有听说过很多关于图像分类的合成数据。
对付目标检测,答案在于细节和详细的用例。是的,Open Images很大,但它并不能覆盖你可能须要的所有内容。举个恰当的例子:假设你正在为一辆自动驾驶汽车构建一个打算机视觉系统。当然,Open Images有“Car”种别,但你须要更多的细节:不同交通情形下的不同类型的汽车、路灯、各种类型的行人、交通标志等等。如果你所须要的只是一个图像分类问题,那么你可以为新类创建自己的数据集,每个类包含几千张图像,手工为其贴上标签,并为新类调度网络。在目标检测,特殊是分割中,它就不那么随意马虎事情了。
考虑一下最新和最大的自动驾驶真实数据集:Caesar et al.的nuScenes,顺便说一下,这篇论文已经被CVPR 2020接管了。他们创建了一个包含6个摄像机、5个雷达和1个激光雷达的完全数据集,并利用3D边界框(这是我们走向3D场景理解的新标准)和人类场景描述进行了充分标注。以下是数据的一个样本:
所有这些都是在***中完成的!
nuScenes数据集包含1000个场景,每20秒以2Hz的频率进行关键帧采样,以是统共有40000张非常相似的40张标注图像(来自同一个场景)。给这类数据贴上标签已经是一项弘大而昂贵的事情。
将其与名为ProcSy的自动驾驶合成数据集进行比较。它的特点是像素完美的分割(利用合成数据,没有差异,你可以像哀求分割边界框一样大略),利用CityEngine构建深度舆图的城市场景与交通,然后用虚幻引擎渲染。它看起来像这样(带有分割、深度和遮挡图):
在论文中,比较了不同分割模型在恶劣景象条件和其他可能使问题繁芜化的成分下的性能。为此,他们只须要11000帧的小数据样本,这便是你可以从上面的网站***的(顺便说一下,压缩文件就有30Gb)。他们报告说,这个数据集是从135万可用的道路场景中随机抽取的。但最主要的部分是数据集是程序天生的,以是实际上它是一个潜在的无限数据流,你可以改变舆图、交通类型、景象状况等等。
这是合成数据的紧张特点:一旦你预先投资创建(或者更准确地说,探求和调度)你感兴趣的目标的3D模型,你就可以拥有尽可能多的数据。如果你做了额外的投资,你乃至可以转向全尺寸交互式3D天下,但这又是另一个故事了。
—END—
英文原文:https://synthesis.ai/2020/08/05/object-detection-with-synthetic-data-i-introduction-to-object-detection/
本文系作者个人观点,不代表本站立场,转载请注明出处!