【网络结构设计】8、ConvNeXt | 卷积神经网络还有很大的优化空间

本文主要是介绍【网络结构设计】8、ConvNeXt | 卷积神经网络还有很大的优化空间,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 一、背景
    • 二、方法
      • 2.1 训练方法
      • 2.2 宏观设计
      • 2.3 ResNeXt-ify:79.5%→80.5%
      • 2.4 Inverted Bottleneck: 80.5%→80.6%
      • 2.5 Large Kernel Sizes
      • 2.6 微观设计
    • 三、实验
    • 四、结论

在这里插入图片描述

论文链接:https://arxiv.org/pdf/2201.03545.pdf

代码链接:https://github.com/facebookresearch/ConvNeXt

一、背景

2020年出现了 ViT,是基于 Transformer 的网络模型,并且很快超越了基于 CNN 的网络模型的效果。

原始 ViT 由于只能提取单层特征,无法使用于目标检测和分割等任务。

层级 Transformer(Swin 等),引入了卷积神经网络的特性,提出了一个基于 Transformer 的 backbone,并且在下有任务上取得了很好的效果。

但这种效果应该来源于 Transformer 的内在优势,而非卷积固有的归纳偏差能力。

所以本文中,作者探索了 CNN 的边界,使用 Transformer 的设计思想,重新优化了标准 ResNet。

卷积神经网络有很多内在的归纳偏置的能力,有助于其适应于不同的视觉任务。比如最重要的平移不变性,这个特性就很适用于目标检测。卷积神经网络的计算效率也比较高,因为卷积核是共享的。

Transformer 是从 NLP 衍生到图像任务上的,这也使得两个任务的网络形式有了进一步的统一,除过图像需要 patch 之外,其他都很类似。ViT 没有引入图像的相关归纳偏置,且和 NLP 使用的网络结构很相似。随着大模型和大数据集的引入,ViT 的效果比 CNN 强很多,尤其在图像分类上,但图像任务不仅仅只有图像分类。Transformer 没有卷积网络的归纳偏置能力,所以原始的 ViT 模型无法成为一个通用的 backbone,最重要的一点在于计算量,ViT 内部使用的 attention 结构计算量是输入图像的平方倍,所以如果输入图像分辨率增大的话,计算量会提高很多。

Swin Transformer 是一个重要的转折,该方法将 sliding window 引入了 Transformer,和卷积网络非常类似,也证明了 Transformer 能够作为 backbone,并且能够在除过图像分类外的场景取得 SOTA 的效果,

不同于卷积的逐步进步,Transformer一提出的效果就是很好的,所以本文主要对比卷积和 Transformer 的架构差异,并测试纯卷积网络的极限。
在这里插入图片描述

二、方法

如何修正卷积网络?

作者对比:

  • ResNet50 和 Swin-T , FLOPs 大约 4.5 × 1 0 9 4.5 \times 10^9 4.5×109
  • ResNet200 和 Swin-B, FLOPs 大约 15.0 × 1 0 9 15.0 \times 10^9 15.0×109

作者探索的过程如下,如图2所示:

  • 训练 ResNet50 :使用和 Transformer 相同的训练方式训练 ResNet50,然后和原始训练 ResNet50 的结果做对比,作为基准
  • 修正的设计原则:
    • 宏观设计
    • ResNeXt
    • inverted bottleneck
    • 大卷积核
    • 不同层的微观设计
      在这里插入图片描述

2.1 训练方法

作者使用 DeiT 和 Swin 的训练方法,epoch 从 90 增加到 300,AdamW 优化器,各种数据增强方式,使得 ResNet50 的准确率从 76.1% 提升到了 78.8%。这也说明了卷积网络没有 Transformer 效果好的原因也和训练方式有关。

2.2 宏观设计

由于 Swin 也是多级的网络结构,每个stage的特征图分辨率是不同的,所以,以下两个问题的考虑是很有必要的:

1、改变 stage compute ratio: 78.8% → 79.4%

原始的 ResNet 在不同 stage 的计算量分布其实是依靠经验性的,最重的 res4 stage 主要是向下兼容下游任务,如目标检测在 14x14 的特征图上连接检测头。但 Swin-T 每个 stage 的计算量比率基本为 1:1:3:1,更大的网络是 1:1:9:1,所以作者将 ResNet50 的每个 stage 中的 blocks 的个数设置从 (3, 4, 6, 3) 修改为 (3, 3, 9, s3)。该操作将准确率从 78.8% 提高到了 79.4%。

2、改变 stem cell structure 为 “Patchify”:79.4%→79.5%

Stem 的设计决定了图片的前处理方式,ResNet 的 stem 一般都会降低输入图像的分辨率,ResNet 的 stem 是步长为 2 的 7x7 卷积,后面跟随一个 max pooling,输入图像总共会下采样 4 倍。但 Transformer 是使用不重叠的卷积对图像进行分块。所以此处作者也使用了类似的方法,使用步长为 4 的 4x4 卷积,这一操作将准确率从 79.4% 提升到了 79.5%。

2.3 ResNeXt-ify:79.5%→80.5%

作者也参考了 ResNeXt 的设计,因为 ResNeXt 比原始的 ResNet 有着更好的 FLOPs 和 accuracy 平衡,主要思想是卷积被分成了不同组。

所以,本文作者使用了 depth-wise 卷积,该卷积其实类似于 self-attention 中的加权求和,并且很大程度上降低了计算量。所以,作者提升了网络的宽度到和 Swin-T 相同(64→96),准确率提高到了 80.5%。
在这里插入图片描述

2.4 Inverted Bottleneck: 80.5%→80.6%

Transformer block 中的一个很重要的设计师 inverted bottleneck,也就是 MLP 的 hidden 层维度是输入维度的 4 倍(图4),在ConvNets中使用的扩展比为 4,图 3 的 a 到 b 展示了相关改变。
在这里插入图片描述

2.5 Large Kernel Sizes

由于 Transformer 中的 self-attention 和卷积中的卷积核卷积是有较大不同的,self-attention 能够捕捉全局的特征,尽管 Swin 的 window size 大小为 7 ,那也比 ResNet 中的 3 大很多。

1、将 depth-wise 层向上移动:图 3b 到图 3c ,80.6%→79.9%

为了探索大卷积的效果,作者将 depth-wise 卷积的位置向上移动了,图 3b 到图 3c,这和 Transformer 类似,Transformer 的 MSA block 是在 MLP 之前的。由于作者已经采用了 inverted bottleneck block,所以复杂的模块(MSA,large-kernel conv)就会有更少的通道。FLOPs 降低到了 4.1 G,准确率降低到了 79.9%

2、增大卷积核

作者使用了多种不同大小的卷积核,包括 3, 5, 7, 9, 11。效果从 79.9% (3x3)提升到了 80.6%(7x7),并且效果在 7x7 的时候已经达到饱和了。所以作者都是使用了 7x7 的 depth-wise 卷积。

2.6 微观设计

1、使用 GELU 替换 ReLU

虽然没有带来效果的提升,仍然是 80.6%,但作者仍然认为 GELU 效果更好一些

2、使用更少的激活函数:80.6%→81.4%

参考 Transformer,作者移除了两个 BN 层,只在 1x1 卷积前面保留了一个 BN 层,将效果提升到了 81.4%,超越了 Swin-T 的效果。同时,作者发现在每个 block 之前都使用 BN 不会提高效果。

3、使用 LN 代替 BN:81.4%→81.5%

直接在原始 ResNet 中替换 BN 并不会带来提升,反而会带来效果下降,但在整体做了修改之后替换 BN,就可以得到效果的提升,提升到了 81.5%。

4、分离下采样层:

在 ResNet 中,空间下采样一般都是使用步长为 2 的 3x3 卷积,在 Swin 中,在每两个 stage 中间都会使用分离的下采样层,所以,作者也使用了步长为 2 的 2x2 大小的卷积来实现下采样。且发现在分辨率改变的地方添加 normalization 层会提高训练稳定性。该操作提升效果到了82%,Swin-T 是 81.3%。

三、实验

作者也建立了不同大小的模型, ConvNeXt-T/S/B/L,对标 Swin-T/S/B/L。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、结论

本文提出的纯 CNN 的网络 ConvNeXt,在多种任务上取得了超越 Transformer 的效果,同时能够保留 ConvNet 的简洁高效性质。作者期望本文的结论能够推进对卷积及训练的重新思考。

这篇关于【网络结构设计】8、ConvNeXt | 卷积神经网络还有很大的优化空间的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/472811

相关文章

Python中的可视化设计与UI界面实现

《Python中的可视化设计与UI界面实现》本文介绍了如何使用Python创建用户界面(UI),包括使用Tkinter、PyQt、Kivy等库进行基本窗口、动态图表和动画效果的实现,通过示例代码,展示... 目录从像素到界面:python带你玩转UI设计示例:使用Tkinter创建一个简单的窗口绘图魔法:用

MySQL不使用子查询的原因及优化案例

《MySQL不使用子查询的原因及优化案例》对于mysql,不推荐使用子查询,效率太差,执行子查询时,MYSQL需要创建临时表,查询完毕后再删除这些临时表,所以,子查询的速度会受到一定的影响,本文给大家... 目录不推荐使用子查询和JOIN的原因解决方案优化案例案例1:查询所有有库存的商品信息案例2:使用EX

MySQL中my.ini文件的基础配置和优化配置方式

《MySQL中my.ini文件的基础配置和优化配置方式》文章讨论了数据库异步同步的优化思路,包括三个主要方面:幂等性、时序和延迟,作者还分享了MySQL配置文件的优化经验,并鼓励读者提供支持... 目录mysql my.ini文件的配置和优化配置优化思路MySQL配置文件优化总结MySQL my.ini文件

正则表达式高级应用与性能优化记录

《正则表达式高级应用与性能优化记录》本文介绍了正则表达式的高级应用和性能优化技巧,包括文本拆分、合并、XML/HTML解析、数据分析、以及性能优化方法,通过这些技巧,可以更高效地利用正则表达式进行复杂... 目录第6章:正则表达式的高级应用6.1 模式匹配与文本处理6.1.1 文本拆分6.1.2 文本合并6

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}