经典网络解读—IResNet

论文:Improved Residual Networks for Image and Video Recognition(2020.4)
作者:Ionut Cosmin Duta, Li Liu, Fan Zhu, Ling Shao
链接:https://arxiv.org/abs/2004.04989
代码:https://github.com/iduta/iresnet

文章目录

  • 1、算法概述
  • 2、前置知识-ResNet
  • 3、IResNet细节
    • 3.1 Improved information flow through the network
    • 3.2 Improved projection shortcut
    • 3.3 Grouped building block
  • 4、实验


1、算法概述

IResnet是对Resnet进行改进的算法,作者从三个部分进行优化改进:1、网络中的信息流;2、残差子模块设计;shortcut连接方式;作者通过在以上三部分做出改进,使得IResnet的准确性和学习收敛性方面显示出比较大的提升。具体来说,对于分类任务,同样模型复杂度下,超出Resnet-50 1.19%的top1准确率。对于Resnet网络,训练非常深的网络,例如400层或者500层,会出现严重的优化问题,但是作者提出的网络结构可以实现训练非常深的网络结构。最终,作者建立了404层的卷积神经网络用于训练ImageNet数据集,3002层卷积神经网络训练CIFAR-10和CIFAR-100。


2、前置知识-ResNet

Resnet由大量的残差模块(blocks)组成,它的核心就是在模块中加入恒等映射(the identity mapping)用来使得网络学习更加容易。恒等映射是通过使用shortcut/skip connection来实现的:将block的输入添加到其学习输出中。理论上,网络可以自己学习自身的映射,不需要这些捷径。然而,在实践中,优化器学习恒等映射并不容易。这被称为退化问题。Resnet论文实验指出,较深的网络甚至比较浅的网络精度反而更差,与理论上严重不符合,而这个原因就是网络的退化问题造成的。Resnet的提出缓解了部分网络退化问题,但没有完全解决;例如当Resnet深度从152增加到200时,ImageNet上分类结果变差,优化困难,这表明,当层数增加时,ResNet仍然会损害信息通过网络的传播。

在Resnet中,当前后block输入尺度不一致时,就会采用projection shortcut。可见projection shortcut在Resnet处理网络退化问题中没有充当重要角色。然而,作者认为projection shortcut在网络架构中扮演着重要的角色,因为它们存在于主要的信息传播路径上,因此很容易干扰信号或造成信息丢失。作者通过引入改进版本的projection shortcut,在不增加参数的情况下能带来非常大的提升。在原始Resnet中,瓶颈模块用来控制网络的参数量,模块中只有卷积负责学习空间特征,所以通道数量非常重要,通道数量越多,学习的特征越丰富,作者通过改进,通道可以扩大到原始版本的4倍。
所以,相对于原始ResNet,作者改进:
1、 提出一种基于stage的残差学习网络结构。所提出的方法通过为信息在网络层之间传播提供更好的路径,从而促进了网络优化。
2、 提出了一种改进的projection shortcut,减少了信息丢失,提供了更好的结果。
3、 提出了一个block,能学习更强大的空间特征。
4、 提出的网络结构能在各个数据集中相对于基准Resnet结果都得到了提升。


3、IResNet细节

3.1 Improved information flow through the network

Resnet由很多个残差模块构成,残差模块可以由下图(a)所示:
在这里插入图片描述
用公式可表示为:
在这里插入图片描述
其中x[l] 和x[l+1] 表示为第l个残差模块的输入与输出,ReLU代表激活函数,F(x[l] ,{wi[l] })代表含有多个层的可学习的残差映射函数。

原始版Resnet由两个1x1卷积和一个3x3卷积组成并且每个卷积层后都跟随一个bn层和ReLU激活层,大的灰色箭头表示shortcut连接;这条链路只包含一个ReLU激活函数,该ReLU可以通过将负信号归零来潜在地对信息的传播产生负面影响。这在训练开始时尤其重要(一段时间后,网络可能开始调整权重以输出一个在通过ReLU时不受影响的正信号)。这个影响在何凯明的另一篇论文[1]中提出了改进方式,叫做预激活,即通过将BN层和ReLU层前移,如下图(b)所示。

原始版本的ResNet(图a)在主路径上设置了太多的门(ReLU),这会阻碍信息的传播,改进版本图b,又使得信息畅通无阻,不受任何控制,这两种极端的shortcut设置都不是最理想的,并且呈现出不同的问题。在预激活版本图b中引发出两个问题:
1、网络的4个stage都没有对完整信号进行BN归一化,全部的bn操作都在分支中进行,因此,当我们增加blocks时也在同时增加完整信号的非归一化(unnormalized),也就造成了网络学习困难。这个问题在图a和图b两种结构都体现出来了。
2、预激活版本(图b)的主路径是学习恒等映射的,每个block连接处缺少非线性映射,这限制了学习能力。作者针对以上两点进行改进,按stage切分为start、Middle、end,并且在每个stage的最后一个block后加入BN用于稳定训练和加入ReLU激活用于增加网络表达能力。如图c的End ResBlock。通过以上改进,既能保证完整信息在网络中高效流动也能有效控制它。

3.2 Improved projection shortcut

在原始Resnet版本中,当输入x与F的输出维度不匹配时,就需要对x进行projection shortcut操作。如下图a所示,作者认为原来架构中步长为2的1x1 conv会丢失75%的重要信息,而留下的25%的信息也没有设计什么有意义的筛选标准,这会引入噪声和造成信息丢失,对主要通道流信息造成负面影响。

作者的改进方式是空间和通道适配分别用maxpooling和1x1卷积操作,而不是原版中用1x1卷积同时完成,即对于spacial projection,使用stride=2的3×3 max pooling层,对于channel projection使用stride=1的1×1 conv,然后再跟BN。这样做的优点是:spacial projection将考虑来自特征映射的所有信息,并在下一步中选择激活度最高的元素,减少了信息的损失,后面的实验结果也证明了这点。

这样改进后的projection shortcut,在通道流程上可以看作是 软下采样(3x3 conv) 和 硬下采样(3x3 max pooling)两种方式的结合,是两种方式优势的互补。“硬采样”有助于分类(选择激活程度最高的元素),而“软采样”也有助于不丢失所有空间背景(因此,有助于更好的定位,因为元素之间可以进行过渡比较平滑)。同样这个改进并不增加模型复杂度和模型参数量,非常实惠。
在这里插入图片描述

3.3 Grouped building block

在原始Resnet版本中引入瓶颈构建块是出于实际考虑,在增加网络深度的同时保持合理的计算成本。在瓶颈残差块中,先使用1x1减低通道数,然后使用3x3卷积提取特征,最后用1x1卷积提升通道数恢复原来的信息量,这样做是为了控制计算量和参数量,但是3x3卷积是在空间学习中占用非常重要的角色,瓶颈残差块中却限制了其输入输出通道的数量。

作者就基于这一点提出了改进,保证了3x3卷积以最大的输入输出通道进行计算,为了保证不增加计算量和参数量,作者这里采用了分组卷积(grouped convolution)。作者叫它ResGroup block。作者基于Resnet-50为基准,根据每个stage的group设置数量分别给出了固定版本ResGroupFix-50和变化版本ResGroup-50结构,如下表所示:
在这里插入图片描述
通过引入ResGroup block这种方法,3x3卷积拥有最多的通道和更高的学习空间特征的能力。其引入的空间通道是原始Resnet的四倍,是ResNeXt的两倍。这对于提高性能非常重要,因为3x3 conv是负责学习空间特征的唯一组件,因此,为3x3 conv提供最大数量的通道可以提高检测空间特征的能力。在实验部分,作者展示了该方法的有效性。如下图所示:
在这里插入图片描述


4、实验

ImageNet上分类实验
在这里插入图片描述
可以看到,IResNet随着网络层数增加,结果都在持续变好,并且比原始Resnet版本和预激活版本都好。


IResnet和Resnet的训练曲线对比如下:
在这里插入图片描述


当网络深度达到302和404层的时候,Imagenet测试集表现如下:
在这里插入图片描述
和200层的效果比较,top1 error也是在随着网络层数增加在不断减小的。


CIFAR-10/100数据,网络上千层测试效果:
在这里插入图片描述
从表中可以看出,原始版的Resnet,当网络从164层增加到1001层时,已经表现出严重的网络退化现象,而IResnet表现随着层数增加,错误率在减小。当网络层数增加到2000层时,原始版Resnet直接收敛失败,表现出严重的优化问题,而IResnet版本则到了3002层才开始表现出下降(文中表示可能过拟合了)。所以可以得出,随着网络层数增加,IResnet的效果会更好,不会出现网络退化问题。


文献:
[1] He, K., Zhang, X., Ren, S., Sun, J.: Identity mappings in deep residual networks. In: ECCV (2016)

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

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

相关文章

Ubuntu22.04.4 - 网络配置 - 笔记

一、设置固定ip 1、cd /etc/netplan 查看文件夹下的配置文件 我这里叫 00-installer-config.yaml 2、sudo nano /etc/netplan/00-installer-config.yaml 完成配置后,按下Ctrl O保存更改,然后按下Ctrl X退出nano编辑器。 3、sudo netplan apply 4、ip …

C++ 继承(一)

一、继承的概念 继承是面向对象编程中的一个重要概念,它指的是一个类(子类)可以从另一个类(父类)继承属性和方法。子类继承父类的属性和方法后,可以直接使用这些属性和方法,同时也可以在子类中…

springboot+vue全栈开发【2.前端准备工作篇】

目录 前言准备工作Vue框架介绍MVVM模式 快速入门导入vue在vscode创建一个页面 前言 hi,这个系列是我自学开发的笔记,适合具有一定编程基础(html、css那些基础知识要会!)的同学,有问题及时指正!…

语雀如何显示 Markdown 语法

正常的文章链接 https://www.yuque.com/TesterRoad/t554s28/eds3pfeffefw12x94wu8rwer8o 访问后是文章,无法复制 markdown 的内容 在链接后增加参数 /markdown?plaintrue&linebreakfalse&anchorfalse 直接显示代码

ros2 RVIZ2 不显示urdf模型

ros2 RVIZ2 不显示urdf模型 我的情况是 : 没有如何报错但是不显示 Description Topic 手动写上 /robot_description

python使用tkinter和ttkbootstrap制作UI界面(二)

这次讲解UI界面常用的主键,延续上文的框架进行编写,原界面如下: Combobox组件应用(下拉框) """Combobox组件"""global comvalue_operatorcomvalue_operator tk.StringVar()value_ope…

就业班 第三阶段(nginx) 2401--4.19 day3 nginx3

二、企业 keepalived 高可用项目实战 1、Keepalived VRRP 介绍 keepalived是什么keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。 ​ keepalived工作原理keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundan…

黑马python-python基础语法

1.注释: 单行注释:#注释内容 多行注释: """ 第一行 第二行 第三行 """ 或 第一行 第二行 第三行 2.定义变量 变量名值 变量名满足标识符命名规则即可 3.标识符命名规则: 有数组、字母、下划线组成…

欢乐钓鱼大师加速、暴击内置脚本,直接安装

无需手机root,安装软件即可使用,仅限安卓。 网盘自动获取 链接:https://pan.baidu.com/s/1lpzKPim76qettahxvxtjaQ?pwd0b8x 提取码:0b8x

从零开始学习Linux(4)----yum和vim

1.Linux软件包管理器yum Linux中我们要进行工具/指令/程序,安装,检查卸载等,需要yum的软件 安装软件的方式: 源代码安装---交叉编译的工具rpm包直接安装yum/apt-get yum是我们Linux预装的一个指令,搜索,下…

claude3国内注册

claude3国内注册 Claude 3 作为大型语言模型的强大之处在于其先进的算法设计和大规模训练数据的应用,能够执行复杂和多样化的任务。以下是 Claude 3 主要的强项: 接近人类的理解能力:Claude 3 能够更加深入地理解文本的含义,包括…

外贸企业邮箱有什么用?如何选择适合的外贸企业邮箱?

外贸公司每天都需要与各个国家的客户打交道,通过邮箱聊天、谈合作。由于语言、文化差异,一个小错误可能会致使业务失败和数据泄漏风险。做为外贸企业的重要沟通工具,企业电子邮件的功效是显而易见的。那样,外贸企业邮箱有什么用&a…

【在本机上部署安装禅道详细操作步骤2024】

1、进入禅道官网,选择开源版进行下载:禅道下载 - 禅道开源项目管理软件 2、根据自身电脑环境选择合适的版本,此处是windows版本: 3、双击打开下载好的.exe安装包-选择安装目录-【Extract】-然后就等着安装完成就行了 4、安装完成…

JavaSE高阶篇-反射

第一部分、Junit单元测试 1)介绍 1.概述:Junit是一个单元测试框架,在一定程度上可以代替main方法,可以单独去执行一个方法,测试该方法是否能跑通,但是Junit是第三方工具,所以使用之前需要导入jar包 2)Junit的基本使用(重点啊) 1.…

【jinja2】模板渲染

HTML文件 return render_template(index.html)h1: 一级标题 变粗变大(狗头 <

VSCode断点调试(ROS)

0、安装ros插件 在扩展商店中安装ROS插件&#xff08;Microsoft&#xff09; 1、修改CMakeList.txt # set(CMAKE_BUILD_TYPE "Release") // 注释Release模式 set(CMAKE_BUILD_TYPE "Debug") // 设置为Debug模式 # set(CMAKE_CXX_FLAGS_RELEASE &…

PolarDB MySQL 版 Serverless评测|一文带你体验什么是极致弹性

PolarDB MySQL 版 Serverless评测|一文带你体验什么是极致弹性 什么是PolarDB MySQL 版PolarDB MySQL版体验弹性压测一弹性压测二弹性压测三弹性缩容 操作体验 在体验PolarDB MySQL 版之前&#xff0c;这里先为大家提供一下PolarDB MySQL 版 Serverless评测入口&#xff0c;以供…

五种主流数据库:集合运算

关系型数据库中的表与集合理论中的集合类似&#xff0c;表是由行&#xff08;记录&#xff09;组成的集合。因此&#xff0c;SQL 支持基于数据行的各种集合运算&#xff0c;包括并集运算&#xff08;Union&#xff09;、交集运算&#xff08;Intersect&#xff09;和差集运算&a…

neo4j使用详解(十八、java driver使用及性能优化<高级用法>——最全参考)

Neo4j系列导航&#xff1a; neo4j安装及简单实践 cypher语法基础 cypher插入语法 cypher插入语法 cypher查询语法 cypher通用语法 cypher函数语法 neo4j索引及调优 neo4j java Driver等更多 1.依赖引入 <dependency><groupId>org.neo4j.driver</groupId><…

线程池 ThreadPoolExecutor 配置参数详解

《开发语言-Java》 线程池 ThreadPoolExecutor 参数详解 一、引言二、主要内容2.1 核心构造函数2.2 核心线程数2.3 最大线程数2.4 空闲线程存活时间2.5 keepAliveTime 的时间单位2.6 核心线程在空闲时的回收策略2.7 工作队列2.8 线程工厂2.9 拒绝策略 三、总结 一、引言 提到 …