一、AlexNet(2012)
AlexNet是卷积神经网络架构的起源(尽管可能会有人认为,1998年Yann LeCun发表的论文才是真正的开创性出版物)。这篇名为“基于深度卷积网络ImageNet分类(https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf?spm=a2c4e.11153959.blogcont552464.16.2a1e53d0ousmlV&file=4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf)”的论文总共被引用6,184次,被公认为是该领域最具影响力的论文之一。在2012年的ImageNet大规模视觉识别挑战赛中,Alex Krizhevsky等人创建的“大而深的卷积神经网络”取得了大赛冠军——将分类误差从26%降至15%,这是一个惊人的改进,几乎让所有的计算机视觉社区为之震撼。从那时起,卷积神经网络被广泛传播,成了一个家喻户晓的名字。
该论文讨论了AlexNet架构的网络结构。与现代架构相比,AlexNet使用了相对简单的网络结构:由5个卷积层、最大池化层、drop-out层和3个全连接层组成。他们设计的网络可用于对1000个类别进行分类。
主要论点
- 在ImageNet数据集上训练网络,ImageNet数据集包含超过1500万张注释图像,类别超过22000个。
- 使用ReLU处理非线性函数(这样可以减少训练时间,因为ReLU比传统的tanh函数运行速度要快几倍)。
- 使用的数据增强技术包括:图像转换,水平反射和补丁提取。
- 采用drop-out层,解决了训练数据的过拟合问题。
- 使用批量随机梯度下降训练架构,其中动量和权重衰减都有固定的具体值。
重要性
Krizhevsky等人在2012年开发出来的神经网络,是卷积神经网络在计算机视觉社区的一场盛宴。这是首次在ImageNet数据集上性能表现非常好的架构,利用了今天仍在使用的技术,如数据增强和dropout。这篇论文阐述了卷积神经网络的优点,并创造了其他神经网络难以逾越的性能。
二、ZF Net
由于AlexNet在2012年闪亮登场,在2013的ImageNet大规模视觉识别挑战赛中出现的卷积神经网络架构数量大幅度增加,该年度大赛冠军是由纽约大学的Matthew Zeiler团队创建的网络——ZF Net(http://arxiv.org/pdf/1311.2901v3.pdf?spm=a2c4e.11153959.blogcont552464.17.2a1e53d0ousmlV&file=1311.2901v3.pdf),该架构实现了低至11.2%的误差率。ZF Net架构相当于对AlexNet架构做了微调,但作者仍然提出了一些能够提高模型性能的重要设想。这篇论文之所以特别重要,另一个原因就是作者花了很多精力来解释卷积神经网络的可视化,并展示了如何正确的可视化滤波器和权重。
在这篇题为“卷积神经网络的可视化和理解”的论文中,Zeiler团队首先解释了重新对卷积神经网络感兴趣的原因,这源自于大型训练集的可访问性,以及随着GPU的使用率增大,计算能力也有提高。作者还提到“更好的架构会减少试验和误差次数”。尽管和三年前相比,我们对卷积神经网络有了更全面的理解,但这仍然是很多研究人员所面临的问题!本文的主要贡献是对AlexNet架构的细节做了微调,并且以一种很有意思的方法对特征映射做了可视化处理。
主要论点
- ZF Net与AlexNet模型有非常相似的架构,同时也做了一些微调。
- AlexNet训练了1500万张图片,而ZF Net仅仅训练了130万张图片。
- AlexNet在第一层使用11*11的滤波器,而ZF Net使用了7*7的滤波器和一个较小的步长。做这一调整的原因是第一个卷积层中使用较小的滤波器有助于将大量的原始像素信息保留在输入数组中。11*11的滤波器会过滤掉很多有用的信息,尤其是在第一个卷积层。
- 随着卷积网络的发展,使用滤波器的数量有所增加。
- 将ReLUs作为其激活函数,交叉熵代价函数作为误差函数,并使用批量随机梯度下降进行训练。
- 开发了一种名为去卷积网络的可视化技术,有助于测试不同的特征激活与输入数组的关系。之所以被称为“去卷积”,因为它将特征映射为像素(与卷积层的作用正好相反)。
DeConvNet
DeConvNet模型的基本思想是,在卷积神经网络已经训练好的每一层,都增加一个“去卷积”返回图像像素。图像输入到卷积神经网络中,并在每个级别计算其特征激活。假设现在要检查第四个卷积层中某个特征激活,我们来存储这一个特征映射的激活,但将卷积层中的所有其他激活都设为0,然后将此特征映射作为输入传递给DeConvNet模型。该DeConvNet模型具有与原始卷积神经网络相同的滤波器。然后,输入经过一系列的反池化(和最大池化相反)、校正以及前面每个层的滤波器操作,然后到达输入数组。
这整个过程是因为我们想要检查到底哪种类型的结构激活给定的特征映射。 我们来看看第一层和第二层的可视化效果。
我们知道,卷积层中的第一层是一个基本特征检测器,检测边缘或颜色。如上图所示,我们可以看到,在第二层有更多的循环特征被检测到。下面,我们来看看第3、4、5层。
这些层显示了更多高级特征,如狗的头部或鲜花。需要注意的是,在第一个卷积层之后,我们通常会有一个池化层对图像进行下采样(例如,将32*32*3数组转换为16*16*3的数组)。这样做可以在第二层看到原始图像范围更广的特征。
重要性
ZF Net模型不仅是2013年度ImageNet大规模视觉识别挑战赛的冠军,而且还提供了有关卷积神经网络运行的绝佳的视觉效果,并展示了更多能够提高性能的方法。 ZF Net模型所描述的可视化方法不仅有助于解释卷积神经网络的内部运行机制,而且还提供了对网络架构进行改进的独特见解。
三、VGG Net (2014)
VGG Net是2014年创建的架构(但并不是ImageNet大规模视觉识别挑战赛的冠军),其利用率达到7.3%。来自牛津大学的Karen Simonyan和Andrew Zisserman(http://arxiv.org/pdf/1409.1556v6.pdf?spm=a2c4e.11153959.blogcont552464.18.2a1e53d0ousmlV&file=1409.1556v6.pdf)创建了一个特别简单的19层的卷积神经网络,使用步长为1的3*3的滤波器,步长为2的2*2池化层。
主要论点
- 仅仅使用了3*3的滤波器,这与AlexNet第一层使用的11*11滤波器和ZF Net使用的7*7滤波器大不相同。作者证明了两个3*3 卷积层的组合具有5*5的有效感受野。在使用较小的滤波器的同时,也模拟出了一个更大的滤波器,同时也减少了参数的数量。此外,我们还可以在两个卷积层中使用ReLU层。
- 三个卷积层的组合具有7*7的有效感受野。
- 随着每层的深入,输入数组随之减小(卷积层和池化层的原因),过滤器的数量随之,因此数组的深度也不断增加。
- 有趣的是,滤波器的数量在每个最大池化层之后都会增加一倍。这强化了缩小空间维度的想法,但增加了网络的深度。
- 特别适用于图像分类和本地化任务。作者使用本地化的形式作为回归。
- 用Caffe构建架构。
- 在训练过程中使用数据增强技术是抖动( scale jittering )。
- 在每个卷积层之后使用ReLU层,并采用批梯度下降进行训练。
重要性
VGG Net模型一直都是我心目中最有影响力的论文之一,因为它强化了这一观点:为了使视觉数据可以分层表示,卷积神经网络必须具有更加深入的网络层。
四、GoogLeNet (2015)
谷歌使用了Inception模块来代替简单网络架构这一概念,GoogLeNet模型(http://www.cv-foundation.org/openaccess/content_cvpr_2015/papers/Szegedy_Going_Deeper_With_2015_CVPR_paper.pdf?spm=a2c4e.11153959.blogcont552464.19.2a1e53d0ousmlV&file=Szegedy_Going_Deeper_With_2015_CVPR_paper.pdf
)是一个22层的卷积神经网络架构,并且是2014年度ImageNet大规模视觉识别挑战赛的冠军,误差率高达6.7%。据我所知,这是第一个真正摒弃了在顺序结构中对卷积层和池化层进行简单堆叠的卷积神经网络架构之一。这个新架构着重考虑内存和功耗(堆叠所有的这些层并添加大量的滤波器会产生计算成本和内存成本,同时也会增加过拟合的概率)。
Inception模块
并不是像以前的架构按顺序运行,GoogLeNet架构中存在可以并行的网络。如下图所示,这个方框被称为Inception模块。
让我们来看看它的内部组成。
底部的绿色框是输入,最上面的是输出。在传统的卷积网络的每一层,你必须选择是否进行池化或卷积操作(也可以选择过滤器大小)。Inception模块可以所有这些操作。这正是GoogLeNet的亮点之一。
这样会导致太多的输出,为了解决这一问题,作者在3*3和5*5的层前面添加1*1 的卷积操作对其进行降维。举个例子,假设输入数组为100*100*60(这不一定是图像大小,只是网络任意一层的输入)。使用20个1*1卷积滤波器可以让将数组降到100*100*20。这就意味着3*3和5*5的卷积操作不会有大量的操作。由于我们正在降低数组的维度,这一操作被称作“特征池化”,这和我们用普通的最大池化层来减小图片的高度和宽度比较相似。
GoogLeNet模型有什么用?这个网络由网络层的一个网络、一个中型卷积滤波器、一个大型卷积滤波器和一个池化操作组成。卷积网络能够提取输入数组的细节信息,而5*5滤波器能够覆盖输入较大范围的接受野,因此也能够提取其细节信息。你还可以在GoogLeNet模型中进行池化操作,这有助于降低空间维度并避免过拟合。最重要的是,在每个卷积层之后都有ReLU函数,这有助于改善网络的非线性。基本上,网络在执行这些操作的同时,仍能够保持计算上的良好性能。
主要论点
- 在整个架构中使用了九个Inception模块,总共超过100层!
- 没有使用全连接层! 他们使用平均池化,这大大节省了参数的数量。
- 使用的参数比AlexNet架构少12倍。
- 利用R-CNN的概念介绍其检测架构。
- Inception模块有了版本更新(版本6和7)。
重要性
GoogLeNet模型是第一个引入“卷积神经网络层并不需要依次叠加”这一理念的架构之一,作为Inception模块的一部分,富有创造性的层结构提高了整体性能和计算效率。
五、Microsoft ResNet(2015)
现在,将一个深度卷积神经网络的层数增加一倍,再增加几层,也仍然不可能达到2015年微软亚洲研究院提出的ResNet(https://arxiv.org/pdf/1512.03385v1.pdf?spm=a2c4e.11153959.blogcont552509.14.1a4d29d6cLq7BV&file=1512.03385v1.pdf)架构的深度。ResNet是一种新的包含152层的网络架构,它使用一个特殊的结构记录分类、检测和定位。除了在层数方面进行创新外,ResNet还赢得了2015年ImageNet大规模视觉识别挑战赛的冠军,误差率低达3.6%(在现有的技术水平上,误差率通常在5-10%)
残差块
残差块的原理是,输入x通过卷积-残差函数-卷积系列,得到输出F(x),然后将该结果加到原始输入x中,用H(x)= F(x)+ x表示。在传统的卷积神经网络中,H(x)=F(x)。因此,我们不只计算从x到F(x)变换,而是要计算H(x)= F(x)+ x。下图中的最小模块正在计算一个“增量”或对原始输入x做轻微改变以获得轻微改变后的表示。作者认为,“优化残差映射比优化原始未引用的映射要容易。”
残差块可能比较有效的另一个原因是,在反向传播的后向传递期间,由于加法运算可以作用于梯度,梯度将会更容易地通过残差块。
主要论点
- “极端深度” - Yann LeCun。
- 包含152层
- 有趣的是,仅在经过前两层之后,将数组从224*224压缩到56x56。
- 在普通网络中,单纯的增加层数会导致更高的训练和测试误差(详细请看论文)。
- 该模型尝试构建了一个1202层的网络,可能是由于过拟合,测试精度较低。
重要性
3.6%的误差率!这一点足够重要。ResNet模型是目前我们所拥有的最好的卷积神经网络架构,也是残差学习理念的一个伟大创新。我相信即使在彼此之上堆叠更多层,性能也不会再有大幅度的提升了,但肯定会有像过去两年那样有创意的新架构。
六、基于区域的卷积神经网络:R-CNN(2013年);Fast R-CNN(2015年); Faster R-CNN(2015年)
有些人可能会说,R-CNN(https://arxiv.org/pdf/1311.2524v5.pdf?spm=a2c4e.11153959.blogcont552509.16.1a4d29d6cLq7BV&file=1311.2524v5.pdf)的出现比以前任何与新网络架构有关的论文都更具影响力。随着第一篇论述R-CNN的论文被引用超过1600次,加州大学伯克利分校的Ross Girshick团队创造出了计算机视觉领域最有影响力的进展之一:研究表明Fast R-CNN(https://arxiv.org/pdf/1504.08083.pdf?spm=a2c4e.11153959.blogcont552509.17.1a4d29d6cLq7BV&file=1504.08083.pdf)和Faster R-CNN(http://arxiv.org/pdf/1506.01497v3.pdf?spm=a2c4e.11153959.blogcont552509.18.1a4d29d6cLq7BV&file=1506.01497v3.pdf)更适合对象检测,且速度更快。
R-CNN架构的目标解决对象检测问题。现在,我们想对给定的图像上所包含的所有对象绘制边界框,可分为两步:候选区域的选择和分类。
作者指出,任何类不可知候选区域方法都应该适用。选择性搜索专门用于R-CNN,它能够产生2000个不同的最有可能包含指定对象的区域,候选区域产生后,会被“转换”为图像大小的区域,送入一个训练好的卷积神经网络(在这种情况下为AlexNet),为每个区域提取特征向量。然后,这组向量作为一组线性支持向量机的输入,这些线性支持向量机对每个类进行训练并输出一个分类。向量也被送入边界框回归器以便获得最准确的位置坐标。最后,使用非极大值抑制来抑制彼此具有明显重叠的边界框。
Fast R-CNN
对原始模型进行改进原因有三:模型训练需要经历多个步骤(ConvNets→支持向量机→边界框回归器);计算成本很高,运行速度很慢(R-CNN处理一张图像需要53秒)。为了提高运行速度,Fast R-CNN共享了不同候选区域之间卷积层的计算,交换了候选区域的生成顺序,同时运行卷积神经网络。在这个模型中,图像图像首先送入卷积网络,然后从卷积网络的最后一个特征映射获得候选区域的特征,最后被送入全连接层、回归以及分类头部。
Faster R-CNN
Faster R-CNN致力于将R-CNN和Fast R-CNN比较复杂的训练步骤简单化。作者在最后一个卷积层后插入候选区域生成网络,该网络能够查看最后的卷积特征映射并产生候选区域。后面使用与R-CNN相同的方法:感兴趣区域池化、全连接层、分类和回归头。
重要性
除了能够准确识别图像中的特定对象,Faster R-CNN也能够对该对象进行准确定位,这是一个质的飞跃。现在,Faster R-CNN已经成为对象检测程序的一个标准。
七、生成敌对网络(2014)
据Yann LeCun称,该网络可能是下一重大进展。在介绍这篇文章(https://arxiv.org/pdf/1406.2661v1.pdf?spm=a2c4e.11153959.blogcont552509.21.1a4d29d6cLq7BV&file=1406.2661v1.pdf)之前,我们先看一个对抗的例子:将一个经过扰动的图像经过卷积神经网络(已经在ImageNet数据集上训练且运行良好),以使预测误差最大化。因此,预测出来的对象类别有所改变,而该图像看起来与没有经过扰动的图像相同。从某种意义上来说,对抗就是用图像愚弄卷积网络。
这个对抗的例子着实让很多研究人员感到惊讶,并且迅速成为了一个大家感兴趣的话题。现在让我们来谈谈生成对抗网络,它包含两个模型:一个生成模型和一个判别模型。判别器用来确定给定的图像是否真的自数据集,还是人为创建的;生成器用来是创建图像,以便判别器得到训练生成正确的输出。这可以看作一个博弈游戏,打个比方:生成模型就像“伪造者团队,试图制造和使用假币”;而判别模型就像“警察,试图检测假币”。生成器试图欺骗判别器,而判别器努力不被欺骗。随着模型的训练,这两种方法都会得到改进,直到“真币与假币无法区分”。
重要性
这看起来很简单,但为什么我们很看重这个网络?正如Yan Le Leun在Quora中所说的那样,现在判别器已经意识到“数据的内在表示”,因为它已经被训练的能够了解数据集中真实图像与人工创建图像之间的差异。因此,可以像卷积神经网络那样,将它用作特征提取器。另外,你也可以创建很逼真的人造图像(链接)。
八、Generating Image Descriptions(2014)
将卷积神经网络与循环神经网络结合起来会发生什么?Andrej Karpathy团队研究了卷积神经网络与双向循环神经网络的组合,并撰写了一篇论文(https://arxiv.org/pdf/1412.2306v2.pdf?spm=a2c4e.11153959.blogcont552509.23.1a4d29d6cLq7BV&file=1412.2306v2.pdf),用来生成图像不同区域的自然语言描述。基本上,图像经过该模型后输出效果如下:
这真是令人难以置信!我们来看看这与普通的卷积神经网络有何区别。传统的卷积神经网络上,训练数据中的每个图像都有一个明确的标签。论文中描述的模型已经训练了样例,该样例具有与每个图像相关联的文本。这种类型的标签被称为弱标签,其中文本片段是指图像的未知部分。使用这些训练数据,深层神经网络能够“推断出文本片段和他们所要描述的区域之间的潜在关系”(引自论文)。另一个神经网络将图像转换成一个文本描述。让我们分别看看这两个部分:对齐模型和生成模型。
对齐模型
对齐模型的目标是能够将视觉图像和文本描述对齐,该模型将图像和文本转化为二者之间的相似性度量值。
首先将图像输入R-CNN模型,检测单个对象,该模型在ImageNet数据集上进行训练,排名前19位(加上原始图像)的对象区域被嵌入到500维空间,现在在每个图像中,我们都有20个不同的500维向量(用v表示),用来描述图像的信息。现在我们需要关于文本的信息,将文本嵌入到同一个多维度空间中,这一步骤采用双向递归神经网络完成。从更高层次来看,这是为了解释给定文本中单词的上下文信息。由于图像和文本的信息都在相同的空间中,因此我们可以计算内部表示,来输出相似性度量。
生成模型
对齐模型的主要目的是创建一个数据集:包含图像区域和对应的文本。而生成模型将从该数据集中进行学习,生成给定图像的描述。该模型将图像送入一个卷积神经网络,由于全连接层的输出成为另一个循环神经网络的输入,softmax层则可以被忽略。对于那些不熟悉循环神经网络的人来说,该模型可以理解为产生句子中不同单词的概率分布(循环神经网络也需要像卷积神经网络一样进行训练)。
重要性
Generating Image Descriptions的创新之处在于:使用看似不同的循环神经网络和卷积神经网络模型创建了一个非常实用的应用程序,它以某种方式将计算机视觉和自然语言处理领域结合在一起。在处理跨越不同领域的任务时如何使计算机和模型变得更加智能方面,它的新想法为我们打开一扇新的大门。
九、空间变换网络(Spatial Transformer Network)(2015年)
最后,我们来介绍一篇同样很重要的论文(https://arxiv.org/pdf/1506.02025.pdf?spm=a2c4e.11153959.blogcont552509.24.1a4d29d6cLq7BV&file=1506.02025.pdf),该模型的主要亮点就是引入了一个变换模块,它以某种方式对输入图像进行变换,以便后续网络层能够更容易对图像进行分类。作者不再对卷积神经网络的主要架构进行修改,而是在图像输入到特定的卷积层之前对图像进行变换。这个模块希望纠正姿态规范化(针对对象倾斜或缩放的场景)和空间注意力(在拥挤的图像中关注需要分类的对象)。对于传统的卷积神经网络来说,如果希望模型能够同时适用于不同尺度和旋转的图像,那么将需要大量的训练样例才能使模型进行正确的学习。这个变换模块是如何解决这个问题的呢?
处理空间不变性的传统卷积神经网络模型中的实体是最大池化层,一旦我们知道原始输入数组(具有较高的激活值)中的特定特征,其确切位置就不如它相对于其他特征的相对位置那么重要。而这种新的空间变换器是动态的,它会针对每个输入图像产生不同的变换,而并不会像传统的最大池化那样简简单和预定义。我们来看看这个变换模块是如何运行的。该模块包括:
- 定位网络,将输入数组转化并输出必须使用的空间变换参数。对于仿射变换来说,参数或θ可以是六维的。
- 采样网格,这是使用本地化网络中创建的仿射变换(θ)对常规网格进行变形的结果。
- 采样器,将输入特征映射进行变形。
这个模块可以放在卷积神经网络的任何一个节点,基本上可以帮助网络学习如何对特征映射进行变换,从而最大限度地减少训练期间的成本函数。
重要性
这篇文章之所以能够引起我的注意,其主要原因就是对卷积神经网络的改进不一定需要对网络的整体架构做巨大的改变,我们不需要再创建下一个ResNet或Inception架构。本文对输入图像进行仿射变换这一思路,使模型更加适用于图像的平移、缩放和旋转。