ResNet 原论文及原作者讲解
- ResNet 论文
- 摘要
- 1. 引入
- 2. 相关工作
- 残差表示
- 快捷连接
- 3. 深度残差学习
- 3.1. 残差学习
- 3.2. 快捷恒等映射
- 3.3. 网络体系结构
- 普通网络 plain network
- 残差网络 residual network
- 3.4. 实施
- 4. 实验
- 4.1. ImageNet分类
- 普通的网络 plain network
- 残差网络 residual network
- 恒等vs.快捷连接
- 更深的瓶颈架构
- 与 SOTA 比较
- 4.2. CIFAR-10和分析
- 层响应分析
- 探索超过1000层
- 何凯明大佬现场讲解 ResNet
- 大佬的 PPT
ResNet 论文
- 论文地址:Deep Residual Learning for Image Recognition
摘要
更深的神经网络更难训练。我们提出了一个 残差学习框架,以 简化 比以前使用的网络深度大得多的网络的训练。我们明确地将 ResNet 的层 重新表述为 学习残差函数,也就是 与层输入有关的函数,而 不是学习无关的函数。
残差函数是与层输入有关的函数,是因为 它是用来表示输入和输出之间的差异的。也就是说,残差函数是用来 学习输入到输出的映射的变化量,而不是直接学习输入到输出的映射。
ResNet 的 每个残差块 都试图 学习输入和输出之间的差异,而 不是直接学习输入到输出的映射。这样做的好处是可以让网络更容易优化,也可以 增加网络的深度 而 不会导致退化 问题。
我们提供了 全面的实验证据,表明这些残差网络更 容易优化,并且可以从相当大的深度中获得 精度。在 ImageNet 数据集上,我们评估了深度高达152层的残差网络,比 VGG 网络深8倍,但仍然具有较低的复杂性。这些残差网络的集合在 ImageNet 测试集上的误差达到3.57%。该结果在 ILSVRC 2015分类任务中获得第一名。我们还介绍了100层和1000层的 CIFAR-10分析。
表征的深度对于许多视觉识别任务至关重要。仅由于我们的极深表示,我们在 COCO 对象检测数据集上获得了28%的相对改进。深度残差网络是我们参加 ILSVRC & COCO 2015竞赛的基础,我们还在 ImageNet 检测、ImageNet 定位、COCO 检测和 COCO 分割的任务中获得了第一名。
1. 引入
深度卷积神经网络[22,21]在图像分类方面取得了一系列突破[21,50,40]。深度网络 以端到端的多层方式自然地集成低/中/高级特征[50]和分类器,并且 特征的“级别”可以通过堆叠层的数量(深度)来丰富。
这句话的意思是,深度网络可以用多个层次的神经元来处理数据,从而提取不同层次的特征。
- 特征是数据的一些有用的属性,比如图像的边缘、形状、颜色等。
- 低级特征是比较简单的特征,比如像素值;
- 中级特征是比较复杂的特征,比如线条、角度、纹理等;
- 高级特征是比较抽象的特征,比如物体、场景、情感等。
- 深度网络可以通过增加层数来提取更高级的特征,从而更好地完成分类任务。
- 分类器是一种算法,它可以根据特征来判断数据属于哪个类别,比如猫、狗、人等。
最近的证据[41,44]表明网络深度是至关重要的,在具有挑战性的 ImageNet 数据集[36]上的领先结果[41,44,13,16]都利用了“非常深”[41]模型,深度为16[41]到30[16]。许多其他重要的视觉识别任务[8,12,7,32,27]也极大地受益于非常深的模型。
在深度的重要性的驱使下,一个问题出现了:学习更好的网络就像堆叠更多的层一样简单吗?
回答这个问题的一个障碍是臭名昭著的 梯度消失/爆炸问题[1,9],它从一开始就 阻碍了收敛。然而,这个问题已经通过规范化初始化[23,9,37,13]和中间规范化层[16]得到了很大程度的解决,这使得具有数十层的网络能够开始收敛随机梯度下降(SGD)与反向传播[22]。
梯度消失 是指在深度神经网络中,由于 反向传播算法 的限制,导致 网络的梯度在传递过程中逐渐变小,最终趋近于零,从而使得网络无法更新参数,导致训练失败 的现象。梯度消失的原因可能有以下几种:
- 网络层数过多,导致链式法则中的连乘效应;
- 激活函数的导数小于1,导致梯度衰减;
- 权重初始化不合适,导致梯度变化不稳定;
当更深的网络能够开始收敛时,一个退化问题就暴露出来了:随着网络深度的增加,精度趋于饱和(这可能不足为奇),然后迅速退化。
出乎意料的是,这种退化并 不是由过拟合引起 的,在 适当深度的模型上增加更多的层会导致更高的训练误差,这一点在[11,42]中有提到,我们的实验也充分验证了这一点。
过拟合是指模型在 训练集上表现很好,但 在测试集或新数据上表现很差 的现象。
- 比如在训练集上 e r r o r error error 在下降,但是在测试集上 e r r o r error error 却上升了。
- 而下图中在测试集上 e r r o r error error 是随着训练集 e r r o r error error 的下降而下降,所以这不是过拟合。
下图是一个典型的例子。

CIFAR-10 在20层和56层“普通”网络上的训练误差(左)和测试误差(右)。网络越深,训练误差越大,测试误差也越大。
ImageNet 上的类似现象如下图所示:

ImageNet 的训练。细曲线表示训练误差,粗曲线表示中间产物的验证误差。左图:18层和34层的普通网络(简单地堆叠)。右图:18层和34层的 ResNets。在该图中,与普通网络相比,残差网络没有额外的参数。
(训练精度的)退化表明,并非所有系统都同样容易优化。让我们考虑一个较浅的体系结构和它的更深的对应物,它在上面添加了更多的层。通过 构造更深的模型存在一个解决方案:添加的层是 i d e n t i t y m a p p i n g identity\ mapping identity mapping(恒等映射),其他的层则从之前学习到的浅层模型复制得到。
这句话的意思是,当网络层数增加时,为了避免退化问题,作者采用了一种方法,就是将增加的层作为恒等映射(对任意 x x x, f ( x ) = x f(x) = x f(x)=x 都成立),也就是不改变输入的输出,而其他的层则复制自之前学习到的浅层模型。这样做的目的是为了让网络更容易优化,也可以作为一个 基线 来 比较残差连接的效果。
这种构造解的存在表明,较深的模型不会比较浅的模型产生更高的训练误差。但实验表明,我们现有的解算器 无法找到比构建的解决方案更好的解决方案(或无法在可行的时间内做到这一点)。
我的理解是,假如我有一个5层的网络,我想构建更深的9层网络,那么我拿来5层网络作为前5层,后4层网络只需要完成恒等映射的任务,
- 按理来说,就可以保证更深的9层网络不会比5层的网络效果差,
- 但 实验效果 却是9层网络效果更差,这说明后4层网络不太能完成恒等映射。
所以作者团队后面就 不用网络来拟合恒等映射了,而是直接“曲线救国”,加了一个跨层连接 恒等映射。
在本文中,我们通过 引入深度残差学习框架 来解决 退化问题。我们不是希望每几层堆叠的层直接拟合一个期望的底层映射,而是明确地 让这些层拟合一个残差映射。形式上,假设期望的底层映射为 H ( x ) \mathcal H(x) H(x),我们让堆叠的非线性层拟合另一个映射: F ( x ) : = H ( x ) − x \mathcal F(x) := \mathcal H(x) - x F(x):=H(x)−x。原始映射被重构为 F ( x ) + x \mathcal F(x)+x F(x)+x。我们假 设优化残差映射比优化原始的、无参照的映射更容易。在极端情况下,如果一个恒等映射是最优的,将残差推至零要比用一堆非线性层拟合一个恒等映射容易得多。
F ( x ) + x \mathcal F(x)+x F(x)+x 的表达式可以 通过具有“快捷连接”的前馈神经网络来实现(图2)。

残差学习:一个构建模块。
快捷连接 [2,34,49]是那些 跳过一个或多个层的连接。在我们的例子中,快捷连接只是执行恒等映射,它们的输出被添加到堆叠层的输出中(图2)。恒等快捷连接既不增加额外的参数,也不增加计算复杂度。 整个网络仍然可以通过反向传播的 SGD 进行端到端训练,并且可以使用通用库(例如 Caffe[19])轻松实现,而无需修改求解器。
我们在 ImageNet 上进行了全面的实验[36],以显示退化问题并评估我们的方法。我们发现:
- 我们的极深残差网络很容易优化,但对应的 “普通”网络 (简单地堆叠层)在深度增加时表现出更高的训练误差;
- 我们的深度残差网络可以很容易地从深度大大增加中获得精度增益,产生的结果比以前的网络好得多。
类似的现象也出现在 CIFAR-10集上[20],这表明我们的方法的优化困难和效果并不仅仅是某个特定数据集的特性。
也就是说,作者认为他们的方法是具有普遍性和有效性的,不会受到数据集的影响。
我们在超过100层的数据集上展示了成功训练的模型,并探索了超过1000层的模型。在 ImageNet 分类数据集[36]上,我们使用极深残差网获得了很好的结果。我们的152层残差网络是迄今为止在 ImageNet 上呈现的最深的网络,但其复杂度仍低于 VGG 网络[41]。我们的集合在 ImageNet 测试集上的前5名错误率为3.57%,并在 ILSVRC 2015分类大赛中获得第一名。
极深表征在其他识别任务上也有出色的泛化性能,并使我们在 ILSVRC & COCO 2015竞赛中,在 ImageNet 检测、ImageNet 定位、COCO 检测和 COCO 分割方面进一步获得第一名。这有力地证明了残差学习原理是通用的,我们期望它能适用于其他视觉和非视觉问题。
2. 相关工作
残差表示
残差表示是一种在图像识别中常用的表示方法,它是 通过对一个字典的残差向量进行编码来得到的,VLAD 是一种残差表示的方法,而 Fisher Vector 可以看作是 VLAD 的概率版本。这两种方法都是用于图像检索和分类的强大的浅层表示方法。
字典和残差向量是在图像识别中常用的表示方法的一部分,它们可以用来 描述图像的特征。
- 字典 是一个由一些基本向量组成的集合,它们可以用来近似表示 图像的局部区域。
- 残差向量 是指图像的局部区域与字典中最近的基本向量之间的差异,它们可以用来 捕捉图像的细节和变化。
为什么想到使用残差?
- 对于 VLAD 和 Fisher Vector 来说,对残差向量编码比对原始向量编码效率更高;
- 用 Multigrid 解偏微分方程(Partial Differential Equations,PDE)时,使用残差向量对于优化更好,收敛速度更快。
快捷连接
与我们的工作同时进行的是,“高速公路网”[42,43]与门控功能[15]提供了快捷连接。这些门是数据依赖的,有参数,而我们的恒等快捷方式是无参数的。
当一条门控捷径“关闭”(接近零)时,公路网中的层表示非残差函数。相反,我们的公式总是学习残差函数;我们的 恒等快捷键永远不会关闭,所有的信息总是通过,还有额外的残差函数需要学习。
此外,高速公路网络在深度极大增加(例如,超过100层)的情况下,并没有显示出准确性的提高。
为什么想到使用跨层连接(快捷连接)?
- 在多层感知机(multi-layer perceptrons,
MLP)中加一层从输入到输出的线性层GoogLeNet中使用辅助分类器防止梯度爆炸 / 消失- 在此之前已有研究者使用跨层连接对响应和梯度中心化(center)处理
inception结构本质也是跨层连接high-way网络也使用到了跨层连接
3. 深度残差学习
3.1. 残差学习
让我们把 H ( x ) \mathcal H(x) H(x) 看作是 由几个堆叠层(不一定是整个网络)拟合的底层映射,其中 x x x 表示 这些层的第一层的输入。如果 假设多个非线性层可以渐近逼近复杂函数,则等价于假设它们可以渐近逼近残差函数,即 H ( x ) − x \mathcal H(x)−x H(x)−x (假设输入和输出具有相同的维数)。因此,我们不是期望堆叠层近似于 H ( x ) \mathcal H(x) H(x),而是明确地让这些层近似于残差函数 F ( x ) : = H ( x ) − x \mathcal F(x):= \mathcal H(x) - x F(x):=H(x)−x。因此,原始函数变为 F ( x ) + x \mathcal F(x)+x F(x)+x。尽管这两种形式都应该能够渐进地逼近所需的函数(如假设的那样),但学习的难易程度可能有所不同。
这种重新表述的动机是 关于退化问题的反直觉现象(图1,左)。正如我们在介绍中所讨论的,如果添加的层可以构造为恒等映射,那么较深的模型的训练误差应该不大于较浅的模型。退化问题表明,求解器在逼近多非线性层的恒等映射时可能存在困难。 通过残差学习的重新表述,如果恒等映射是最优的,求解器可以简单地将多个非线性层的权值向零驱动,从而逼近恒等映射。
非线性层 是指神经网络中使用了非线性变换的层,比如激活函数、卷积或池化。
- 激活函数是一种函数,它可以给神经元的输出增加非线性,比如
sigmoid、tanh或relu函数。- 非线性层可以让神经网络拟合更复杂的函数,提高网络的表达能力和优化效率。
在实际情况下,恒等映射不太可能是最优的,但我们的重新表述可能有助于预先解决问题。如果最优函数更接近于恒等映射而不是零映射,那么求解器应该更容易找到与恒等映射相关的扰动,而不是将该函数作为一个新函数来学习。我们通过实验(图7)表明,学习到的残差函数通常具有较小的响应,这表明恒等映射提供了合理的预处理。
3.2. 快捷恒等映射
我们对每几个堆叠层采用残差学习。构建块如图2所示。形式上,在本文中,我们认为构建块定义为:
y = F ( x , W i ) + x . (1) \mathbf y = \mathcal F(\mathbf x, {W_i}) + \mathbf x. \tag1 y=F(x,Wi)+x.(1)
这里的 x x x 和 y y y 是被考虑的层的输入和输出向量。函数 F ( x , W i ) \mathcal F(\mathbf x, {W_i}) F(x,Wi) 表示待学习的残差映射。对于图2中有两层的例子, F = W 2 σ ( W 1 x ) \mathcal F = W_2σ(W_1x) F=W2σ(W1x),其中 σ σ σ 表示 ReLU[29],为了简化符号,省略了偏差。操作 F + x \mathcal F + x F+x 是通过一个快捷连接和元素加法来执行的。我们采用加后的第二个非线性(即 σ ( y ) σ(y) σ(y),见图2)。
方程(1)中的快捷连接既不引入额外的参数,也不增加计算复杂度。这不仅在实践中很有吸引力,而且在我们比较普通网络和残差网络时也很重要。我们可以比较同时具有相同数量的参数、深度、宽度和计算成本(除了可以忽略不计的元素加法)的普通/残余网络。
x x x 和 F \mathcal F F 的维数在 Eqn(1)中必须相等。
如果不是这种情况(例如,当 改变输入/输出通道 时),我们可以 通过快捷连接执行线性投影 w w w 来匹配维度:
y = F ( x , W i ) + W s x . (2) \mathbf y = \mathcal F(\mathbf x, {W_i}) + W_s \mathbf x. \tag2 y=F(x,Wi)+Wsx.(2)
我们也可以使用 Eqn(1)中的方阵 w w w。但我们将通过实验证明,恒等映射足以解决退化问题,并且节省资源,因此 W s W_s Ws 仅在匹配维度时使用。
匹配维度是指让两个向量或矩阵的维度相同,以便进行加法或乘法等运算。例如,如果 x x x 是一个 n × m n×m n×m 的矩阵,而 F ( x ; W i ) \mathcal F(x; {W_i}) F(x;Wi) 是一个 n × k n×k n×k 的矩阵,那么要使 y = F ( x ; W i ) + x y = \mathcal F(x; {W_i}) + x y=F(x;Wi)+x 成立,就需要用一个 m × k m×k m×k 的矩阵 W s W_s Ws 来乘以 x x x,使得 W s x W_s x Wsx 是一个 n × k n×k n×k 的矩阵,然后再与 F ( x ; W i ) \mathcal F(x; {W_i}) F(x;Wi) 相加。
残差函数 F \mathcal F F 的形式是灵活的。本文中的实验涉及到一个函数 F \mathcal F F,它有两层或三层(图5),而更多的层是可能的。但如果 F \mathcal F F 只有单层,则 Eqn.(1)类似于线性层: y = W 1 x + x \mathbf y = W_1 \mathbf x + \mathbf x y=W1x+x,我们没有观察到其优势。
我们还注意到,尽管为了简单起见,上面的符号是关于全连接层的,但它们适用于卷积层。函数 F ( x , W i ) \mathcal F(\mathbf x, {W_i}) F(x,Wi) 可以表示多个卷积层。逐个通道地在两个特征映射上执行元素加法。
Identity Mapping by Shortcuts是一种深度残差网络中的技术,它可以使网络中的信号在前向和反向传播时直接从一个残差块传到另一个残差块,不会产生信号中断或梯度消失的问题。- 它的基本思想是在每个残差块的输入和输出之间加上一个恒等映射(identity mapping),即 y = F ( x , W i ) + x . \mathbf y = \mathcal F(\mathbf x, {W_i}) + \mathbf x. y=F(x,Wi)+x.,其中 y \mathbf y y 是输出, x \mathbf x x 是输入, F \mathcal F F 是残差函数, W i W_i Wi 是权重。这样做的好处是可以增加网络的深度和性能,而不影响网络的收敛速度和稳定性。
3.3. 网络体系结构
我们已经测试了各种普通/残差网,并观察到一致的现象。为了提供讨论的实例,我们如下描述 ImageNet 的两个模型。
plain network指的就是 简单堆叠层的网络。
普通网络 plain network
我们的普通基线(图3,中间)主要受到 VGG 网原理的启发[41] (图3,左)。卷积层大多具有 3×3 滤波器,并遵循两个简单的设计规则:
(i) 对于 相同的输出特征图大小,各层具有 相同数量的滤波器;
(ii) 如果 特征图大小减半,则 滤波器的数量增加一倍,以保持每层的时间复杂度。
我们通过步长为2的卷积层直接执行下采样。网络以一个全局平均池化层和一个带有 softmax 的1000路全连接层结束。图3(中)加权层总数为34层。
值得注意的是,我们的模型比 VGG 网络具有更少的过滤器和更低的复杂性[41] (图3,左)。我们的34层基线有36亿 FLOPs(乘加),仅为 VGG-19(196亿FLOPs)的18%。

残差网络 residual network
在上述普通网络的基础上,我们插入快捷连接(图3,右),将网络转换为对应的 残差版本。当输入和输出维度相同时(图3中的实线快捷方式),可以直接使用标识快捷方式(Eqn.(1))。当维度增加时(图3中的虚线快捷方式),我们考虑两种选择:
- (A)快捷方式仍然执行标识映射,增加维度时填充额外的零项。这个选项不引入额外的参数;
- (B) Eqn.(2)中的投影快捷方式用于匹配维度(通过1×1卷积完成)。
对于这两个选项,当快捷键跨越两个大小的特征映射时,它们的步幅为2。
3.4. 实施
我们对 ImageNet 的实现遵循[21,41]中的实践。在[256,480]中随机采样图像的短边以进行缩放[41]。
从图像或其水平翻转中随机采样 224×224 裁剪,并减去每像素平均值[21]。使用[21]中的标准颜色增强。
我们在每次卷积之后和激活之前采用批归一化(BN)[16]。
我们像[13]中那样初始化权重,并从头开始训练所有的 plain/residual 网络。我们使用 SGD 的小批量大小为256。
学习率从0.1开始,当误差趋于平稳时除以10,模型的训练次数可达 60 × 104 次。我们使用0.0001的权重衰减和0.9的动量。遵循文献[16]的做法,我们没有使用 dropout[14]。
在测试中,我们采用标准的10种作物测试进行比较研究[21]。为了获得最佳结果,我们采用了[41,13]中的全卷积形式,并在多个尺度上平均得分(图像被调整大小,使较短的一面在{224,256,384,480,640}中)。
在这一段中,他们基本上详细介绍了所有训练过程和他们使用的所有技巧。(这解释得很好,这太酷了,这个段落有 20 行,顺便说了使用的 50个其他论文的技巧)。你需要做所有的技巧才能真正达到最高准确度,但事后看来,这不是技巧帮助他们,实际上是他们的想法。
4. 实验
4.1. ImageNet分类
我们在包含1000个类的 ImageNet 2012分类数据集[36]上评估我们的方法。模型在128万张训练图像上进行训练,并在5万张验证图像上进行评估。我们还获得了由测试服务器报告的100k测试映像的最终结果。
我们评估前1和前5的错误率。
普通的网络 plain network
plain network指的就是 简单堆叠层的网络。
我们首先评估了18层和34层的普通网。34层平面网如图3(中)所示。18层的平面网也是类似的形式。请参见表1了解详细的体系结构。

ImageNet 的架构。方括号中显示了构建块(参见图5),并显示了堆叠块的数量。下采样由 conv3_1、conv4_1和 conv5_1进行,步长为2。
表2的结果表明,较深的34层平原网比较浅的18层平原网具有更高的验证误差。为了揭示原因,在图4(左)中,我们比较了它们在训练过程中的训练/验证误差。我们已经观察到退化问题:尽管18层平面网络的解空间是34层平面网络解空间的子空间,但34层平面网络在整个训练过程中的训练误差更高。
我们认为这种 优化困难不太可能是由梯度消失引起的。这些普通网络使用 B N BN BN [16]进行训练,这 确保了前向传播的信号具有非零方差。我们还验证了反向传播梯度与 B N BN BN 表现出健康范数。所以向前和向后的信号都不会消失。
事实上,34层的普通网络仍然能够达到有竞争力的准确率(表3),表明求解器在一定程度上是有效的。我们推测,深层普通网络可能有指数低的收敛速率,这影响了训练误差的减少。造成这种优化困难的原因将在未来进行研究。
残差网络 residual network
接下来我们评估18层和34层残余网(ResNets)。基线架构与上面的普通网络相同,除了向每对3×3过滤器添加一个快捷连接外,如图3(右)所示。在第一个比较中(表2和图4右),我们对所有快捷键使用标识映射,对增加维度使用零填充(选项A)。因此,与普通对应项相比,它们没有额外的参数。
我们从表2和图4中得到了三个主要观察结果。首先,残差学习的情况正好相反——34层的 ResNet 比18层的 ResNet 好2.8%。更重要的是,34层的 ResNet 显示出相当低的训练误差,并且可以推广到验证数据。这表明在这种情况下,退化问题得到了很好的解决,我们设法从增加的深度中获得精度增益。
其次,与普通的同类相比,34层的 ResNet 将top-1的误差减少了3.5%(表2),这是由于成功地减少了训练误差(图4右vs左)。这一对比验证了残差学习在极深度系统上的有效性。

最后,我们还注意到,18层的普通/残余网络相对准确(表2),但18层的 ResNet 收敛得更快(图4右vs左)。当网络“不太深”(这里是18层)时,当前的 SGD 求解器仍然能够找到普通网络的良好解。在这种情况下,ResNet 通过在早期阶段提供更快的收敛速度来简化优化。

恒等vs.快捷连接
我们已经证明了无参数、恒等快捷方式有助于训练。接下来我们研究投影捷径(Eqn.(2))。在表3中,我们比较了三种选项:
(A) 零填充快捷方式用于增加维度,并且所有快捷方式都是无参数的(与表2和图4右相同);
(B) 投影快捷键用于增加维数,其他快捷键为恒等;
(C) 所有的捷径都是投影。

表3显示这三个选项都比普通选项好得多。B略好于A,我们认为这是因为A中的零填充维度确实没有残差学习。C略好于B,我们将其归因于许多(13个)投影捷径引入的额外参数。但 A/B/C之间的微小差异表明,投影捷径对于解决退化问题并非必不可少。因此,我们在本文的其余部分 不使用选项C,以减少内存/时间复杂性和模型大小。恒等快捷方式对于避免增加下面介绍的瓶颈体系结构的复杂性尤为重要。

更深的瓶颈架构
接下来我们描述 ImageNet 的更深网络。由于考虑到我们所能负担的培训时间,我们将构建块修改为 瓶颈设计。对于每个残差函数 F \mathcal F F,我们使用3层而不是2层的堆栈(图5)。这三层是 1×1, 3×3 和 1×1 卷积,其中 1×1 层负责减少然后增加(恢复)维度,使 3×3 层成为输入/输出维度较小的瓶颈。 图5给出了一个例子,其中两种设计具有相似的时间复杂度。

ImageNet 的更深的残差函数 F \mathcal F F。左:ResNet34的构建块(在56×56特征映射上),如图3所示。右:ResNet-50/101/152的“瓶颈”构建块。
无参数恒等快捷方式对于瓶颈体系结构尤其重要。如果将图5(右)中的恒等快捷方式替换为投影,可以看出,由于快捷方式连接到两个高维端点,时间复杂度和模型尺寸都增加了一倍。因此,恒等快捷为瓶颈设计提供了更有效的模型。
50层 ResNet:我们用这个3层瓶颈块替换34层网络中的每个2层块,从而得到一个50层 ResNet(表1)。我们使用选项B来增加维度。这个模型有38亿次浮点运算。
101层和152层ResNet:我们通过使用更多的3层块来构建101层和152层ResNet(表1)。值得注意的是,虽然深度显著增加,但152层ResNet(113亿FLOPs)仍然比VGG-16/19网络(153 / 196亿FLOPs)具有更低的复杂性。
50/101/152层的resnet比34层的resnet更准确(表3和4)。我们没有观察到退化问题,因此从相当大的深度中获得了显着的精度增益。深度的好处体现在所有评估指标上(表3和表4)。
与 SOTA 比较
与最先进方法的比较。在表4中,我们与之前的最佳单模型结果进行了比较。
我们的基准34层 ResNets 已经达到了非常有竞争力的精度。我们的152层 ResNet 的单模型前5验证误差为4.49%。这个单一模型的结果优于之前所有的集成结果(表5)。
我们 将六个不同深度的模型组合成一个集成 (在提交时只有两个152层的模型)。这导致测试集的top-5误差为3.57%(表5)。该作品在2015年 ILSVRC 上获得了第一名。

4.2. CIFAR-10和分析
我们对CIFAR-10数据集[20]进行了更多的研究,该数据集由10个类的50k训练图像和10k测试图像组成。我们提出了在训练集上进行训练并在测试集上进行评估的实验。我们的 重点是极深网络的行为,而不是推动最先进的结果,所以我们 有意使用简单的架构 如下。
普通/残差架构遵循图3(中/右)中的形式。网络输入是32×32图像,每像素的平均值被减去。第一层是3×3卷积。然后我们使用一个6n层的堆栈,分别对大小为{32,16,8}的特征映射进行3×3卷积,每个特征映射大小为2n层。过滤器的个数分别为{16、32、64}。子采样是通过步长为2的卷积来完成的。网络以全局平均池、10路全连接层和softmax结束。总共有6n+2个堆叠的加权层。下表总结了该架构:

当使用快捷方式连接时,它们连接到3×3层对(总共3n个快捷方式)。在这个数据集上,我们在所有情况下都使用恒等快捷方式(即选项A),因此我们的残差模型与普通模型具有完全相同的深度、宽度和参数数量。
我们使用0.0001的权重衰减和0.9的动量,并采用[13]和BN[16]中的权重初始化,但没有dropout。这些模型在两个gpu上以128的小批量大小进行训练。我们以0.1的学习率开始,在32k和48k迭代时将其除以10,并在64k迭代时终止训练,这是在45k/5k训练/val分割上确定的。我们按照[24]中的简单数据增强方法进行训练:每边填充4个像素,从填充的图像或其水平翻转中随机采样32×32裁剪。为了进行测试,我们只评估原始32×32图像的单个视图。
我们比较n ={3,5,7,9},得出20层、32层、44层和56层网络。图6(左)显示了平面网的性能。深平面网深度增加,深度越深,训练误差越大。这种现象与 ImageNet (图4,左)和 MNIST(见[42])上的情况类似,表明这种优化难度是一个基本问题。

图6。CIFAR-10上的训练。虚线表示训练错误,粗线表示测试错误。左:普通网络。plain-110错误大于60%。没有显示。中间:ResNets。右:110层和1202层的resnet。
图6(中)为 ResNets 的行为。同样类似于 ImageNet 案例(图4,右),我们的ResNets 设法克服了优化困难,并在深度增加时展示了精度的提高。
我们进一步探索n = 18,从而得到110层的ResNet。在这种情况下,我们发现0.1的初始学习率略大,无法开始收敛5。所以我们用0.01来预热训练,直到训练误差低于80%(大约400次迭代),然后再回到0.1继续训练。学习计划的其余部分和前面一样。这个110层的网络具有很好的收敛性(图6中)。它具有比其他深和薄更少的参数如FitNet[35]和Highway[42]等网络(表6),但其结果却是最先进的(6.43%,表6)。
层响应分析

CIFAR10上层响应的标准差(std)。响应是每个3×3层的输出,在BN之后和非线性之前。上图:图层按原始顺序显示。底部:响应按降序排列。
图7显示了各层响应的标准差(std)。响应是每个3×3层的输出,在BN之后和在其他非线性(ReLU/加法)之前。对于 ResNets,该分析揭示了残差函数的响应强度。
图7显示,ResNet 的响应通常比 plain 的响应小。这些结果支持我们的基本动机(第3.1节),即残差函数通常比非残差函数更接近于零。
我们还注意到更深的 ResNet 具有较小的响应幅度,如图7中 ResNet-20, 56和110的比较所证明。当有更多的层时,单个层的 ResNets 倾向于较少地修改信号。
探索超过1000层
我们探索了一个超过1000层的深度模型。我们设置 n = 200,得到一个1202层的网络,按照上面的描述进行训练。我们的方法没有优化难度,这个103层的网络能够实现训练误差<0.1%(图6,右)。它的测试误差仍然相当好(7.93%,表6)。
但在如此激进的深度模型上,仍存在有待解决的问题。这个1202层网络的测试结果比我们的110层网络的测试结果差,虽然两者都是有类似的训练误差。我们认为这是因为过度拟合。对于这个小数据集来说,1202层的网络可能太大了(19.4M)。采用 maxout[10]或 dropout[14]等强正则化方法在该数据集上获得最佳结果([10,25,24,35])。在本文中,我们没有使用 maxout/dropout,只是通过设计简单地通过深度和薄架构强加正则化,而不会分散对优化难点的关注。但结合更强的正则化可能会改善结果,我们将在未来研究。
何凯明大佬现场讲解 ResNet
- 何凯明现场讲解 ResNet:【AI Talking】CVPR2016 最佳论文, ResNet 现场演讲
大佬的 PPT
截了一些图,不得不说,大佬的答辩 PPT 做得也很棒,完全可以大创答辩的时候参考这个格式!







VGG 的设计经验:







提问:

大佬的回答:




相关文章:
ResNet 原论文及原作者讲解
ResNet 论文摘要1. 引入2. 相关工作残差表示快捷连接 3. 深度残差学习3.1. 残差学习3.2. 快捷恒等映射3.3. 网络体系结构普通网络 plain network残差网络 residual network 3.4. 实施 4. 实验4.1. ImageNet分类普通的网络 plain network残差网络 residual network恒等vs.快捷连…...
liteflow规则引擎 执行Groovy脚本
在LiteFlow规则引擎中执行Groovy脚本的步骤相对简单。首先,确保你的项目中包含了LiteFlow的相关依赖。接下来,创建一个Groovy脚本规则,并使用LiteFlow引擎执行它。 以下是一个简单的示例: 添加LiteFlow依赖:在你的项…...
GZ015 机器人系统集成应用技术样题5-学生赛
2023年全国职业院校技能大赛 高职组“机器人系统集成应用技术”赛项 竞赛任务书(学生赛) 样题5 选手须知: 本任务书共 24页,如出现任务书缺页、字迹不清等问题,请及时向裁判示意,并进行任务书的更换。参赛队…...
Spark编程实验二:RDD编程初级实践
目录 一、目的与要求 二、实验内容 三、实验步骤 1、pyspark交互式编程 2、编写独立应用程序实现数据去重 3、编写独立应用程序实现求平均值问题 4、三个综合实例 四、结果分析与实验体会 一、目的与要求 1、熟悉Spark的RDD基本操作及键值对操作; 2、熟悉使…...
CleanMyMac X这一款mac电脑清理垃圾文件软件好用吗?
CleanMyMac X您的 Mac。极速如新。点按一下,即可优化调整整个 Mac畅享智能扫描 — 这款超级简单的工具用于优化您的 Mac。只需点按一下,即可运行所有任务,让您的 Mac 保持干净、快速并得到最佳防护。CleanMyMac 是一款功能强大的 Mac 清理程序…...
四通道 DMOS 全桥驱动MS35631N/MS35631
MS35631N/MS35631 是一款四通道 DMOS 全桥驱动器,可以驱动两 个步进电机或者四个直流电机。每个全桥的驱动电流在 24V 电源下可以 达到 1.2A 。 MS35631N/MS35631 集成了固定关断时间的 PWM 电流校正 器,以及一个 2bit 的非线性 DAC &…...
JWT令牌的作用和生成
JWT令牌(JSON Web Token)是一种用于身份验证和授权的安全令牌。它由三部分组成:头部、载荷和签名。 JWT令牌的作用如下: 身份验证:JWT令牌可以验证用户身份。当用户登录后,服务器会生成一个JWT令牌并返回…...
elementui el-pagination分页组件查询的时候当前页不更新
elementui el-pagination分页组件查询的时候当前页不更新 <mypagination v-if"pageshow" :currentPage.sync"pageNum" :pagesize"pageSize" :pagetotal"pageTotal" pagefunc"pageFunc"></mypagination>1.在加的…...
C++——C++11(1)
时至今日,C标准已经到了C23,但是你要说哪一次提出的标准最经 典,那C11一定会被人提及,C11带来了数量可观的变化,其中包 含了约140个新特性,以及对C03标准中约600个缺陷的修正,这使得 C11更像是从…...
CoPilot究竟如何使用?
基本步骤说明 CoPilot是一款由GitHub开发的人工智能代码助手,可以提供实时代码建议和自动完成功能。下面是使用CoPilot的详细介绍: 安装:首先,你需要在你的代码编辑器中安装CoPilot插件。目前,CoPilot支持一些主流的代…...
前端(三)
1.表格标签 数据展示: jason 123 read egon 123 dbj tank 123 hecha ... <table> <thead><tr> 一个tr就表示一行<th>username</th> 加粗文本<td>username</td> 正常文本</tr></thead> 表头(字段信息)<tbody>…...
Maven知识
文章目录 一、概念1、官方文档2、什么是Maven? 二、相关知识1、Maven生命周期1.1、clean1.2、default1.3、site 2、Pom文件3、Pom常用元素3.1、项目基本元素3.2、<properties\></properties\>3.3、pom继承相关3.4、依赖管理相关3.5、构建管理相关3.6、&…...
美颜SDK是什么?视频美颜SDK在直播平台中的集成与接入教程详解
当下,主播们追求更加自然、精致的外观,而观众也期待在屏幕前欣赏到更为清晰、美丽的画面。为了满足这一需求,美颜SDK应运而生,成为直播平台的重要利器之一。 一、什么是美颜SDK? 通过美颜SDK,开发者可以…...
CSS基础面试题
介绍一下标准css盒子模型与低版本IE的盒子模型? 标准盒子模型:宽度内容的宽度(content) border padding margin 低版本IE盒子模型:宽度内容宽度(contentborderpadding) margin box-sizing 属性…...
L1-028 判断素数
本题的目标很简单,就是判断一个给定的正整数是否素数。 输入格式: 输入在第一行给出一个正整数N(≤ 10),随后N行,每行给出一个小于231的需要判断的正整数。 输出格式: 对每个需要判断的正整数&a…...
Scala多线程爬虫程序的数据可视化与分析实践
一、Scala简介 Scala是一种多种类型的编程语言,结合了针对对象编程和函数式编程的功能。它运行在Java虚拟机上,具有强大的运算能力和丰富的库支持。Scala常用于大数据处理、并发编程和Web应用程序开发。其灵活性和高效性编程成为编写多线程爬虫程序的理…...
YOLOv8加入顶会ICLR2022MobileViT模块
一、原文引入介绍 MOBILEVIT:轻量级、通用型且移动友好的视觉Transformer 论文地址:https://arxiv.org/pdf/2110.02178.pdf MOBILEVIT: LIGHT-WEIGHT, GENERAL-PURPOSE,AND MOBILE-FRIENDLY VISION TRANSFORMER MobileViT是由苹果公司发表在ICLR2022顶会上的一篇文章,这篇文…...
「数据结构」二叉树1
🎇个人主页:Ice_Sugar_7 🎇所属专栏:C启航 🎇欢迎点赞收藏加关注哦! 文章目录 🍉树🍉二叉树🍌特殊二叉树🍌二叉树的性质🍌存储结构 🍉…...
栈(C语言版)
一.栈的概念及结构 栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。 进行数据插入和删除操作的一端 称为栈顶,另一端称为栈底。 栈中的数据元素遵守 后进先出 LIFO ( Last In First Out )的原则。…...
聊聊reactor-logback的AsyncAppender
序 本文主要研究一下reactor-logback的AsyncAppender AsyncAppender reactor-logback/src/main/java/reactor/logback/AsyncAppender.java public class AsyncAppender extends ContextAwareBaseimplements Appender<ILoggingEvent>, AppenderAttachable<ILogging…...
深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录
ASP.NET Core 是一个跨平台的开源框架,用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录,以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...
使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...
React hook之useRef
React useRef 详解 useRef 是 React 提供的一个 Hook,用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途,下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
有限自动机到正规文法转换器v1.0
1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...
docker 部署发现spring.profiles.active 问题
报错: org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
深入浅出Diffusion模型:从原理到实践的全方位教程
I. 引言:生成式AI的黎明 – Diffusion模型是什么? 近年来,生成式人工智能(Generative AI)领域取得了爆炸性的进展,模型能够根据简单的文本提示创作出逼真的图像、连贯的文本,乃至更多令人惊叹的…...
