深度学习中的目标检测:概述

Posted 冰不语

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了深度学习中的目标检测:概述相关的知识,希望对你有一定的参考价值。

本文首发于公众号CVPy:
深度学习中的目标检测:概述


本文由`CVPy`翻译自以下文章:
https://tryolabs.com/blog/2017/08/30/object-detection-an-overview-in-the-age-of-deep-learning/

前言

从简单的图像分类到3D姿势估计,计算机视觉中不乏有趣的问题。目标检测是我们最感兴趣并且已经研究过的问题之一。

像许多其他计算机视觉问题一样,仍然没有一种“最佳”的方法来解决目标检测问题,这意味着仍有很大的改进空间。

在本文中,我们将简要介绍目标检测中最常见的问题,深入探讨实际应用,并了解近年来解决问题的方法在深度学习中是如何转变的。

对象检测与其他计算机视觉问题

图片分类

这可能是计算机视觉中最著名的问题。它包括将图像分为许多不同类别之一。ImageNet是学术界最受欢迎的数据集之一,它由数百万个分类的图像组成,(部分)在ImageNet大规模视觉识别挑战赛(ILSVRC)年度竞赛中使用。近年来,分类模型已经超越了人类的表现,并且我们认为图像分类任务实际已经解决的。虽然有大量的图像分类的挑战,也有大量的文章讲述如何解决,以及哪些是仍然存在的挑战。

目标定位

类似于分类,目标定位可以找到图像内单个对象的位置。

目标定位可用于许多有用的现实生活中的问题。例如,智能裁剪(根据对象所在的位置知道在哪里裁剪图像),甚至是常规对象提取,以使用不同的技术进行进一步处理。它
可以与分类相结合,不仅可以定位对象,还可以将其分类为许多可能的类别之一。

实例分割

从对象检测到更进一步,我们不仅要查找图像内的对象,还希望找到每个检测到的对象的逐像素的Mask。我们将此问题称为实例分割或对象分割。

目标检测

了解定位和分类问题后,我们最终需要同时检测和分类多个对象。对象检测是在图像上查找和分类可变数量的对象的问题。重要的区别是可变部分。与分类等问题相反,对象检测的输出在长度上是可变的,因为检测到的对象的数量可能在图像之间变化。

目标检测的实际用途

在Tryolabs,我们专注于应用最先进的机器学习来解决业务问题,因此,尽管我们喜欢所有疯狂的机器学习研究问题,但最终我们还是对应用程序更加关心。

尽管目标检测在某种程度上仍然是行业中的一种新工具,但已经有许多有用且令人兴奋的应用程序使用它。

人脸检测

从2000年代中期开始,某些傻瓜相机就具备了检测面部的功能,从而可以更有效地进行自动对焦。虽然它是一种应用面狭窄的目标检测类型,但是所用方法适用于其他类型的对象,我们将在后面介绍。

计数

一种简单但经常被忽略的目标检测方法是计数。对人、汽车、花朵甚至微生物计数的能力是现实世界中的需求,这是使用图像的不同类型的系统广泛需要的。最近,随着视频监控设备的不断涌现,利用计算机视觉将原始信息转换为结构化数据的机会比以往任何时候都大。

视觉搜索引擎

最后,我们喜欢的一个用例是Pinterest的可视化搜索引擎。他们使用目标检测作为索引图像不同部分的Pipeline的一部分。这样,在搜索特定包包时,您可以在不同的上下文中找到与所需包包相似的包包实例。这比诸如Google Image那样的反向搜索引擎查找相似的图像要强大得多。

航空影像分析

在廉价无人机和(接近)负担得起的卫星发射时代,从未有过如此庞大的数据。已经有一些公司使用诸如PlanetDescartes Labs等公司的卫星图像,将物体检测应用于汽车,树木和船只的计数。这导致了高质量的数据,这是以前不可能获取(或极其昂贵)的数据,现在已经覆盖了更广泛的受众。

一些公司正在使用无人机镜头对难以到达的地方进行自动检查(例如BetterView),或者将对象检测用于一般目的分析(例如TensorFlight)。最重要的是,一些公司无需人工干预就可以自动检测和定位到问题。

目标检测的问题和挑战

让我们开始更深入地探讨对象检测的主要问题。

可变数量的对象

我们已经提到了有关可变数目的目标,但是我们省略了这为什么是一个问题的部分。在训练机器学习模型时,通常需要将数据表示为固定大小的向量。由于图像中的对象数量事先未知,我们将不知道正确的输出数量。因此,需要进行一些后处理,这增加了模型的复杂性。

从历史上看,使用基于滑动窗口的方法解决了可变数量的输出,并针对该窗口的所有不同位置生成了该窗口的固定大小特征。得到所有预测后,将某些预测丢弃,并将某些合并以得到最终结果。

大小

另一个大挑战是对象的不同大小。在进行简单分类时,您希望对覆盖大部分图像的对象进行分类。另一方面,您想找到的一些对象可能只有十几个像素(或原始图像的一小部分)。传统上,这是通过使用大小不同的滑动窗口解决的。这很简单,但是效率很低。

建模

第三个挑战是,同时解决以上两个问题。我们如何将两种不同类型的需求结合在一起:理想情况下,把定位和分类合并为一个模型?

在深入研究深度学习以及如何应对这些挑战之前,让我们快速介绍一下经典方法。

经典方法

尽管这些年来有许多不同类型的方法,但我们希望关注两种最流行的方法(仍在广泛使用)。

第一个是Paul ViolaMichael Jones于2001年在论文Robust Real-time Object Detection中提出的Viola-Jones框架。该方法是快速且相对简单的,以至于它是在傻瓜相机中实现的算法,该算法允许以很少的处理能力进行实时人脸检测。

我们不会详细介绍它的工作方式和训练方法,但是从高层次上讲,它是通过使用Haar特征生成不同的(可能是数千个)简单的二分类器来工作的。这些分类器使用级联的多尺度滑动窗口进行评估,如果分类为负,则尽早删除。

另一种传统且类似的方法是使用定向梯度直方图(HOG 特征和支持向量机(SVM)进行分类。它仍然需要一个多尺度的滑动窗口,尽管它比Viola-Jones优越,但速度要慢得多。

深度学习方法

深度学习已成为机器学习,特别是计算机视觉领域真正的游戏规则改变者,这并不是新闻。就像深度学习模型在图像分类任务上粉碎了其他经典模型一样,深度学习模型现在也成为目标检测领域的佼佼者。

为了让您对挑战是什么以及如何应对有一个更好的直觉,我们将对深度学习方法在过去几年中的发展方式进行概述。

OverFeat

使用深度学习进行对象检测的最早进展之一是2013年NYU发布的OverFeat。他们提出了使用卷积神经网络(CNN)的多尺度滑动窗口算法

R-CNN

OverFeat之后不久,来自加州大学伯克利分校Ross Girshick等人的Regions with CNN features or R-CNN论文发表了,它在目标检测挑战方面提高了近50%。他们提出了一种三阶段方法:

  • 使用区域提议方法(最流行的一种是“选择性搜索”)提取可能的目标
  • 使用CNN从每个区域提取特征
  • 使用SVM对每个区域(提取的特征)进行分类

虽然R-CNN取得了不错的成绩,但训练仍然存在很多问题。要对其进行训练,您首先必须为训练数据集生成建议,将CNN特征提取应用于数据集中的每一张图片(对于Pascal 2012训练数据集通常需要200GB以上的空间),然后最后训练SVM分类器。

Fast R-CNN

一年后,Ross Girshick(现为微软研究院)发布了Fast R-CNN,这种方法迅速发展成为一种纯粹的深度学习方法。与R-CNN相似,它使用选择性搜索来生成对象建议,但不再是独立提取所有区域建议并使用SVM分类器,取而代之的是,在完整图像上应用了CNN,然后在特征上使用了兴趣区域池化(RoI Pooling)和一个最终的前馈网络,同时进行分类和回归。

这种方法不仅速度更快,而且拥有RoI池化层和全连接层,从而使模型可以端到端地微分并易于训练。最大的缺点是该模型仍然依赖于选择性搜索(或任何其他区域提议算法),这成为了将其用于推理的瓶颈。

YOLO

此后不久,You Only Look Once: Unified, Real-Time Object DetectionJoseph Redmon论文发布(其中Girshick作为其中的合著者之一)。YOLO提出了一种简单的卷积神经网络方法,该方法具有很好的结果和很高的速度,首次实现了实时目标检测。

Faster R-CNN

随后,Faster R-CNNShaoqing Ren(由Girshick还是合著者,在Facebook研究院)撰写,R-CNN系列的第三代。Faster R-CNN添加了他们所谓的区域提议网络(RPN),以摆脱选择性搜索算法,并使模型端到端完全可训练。我们不会详细介绍RPN的功能,但总的来说,它的任务是根据“对象置信度(是一个对象的可能性)”得分输出对象。RoI池化和全连接层将这些对象用于分类。

SSD和R-FCN

最后,有两篇著名的论文,Single Shot Detector(SSD),它通过使用多个尺度的卷积特征图来获得更好的结果和性能;以及Region-based Fully Convolutional Networks (R-FCN),它采用了Faster R-CNN的体系结构,但仅具有卷积网络。

数据集的重要性

数据集在研究中起着非常重要(有时被低估)的作用。每次发布新的数据集时,都会发布论文,并对新模型进行比较并经常加以改进,从而突破了可能的极限。

不幸的是,没有足够的数据集进行目标检测。数据难以生成(且成本更高),公司可能不随意放弃投资,而大学没有那么多资源。

但仍然有一些很棒的东西,下面是主要可用数据集的列表。

结语

总之,无论是在看不见的应用中,还是在用于推动最新技术成果的新方法中,都有许多有关目标检测的机会。即使这只是对象检测的一般概述,我们希望它能为您提供基础知识和获得更深知识的基线。

以上是关于深度学习中的目标检测:概述的主要内容,如果未能解决你的问题,请参考以下文章

深度学习目标检测概述

深度学习目标检测网络结构SPP FAST-RCNN FASTER-RCNN

Res2Net:新的深度学习多尺度结构,提升物体检测立竿见影

深度学习与图神经网络核心技术实践应用高级研修班-Day4基于深度学习的目标检测(object_detection)

万字长文概述单目3D目标检测算法

深度学习目标分割概述