A Taxonomy of Deep Convolutional Neural Nets for Computer Vision

基本信息

机器翻译,部分不准确。
全文链接:https://www.frontiersin.org/articles/10.3389/frobt.2015.00036/full

摘要

解决计算机视觉问题及其获得的成功程度的传统体系结构在很大程度上依赖于手工制作的功能。但是,最近,深度学习技术提供了一种引人注目的替代方案–自动学习特定于问题的功能。通过这种新范例,现在正在从深度学习的角度重新审查计算机视觉中的每个问题。因此,了解哪种深度网络适合于给定的问题就变得很重要。尽管存在对这种快速发展的范例(即深层网络)的一般调查,但缺少针对计算机视觉的调查。我们专门考虑广泛用于计算机视觉的一种形式的深层网络-卷积神经网络(CNN)。我们以“ AlexNet”作为我们的基础CNN,然后研究随着时间的推移为适应不同应用而提出的广泛变化。我们希望我们的食谱式调查能够为您提供指导,尤其是对于打算使用深度学习技术进行计算机视觉的新手。

1. Introduction

传统上,计算机视觉问题(例如图像分类和对象检测)是使用手工设计的特征解决的,例如Lowe(2004)的SIFT和Dalal and Triggs(2005)的HoG。 特别地,基于视觉词袋描述符的表示(参见Yang等,2007)在图像分类中获得了成功。 这些之后通常是学习算法,例如支持向量机(SVM)。 结果,这些算法的性能主要取决于所使用的特征。 这意味着计算机视觉的进步是基于手工设计更好的特征集。 随着时间的流逝,这些功能开始变得越来越复杂-导致难以提供更好,更复杂的特征。 从计算机视觉从业者的角度来看,要遵循两个步骤:特征设计和学习算法设计,这两个步骤在很大程度上都是独立的。

同时,机器学习社区中的一些研究人员一直在研究学习模型,该模型整合了从原始图像中学习特征的能力。这些模型通常由多层非线性组成。人们认为此属性非常重要–这导致了第一个深度学习模型的发展。早期的例子,例如受限玻尔兹曼机器(Hinton,2002),深度置信网络(Hinton等,2006)和堆叠式自动编码器(Vincent等,2010),在小型数据集上显示出了希望。这些工作背后的主要思想是利用大量未标记的数据来训练模型。这被称为“无监督预训练”阶段。人们认为,这些“预训练”模型将为进一步监督任务(如图像分类)提供良好的初始化。将这些算法扩展到2012年ILSVRC竞赛(见Russakovsky等人,2015)期间达到最高点的更大数据集的努力,其中包括将图像分类为1000个类别中的1个的任务。 Krizhevsky等人(2012)首次基于卷积神经网络(CNN)的深度学习模型。 将该任务的错误率降低了一半,超过了传统的手工设计方法。出人意料的是,这可以通过执行端到端的有监督的训练而无需无监督的预训练来实现。在接下来的几年中,Krizhevsky等人 (2012)的“使用深度神经网络的Imagenet分类”,成为计算机视觉领域最具影响力的论文之一。卷积神经网络是深度学习模型的一种特殊形式,此后被视觉界广泛采用。特别是,由Alex Krizhevsky训练的网络(通常称为“ AlexNet”)已针对各种视觉问题进行了使用和修改。因此,在本文中,我们主要讨论CNN,因为它们与视觉社区更加相关。随着存在大量用于解决不同任务的深层卷积网络,我们认为是时候对调查进行总结CNN了。本文还可以作为初学者的深度学习/计算机视觉指南。

本文的结构如下。 我们首先开发CNN背后的一般原理(请参阅卷积神经网络简介),然后讨论适用于不同问题的各种修改形式(请参阅CNN风味)。 最后,我们讨论一些未解决的问题(请参阅未解决的问题)和进一步研究的方向。

2. Introduction to Convolutional Neural Networks

卷积神经网络(CNN)的想法并不新鲜。 LeCun等人(1998年)证明该模型可以很好地用于手写数字识别。 但是,由于这些网络无法缩放到更大的图像,因此它们逐渐失宠。 这主要是由于内存和硬件限制,以及大量训练数据的不可用。 由于GPU的广泛可用性以及诸如ImageNet(请参阅Russakovsky等人,2015)和MIT Places数据集(请参见Zhou等人,2014)的大规模数据集的引入,随着计算能力的提高,训练更大、更复杂的模型成为可能 。 前面讨论过的流行的AlexNet模型首先显示了这一点。 这在很大程度上开始了深度网络在计算机视觉中的使用。

2.1. Building Blocks of CNNs

在本节中,我们将总体上看CNN的基本构建块。 假设读者熟悉传统的神经网络,在本文中我们将其称为“完全连接的层”。 图1显示了AlexNet模型中权重的表示。 前五层是卷积,后三层是完全连接的层。

在这里插入图片描述

图1. AlexNet模型中权重的图示。 请注意,在每一层之后,都有一个隐式的ReLU非线性。 大括号内的数字表示其上面提到的尺寸的过滤器的数量。

2.1.1. Why Convolutions?

由于以下原因,将传统的神经网络用于现实世界中的图像分类是不切实际的:考虑一个尺寸为200×200的2D图像,对于该图像,我们将有40,000个输入节点。 如果隐藏层具有20,000个节点,则输入权重矩阵的大小将为40,000×20,000 = 8亿。 这仅适用于第一层-随着我们增加层数,该数目的增加甚至更快。 此外,矢量化图像完全忽略了图像的复杂2D空间结构。 我们如何建立克服这两个缺点的系统?

一种方法是使用2D卷积代替矩阵乘法。 学习一组卷积滤波器(每个11×11)比学习大型矩阵(40000×20000)更容易处理。 2D卷积自然也将图像的2D结构考虑在内。 或者,也可以将卷积视为具有两个约束的规则神经网络(请参阅Bishop,2006)。

  • 本地连接:这是因为我们使用了卷积滤波器,其尺寸远小于其所处理的图像。 这与通常与矢量图像有关的全局连接范式形成对比。
  • 权重共享:这来自于我们进行卷积的事实,即我们在图像上应用了相同的滤波器。 这意味着我们在图像中的许多位置使用相同的本地滤波器。 换句话说,所有这些过滤器之间的权重是共享的。

视觉神经科学也有证据表明人脑内有类似的计算。 Hubel和Wiesel(1962)在主要视觉皮层中发现了两种类型的细胞-简单细胞和复杂细胞。 简单的单元主要对定向的边缘和光栅做出响应,这使人联想到特殊类型的卷积滤波器Gabor滤波器。 复杂单元对这些边缘和光栅也很敏感。 但是,它们也表现出空间不变性。 这激发了Fukushima(1980)的Neocognitron模型,该模型提出了在人工神经网络中学习卷积滤波器的知识。 据说这个模型启发了卷积网络,类似于上面提到的简单单元。

但是,在实际的CNN中,卷积运算不是按传统意义应用的,在传统意义上,滤波器在每次乘法后都会向右移动一个位置。取而代之的是,通常使用较大的移动(通常称为步幅)。这等效于在常规卷积之后执行图像下采样。

如果我们希望在RGB图像上训练这些网络,则需要学习多个多通道滤波器。在图1的表示中,数字11×11×3以及C1下面的{96}表示在第一层中有96个滤波器,每个滤波器的空间尺寸为11×11。

我们注意到,这种类似卷积操作(位置无关的特征检测器)的范例并不完全适用于配准图像。例如,面部图像在不同的空间位置需要不同的特征检测器。考虑到这一点,Taigman等人(2014年)仅考虑了不具有权重共享的本地连接网络。因此,层连接性的选择取决于问题的根本类型。

2.1.2. Max-Pooling

Neocognitron模型激发了将简单细胞建模为卷积的灵感。 沿同一方向连续,可以将复杂单元建模为最大池操作。 可以将此操作视为最大滤波器,其中每个n×n区域均被其最大值替换。 此操作用于以下两个目的:

  1. 它选择了局部区域中最高的激活,从而提供了较小程度的空间不变性。 这类似于复杂单元的操作。

  2. 它将下一层的激活大小减小了 n 2 n^2 倍。 使用较小的激活大小,我们需要在后面的层中学习较少数量的参数。

2.1.3. Non-Linearity

深度网络通常由卷积组成,然后在每层之后进行非线性运算。 这是必需的,因为级联线性系统(如卷积)是另一个线性系统。 层之间的非线性确保模型比线性模型更具表现力。

从理论上讲,只要非线性连续性,有界性和单调增加,非线性就没有比其他任何一种具有更大的表达能力(见Hornik,1991)。 传统前馈神经网络使用S形或tanh非线性函数。

但是,现代卷积网络使用ReLU非线性函数。 Nair和Hinton(2010)证明,具有这种非线性的CNN训练速度更快。

最近,Maas等人(2013)引入了一种新型的非线性,称为leaky-ReLU。 定义为 Leaky-ReLU ( x ) = m a x ( 0 x ) + α m i n ( 0 x ) \text {Leaky-ReLU}(x)= max(0,x)+αmin(0,x) ,其中 α α 是预定参数。 He等人(2015年)对此进行了改进,建议也可以学习α参数,从而建立更丰富的模型。

2.2. Depth

Hornik(1991)的通用逼近定理指出,具有单个隐藏层的神经网络足以建模任何连续函数。但是,Bengio(2009)表明,与具有许多隐藏层的神经网络相比,此类网络需要数量成倍的神经元。最近,Romero等人(2014)以及Ba和Caruana(2014)明确表明,与相对较浅的网络相比,可以训练较深的神经网络表现更好。

尽管创建更深层网络的动机很明显,但是很长一段时间以来,研究人员一直没有一种算法可以有效地训练三层以上的神经网络。随着Hinton等人(2006)引入贪婪分层预训练,研究人员能够训练更深层次的网络。这在将所谓的深度学习系统带入主流机器学习中发挥了重要作用。诸如AlexNet之类的现代深度网络具有七层。最近的网络,例如Simonyan和Zisserman(2014b)的VGGnet和Szegedy等人(2014)的GoogleNet,分别具有19和22层,表现出比AlexNet更好的性能。

2.3. Learning Algorithm

没有算法就可以有效地学习模型的参数,那么强大而富有表现力的模型就毫无用处。 在AlexNet之前的时代,贪婪的分层预训练方法试图创建这样一种有效的算法。 然而,对于计算机视觉任务,事实证明,一个简单的监督训练程序足以学习强大的模型。

通常通过最小化某些损失函数来进行学习。 基于分类的任务使用softmax损失函数或S形交叉熵函数,而涉及回归的任务则使用欧几里得误差函数。 在图1的示例中,训练了FC8层的输出以表示数据集中1000个类别中的1个。

2.3.1. Gradient-Based Optimization

通常使用反向传播算法训练神经网络(请参阅Rumelhart等,1988),该算法使用链规则来加快梯度下降(GD)算法的梯度计算。但是,对于具有数千个(或更多)数据点的数据集,使用GD是不切实际的。在这种情况下,将使用称为随机梯度下降(SGD)的近似值。已经发现,使用SGD进行的训练比使用GD进行的训练要好得多。但是,缺点之一是SGD收敛非常慢。为了解决这个问题,SGD通常与微型批处理一起使用,其中微型批处理通常包含少量数据点(〜100)。

动量(见Polyak,1964)属于旨在加速SGD收敛的一系列方法。在实践中,这主要用于训练深度网络,通常被视为必不可少的组成部分。其他扩展,例如Duchi等人(2011)的Adagrad,Nesterov(1983)的Nesterov的加速GD,Zeiler和Fergus(2014)的Adadelta以及Kingma和Ba(2014)的Adam都同样有效,甚至更好在某些情况下比香草气势好对于这些方法如何工作的详细讨论,鼓励读者阅读Sutskever等人(2013年)。

2.3.2. Dropout

当训练具有大量参数的网络时,有效的正则化机制对于防止过度拟合至关重要。在这方面,已经发现通常的方法(如对神经网络权重进行λ1或λ​​2正则化)不足。 Dropout是Hinton等人(2012)引入的一种强大的正则化方法,已被证明对大型神经网络有效。为了使用辍学,我们在训练过程中以概率p随机丢弃神经元。结果,在SGD的一次迭代中仅训练了随机的神经元子集。在测试时,我们使用所有神经元,但是,我们只需将每个神经元的激活数乘以p即可得出缩放比例。 Hinton等人(2012年)表明,此过程等效于使用共享参数训练大型神经网络集合,然后使用其几何均值获得单个预测。

在某些情况下,已显示出许多辍学扩展,例如Wan等人(2013)的DropConnect和Wang and Manning(2013)的Fast Dropout。 Goodfellow等人(2013)提出的Maxout是一种非线性特性,可以提高使用Dropout的网络的性能。

2.4. Tricks to Increase Performance

尽管上述技术和组件在理论上具有良好的基础,但是某些技巧对于获得最新性能至关重要。

众所周知,在存在更多数据的情况下,机器学习模型的性能会更好。 数据扩充是一个过程,通过该过程将一些几何变换应用于训练数据以增加其数量。 常用几何变换的一些示例包括随机裁剪,RGB抖动,图像翻转和小旋转。 已经发现,使用增强数据通常可以将性能提高约3%(请参见Chatfield等,2014)。

同样众所周知的是,一组模型的性能要优于一个模型。 因此,训练几个CNN并在测试时平均其预测是司空见惯的事情。 已发现使用合奏通常可以将精度提高1-2%(参见Simonyan和Zisserman,2014b; Szegedy等人,2014)。

2.5. Putting It All Together: AlexNet

上面讨论的构建块在很大程度上描述了AlexNet的整体。如图1所示,只有第1、2和5层包含最大池,而辍学仅应用于最后两个完全连接的层,因为它们包含最多数量的参数。第1层和第2层还包含本地响应规范化,尚未作为Chatfield等讨论。 (2014年)表明,缺少它不会影响性能。

该网络接受了ILSVRC 2012培训数据的培训,该数据包含属于1000个类别的120万张培训图像。在1个月的时间里,使用了两个GPU对其进行了培训。今天,可以使用功能更强大的GPU在不到一周的时间内训练同一个网络(请参见Chatfield等,2014)。手动调整了学习算法的超参数,例如学习速率,momentum,dropout和weight decay。有趣的是注意到在不同层学习的特征的性质趋势。较早的层倾向于学习类似gabor的边缘和斑点样的特征,其次是看起来像是学习更高阶特征(例如形状)的层。最后一层似乎学习语义属性,例如眼睛或轮子,这是几个类别中的关键部分。 Zeiler(2012)提供了一种可视化这些方法的方法。

2.6. Using Pre-Trained CNNs

AlexNet模型成功的主要原因之一是可以直接使用预先训练的模型来执行其他原本不打算的其他任务。 下载学习的模型,然后对其进行微调以适合手头的应用程序变得非常容易。 我们描述了两种以这种方式使用模型的方式。

2.6.1. Fine-Tuning

给定一种训练有素的图像分类模型,应如何对其进行修改以执行其他(但相关)任务? 答案是仅使用经过训练的权重作为初始化,然后针对此新任务再次运行SGD。 通常,人们使用的学习率远低于用于学习原始网络的学习率。 如果新任务与图像分类任务(具有相似的类别)非常相似,则无需重新学习很多层。 较早的层可以固定,只有较晚的更多语义层需要重新学习。 但是,如果新任务非常不同,则应该重新学习所有层,或者从头开始学习所有内容。 要重新学习的层数还取决于可用于训练新任务的数据点数。 数据越多,可以重新学习的层数就越高。 敦促读者参考Yosinski等人(2014年)的更详尽指南。

2.6.2. CNN Activations as Features

如前所述,AlexNet的后续层似乎学习了视觉语义属性。这些中间表示对于执行1000路分类至关重要。由于这些代表了各种各样的类,因此可以将图像的FC7激活用作通用特征描述符。已经发现这些功能比诸如SIFT或HoG的手工制作功能更胜任各种计算机视觉任务。

Donahue等人(2013年)首先介绍了使用CNN激活作为特征的想法,并进行了测试以确定它们对各种任务的适用性。 Babenko等人(2014年)提出将全连接层的激活用于图像检索,他们将其称为“神经密码”。 Razavian等人(2014)使用这些激活来完成各种任务,并得出结论,现成的CNN功能可以作为许多任务难以匹敌的基准。 Hariharan等人(2014)使用跨层激活作为特征。具体来说,他们查看网络中单图像像素产生的激活并将它们合并在一起。发现它们对于细粒度的任务(例如关键点本地化)很有用。

2.7. Improving AlexNet

AlexNet的性能激发了许多基于CNN的方法,所有这些方法的目的都是在性能上超越AlexNet。 正如AlexNet是2012年ILSVRC挑战赛的获胜者一样,Sermanet等人(2013a)的基于CNN的Net Overfeat在ILSVRC-2013上表现最好。 他们的主要见解是,训练卷积网络以同时对图像中的对象进行分类,定位和检测可以提高分类精度以及所有任务的检测和定位精度。 鉴于其多任务学习范式,我们将在“混合学习方法”部分中讨论混合CNN和多任务学习时讨论Overfeat。

Szegedy等人(2014)的GoogleNet是ILSVRC-2014的佼佼者,它确定深度网络可以转化为分类性能的显着提高。由于天真地增加层数会导致大量参数,因此作者采用了许多“设计技巧”。一个这样的技巧是在常规卷积层之后增加一个平凡的1×1卷积层。这样做的净效果不仅是减少参数数量,而且还使CNN具有更高的表达能力。该设计技巧在Szegedy等人(2014)的工作中得到了更详细的阐述,其中作者表明拥有一个或多个1×1卷积层类似于使用多层感知器网络来处理卷积层的输出在它之前。作者利用的另一个技巧是在目标函数的计算中包含网络的内部层,而不是典型的最终softmax层(如AlexNet)。作者将尺度不变性归因于此设计决策。

西蒙扬和齐瑟曼(2014b)提出的VGG-19及其变体是高效能CNN的另一个示例,在网络设计中应用了“更深更胜于”的理念。 VGG设计的一个有趣特征是它放弃了较大尺寸的卷积滤波器,而不再使用较小尺寸的滤波器。倾向于选择这些较小尺寸的过滤器,以使其包含与假定替换的较大过滤器几乎相同数量的参数。由于所涉及的滤波器尺寸较小,因此该设计决策的最终结果是对参数的效率和正则化效果。

3. CNN Flavors

3.1. Region-Based CNNs

大多数接受图像识别训练的CNN都是使用包含单个对象的图像数据集进行训练的。 在测试时,即使在有多个对象的情况下,CNN仍可以预测单个类别。 CNN设计的固有问题不仅限于图像分类。 例如,物体检测和定位的问题不仅需要对图像进行分类,而且还需要估计图像中存在的物体的类别和精确位置。 对象检测具有挑战性,因为我们可能希望在单个图像中检测大小不同的多个对象。 通常需要逐块处理图像,以寻找对象的存在。 在Vaillant等人(1994)和Rowley等人(1998)中,神经网络已经以这种方式用于检测特定对象,例如人脸,而Sermanet等人(2013c)已将其用于行人。

同时,在给定图像中检测一组类似对象的区域(也称为区域建议或对象建议)已引起了广泛关注(请参阅Uijlings等,2013)。这些区域建议与类别无关,并减少了传统的穷举滑动窗口方法所产生的开销。这些区域提议算法在较低级别上运行,并以多种比例输出数百个像图像一样的对象。为了将分类网用于目标定位的任务,必须一次搜索一个不同比例的图像块。

Girshick等人(2014年)的最新工作尝试使用一组区域建议来解决对象定位问题。在测试期间,该方法使用Uijlings等人(2013)从测试图像中进行选择性搜索,生成了大约2000个类别独立的区域建议。他们采用简单的仿射图像变形将这些建议中的每一个提供给经过分类训练的CNN。然后,CNN用固定大小的高级语义特征描述这些区域中的每个区域。最后,一组特定于类别的线性SVM对每个区域进行分类,如图2所示。此方法在PASCAL VOC 2012数据集上获得了最佳的检测结果。由于此方法使用紧随CNN的图像区域,因此被称为R-CNN(基于区域的CNN)。

在这里插入图片描述

图2. Girshick等人(2014)的物体检测系统,使用从图像区域提取的深度特征。

一系列工作改编了R-CNN方法,以在补丁或区域级别提取更丰富的功能集,以解决视觉中的广泛目标应用。但是,CNN表示缺乏对几何变换的鲁棒性,从而限制了它们的使用。 Gong等人(2014a)的经验证据表明,全球CNN特征对一般变换(例如平移,旋转和缩放)敏感。在他们的实验中,他们报告说,无法使用全局CNN特征直接导致分类准确性下降。他们提出了一种简单的技术来合并从本地图像补丁中提取的CNN激活。该方法以详尽的滑动窗口方式以不同比例提取图像斑块,并使用CNN对其进行描述。使用VLAD(参见Jégou等人,2011)合并生成的密集CNN特征,以生成包含空间信息和语义信息的表示形式。

Mopuri和Babu(2015)并未考虑详尽的比例尺和图像位置的图像补丁,而是利用了客观性来自动提取不同比例的图像补丁。他们通过汇总来自图像搜索应用程序的补丁中的各个CNN功能来构建更强大的图像表示。

Wei等人(2014)扩展了CNN的功能,该CNN经过训练可以将单个标签输出为预测多个标签。他们考虑了图像中任意数量的区域提议,并在所有提议中共享一个公共CNN,以获得单独的预测。最后,他们采用一种简单的合并技术来生成最终的多标签预测。

3.2. Fully Convolutional Networks

卷积神经网络在图像分类(参见Krizhevsky等,2012; Szegedy等,2014)和物体检测(参见Girshick等,2014)任务中的成功启发了研究人员使用深层网络来应对更多挑战识别问题,例如语义对象分割和场景解析。与图像分类不同,语义分割和场景解析是结构化预测的问题,其中需要为图像网格中的每个像素分配一个其所属类别的标签(例如,道路,沙发,桌子等)。传统上已经通过产生区域级(例如,超像素)手工制作的特征并使用支持向量机(SVM)将它们分类为可能的类别之一来解决按像素分类的问题。

删除这些工程设计的功能后,Farabet等人 (2013a)使用了来自卷积神经网络的分层学习特征进行场景解析。他们的方法包括为每个像素密集计算多尺度CNN特征,并在对其进行分类的图像区域上聚合它们。然而,他们的方法仍然需要后处理步骤,以产生过度分割的区域,例如超像素,以获得最终的分割结果。此外,用于多尺度特征学习的CNN不够深,只有三个卷积层。

后来,龙等 (2015年)提出了一种完全卷积的网络架构,用于以端到端的方式学习每个像素的任务,例如语义分割。如图3所示。全卷积网络(FullConvNet)中的每一层都执行位置不变操作,即,该层输入中值的空间移位只会导致其输出中的等量缩放空间移位,同时保持值几乎完好无损。平移不变性的这一属性对于构成FullConvNet的主要构建块的卷积层和最大池层都适用。此外,这些层在其输入Blob上具有以输出为中心的固定大小的接收场。 FullConv Net图层的这些属性使它可以在所有中间输出和最终输出中保留输入图像中存在的空间结构。

在这里插入图片描述

图3.完全卷积网络:将AlexNet修改为完全卷积,以便在具有21个类的PASCAL VOC 2012数据集上执行语义对象分割。

与用于图像分类的CNN不同,FullConvNet不包含任何紧密连接/内部的产品层,因为它们不是平移不变的。由于输入图像的大小受到限制,因此将输入图像的大小限制为CNN分类[例如,AlexNet为227×227(Krizhevsky等,2012),VGG为224×224(Simonyan和Zisserman,2014b)]。输入其内部产品层的尺寸。由于FullConvNet没有任何这些内部产品层,因此它实际上可以在任何任意大小的输入图像上运行。

在CNN架构的设计过程中,必须在数据通过每一层时在通道数和空间尺寸之间进行权衡。通常,通过在网络的卷积和最大池层中引入步幅,使数据中的通道数逐渐增加,同时降低其空间分辨率。发现这是用于以分层方式生成更丰富的语义表示的有效策略。尽管此方法使网络能够识别数据中的复杂模式,但它也逐渐减小了每一层之后数据块的空间分辨率。尽管对于只需要为整个图像使用单个标签的分类网络而言,这并不是主要问题,但是对于FullConvNets,这仅会在子采样分辨率下实现按像素预测。为了解决这个问题,Long等人(2015年)提出了一个反卷积层,该层通过学习的上采样操作从子采样输出中恢复空间分辨率。该上采样操作是在各种空间尺寸的中间层执行的,并被串联起来以获得原始分辨率的像素级特征。

另一方面,Chen等人(2014年)采用了一种更为简单的方法来保持分辨率,即尽可能消除FullConvNet层中的跨度。此后,将FullConvNet预测输出建模为以原始分辨率在图像网格上构造的条件随机场(CRF)的一元项。通过成对的术语强制执行标签平滑度约束,将每像素分类任务建模为CRF推理问题。尽管使用CRF对FullConvNet的粗略标记进行后处理已显示出对像素精确分割有效,但Zheng等人(2015)提出了一种更好的方法,将基于图像的CRF建模为递归神经网络(RNN) 。通过将CRF建模为RNN,它可以集成为任何Deep Convolutional Net的一部分,从而使系统在语义特征提取和细粒度结构预测方面均十分有效。这使得可以使用随机梯度下降(SGD)算法对整个FullConvNet + RNN系统进行端到端训练,以获得精细的像素级分割。

视觉显着性是研究人员考虑的另一个重要的像素级问题。该任务涉及预测由人眼注视给出的图像的显着区域。 Vig等人(2014)和Liu等人(2015)的工作提出了基于CNN的方法,用于使用深度特征估计组成图像斑块的显着性得分。相比之下,Kruthiventi等。 (2015年)提出了FullConvNet架构– DeepFix,该架构学会了以端到端的方式预测整个图像的显着性,并获得了卓越的性能。他们的网络使用起始块来表征图像的多尺度方面,并使用具有大接收场的卷积层捕获全局上下文。 Li等人(2015b)的另一项工作提出了多任务FullConvNet架构– DeepSaliency,用于联合显着性检测和语义对象分割。他们的工作表明,针对两个相关的预测任务协作学习功能可以提高整体性能。

3.3. Multi-Modal Networks

CNN在标准RGB视觉任务上的成功自然会扩展到其他感知模式的工作,例如RGB-D和视频中的运动信息。近来,越来越多的证据表明,CNN可以成功地进行适配,以从深度图像中学习有效的表示。 Socher等人(2012)利用颜色和深度模态中的信息来解决分类问题。在他们的方法中,单层CNN分别从RGB和深度图像中提取低级特征。来自每个模态的这些低级功能将提供给一组RNN,以嵌入到较低维度中。结果要素的串联形成了最终soft-max层的输入。 Couprie等人(2013)的工作扩展了Farabet等人的CNN方法。 (2013b)通过将深度信息视为现有RGB数据的附加通道来标记室内场景。类似地,Wang等人(2014a)将无监督特征学习方法用于具有四个通道的RGB-D输入的场景标记。 Gupta等人(2014年)提出了一种深度图像编码,它使CNN能够比仅从深度图像学习更强的特征。他们将深度图像编码为每个像素三个通道:水平视差,离地面的高度以及像素局部表面法线与推断的重力方向所成的角度。他们的对象检测和分割方法分别处理RGB和编码的深度通道。通过串联将学习到的功能融合在一起,然后进一步馈入SVM。

同样,可以想到将这些作品扩展为视频表示和理解。与静止图像相比,视频以运动形式提供重要的附加信息。但是,大多数尝试将CNN扩展为视频的早期工作都为网络提供了原始帧。这带来了非常困难的学习问题。 Jhuang et al(2007)提出了一种生物学启发的模型,用于在初始层中具有预定义的时空过滤器集合的视频中的动作识别。 Kuehne等人(2011)结合类似但空间的HMAX(分层模型和X)模型,提出了空间和时间识别流。 Ji等人(2010年)首次在一系列连续视频帧上使用3-D卷积解决了视频的CNN的端到端学习。 Karpathy等人(2014年)的最新作品提出了一套技术,用于融合视频中连续帧堆栈中出现的外观信息。但是,他们报告说,处理单个框架的网络的性能与在框架堆栈上运行的网络的性能相当。这可能表明学习的时空滤波器不适合有效捕获运动模式。

Simonyan和Zisserman(2014a)的同期工作提出了一种更合适的CNN模型来表示视频,这被称为两流网络方法。尽管Kuehne等人(2011)的模型也是两流模型,但主要区别在于流浅且使用手工模型实现。这种方法成功的原因是视频被自然分为空间和时间成分的能力。帧形式的空间成分捕获视频中出现的外观信息,例如对象。跨帧运动(光流)形式的时间分量捕获了对象的运动。这些光流估计值可以通过经典方法(请参阅Baker和Matthews,2004年)或深度学习方法(请参见Weinzaepfel等人,2013年)获得。

这种方法对识别系统进行建模,如图4所示,该系统分为两个并行流。每个流由专用的深层CNN实施,其预测随后进行融合。空间流的网络类似于图像识别CNN,并且一次处理一帧。然而,时间流将一堆连续帧的堆叠光流作为输入并预测动作。两个网络都通过相应的输入进行单独训练。还观察到使用类似于Wang和Schmid(2013)的轨迹信息的替代运动表示,其执行方式类似于光流。

在这里插入图片描述

图4. Simonyan和Zisserman(2014a)的视频分类两流架构。

Simonyan和Zisserman(2014a)之后采用的最新方法具有类似的两流体系结构。但是,它们的作用是为有效的视频表示找到最活跃的时空量。 Gkioxari和Malik(2015)受到图像对象检测的最新进展启发,从形状和运动线索构建了动作模型。它们从图像建议开始,选择它们的运动显着子集,并提取时空特征以使用CNN表示视频。

Wang et al(2015a)运用深层CNN来学习判别性特征图,并进行轨迹约束合并以总结为有效的视频描述符。两条流并行运行,以围绕轨迹为中心的体积提取局部深度特征。

通常,可以修改和扩展这些多模式CNN以适合任何其他类型的模式,例如音频,文本,以补充图像数据,从而更好地表示图像内容。

3.4. CNNs with RNNs

尽管CNN在各种任务中取得了显着进步,但它们并不十分适合学习序列。 学习此类模式需要记忆先前的状态以及CNN中不存在的反馈机制。 RNN是具有至少一个反馈连接的神经网络。 这种循环结构使RNN具有内部存储器并学习数据中的时间模式。

图5显示了应用于序列添加玩具示例的简单RNN的展开版本。 问题定义如下:设 a t a_t 为一个正数,对应于时间 t t 的输入。 时间t的输出为

S t = i = 1 t a i S_{t}=\sum_{i=1}^{t} a_{i}

在这里插入图片描述

图5. Toy RNN示例:序列加法问题。 输入和输出以蓝色显示。 红色单元格对应于隐藏的单位。 显示了RNN的展开版本。

我们考虑一个只有一个隐藏层的非常简单的RNN。 RNN可以通过以下等式描述。

h t + 1 = f h ( W i h × a t + W h h × h t ) S t + 1 = f o ( W h o × h t + 1 ) \begin{aligned} &h_{t+1}=f_{h}\left(W_{i h} \times a_{t}+W_{h h} \times h_{t}\right)\\ &S_{t+1}=f_{o}\left(W_{h o} \times h_{t+1}\right) \end{aligned}

其中Wih,Whh,谁学习了权重以及fh和fo是非线性的。 对于上面考虑的玩具问题,学习到的权重将导致Wih = Whh = Who =1。让我们将非线性视为ReLu。 等式就会变成

h t + 1 = Re L u ( a t + h t ) S t + 1 = Re L u ( h t + 1 ) \begin{aligned} &h_{t+1}=\operatorname{Re} L u\left(a_{t}+h_{t}\right)\\ &S_{t+1}=\operatorname{Re} L u\left(h_{t+1}\right) \end{aligned}

因此,如图5所示,RNN将先前的输入存储在内存中,并学习预测直到当前时间步长t为止的序列总和。

与CNN一样,递归神经网络已经使用各种反向传播技术进行了训练。然而,这些常规方法导致消失的梯度问题,即,通过网络向后发送的误差变得非常大或消失,从而导致收敛问题。 1997年,Hochreiter和Schmidhuber(1997)引入了LSTM(长期短期记忆),它通过引入一种新颖的结构,成功地克服了消失的梯度问题,该结构由称为恒定误差圆盘传送带的单元组成。因此,LSTM能够学习非常深入的RNN,并且能够在很长一段时间(数千步)内成功记住重要事件。

在接下来的十年中,LSTM成为了一些序列学习问题的首选网络,尤其是在语音和手写识别领域(参见Graves等,2009,2013)。在以下各节中,我们将讨论RNN在各种计算机视觉问题中的应用。

3.4.1. Action Recognition

长期以来,从视频中识别人类行为一直是视频理解和监视任务中的关键问题。 动作是在有限的时间内发生的事件,是CNN-RNN联合模型的最佳候选者。

特别是,我们讨论了Donahue等人(2014)提出的模型。 他们使用RGB以及光流特征来联合训练Alexnet的变体和LSTM(256个隐藏单元)的单层。 视频帧被采样,通过训练有素的网络,并分别分类。 最终预测是通过对所有帧进行平均获得的。 图6中显示了该模型在时间t的快照。

在这里插入图片描述

图6. LRCN:在时间t的模型快照。 它指的是在t处的框架和OFt的光流。 通过对所有t上的输出At取平均值来对视频进行分类。

3.4.2. Image and Video Captioning

场景理解的另一个重要组成部分是图像和视频的文字描述。相关的文字描述还有助于补充图像信息,并形成有用的查询以进行检索。

RNN(LSTM)长期以来一直用于机器翻译(请参见Bahdanau等,2014; Cho等,2014)。这促使其用于图像描述的目的。 Vinyals等人(2014年)开发了一种端到端系统,方法是先使用CNN编码图像,然后将编码后的图像用作生成RNN的语言的输入。 Karpathy和Fei-Fei(2014)提出了一种多峰深度网络,该网络将使用CNN特征表示的图像的各个有趣区域与相关词对齐。然后将学习到的对应关系用于训练双向RNN。该模型不仅能够生成图像的描述,而且能够将句子的不同片段定位到其对应的图像区域。 Mao等人(2014)提出的多模态RNN(m-RNN)通过在RNN的嵌入和循环层之后引入一个新的多模态层来结合CNN和RNN的功能。 Mao等人(2015)通过合并转置的权重共享策略进一步扩展了m-RNN,使网络能够从图像中学习新颖的视觉概念。

Venugopalan等人(2014)超越了图像,获得了视频的平均合并CNN表示。他们训练LSTM使用此输入为视频生成描述。他们通过开发S2VT(Venugopalan等人,2015)进一步完善了这项任务,该模型既考虑了RGB信息又提供了视频中可用的流信息,该模型由LSTM叠加而成。 Pan等人(2015)使用2-D和3-D CNN来获得视频嵌入。他们介绍了两种用于训练LSTM和视觉语义嵌入的损失。

3.4.3. Visual Question Answering

对图像的真正理解应该使系统不仅可以对图像做出陈述,而且可以回答与图像有关的问题。因此,基于图像中的视觉概念回答问题是机器理解算法的下一个自然步骤。但是,这样做需要系统在生成以问题和图像为条件的答案之前对文本问题和图像表示进行建模。

Malinowski等人(2015)的工作证明了CNN和LSTM的组合在此任务中也是有效的,他们训练LSTM层接受图像的问题以及CNN表示并生成答案。 Gao et al(2015)使用两个具有共享权重的LSTM和CNN来完成任务。他们的实验在一个多语言的数据集上进行,该数据集包含中文问答以及其英文翻译。 Antol等人(2015年)提供了一个视觉问题回答任务的数据集,其中包含真实世界的图像和抽象场景。

3.5. Hybrid Learning Methods

3.5.1. Multi-Task Learning

3.5.2. Similarity Learning

4. Open Problems

发布了88 篇原创文章 · 获赞 132 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/DumpDoctorWang/article/details/103969645