Deep Residual Learning for Image Recognition--论文笔记

论文笔记

论文来源:

Deep Residual Learning for Image Recognition

代码来源

还没上传

1论文摘要的翻译

深度神经网络更难训练。我们提出了一个残差学习框架,以简化比以前使用的网络深度大得多的网络的训练。我们明确地将层重新表述为参考层输入的学习残差函数,而不是学习未参考的函数。我们提供了全面的经验证据,表明这些残差网络更容易优化,并且可以从相当大的深度中获得精度。在ImageNet数据集上,我们评估了深度高达152层的残差网络——比VGG网络深度8倍[41],但仍然具有较低的复杂性。这些残差网络的集合在ImageNet测试集上的误差达到3.57%。该结果在ILSVRC 2015分类任务中获得第一名。我们还介绍了100层和1000层的CIFAR-10分析

表征的深度对于许多视觉识别任务至关重要。仅由于我们的极深表示,我们在COCO对象检测数据集上获得了28%的相对改进。深度残差网络是我们参加ILSVRC & COCO 2015竞赛的基础1,我们还在ImageNet检测、ImageNet定位、COCO检测和COCO分割的任务中获得了第一名

背景

问题

  • 学习更好的网络就像堆叠更多的层一样简单吗
    == 这个问题已经通过规范化初始化和中间规范化层得到了很大程度的解决,这使得具有数十层的网络能够开始收敛随机梯度下降(SGD)与反向传播。==
  • 当更深的网络能够开始收敛时,一个退化问题就暴露出来了:随着网络深度的增加,精度趋于饱和(这可能不足为奇),然后迅速退化。适当深度的模型上增加更多的层会导致更高的训练误差,如下图所示
    在这里插入图片描述

这里提出一个网络架构优化的思路
当我们考虑一个较浅的体系结构,它在上面添加了更多的层。通过构造更深的模型存在一个解决方案:添加的层是身份映射,其他层是从学习的较浅模型复制的。这种构造解的存在表明,较深的模型不会比较浅的模型产生更高的训练误差。

2论文的创新点

  • 提出了一个残差学习框架 来解决退化问题,同时比以前使用的网络深度大得多 而训练更方便。

3 论文方法的概述

映射方法

形式上,我们将期望的底层映射表示为H(x),我们让堆叠的非线性层适合F(x)的另一个映射:= H(x) - x。原始映射被重新转换为F(x)+x。我们假设优化残差映射比优化原始的、未引用的映射更容易。在极端情况下,如果一个恒等映射是最优的,将残差推至零要比用一堆非线性层拟合一个恒等映射容易得多。

shortcut connections

短路连接是那些跳过一个或多个层的连接
在这里插入图片描述

3.1残差学习

让我们把H(x)看作是由几个堆叠层(不一定是整个网络)拟合的结果,其中x表示这些层的第一层的输入。如果假设多个非线性层可以渐近逼近复杂函数s,则等价于假设它们可以渐近逼近残差函数,即H(x)−x(假设输入和输出具有相同的维数)。因此,我们不是期望堆叠层近似于H(x),而是明确地让这些层近似于残差函数F(x):= H(x) - x。因此,原始函数变为F(x)+x。尽管这两种形式都应该能够渐进地逼近所需的函数(如假设的那样),但学习的难易程度可能有所不同。

3.2 通过Shortcut 来进行身份映射

  • 我们对选取的堆叠层采用残差学习,公式如下
    y = F ( x , W i ) + x y = F(x, {W_i}) + x y=F(x,Wi)+x ,如下图所示。
    在这里插入图片描述
    如果 x x x维度与 F F F维度不同则采用线性投影 W W W来匹配维度 y = F ( x , W i ) + W s x y = F(x, {W_i}) + W_sx y=F(xWi)+Wsx

  • 残差函数F的形式是灵活的。本文中的实验涉及到一个函数F,它有两层或三层(图5),而更多的层是可能的。下图对比了残差块两层,三层的情况
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/8c74e4536a264cc7ab27a4082f9ea7ca.pn

3.3网络架构

  • Plain Network :
    我们的plain baseline(中间)主要受到VGG网原理的启发(左)。卷积层大多具有3×3滤波器,并遵循两个简单的设计规则:(i)对于相同的输出特征图大小,各层具有相同数量的滤波器;(ii)如果特征图大小减半,则滤波器的数量增加一倍,以保持每层的时间复杂度。我们通过步长为2的卷积层直接执行下采样。网络以一个全局平均池化层和一个带有softmax的1000路全连接层结束。图3(中)加权层总数为34层。
  • Residual Network
    在上述Plain Network的基础上,我们插入shortcut connections(右),将网络转换为对应的残差版本。
    • 当输入和输出维度相同时,可以直接使用标识快捷方式。
    • 当维度增加时(图中的虚线快捷方式),我们考虑两种选择:
      • 快捷方式仍然执行标识映射,增加维度时填充额外的零项。这个选项不引入额外的参数;
      • 中的投影快捷方式用于匹配维度(通过1×1卷积完成)。
    • 对于这两个选项,当快捷键跨越两个大小的特征映射时,它们的步幅为2。

在这里插入图片描述

3.4 实现

  • 数据集
    • 图像在[256,480]中随机采样其较短的一面以进行缩放
    • 从图像或其水平翻转中随机采样224×224裁剪,并减去每像素平均值。
    • 使用标准颜色增强。
  • 每次卷积之后和激活之前采用批归一化(BN)。
  • 初始化权重,并从头开始训练所有的plain/residual网络。
  • SGD的小批量大小为256。学习率从0.1开始,当误差趋于平稳时除以10,模型的训练次数可达60 × 104次。
  • 使用0.0001的权重衰减和0.9的动量。不使用dropout。

在测试中,采用标准的10种作物测试进行比较研究,这里为了获得最佳结果,采用了[41,13]中的全卷积形式,并在多个尺度上平均得分(图像被调整大小,使较短的一面在{224,256,384,480,640}中)

4 论文实验

4.1 ImageNet Classification

  • 数据集:ImageNet 2012 classifi-
    cation dataset
    Plain Networks 我们首先评估了18层和34层的普通网。34层平面网如图3(中)所示。18层的平面网也是类似的形式。请参见下表了解详细的体系结构。
    Residual Networks 评估18层和34层残余网(ResNets)。基线架构与上面的普通网络相同,除了向每对3×3过滤器添加一个快捷连接外,如上图所示。在第一个比较中,我们对所有shortcut connection使用标识映射,对增加维度使用零填充(选项A)。因此,与普通对应项相比,它们没有额外的参数。
    在这里插入图片描述
    下表的结果表明,较深的34层plain net比较浅的18层plain net具有更高的验证误差。为了揭示原因,在下图中,我们比较了它们在训练过程中的训练/验证误差。而对于残差网络,首先,残差学习的情况正好相反——34层的ResNet比18层的ResNet好2.8%。更重要的是,34层的ResNet显示出相当低的训练误差,并且可以推广到验证数据。这表明在这种情况下,退化问题得到了很好的解决,我们设法从增加的深度中获得精度增益。
    在这里插入图片描述
    在这里插入图片描述

4.2

  • 数据集:CIFAR-10 dataset
    plain/residual architectures 和上面一致

我们比较n ={3,5,7,9},得出20层、32层、44层和56层网络。图6(左)显示了plain network的性能。深plain network增加,深度越深,训练误差越大。这种现象与ImageNet(上图4,左)和MNIST上的情况类似,表明这种优化难度是一个基本问题
在这里插入图片描述

5 总结

ResNet网络通过使用残差模块,解决了增加CNN深度引起的性能退化问题。通过构建更深的卷积神经网络,提取更高层次的特征,使其拥有更高的性能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/641646.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

十五、Python模块 1、(入门一定看!!!)「长期更新Python简单入门到适用」

首先什么是模块? 小伙伴们经常看我写的教程不难发现,前面我们用过几次模块就是sys的那个,其实python不仅标准库中包含了大量的模块(也被称之为准模块),还有大量的第三方模块,开发者也可以自己发…

Python学习---基于HTTP的服务端基础框架搭建案例

整体功能: 1 创建框架构建相关的文件夹 2 创建app,模块文件 3 在 app模块文件中创建application函数(用于处理请求) 4 将request_handler()中的处理逻辑交由app模块的application函数完成 5 app模块的 application函数返回响应报文 6 在application 文件夹中创建一个…

零基础HTML教程(34)--HTML综合实例

文章目录 1. 背景2. 开发流程2.1 网站功能设计2.2 建立网站目录结构2.3 开发首页2.2 生平简介页2.3 经典诗词页2.4 苏轼图集页2.5 留言板 3. 小结 1. 背景 通过前面33篇文章的学习,我们对HTML有了一个比较全面的了解。 本篇,我们编写一个网站实例&…

C++ RBTree封装mapset

目录 RBTreeNode的声明 RBTree结构 map结构 set结构 改造红黑树 迭代器类 迭代器成员函数 默认成员函数 Insert set map RBTreeNode的声明 template<class T> struct RBTreeNode {RBTreeNode<T>* _left;RBTreeNode<T>* _right;RBTreeNode<T>*…

心理咨询系统|心理咨询系统开发|心理咨询软件开发

在快节奏的现代生活中&#xff0c;心理健康问题越来越受到人们的关注。为了有效应对这些问题&#xff0c;心理咨询系统应运而生&#xff0c;它为人们提供了一个安全、便捷的平台&#xff0c;以寻求心理帮助和支持。本文将详细介绍心理咨询系统的功能、优势以及未来发展趋势。 …

vue项目实战 - 如果高效的实现防抖和节流

在Vue项目中&#xff0c;处理高频事件的优化至关重要&#xff0c;直接影响用户体验和应用性能。防抖&#xff08;Debounce&#xff09;和节流&#xff08;Throttle&#xff09;是两种常用且有效的方法&#xff0c;可以控制事件触发频率&#xff0c;减少不必要的资源消耗。如何在…

使用Word表格数据快速创建图表

实例需求&#xff1a;Word的表格如下所示&#xff0c;标题行有合并单元格。 现在需要根据上述表格数据&#xff0c;在Word中创建如下柱图。如果数据在Excel之中&#xff0c;那么创建这个图并不复杂&#xff0c;但是Word中就没用那么简单了&#xff0c;虽然Word中可以插入图表&a…

免费撸gpt-4o和各种大模型实用经验分享

项目 Github: https://github.com/MartialBE/one-api 先贴两张图&#xff1a; 说明 免费撸AI大模型,各位可以对照下面我给出的大模型记录表来填&#xff0c;key需要自己去拿&#xff0c;国内都需要手机号验证&#xff0c;如果你不介意。另外我在自己的博客放出免费API给大家…

自定义RedisTemplate序列化器

大纲 RedisSerializerFastJsonRedisSerializer自定义二进制序列化器总结代码 在《RedisTemplate保存二进制数据的方法》一文中&#xff0c;我们将Java对象通过《使用java.io库序列化Java对象》中介绍的方法转换为二进制数组&#xff0c;然后保存到Redis中。实际可以通过定制Red…

[emailprotected](2)核心概念-JSX

目录 1&#xff0c;什么是 jsx2&#xff0c;空标签3&#xff0c;通过大括号使用 js4&#xff0c;防止注入攻击5&#xff0c;元素的不可变性 官方文档 1&#xff0c;什么是 jsx Facebook 起草的 js 扩展语法。本质上是 js 对象&#xff0c;会被 babel 编译&#xff0c;最终转换…

根据多个坐标经纬度获取到中心点的经纬度,scala语言

文章目录 前言scala 代码 总结 前言 Scala 语言 通过多个经纬度坐标点, 计算出中心点, 这里使用的是 Scala 语言,其他的语言需要自行转换。求出来的并不是原有的点&#xff0c;而是原有点的中心位置的点。 scala 代码 package com.dw.process.midimport java.lang.Double.pa…

【test】Windows11下通过sshfs挂载远程服务器目录

下载安装下面三个软件&#xff1a; sshfs-win&#xff1a;https://github.com/billziss-gh/sshfs-win/releases winfsp&#xff1a;https://github.com/billziss-gh/winfsp/releases SSHFS-Win Manager&#xff1a;https://github.com/evsar3/sshfs-win-manager/releases 安装…

数据结构---优先级队列(堆)

博主主页: 码农派大星. 数据结构专栏:Java数据结构 关注博主带你了解更多数据结构知识 1. 优先级队列 1.1 概念 前面介绍过队列&#xff0c;队列是一种先进先出(FIFO)的数据结构&#xff0c;但有些情况下&#xff0c;操作的数据可能带有优先级&#xff0c;一般出队 列时&am…

python低阶基础100题(上册)

** python低阶基础100题&#xff08;上册&#xff09; ** 1. 请打印出字符串 Hello World print("Hello World")2. 请打印出字符串 爸爸妈妈&#xff0c;你们辛苦啦 print("爸爸妈妈&#xff0c;你们辛苦啦")3. 请打印出字符串 人生苦短&#xff0c;我…

如何使用Studio 3T导出MongoDB数据成excel?

导出MongoDB查询集合数据成excel 1. 新建查询页面&#xff0c;输入指定的查询语句&#xff0c;执行查询获取结果。 这里以查询集合accountbackLogger表中的reqTime字段日期是2024年5月的数据为列。 db.getCollection("accountbackLogger").find({reqTime:{$gte: IS…

UE4/UE5像素流送云推流:多人访问不稳定、画面糊、端口占用多等

UE4/UE5想要实现网页访问&#xff0c;很多工程师会选择guan方的像素流送。但这个技术要求在模型开发初期就接入。对于一些已有UE模型是无法进行流化的。虽然也可以解决新UE模型的网页访问问题&#xff0c;但在实际的应用中&#xff0c;点量云流也收到很多反馈说&#xff0c;使用…

LeetCode题练习与总结:从中序与后序遍历序列构造二叉树--106

一、题目描述 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入&#xff1a;inorder [9,3,15,20,7], postorder [9,15,7,20,3] 输出…

【百度云千帆AppBuilder】诗词达人:AI引领的诗词文化之旅

文章目录 写在前面&#xff1a;百度云千帆AppBuilder诗词达人&#xff1a;AI引领的诗词文化之旅功能介绍&#xff1a;诗词达人智能体的深度体验1. 诗词接龙学习2. 诗词深度解析3. 互动式问答4. 诗词创作辅助 技术特点详解&#xff1a;"诗词达人"智能体的创新技术零代…

【论文笔记】Layer-Wise Weight Decay for Deep Neural Networks

Abstract 本文为了提高深度神经网络的训练效率&#xff0c;提出了逐层权重衰减(layer-wise weight decay)。 本文方法通过逐层设置权重衰减稀疏的不同值&#xff0c;使反向传播梯度的尺度与权重衰减的尺度之比在整个网络中保持恒定。这种设置可以避免过拟合或欠拟合&#xff0…

胶原蛋白流失大揭秘:你的肌肤还年轻吗?

&#x1f343;当我们谈及胶原蛋白&#xff0c;不少女生眼中都会闪过一丝光芒。为什么呢&#xff1f;因为胶原蛋白是维持我们肌肤弹性、水润的秘密武器啊&#xff01;但是&#xff0c;随着岁月的流逝&#xff0c;你是否发现自己的肌肤开始变得松弛、无弹性&#xff0c;甚至出现了…