Deep Residual Learning for Image Recognition

  • 深层次的神经网络更难训练。何凯明等人提出了一个残差学习框架,以简化比以前使用的网络更深的网络训练。 明确地将层重新表示为参考层输入的学习残差函数,而不是学习未引用的函数。
  • 何凯明等人提供了全面的经验证据,表明这些残差网络更容易优化,并且可以从大幅增加的深度中获得准确性。
  • 在ImageNet数据集上,何等人评估了深度高达152层的剩余网络,比VGG网络深8倍,但复杂性仍然较低。
  • 这些残差网络的集合在ImageNet测试集上实现了3.57%的误差。该结果在ILSVRC 2015分类任务中获得第一名。还对100和1000层的CIFAR-10进行了分析。
  • 表征的深度对于许多视觉识别任务至关重要。由于本文的深度表示,在COCO对象检测数据集上获得了28%的相对改进。
  • 深度残差网络是提交给ILSVRC&COCO 2015大赛的基础,在大赛中,还获得了ImageNet检测、ImageNet定位、COCO检测和COCO分割任务的第一名

深度网络的退化问题

  • 实验发现深度网络出现了退化问题(Degradation problem):网络深度增加时,网络准确度出现饱和,甚至出现下降。

    • 具有20层和56层“普通”网络的CIFAR-10上的训练错误(左)和测试错误(右)。网络越深,训练误差越大,测试误差越大。
    • 不是过拟合问题(BatchNorm等技术手段来缓解这个问题),因为56层网络的训练误差同样高。我们知道深层网络存在着梯度消失或者爆炸的问题,这使得深度学习模型很难训练。
  • 深度网络的退化问题至少说明深度网络不容易训练。但是考虑这样一个事实:现在有一个浅层网络,想通过向上堆积新层来建立深层网络,一个极端情况是这些增加的层什么也不学习,仅仅复制浅层网络的特征,即这样新层是恒等映射(Identity mapping)。在这种情况下,深层网络应该至少和浅层网络性能一样,也不应该出现退化现象。不得不承认肯定是目前的训练方法有问题,才使得深层网络很难去找到一个好的参数。
  • 为什么增加网络层数?:CNN能够提取low/mid/high-level的特征,网络的层数越多,意味着能够提取到不同level的特征越丰富。并且,越深的网络提取的特征越抽象,越具有语义信息。
  • 为什么不能简单地增加网络层数?:如果简单地增加深度,会导致梯度弥散或梯度爆炸。对于该问题的解决方法是正则化初始化中间的正则化层(Batch Normalization),这样的话可以训练几十层的网络。
  • 虽然通过上述方法能够训练了,但是又会出现另一个问题,就是退化问题,网络层数增加,但是在训练集上的准确率却饱和甚至下降了。这个不能解释为overfitting,因为overfit应该表现为在训练集上表现更好才对。

残差学习

  • 考虑这样一个事实:现在现在有一个浅层网络,想通过向上堆积新层来建立深层网络,一个极端情况是这些增加的层什么也不学习,仅仅复制浅层网络的特征,即这样新层是恒等映射(Identity mapping)。在这种情况下,深层网络应该至少和浅层网络性能一样,也不应该出现退化现象。不得不怀疑是目前的训练方法有问题,才使得深层网络很难去找到一个好的参数。
  • 何恺明提出了残差学习来解决退化问题。对于一个堆积层结构(几层堆积而成)当输入为x时其学习到的特征记为 H(x)H(x)H(x) ,现在我们希望其可以学习到残差 F(x)=H(x)−xF(x)=H(x)-xF(x)=H(x)−x ,这样其实原始的学习特征是 F(x)+xF(x)+xF(x)+x。
  • 残差学习相比原始特征直接学习更容易。当残差为0时,此时堆积层仅仅做了恒等映射,至少网络性能不会下降,实际上残差不会为0,这也会使得堆积层在输入特征基础上学习到新的特征,从而拥有更好的性能。
    • $ F(x)+x=y$的公式可通过具有“shortcut connections”的前馈神经网络实现。
    • shortcut connections是跳过一个或多个层的连接。shortcut connections只是执行标识映射,输出被添加到堆叠层的输出中。标识shortcut connections既不增加额外的参数,也不增加计算复杂性。整个网络仍然可以通过SGD使用反向传播进行端到端的训练,并且可以使用现有框架轻松实现。
  • 这种恒等映射的动机是关于退化问题的违反直觉的现象 ,极端的情况是,如果一个恒等式映射是最优的,那么将残差为零比通过一堆非线性层将恒等式映射推得零要容易得多。
  • 在实际情况下,identity mappings 不太可能是最优的,但reformulation可能有助于解决这个问题。如果最优函数更接近于identity mapping 而不是zero mapping,那么解算器应该更容易根据identity mapping 查找perturbations,而不是将函数作为新函数学习。
  • 在ImageNet数据集上进行了综合实验,以显示退化问题并评估方法发现:
    • 深度残差网络很容易优化,但对应的“普通”网络(即简单的堆栈层)在深度增加时表现出更高的训练误差;
    • 深度残差网络可以很容易地从深度的大幅增加中获得精度增益,产生的结果大大优于以前的网络。
  • The extremely deep representations 在其他识别任务上也具有出色的泛化性能,并使我们在ILSVRC和COCO 2015竞赛中进一步赢得了ImageNet检测、ImageNet定位、COCO检测和COCO分割的第一名。这有力的证据表明,残差学习原理是通用的,我们期望它适用于其他视觉和非视觉问题。
  • Identity Mapping by Shortcuts
    • 对每几层进行残差学习。定义为y=f(x,{Wi})+xy=f(x,\{W_i\})+xy=f(x,{Wi​})+x(残差公式一),这里x和y是所考虑的层的输入和输出向量。函数F(x,{Wi})F(x,\{W_i\})F(x,{Wi​})表示要学习的残差映射。 F=W2σ(W1x)F=W_2σ(W_1x)F=W2​σ(W1​x),其中σ表示ReLU激活函数,为了简化符号,省略了偏差。操作F+x通过shortcut connection和元素添加来执行。
    • 方程式中的shortcut connection既不引入额外的参数,也不引入计算复杂性。这不仅在实践中很有用,而且在比较普通网络和残差网络时也很重要。可以比较同时具有相同数量的参数、深度、宽度和计算成本(除了可忽略的元素相加)的普通/残差网络。
    • 残差公式一中x和f函数求的结果维度尺寸需要相同,可以通过shortcut connection执行线性投影WsW_sWs​,以匹配尺寸:
      • y=f(x,{Wi})+Wsxy=f(x,\{W_i\})+W_sxy=f(x,{Wi​})+Ws​x, identity mapping 足以解决退化问题,而且经济,Ws仅在匹配维度时使用。
    • 残差函数F的形式多样的。本文中的实验涉及一个具有两层或三层的函数F(如下图),更多层是可以的。但如果F只有一层则类似于线性层:y=W1x+xy=W_1x+xy=W1​x+x,尚未表现观察到其优点。 函数F(x,{Wi})F(x,\{W_i\})F(x,{Wi​})表示在全连接层上运算,也可以表示多个卷积层。逐通道在两个特征贴图上执行元素添加。
  • 残差指的是什么?其中ResNet提出了两种mapping:一种是identity mapping,指的就是上图中”跳跃的曲线”,另一种residual mapping,指的就是除了”跳跃的曲线“那部分,所以最后的输出是 y=F(x)+x
    • identity mapping顾名思义,就是指本身,也就是公式中的x,而residual mapping指的是“”,也就是y−x,所以残差指的就是F(x)部分
  • 理论上,对于“随着网络加深,准确率下降”的问题,Resnet提供了两种选择方式,也就是identity mapping和residual mapping,如果网络已经到达最优,继续加深网络,residual mapping将被push为0,只剩下identity mapping,这样理论上网络一直处于最优状态了,网络的性能也就不会随着深度增加而降低了。

Related Work

  • Residual Representations

    • VALD,Fisher Vector都是是对残差向量编码来表示图像,在图像分类,检索表现出优于编码原始向量的性能。

    • 在low-level的视觉和计算机图形学中,为了求解偏微分方程,广泛使用的Multigrid方法将系统看成是不同尺度上的子问题。每个子问题负责一种更粗糙与更精细尺度的残差分辨率。

    • Multigrid的一种替换方法是层次化的预处理,层次化的预处理依赖于两种尺度的残差向量表示。实验表明,这些求解器要比对残差不敏感的求解器收敛更快。

    • 在图像识别中,VLAD是通过残差向量相对于字典进行编码的表示,Fisher向量可以表示为VLAD的概率版本。

      • 在深度学习时代之前,图像检索领域以及分类主要使用的常规算法有BoW、Fisher Vector及VLAD等。

      • VLAD是vector of locally aggregated descriptors的简称,其核心思想是aggregated(积聚),主要应用于图像检索领域。一般都是基于局部特征(如SIFT,SURF)等进行特征编码获得一个关于图像的feature,最后计算feature之间的距离。

      • 一种编码方法,广泛用于基于音频的人脸识别、动态场景识别、头部姿态分类等。

      • VLAD算法流程

        1. 读取图片文件路径及特征提取
        2. 用聚类方法训练码本,码本的大小从64-256甚至更大不等,理论上越大检索精度越高。
        3. 将每张图片的特征与最近的聚类中心进行累加
        4. 对累加后的VLAD进行PCA降维并对其归一化
        5. 得到VLAD后,使用ADC方法继续降低储存空间和提高搜索速度
      • Fisher vector本质上是用似然函数的梯度vector来表达一幅图像

      • Fisher Vector的本质就是对于高斯分布ζ(X∣λ)=∑t=1Tlogp(xt∣λ)\zeta(X|\lambda)=\sum^{T}_{t=1}{logp(x_t|\lambda)}ζ(X∣λ)=∑t=1T​logp(xt​∣λ)的变量求偏导!也就是对权重,均值,标准差求偏导得到的结果。最后在需要一个归一化处理。

      • 为什么Fisher Vector比高斯分布有效

        • 将一张图近似为一个高斯分布,由这个高斯分布来表示这张图像。假设做目标的检测,那么当得到一个有相同的高斯分布的图的时候就可以判断出这就是那个目标了。但实际的情况是却不一定是这样的。梯度向量的物理意义就是描述能够使模型更好地适应数据的参数变化方向,也就是数据拟合中参数调优的过程

        • Fisher Vector+线性分类器可以等价于Fisher Kernel分类器

        • Fisher Kernel:Fisher Kernel相当于基于训练一个Hidden Markov Model(HMM)(产生式模型),并为SVM(判别式模型)衍生出Fisher Kernel。

        • 基于Fisher Vector的图像学习的完整过程应该描述为下面几个步骤。

          1. 选择GMM中K的大小
          2. 用训练图片集中所有的特征(或其子集)来求解GMM(可以用EM方法),得到各个参数;
          3. 取待编码的一张图像,求得其特征集合;
          4. 用GMM的先验参数以及这张图像的特征集合按照以上步骤求得其fv;
          5. 在对训练集中所有图片进行2,3两步的处理后可以获得fishervector的训练集,然后可以用SVM或者其他分类器进行训练。

          经过fisher vector的编码,大大提高了图像特征的维度,能够更好的用来描述图像。FisherVector相对于BOV的优势在于,BOV得到的是一个及其稀疏的向量,由于BOV只关注了关键词的数量信息,这是一个0阶的统计信息;FisherVector并不稀疏,同时,除了0阶信息,Fisher Vector还包含了1阶(期望)信息、2阶(方差信息),因此FisherVector可以更加充分地表示一幅图片。

        • 高斯混合模型(Gaussian Mixed Model)指的是多个高斯分布函数的线性组合,理论上GMM可以拟合出任意类型的分布,通常用于解决同一集合下的数据包含多个不同的分布的情况(或者是同一类分布但参数不一样,或者是不同类型的分布,比如正态分布和伯努利分布)。

          • 设有随机变量X,则混合高斯模型可以表示为:p(x)=∑k=1KπkN(x∣μk,Σk)p(x)=\sum_{k=1}^{K}\pi_k\mathcal{N}(x|\mu_k,\Sigma_k)p(x)=∑k=1K​πk​N(x∣μk​,Σk​)。其中N(x∣μk,Σk)\mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k)N(x∣μk​,Σk​)称为混合模型中的第k个分量(component)。πkπ_kπk​是混合系数(mixture coefficient),且满足:∑k=1Kπk=1∑^K_{k=1}π_k=1∑k=1K​πk​=1。且πk∈[0,1]\pi_k{\in}[0,1]πk​∈[0,1],可以认为πk\pi_kπk​ 就是每个分量N(x∣μk,Σk)\mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu}_k, \boldsymbol{\Sigma}_k)N(x∣μk​,Σk​)的权重。
          • GMM常用于聚类。如果要从 GMM 的分布中随机地取一个点的话,实际上可以分为两步:首先随机地在这 K 个 Component 之中选一个,每个 Component 被选中的概率实际上就是它的系数πk\pi_kπk​,选中 Component 之后,再单独地考虑从这个 Component 的分布中选取一个点就可以了──便已经回到了普通的 Gaussian 分布,转化为已知的问题。
          • 将GMM用于聚类时,假设数据服从混合高斯分布(Mixture Gaussian Distribution),那么只要根据数据推出 GMM 的概率分布来就可以了;然后 GMM 的 K 个 Component 实际上对应K个 cluster 。根据数据来推算概率密度通常被称作 density estimation 。特别地,当已知(或假定)概率密度函数的形式,而要估计其中的参数的过程被称作参数估计。
    • VLAD和Fisher都是用于图像检索和分类的强大的浅层表示。对于矢量量化,编码残差矢量显示出比编码原始矢量更有效。

    • 在低级视觉和计算机图形学中,为了求解偏微分方程,广泛使用的多重网格方法将系统重新定义为多个尺度上的子问题,其中每个子问题负责更粗糙和更细尺度之间的残差解。

    • 多重网格的另一种选择是分层基预处理,它依赖于表示两个尺度之间的残差向量的变量。已经证明,这些解比不知道解的剩余性质的标准解收敛得快得多。这些方法表明,一个良好的重新配方或预处理可以简化优化

      • 多重网格法是求解由椭圆边值问题离散化而得的线性代数方程组的非常有效的快速迭代方法.通常的迭代方法(比如雅可比迭代法,高斯一塞德尔迭代法以及SOR法等)都是在一个固定网格上的方程组的迭代方法.
  • Shortcut Connections

    • Highway networks也使用了带有门函数的shortcut。但是这些门函数需要参数,而ResNet的shortcut不需要参数。而且当Highway networks的门函数的shortcut关闭时,相当于没有了残差函数,但是ResNet的shortcut一直保证学习残差函数。
    • Highway networks的层数急剧增加时,没有表现出准确率的上升了。总之,ResNet可以看成是Highway networks的特例,但是从效果上来看,要比Highway networks好。
    • 训练多层感知器(MLP)的早期实践是添加一个从网络输入连接到输出的线性层。
    • 一些中间层直接连接到辅助分类器,用于处理消失/爆炸梯度
    • highway networks提出了具有选通功能的shortcut connections,这些选通门依赖于数据并具有参数,当选通门shortcut connections“关闭”(接近零)时,highway networks中的图层表示非残差函数。
    • 本文中 identity shortcut connections永远不会关闭,所有信息都会被传递,还需要学习其他residual functions。highway networks没有显示出深度极大增加的精度增益。

Network Architectures

  • Plain Network(下图中间,基于VGG-19设计)

    • 卷积层大多有3×3个滤波器,并遵循两个简单的设计规则:

      • 对于相同的输出特征图大小,各层具有相同数量的滤波器;
      • 如果特征图大小减半,则滤波器的数量加倍,以保持每层的时间复杂度。
    • 通过步长为2的卷积层直接执行下采样。网络以一个全局平均池层和一个带softmax的1000路完全连接层结束。加权层的总数为34。

    • 本文模型比VGG网络(下图左)具有更少的过滤器和更低的复杂性。34层基线有36亿次浮点运算(乘法相加),仅为VGG-19(196亿次浮点运算)的18%。

  • Residual Network(下图右边)

    • 基于上述Plain Network,插入shortcut connections(下图右),将网络转换为其对应的残差网络版本。

    • 当输入输出尺寸相同时(下图右实线shortcut connections),可以直接使用identity shortcuts (y=f(x,{Wi})+xy=f(x,\{W_i\})+xy=f(x,{Wi​})+x)。当维度增加(下图右虚线捷径)时,考虑两个选项:

      • shortcut connections仍然执行identity mapping,额外的零项填充以增加维度。此选项不引入额外参数;

      • projection shortcut ,y=f(x,{Wi})+Wsxy=f(x,\{W_i\})+W_sxy=f(x,{Wi​})+Ws​x 用于匹配尺寸(通过1×1卷积完成)。

      • 对于这两个选项,当shortcuts穿过两种尺寸的特征图时,将以步幅为2执行。

    • ImageNet的网络架构示例。左:参考VGG-19模型(196亿次)。中间:有34个参数层的普通网络(36亿次)。右图:一个有34个参数层的剩余网络(36亿次)。虚线shortcut connections增加了尺寸。下表显示了更多细节和其他变体。

      • 实线的的Connection部分(”第一个紫色矩形和第三个紫色矩形“)都是执行3x3x64的卷积,他们的channel个数一致,所以采用计算方式:y=F(x)+x
      • 虚线的的Connection部分(”第一个绿色矩形和第三个绿色矩形“)分别是3x3x64和3x3x128的卷积操作,他们的channel个数不同(64和128),所以采用计算方式:y=F(x)+Wx,其中W是卷积操作,用来调整x的channel维度的;
      • 两种Shortcut Connection方式实例(左图channel一致,右图channel不一样)
    • ImageNet的体系结构。堆叠块显示在括号中,其数量为堆叠的砌块。降采样由conv3 1、conv4 1和conv5 1以2的步幅执行。
  • 设计网络的规则:

    • 对于输出feature map大小相同的层,有相同数量的filters,即channel数相同;
    • 当feature map大小减半时(池化),filters数量翻倍。
  • 对于残差网络,维度匹配的shortcut连接为实线,反之为虚线。维度不匹配时,同等映射有两种可选方案:

    • 直接通过zero padding 来增加维度(channel)。
    • 乘以W矩阵投影到新的空间。实现是用1x1卷积实现的,直接改变1x1卷积的filters数目。这种会增加参数。
  • Implementation

    • 在对[256*480]中图像的较短侧进行随机采样,以调整图像的大小,以进行缩放。
    • 从图像或其水平翻转中随机采样224×224裁剪,并减去每像素平均值。 还使用了标准颜色增强(数据处理方法来源Backpropagation applied to handwritten zip code recognition)。
    • 在每次卷积之后和激活之前采用批处理归一化(BN)
    • 按照(Surpassing human-level performance on imagenet classification)中的方法初始化权重,并从头开始训练所有普通/剩余网络。
    • 使用最小批量为256的SGD。学习率从0.1开始,当误差稳定时,学习率除以10,并且模型训练最多60×10460×10^460×104次迭代。使用0.0001的权重衰减和0.9的动量。不使用dropout。

Experiments

  • ImageNet Classification

    • 评估18层和34层平网。34层的网络结构如上图中网络结构中间图,18层的网络结构类似于该网络结构。
    • 在ImageNet上进行训练。细曲线表示训练误差,粗曲线表示中心作物的验证误差。左:18层和34层的平面网络。右图:18层和34层的resnet。在这个图中,与普通网络相比,残差网络没有额外的参数。
    • ImageNet验证中的Top-1错误率(百分比,10个样本测试)。
      • ImageNet验证的Top-1错误(%,10-crop测试)。ResNets与它们的普通对应物相比没有额外的参数。上折线图显示了训练过程。
  • 这种优化困难不太可能是由消失的梯度造成的。这些普通网络使用BN进行训练,这确保了前向传播的信号具有非零方差。还验证了反向传播的梯度在BN中表现出健康的规范。因此,向前或向后的信号都不会消失。 事实上,34层平面网仍然能够达到具有竞争力的精度,这表明解算器在一定程度上起作用。

  • 评估18层和34层残差网络(RESNET)。基于体系结构与上述普通网络相同,上述网络结构中右边网络结构的每对3×3滤波器都添加了一个shortcut connections。对所有快捷方式使用标识映射,对增加维度使用零填充。因此,与普通对应项相比,它们没有额外的参数。

  • 根据对18层和34层网络的实验结果分析有三点:

    • 首先,通过残差学习,情况发生了逆转——34层ResNet优于18层ResNet(2.8%)。更重要的是,34层的ResNet显示出相当低的训练误差,并且可以推广到验证数据。这表明,在这种情况下,退化问题得到了很好的解决,成功地通过增加深度获得了精度增益。
    • 第二,34层的ResNet将Top-1错误率减少了3.5%,这是由于成功减少了训练错误。这一比较验证了残差学习在极深系统上的有效性。
    • 最后,18层普通网/残差网的精度相当高,但18层ResNet的收敛速度更快。当网络“不太深”时,当前的SGD解算器仍然能够找到普通网络的良好解决方案。在这种情况下,ResNet通过在早期阶段提供更快的收敛来简化优化。
  • Identity vs. Projection Shortcuts.

    • 无参数、Identity Shortcuts有助于训练。接下来研究Projection Shortcuts.

    • ImageNet验证的错误率(%),10-crop测试。VGG 16是基于我们的测试。ResNet-50/101/152属于选项B,它仅使用投影来增加维度。

    • 在表中,比较了三个选项:

      • (A)零填充Shortcuts用于增加维度,并且所有Shortcuts都是无参数的;

      • (B) 投影Shortcuts用于增加尺寸,其他Shortcuts为标识;

      • (C)所有Shortcuts都是投影。

        • 这三个选项都比普通选项好得多。
        • B略好于A,认为这是因为A中的零填充维度确实没有残差学习。
        • C略好于B,将其归因于许多(十三个)Projection Shortcuts. 引入的额外参数。但是,A/B/C之间的微小差异表明,Projection Shortcuts. 对于解决退化问题不是必不可少的。因此,在本文的其余部分中,不使用选项C来降低内存/时间复杂性和模型大小。Identity Shortcuts. 对于不增加下面介绍的瓶颈体系结构的复杂性尤为重要。
  • Deeper Bottleneck Architectures.

    • 将描述ImageNet的深层网络。出于能够负担的训练时间的考虑,将构建模块修改为bottleneck设计。对于每个残差函数F,使用3层而不是2层的堆栈(下图)。
      • ImageNet的一个更深的残差函数F。左图:ResNet34的构造块(在56×56特征图上),如上文resnet网络架构所示。右图:ResNet-50/101/152的“瓶颈”构件。
    • 这三层是1×1、3×3和1×1卷积,其中1×1层负责减少然后增加(恢复)维度,而3×3层则成为具有较小输入/输出维度的瓶颈。图5示出了一个例子,其中两种设计具有相似的时间复杂度。
    • 无参数标识identity shortcuts 对于瓶颈体系结构尤为重要。如果将上图3层(右)中的identity shortcuts替换为投影,可以看出时间复杂度和模型大小加倍,因为shortcuts 连接到两个高维末端。所以identity shortcuts 导致瓶颈设计的更有效的模型。
  • 50-layer ResNet:

    • 用这个3层bottleneck block替换34层网络中的每个2层块,得到50层ResNet。使用选项B来增加维度。这个模型有38亿次FLOPs。
  • 101-layer and 152-layer ResNets:

    • 通过使用更多的3层模块,构建了101层和152层网络。值得注意的是,尽管深度显著增加,但152层ResNet(113亿次浮点运算)的复杂度仍然低于VGG-16/19网络(153/196亿次浮点运算)。
    • 50/101/152层的结果比34层的结果精确得多(实验数据记录如下表)。没有观察到退化问题,因此从显著增加的深度享受显著的精度增益。所有评估指标都见证了深度的好处。
      • ImageNet验证集上单一模型结果的错误率(%)(测试集上报告的除外)。
  • Comparisons with State-of-the-art Methods.

    • 与之前的最佳单模型结果进行了比较。基本模型34层ResNets已经实现了极具竞争力的精度。152层ResNet的单模型top-5验证误差为4.49%。这个单一模型的结果优于所有以前的集成结果(如下表)。

      • 总体误差率(%)。前5名错误在ImageNet的测试集上,由测试服务器报告。
    • 将六个不同深度的模型组合成一个系综(提交时只有两个152层的)。这导致测试集上3.57%的前5名错误(如上表)。该参赛作品在ILSVRC 2015中获得第一名。

CIFAR-10 and Analysis

  • 对CIFAR-10数据集进行了更多的研究,该数据集由10个类中的50k训练图像和10k测试图像组成。展示了在训练集上训练的实验和在测试集上评估的实验。本文的重点是非常深的网络的行为,但不是推动最先进的结果,所以有意使用简单的架构如下。

  • 普通/残差架构遵循上面的网络架构图中的形式(中间/右侧)。网络输入是32×32图像,减去每个像素的平均值。第一层是3×3卷积。然后别在大小为{32,16,8}的特征图上使用具有3×3卷积的6n层的堆叠,每个特征图大小具有2n层。过滤器的数量分别为{16,32,64}。子采样是由步长为2的卷积执行的。网络以全局平均池、10路全连接层和softmax结束。总共有6n+2个堆叠的加权层。下表总结了该体系结构:

  • 当使用shortcut连接时,它们被连接到3×3层对(总共3n个shortcut)。在这个数据集上,在所有情况下都使用identity shortcuts(即选项A),因此,残差模型具有与普通模型完全相同的深度、宽度和参数数量。

  • 本文使用0.0001的权重衰减和0.9的动量,并采用[Delving deep into rectifiers: Surpassing human-level performance on imagenet classification.和BN中的权重初始化,但没有dropout。这些模型在两个GPU上以128的小批量进行训练。

  • 以0.1的学习率开始,在32k和48k迭代时除以10,在64k迭代时终止训练,这是在45k/5k训练/val分割上确定的。按照[Deeply supervised nets]中的简单数据增强进行训练:每边填充4个像素,从填充的图像或其水平翻转中随机采样32×32的裁剪。为了测试,只评估原始32×32图像的单个视图。

  • 比较n = {3,5,7,9},得出20,32,44,56层网络。下图(左)显示了平面网的行为。深平纹网的深度增加,当越来越深时,训练误差越来越大。这种现象类似于ImageNet和MNIST上的现象,表明这种优化困难是一个基本问题。

    • 关于CIFAR-10的训练。虚线表示训练误差,粗线表示测试误差。左图:普通网络。plain-110的误差高于60%,不显示。中间:ResNets。右图:110层和1202层的ResNets。
  • 上图(中间)显示了ResNets的行为。同样类似于ImageNet的情况,ResNets设法克服了优化困难,并证明了当深度增加时精度的提高

  • 进一步研究n =18,这导致110层ResNet。在这种情况下,发现0.1的初始学习率对于开始收敛来说有点太大了。所以用0.01预热训练,直到训练误差在80%以下(约400次迭代),然后回到0.1继续训练。学习计划的其余部分如前所述。这个110层的网络收敛的很好(上图,中间)。

  • 与FitNet和Highway(下表)等其他深度和广度网络相比,它的参数更少,但仍是最先进的结果之一(6.43%)。

    • CIFAR-10测试集上的分类错误。所有方法都有数据增强。对于ResNet-110,运行它5次,并显示“最佳(均值,方差)”。
  • Analysis of Layer Responses.

    • 下图显示了层响应的标准偏差(std)。在BN之后和其它非线性(ReLU/加法)之前,响应是每个3×3层的输出。

      • CIFAR10上层响应的标准偏差(std)。在BN之后和非线性之前,响应是每个3×3层的输出。顶部:层以其原始顺序显示。底部:响应按降序排列。
    • 对于ResNets,这种分析揭示了残差函数的响应强度。上图示出了ResNets通常比它们的普通对应物具有更小的响应。这些结果支持了我们的基本动机,即残差函数通常比非残差函数更接近于零。较深的ResNet具有较小的响应幅度,如上图中ResNet-20、56和110之间的比较所示。当有更多的层时,一个单独的ResNets层倾向于较少地修改信号。
  • Exploring Over 1000 layers.

    • 探索了一个超过1000层的深度模型。设置n = 200,这形成一个1202层的网络,其训练如上所述。本文的方法没有显示出优化困难,并且这个103层网络能够实现训练误差<0.1%(Training on CIFAR-10图,右侧)。它的测试误差还是相当不错的(7.93%,Classification error on the CIFAR-10 test set表)。
    • 但是在这种激进的深度模型上仍然存在open problems 。这个1202层网络的测试结果比110层网络差,尽管两者具有相似的训练误差。本文作者认为这是因为过度拟合。对于这个小数据集来说,1202层网络可能过大(19.4M)。应用诸如maxout 或dropout之类的强正则化来获得该数据集的最佳结果。
    • 在本文中,不使用maxout/dropout,只是通过设计的深度和瘦架构简单地实施正则化,而不会分散对优化困难的关注。但是结合更强的正则化可能会改善结果,将在未来进行研究。

Object Detection on PASCAL and MS COCO

  • 该方法在其他识别任务上具有良好的泛化性能。下表显示了PASCAL VOC 2007和2012 以及COCO的目标探测基线结果。

  • 采用faster R-CNN作为检测方法。这里感兴趣的是用ResNet-101代替VGG-16的改进。使用这两种模型的检测实现是相同的,因此收益只能归功于更好的网络。最引人注目的是,在具有挑战性的COCO数据集上,获得了COCO标准度量的6.0%的增长(mAP@[0.5,0.95]),这是28%的相对改善。这种增益完全是由于the learned representations.
  • 基于深度残差网络,在ILSVRC & COCO 2015比赛中获得了多个赛道的第一名:ImageNet检测、ImageNet定位、COCO检测、COCO分割。

A. Object Detection Baselines

  • 基于基线faster R-CNN系统的检测方法。这些模型由ImageNet分类模型初始化,然后根据对象检测数据进行微调。已经在ILSVRC和COCO 2015探测比赛期间对ResNet-50/101进行了实验。

  • 与faster R-CNN中使用的VGG-16不同,本文的ResNet没有隐藏的fc层。采用“Conv特征地图网络”(NoC) 的概念来解决这个问题。使用那些在图像上跨度不大于16个像素的图层(即,conv1、conv2 x、conv3 x和conv4 x,ResNet-101中共有91个conv图层)来计算全图像共享conv特征图)。

  • 本文认为这些图层类似于VGG-16中的13个conv图层,通过这样做,ResNet和VGG-16都具有相同总跨度(16像素)的conv要素地图。这些层由区域建议网络(RPN,生成300个建议)和fast R-CNN检测网络共享。RoI集中在conv5_1之前执行。这个RoI-pooled特性中,每个区域都采用了conv5_x及以上的所有层,扮演VGG-16的fc层的角色。最终的分类层由两个sibling layers代替(分类和盒子回归)。

  • 对于BN层的使用,在预训练之后,计算ImageNet训练集上每个层的BN统计(均值和方差)。然后,BN层在用于对象检测的微调期间被固定。因此,BN层成为具有恒定偏移和比例的线性激活,并且BN统计数据不会通过微调来更新。修复BN层主要是为了在faster R-CNN训练中减少内存消耗。

  • PASCAL VOC

    • 对于PASCAL VOC 2007测试集,使用VOC 2007中的5k trainval图像和VOC 2012中的16k trainval图像进行训练(“07+12”)。对于PASCAL VOC 2012测试集,使用VOC 2007中的10k trainval+测试图像和VOC 2012中的16k trainval图像进行训练(“07++12”)。下表显示了结果。ResNet-101比VGG-16的地图改善了3%以上。这种收益完全是因为ResNet改进了功能。

  • MS COCO

    • MS COCO数据集涉及80个对象类别。评估PASCAL VOC指标(mAP @ IoU = 0.5)和标准COCO指标(mAP @ IoU = 0.5:0.05:0.95).使用训练集上的80k图像进行训练,使用验证集上的40k图像进行评估。
    • COCO检测系统与PASCAL VOC检测系统相似。使用8个GPU实现来训练COCO模型,因此RPN步骤具有8个图像的小批量大小(即,每个GPU 1个图像),而fast R-CNN步骤具有16个图像的小批量大小。RPN步骤和快速RCNN步骤都以0.001的学习率训练240k次迭代,然后以0.0001训练80k次迭代。
    • ResNet-101比VGG-16具有6%的mAP @[0.5,0.95]增加,这是28%的相对改进,这完全是由更好的网络所学习的特征所贡献的。值得注意的是,mAP@[0.5,0.95]的绝对增幅(6.0%)几乎与mAP@.5的增幅(6.9%)一样大。这表明,更深的网络可以提高识别和定位

B. Object Detection Improvements

  • PASCAL VOC

    • 基于上述模型重新访问PASCAL VOC数据集。利用COCO数据集上的单一模型(下表中的55.7% mAP @ 0.5),在PASCAL VOC集上对该模型进行了微调。

      • 使用faster R-CNN和ResNet-101在MS COCO上的对象检测改进。
    • 还采用了盒细化、上下文和多尺度测试的改进。通过这样做,在PASCAL VOC 2007上实现了85.6%的mAP(下表),
      • PASCAL VOC2007测试集的检测结果。基线是faster R-CNN系统。系统“基线++”包括盒细化、上下文和多尺度测试。
    • 在PASCAL VOC 2012上实现了83.8%的mAP(表11)。PASCAL VOC 2012上的结果比之前最先进的结果高出10个点。
      • PASCAL VOC 2012测试集上的检测结果(http://host.robots.ox.ac.uk:8080/leaderboard/displaylb.php?challengeid=11&compid=4)。基线是faster R-CNN系统。系统“基线++”包括盒细化、上下文和多尺度测试。
  • MS COCO

    • Box refinement. box精化部分地遵循了[Object detection via a multi-region & semantic segmentation-aware cnn model.]中的迭代定位。在faster R-CNN中,最终输出是与其提议框不同的回归框。因此,为了进行推断,从回归框中汇集新的特征,并获得新的分类分数和新的回归框。
    • 把这300个新的预测和原来的300个预测结合起来。非最大抑制(NMS)应用于预测盒的联合集,使用IoU阈值0.3,随后是盒投票。盒细化将mAP提高了大约2个点。
    • Global context.在fast R-CNN步骤中结合了全局上下文。给定全图像conv特征地图,通过全局空间金字塔池(具有“单级”金字塔)来汇集特征,其可以使用整个图像的边界框作为RoI来实现为“RoI”池。该汇集的特征被馈送到RoI后的层中,以获得全局上下文特征。此全局要素与原始的每个区域要素连接在一起,后面是同级分类图层和盒回归图层。这种新结构是端到端训练的。全球背景将mAP @ .5提高了约1个点。
    • Multi-scale testing.在上文中,所有结果都是通过[faster R-CNN]中的单尺度训练/测试获得的,其中图像的短边是s = 600个像素。通过从特征金字塔中选择一个尺度,在[Object detection networks on convolutional feature maps]中通过使用最大输出层,开发了多尺度训练/测试。
    • 在当前的实现中,已经按照[Object detection networks on convolutional feature maps]进行了多尺度测试;由于时间有限,没有进行多尺度训练。仅针对fast R-CNN步骤进行了多尺度测试(但尚未针对RPN步骤)。利用训练好的模型,在图像金字塔上计算conv特征图,其中图像的短边是s ∈ {200,400,600,800,1000}。
    • 从[Object detection networks on convolutional feature maps]之后的金字塔中选择两个相邻的标度。在这两个尺度的特征图上执行RoI汇集和后续层,通过maxout合并这些特征图。多尺度测试将地图提高了2个百分点以上。
    • Using validation data.使用80k+40k trainval集进行训练,使用20k test-dev集进行评估。test-dev集合没有公开可用的ground truth,结果由评估服务器报告。在此设置下,结果是mAP@.5为55.7%,mAP@[.5,. 95]为34.9%。
    • Ensemble.在faster R-CNN中,系统被设计为学习区域提议以及对象分类器,因此集成可以用于促进这两项任务。使用集成来建议区域,并且建议的联合集由每个区域分类器的集成来处理。在测试开发集上,该图为59.0%和37.4%。这一成绩在2015年COCO的探测任务中获得了第一名。
  • ImageNet Detection

    • ImageNet检测(DET)任务涉及200个物体类别。精度由mAP @ 0.5评估。针对ImageNet DET的对象检测算法与针对MS COCO的算法相同。这些网络在1000级ImageNet分类集上进行预训练,并在DET数据上进行微调。
    • 按照[Rich feature hierarchies for accurate object detection and semantic segmentation.]将验证集分成两部分(val1/val2)。使用DET训练集和val1集来微调检测模型。val2集合用于验证。不使用ILSVRC 2015年的其他数据。在DET测试集上,使用ResNet-101的单个模型具有58.8%的mAP,本文的3个模型的集合具有62.1%的mAP(见下表)。这一成绩在ILSVRC 2015的ImageNet检测任务中获得第1名,超过第2名8.5分(绝对值)。
      • 在ImageNet检测数据集上的结果(mAP,%)检测系统是faster R-CNN ,使用ResNet-101。

C. ImageNet Localization

  • ImageNet定位(LOC)任务要求对对象进行分类和定位。假设首先采用图像级分类器来预测图像的类别标签,并且定位算法仅考虑基于预测的类别来预测包围盒。采用“逐类回归”(PCR)策略,为每个类学习一个包围盒回归器。
  • 针对ImageNet分类对网络进行预训练,然后针对定位对其进行微调。在提供的1000级ImageNet训练集上训练网络。
  • 定位算法基于[faster R-CNN]的RPN框架,并做了一些修改。不同于[faster R-CNN]中与类别无关的方式,本文的定位RPN是以每个类别的形式设计的。该RPN以两个sibling1×1卷积层结束,用于二进制分类(cls)和盒回归(reg)。与[faster R-CNN]相反,cls和reg层都是每个类的形式。具体来说,**cls层有一个1000维的输出,每个维都是二元逻辑回归,用于预测是否是对象类;reg层有一个1000×4-d输出,由1000个类的盒回归元组成。**本文的边界框回归是参考每个位置的多个平移不变的“锚”框。
  • ImageNet分类训练,随机抽样224×224种Corp进行数据增强。使用256个图像的小批量进行微调。为了避免负样本占优势,对每个图像随机采样8个锚,其中采样的正锚和负锚的比率为1:1。为了测试,网络被完全卷积地应用于图像。
  • 下表比较了定位结果。首先使用ground truth类作为分类预测来执行“oracle”测试。VGG的论文报告了使用ground truth类的中心作物误差为33.1%(见下表)。
    • ImageNet验证的定位错误(%)。在“GT类上的LOC误差”一栏中,使用了GT类。在“测试”列中,“1-crop”表示对224×224像素的中心裁剪进行测试,“dense”表示密集(完全卷积)和多尺度测试。
  • 在相同的设置下,使用ResNet-101网的RPN方法将center-crop error显著降低到13.3%。这个比较展示本文的框架的优秀性能。通过密集(完全卷积)和多尺度测试,ResNet-101使用ground truth classes的误差为11.7%。使用ResNet-101预测类别(4.6%前5分类误差),前5定位误差为14.4%。
  • 以上结果仅基于faster R-CNN中的建议网络(RPN)。可以在faster R-CNN中使用检测网络(fast R-CNN)来改善结果。在这个数据集上,一个图像通常包含单个主要对象,并且建议区域彼此高度重叠,因此具有非常相似的RoI汇集特征。因此,fast R-CNN 的以图像为中心的训练产生了小变化的样本,这对于随机训练来说可能是不期望的。受此激励,使用以RoI为中心的原始RCNN来代替fast R-CNN。
  • R-CNN实现如下。在训练图像上应用如上训练的每类RPN来预测ground truth类的边界框。这些预测框起到了依赖于类别的建议的作用。对于每个训练图像,提取得分最高的200个建议作为训练样本来训练R-CNN分类器。
  • 图像区域从建议中裁剪,扭曲到224×224像素,并像在R-CNN中一样输入分类网络。该网络的输出由cls和reg的两个sibling fc层组成,也是按类的形式。这个R-CNN网络在训练集上使用以RoI为中心的256个小批量进行微调。为了测试,RPN为每个预测类别生成最高得分的200个建议,并且R-CNN网络用于更新这些提议的得分和盒子位置。
  • 这种方法将前5名的定位误差降低到10.6%。这是在验证集上的单一模型结果。使用用于分类和定位的网络集成,在测试集上实现了9.0%的前5个定位误差。这个数字明显优于ILSVRC 14的结果(下表),表明误差相对减少了64%。这个成绩在ILSVRC 2015的ImageNet本地化任务中获得了第一名。
    • ImageNet数据集上的定位误差(%)与最先进方法的比较。

【读点论文】Deep Residual Learning for Image Recognition 训练更深的网络相关推荐

  1. 读文献——《Deep Residual Learning for Image Recognition》

    1.Abstract We present a residual learning framework to ease the training of networks that are substa ...

  2. Deep Residual Learning for Image Recognition浅读与实现

    目录 1.研究背景 2.目前研究存在的问题 3.本文贡献 4.文本模型 4.1构建块 4.2残差网络 5.模型训练 5.1 ImageNet2012 5.2 CIFAR-10 6.复现 6.1代码大致 ...

  3. Deep Residual Learning for Image Recognition(ResNet)论文翻译及学习笔记

    [论文翻译]:Deep Residual Learning for Image Recognition [论文来源]:Deep Residual Learning for Image Recognit ...

  4. 图像分类经典卷积神经网络—ResNet论文翻译(中英文对照版)—Deep Residual Learning for Image Recognition(深度残差学习的图像识别)

    图像分类经典论文翻译汇总:[翻译汇总] 翻译pdf文件下载:[下载地址] 此版为中英文对照版,纯中文版请稳步:[ResNet纯中文版] Deep Residual Learning for Image ...

  5. 深度学习论文:Deep Residual Learning for Image Recognition

    论文: He, Kaiming, et al. "Deep residual learning for image recognition." Proceedings of the ...

  6. 深度学习论文阅读图像分类篇(五):ResNet《Deep Residual Learning for Image Recognition》

    深度学习论文阅读图像分类篇(五):ResNet<Deep Residual Learning for Image Recognition> Abstract 摘要 1. Introduct ...

  7. 【论文翻译】Deep Residual Learning for Image Recognition

    [论文翻译]Deep Residual Learning for Image Recognition [论文题目]Deep Residual Learning for Image Recognitio ...

  8. 论文翻译[Deep Residual Learning for Image Recognition]

    论文来源:Deep Residual Learning for Image Recognition [翻译人]:BDML@CQUT实验室 Deep Residual Learning for Imag ...

  9. 图像分类经典卷积神经网络—ResNet论文翻译(纯中文版)—Deep Residual Learning for Image Recognition(深度残差学习的图像识别)

    图像分类经典论文翻译汇总:[翻译汇总] 翻译pdf文件下载:[下载地址] 此版为纯中文版,中英文对照版请稳步:[ResNet中英文对照版] Deep Residual Learning for Ima ...

最新文章

  1. 使用Singleton需要考虑内存释放
  2. Python字符串必须知道的7个函数
  3. python使用curses库获取控制台的键盘输入(如上下左右)
  4. struts2 spring hibernate 原理
  5. 自己开发的在线视频下载工具,基于Java多线程
  6. 架构-浅谈MySQL数据库优化
  7. java 2d划线 刷子_月光软件站 - 编程文档 - Java - Java图形设计中,利用Bresenham算法实现直线线型,线宽的控制(NO 2D GRAPHICS)...
  8. iPhone8已跌至三千元档,迫不及待的入手了一部
  9. 小心!智能音箱正在监听你?| 极客头条
  10. 路径读取os.path.abspath、os.path.dirname、os.path.basename、os.path.split
  11. 100个Python实战项目(一)使用 Python 生成二维码
  12. 臻游网络手游[乱弹西游]4月中旬开启首测
  13. 大数据还能火多久?现在学习还来得及吗?
  14. 应用内添加原生广告,变现与用户体验可兼得
  15. iphone计算机怎样打开声音,mac系统启动的时候咚声音怎么开启或关闭?
  16. UE5——AI追逐(蓝图、行为树)
  17. 关于mysql 联表使用count的一个问题
  18. 今日金融词汇---应收,是什么?
  19. Faster Read: Learning a Deep Single Image Contrast Enhancer from Multi-Exposure Images
  20. c++演讲比赛流程管理系统

热门文章

  1. html5手机壳,这款帅炸的手机壳,能够让你的iPhone秒变安卓
  2. 【问题解决】[kubelet-check] The HTTP call equal to ‘curl -sSL http://localhost:10248/healthz‘ failed wite
  3. LNK2019 无法解析的外部符号 main,函数 “int __cdecl invoke_main(void)“
  4. python有限元传热求解_Python进行有限元编程-平面应力问题(三节点三角形单元)...
  5. 删除右键上传到有道云笔记
  6. 12.集成学习进阶一——xgboost
  7. 怎样健康的使用计算机,S健康怎么用 三星S健使用图文教程
  8. 2022-2028年中国柚子行业市场分析预测及发展战略研究报告
  9. 【CBAM Pytorch实现】注意力机制综述阅读推荐
  10. php公众号支付后的微信通知,关于微信公众号支付细数我踩过的坑