5.10.10 用于图像识别的深度残差学习

news2024/12/23 15:32:46

1. 介绍

深度卷积神经网络为图像分类带来了一系列突破。深度网络自然地以端到端的多层方式集成低/中/高级特征和分类器,并且特征的“级别”可以通过堆叠层的数量(深度)来丰富。

学习更好的网络是否像堆叠更多层一样容易?

这个问题的一个障碍是臭名昭著的梯度消失/爆炸问题,它从一开始就阻碍了收敛。然而,这个问题已在很大程度上通过归一化初始化中间归一化层 得到解决,这些归一化层使具有数十层的网络能够开始收敛于具有反向传播的随机梯度下降(SGD)。

当更深的网络能够开始收敛时,退化问题就暴露出来了:随着网络深度的增加,准确性变得饱和,然后迅速退化。这种退化并不是由过度拟合引起的,并且向适当深度的模型添加更多层会导致更高的训练误差。

“更深的网络能够开始收敛”是指在构建深度神经网络时,随着网络层数的增加,模型在训练过程中能够逐渐达到一个稳定的状态,即模型的参数不再发生大幅度的变化,并且模型的性能(如准确率、损失函数值等)也逐渐趋于稳定或达到最优。

“饱和”指的是随着网络深度的增加,模型的准确度达到一个特定的水平后就不再显著提升了

(训练准确性)的下降表明并非所有系统都同样容易优化。存在一种通过构建更深层次模型的解决方案:添加的层是恒等映射,其他层是从学习的较浅层模型中复制的。更深的模型不应比其更浅的对应模型产生更高的训练误差。

 \mathcal{F}(\mathbf{x})+\mathbf{x} 可以通过具有“快捷连接”的前馈神经网络来实现。快捷连接是那些跳过一层或多层的连接。快捷连接只是执行恒等映射,并且它们的输出被添加到堆叠层的输出中。这样的操作既不会增加额外的参数,也不会增加计算复杂性。整个网络仍然可以通过 SGD 通过反向传播进行端到端训练,并且可以使用通用库轻松实现。

1、我们的极深残差网络很容易优化,但是当深度增加时,对应的“普通”网络(简单地堆叠层)表现出更高的训练误差;

2、深度残差网络可以轻松地从大大增加的深度中获得精度增益,产生比以前的网络更好的结果。

在 ImageNet 分类数据集上,我们通过极深的残差网络获得了出色的结果。我们的 152 层残差网络是 ImageNet 上有史以来最深的网络,同时仍然比 VGG 网络 具有更低的复杂性。

2. 相关工作

残差表示

在图像识别中,VLAD 是通过残差向量相对于字典进行编码的表示,Fisher Vector 可以表示为 VLAD 的概率版本 。它们都是用于图像检索和分类的强大浅层表示。对于矢量量化,编码残差矢量被证明比编码原始矢量更有效。

在VLAD中,一个图像被分割成多个局部区域,每个区域都描述为一个特征向量。然后,这些特征向量与预定义的字典(也称为聚类中心)进行比较,并计算每个特征向量与最近字典项之间的残差。

训练多层感知器(MLP)的早期实践是添加一个从网络输入连接到输出的线性层。之前曾提出,一些中间层直接连接到辅助分类器以解决梯度消失/爆炸问题。 还提出了通过快捷连接实现的居中层响应、梯度和传播误差的方法。“初始”层由一个快捷分支和一些更深的分支组成。

3. 深度残差学习

3.1 残差学习

\mathcal{H}(\mathbf{x})视为由几个堆叠层(不一定是整个网络)拟合的底层映射,其中 x 表示第一层的输入。如果假设多个非线性层可以渐近逼近复杂函数,那么就相当于假设它们可以渐近逼近残差函数,即

\mathcal{H}(\mathbf{x})-\mathbf{x}(假设输入和输出具有相同的维度)。因此,我们不是期望堆叠层逼近\mathcal{H}(\mathbf{x}),而是明确让这些层逼近残差函数\mathcal{F}(\mathbf{x}):=\mathcal{H}(\mathbf{x})-\mathbf{x}。原函数也就变为\mathcal{F}(\mathbf{x})+\mathbf{x}

退化问题表明求解器在通过多个非线性层逼近恒等映射时可能会遇到困难。通过残差学习重构,如果恒等映射是最优的,则求解器可以简单地将多个非线性层的权重驱动至零以接近恒等映射。

这里的“权重驱动”指的是在训练过程中,通过优化算法(如梯度下降或其变种)调整网络的权重值,使得网络的输出接近于恒等映射的输出。 

3.2 通过快捷连接进行恒等映射

我们对每隔几个堆叠层采用残差学习。

\mathbf{y}=\mathcal{F}(\mathbf{x},\{W_i\})+\mathbf{x},x 和 y 是所考虑层的输入和输出向量。

函数\mathcal{F}=W_{2}\sigma(W_{1}\mathbf{x})表示要学习的残差映射。其中\sigma表示 ReLU,为了简化符号,省略了偏差。\mathcal{F}+\mathbf{x}通过快捷连接和逐元素加法来执行。

我们可以通过快捷连接执行线性投影 Ws 以匹配尺寸:\mathbf{y}=\mathcal{F}(\mathbf{x},\{W_{i}\})+W_{s}\mathbf{x}

函数\mathcal{F}(\mathbf{x},\{W_{i}\})可以表示多个卷积层。逐元素相加是在两个特征图上逐个通道执行的。

3.3 网络架构

普通网络

卷积层大多具有3*3卷积核,并遵循两个简单的设计规则:

①对于相同的输出特征图大小,每层具有相同数量的卷积核;

②如果特征图大小减半,卷积核的数量加倍,从而保持每层的时间复杂度。

通过步长为 2 的卷积层执行下采样。网络以全局平均池化层和带有 softmax 的 1000 路全连接层结束。

残差网络

插入快捷连接,将网络变成其对应的残差版本。当输入和输出具有相同维度时,可以直接使用恒等快捷方式。当维度增加时,我们考虑两种选择:(A)快捷方式仍然执行恒等映射,并填充额外的零条目以增加维度。该选项不引入额外的参数; (B) 方程 (2) 中的投影快捷方式用于匹配维度(通过 1×1 卷积完成)。对于这两个选项,当快捷方式穿过两种尺寸的特征图时,它们的步幅为 2。

3.4 实验执行

图像的大小被调整,其短边在 [256, 480] 中随机采样,以进行尺度增强。从图像或其水平翻转中随机采样 224×224 裁剪,并减去每个像素的平均值,使用标准颜色增强。在每次卷积之后和激活之前采用批量归一化。

之后,初始化权重,使用小批量大小为256的SGD(随机梯度下降)。学习率从0.1开始,当误差达到稳定水平时除以10,模型的迭代次数最多为60*104。使用 0.0001 的权重衰减和 0.9 的动量。

4. 实验

4.1 ImageNet 分类

在包含 1000 个类的 ImageNet 2012 分类数据集上评估我们的方法。这些模型在 128 万张训练图像上进行训练,并在 5 万张验证图像上进行评估。

与普通网络相比,残差网络没有额外的参数。

ImageNet架构 

虽然18-layers网络的解空间是34-layers网络解空间的子集。但是34-layers具有更高的训练误差。 

普通网络使用 BN 进行训练,确保前向传播的信号具有非零方差。前向或后向信号都不会消失。事实上,34 层普通网络仍然能够达到有竞争力的精度。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RK3568平台开发系列讲解(SPI篇)SPI数据的传输

🚀返回专栏总目录 文章目录 一、数据结构1.1、spi_transfer 结构体1.2、spi_message二、数据发送程序分析沉淀、分享、成长,让自己和他人都能有所收获!😄 📢 参考资料: spi_transferspi_message一、数据结构 spi 数据传输主要使用了 spi_message 和 spi_transfer 结构…

【计网】TCP中的滑动窗口

🍎个人博客:个人主页 🏆个人专栏:日常聊聊 ⛳️ 功不唐捐,玉汝于成 目录 正文 工作原理如下: 结语 我的其他博客 正文 TCP(传输控制协议)中的滑动窗口是一种用于流量控制和拥…

数字集成电路物理设计[陈春章]——知识总结与精炼01

第一章 集成电路物理设计方法 1.1 数字集成电路设计挑战 1.2 数字集成电路设计流程 前两节内容讲述的是数字集成电路发展与流程,知识体系比较宏观和简单,请读者自行了解即可。 1.3 数字集成电路设计收敛 实现设计收敛任务:①数据系统;②优…

SQL——SERVER的建表主要操作

目录 一:数据存储问题 1.表的相关数据 2.表,字段,记录 二:建表 1.创建表头 2. 数据类型 3.保存数据 4.数据冗余 5.使用命令重置表 7.设置主键 一:数据存储问题 1.表的相关数据 表是数据库的基本单位&…

FreeRTOS学习 -- 列表和列表项

列表和列表项是 FreeRTOS 的一个数据结构,FreeRTOS 大量使用到了列表和列表项。 一、什么是列表和列表项 1、列表 列表是 FreeRTOS 中的一个数据结构,被用来跟踪 FreeRTOS 中的任务。与列表相关的全部东西都在文件 list.c 和 list.h中。 List_t 结构体…

web入门——导航栏

本专栏内容代码来自《响应式web&#xff08;HTML5CSS3Bootstrap&#xff09;》教材。 导航栏 实现代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content&…

【JavaEE】Spring Web MVC入门:掌握Spring的MVC框架基础

目录 Spring Web MVC什么是Spring Web MVCMVC 定义什么是Spring MVC 学习Spring MVC1. 项目准备2. 建立连接 Spring Web MVC 什么是Spring Web MVC 官⽅对于 Spring MVC 的描述是这样的&#xff1a; Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架&#xff0c;从⼀…

2024年小学生古诗文大会备考:吃透历年真题和知识点(持续)

根据往年的安排&#xff0c;2024年小学生古诗文大会预计这个月就将启动。该如何备考2024年小学生古诗文大会呢&#xff1f;根据往期的经验&#xff0c;只要吃透这些真题和背后的知识点&#xff0c;通过上海小学生古诗文大会的初选&#xff08;初赛&#xff09;一点问题都没有。…

【并发程序设计】4. exec函数族

4.exec函数族 exec函数族是一组用于在进程中启动另一个程序来替换当前进程的函数。 exec函数族主要用于在当前进程内部执行一个新的程序&#xff0c;而不会创建新的进程。 子进程调用exec函数&#xff0c;族父进程不受影响。进程当前内容被指定的程序替换&#xff0c;但进程…

【MySQL】Mysql——卸载文档(windows版本)

MySQL卸载文档-Windows版 1. 停止MySQL服务 winR 打开运行&#xff0c;输入 services.msc 点击 “确定” 调出系统服务。 停止Mysql服务 2. 卸载MySQL相关组件 打开控制面板 —> 卸载程序 —> 卸载MySQL相关所有组件 3. 删除MySQL安装目录 4. 删除MySQL数据目录 数…

代码随想录算法训练营第二十八天 | 216.组合总和III 、17.电话号码的字母组合

216.组合总和III 题目链接/文章讲解&#xff1a; 代码随想录 视频讲解&#xff1a;和组合问题有啥区别&#xff1f;回溯算法如何剪枝&#xff1f;| LeetCode&#xff1a;216.组合总和III_哔哩哔哩_bilibili 解题思路 整体的思路和77题是一样的&#xff0c;这里只是多加了个一个…

记录一期Typecho WebShell木马渗透的经历

我创建了一个Typecho的轻量博客,之前一直是本地运行,最近才上了公网,平时自己也是粗心大意,把密码也写在第一篇博文里面 有一天,我突发奇想的想要提交更新,本博客是通过git进行代码版本管理的避免自己修改官方源码出现了问题,无法还原,也定时备份SQL, 然后莫名其妙的发现多了…

苍穹外卖-day01(SpringBoot+SSM的企业级Java项目实战)

苍穹外卖-day01 课程内容 软件开发整体介绍 苍穹外卖项目介绍 开发环境搭建 导入接口文档 Swagger 项目整体效果展示&#xff1a; 管理端-外卖商家使用 用户端-点餐用户使用 当我们完成该项目的学习&#xff0c;可以培养以下能力&#xff1a; 1. 软件开发整体介绍 作为…

LeetCode题练习与总结:不同的二叉搜索树--96

一、题目描述 给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的二叉搜索树的种数。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;5示例 2&#xff1a; 输入&#xff1a;n 1 输出&…

tensorflow实现二分类

# 导入所需库和模块 from tensorflow.keras.layers import Dense, Input, Activation # 导入神经网络层和激活函数模块 from tensorflow.keras.models import Sequential # 导入Keras的Sequential模型 import pandas as pd # 导入Pandas库用于数据处理 import numpy as np …

深度学习设计模式之简单工厂模式

文章目录 前言一、简单工厂设计模式的作用&#xff1f;二、详细分析1.核心组成2.实现步骤3.示例代码4.优缺点优点缺点 5.使用场景 总结 前言 本文主要学习简单工厂设计模式&#xff0c;这个设计模式主要是将创建复杂对象的操作单独放到一个类中&#xff0c;这个类就是工厂类&a…

20【Aseprite 作图】画岩石

1 画一个岩石的框架,不是一个正规的圆,可以把最高点不放在中心,会显得自然 2 用油漆桶填满框架 3 要改变岩石的颜色,可以调整HSV里面的S,降低饱和度 4 描边,和地面连接处可以不描边 5 颜色调得更浅一点,(通过HSV里面的S可以做到),作为亮处的轮廓; 通过把透明度调…

【LAMMPS学习】八、基础知识(6.6)在 Windows 10 上使用 LAMMPS 和 WSL

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语&#xff0c;以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

uniapp 微信小程序使用ec-canvas图表

微信小程序中使用到了ec-canvas图表&#xff0c;从DCloud插件市场中下载echarts-for-wx&#xff1b; 在uniapp项目中找到js-sdk文件夹&#xff0c;把其中的uni-ec-canvas放到要用的包的components中。 在文件中导入&#xff1a; 饼图&#xff1a; <template><view…

嵌入式学习——Shell(流指针、文件读写函数)——day20

1. 标准IO和文件IO的区别 1. 标准IO是一种有缓存的IO形式&#xff08;接收了一部分内容后给到linux内核中&#xff09; 2. 文件IO是一种没有缓存的IO形式&#xff08;即刻交给linux内核&#xff0c;及时性&#xff09; 3. 标准IO是库函数,库函数可以在Windows和Linux系统中都能…