当前位置: 首页 > news >正文

32_ConvNeXt网络详解

1.1 简介

ConvNeXt是一种计算机视觉模型,由Meta AI(前Facebook AI)的研究人员在2022年提出,它旨在探索卷积神经网络(CNN)在图像识别任务上的潜力,尤其是在与当时流行的Vision Transformer(ViT)模型相比较时。ConvNeXt设计的核心目标是结合Transformer模型中的设计理念,如大 kernel size、层归一化位置、 MLP结构等,来升级传统的卷积神经网络架构,从而在不牺牲效率的情况下,达到或超越基于Transformer的模型的性能。

关键特性与设计原则

  1. 大核卷积(Large Kernel Convolution): ConvNeXt 引入了大核卷积层,类似于Transformer中的多头自注意力机制,能够捕捉更广泛的上下文信息。这有助于提高模型对图像中长距离依赖关系的理解能力。

  2. 层归一化(Layer Normalization): 与传统CNN中常用的批量归一化不同,ConvNeXt在每个卷积块之后使用层归一化,这与Transformer模型中的做法一致,有助于稳定训练过程并加速收敛。

  3. MLP结构(Modified MLP Block): ConvNeXt采用了类似于ViT中的MLP(多层感知机)结构,即两层全连接层,中间夹带一个GELU激活函数,但将这种结构融入到卷积网络中,代替了传统的卷积-归一化-激活函数的组合,增强模型的表达能力。

  4. 深分层结构(Deep Hierarchical Structure): 类似于ResNet等经典网络,ConvNeXt采用深度分层的设计,通过逐步下采样和增加特征维度来构建多尺度特征表示。这样的设计有助于模型学习从低级到高级的视觉特征。

  5. 简洁性与可扩展性: ConvNeXt保持了架构的简洁性,易于理解和实现,同时提供了多种规模的变体(例如tiny, small, base, large),以适应不同资源限制下的应用场景。

性能表现

在多个标准基准测试上,包括ImageNet分类、COCO目标检测和ADE20K语义分割等,ConvNeXt展示出了与最先进的Transformer模型相当甚至更好的性能,同时保持了训练和推理的高效性。它的成功证明了经过精心设计的卷积网络依然具有强大的竞争力,并且在某些场景下可能比Transformer更为优越,尤其是在计算资源有限的环境下。

应用领域

由于其出色的性能和效率,ConvNeXt已被广泛应用于图像分类、物体检测、语义分割以及其他计算机视觉任务中,成为研究者和工程师的一个重要工具箱成员,尤其是在追求高精度和实时处理的应用场景下。

总之,ConvNeXt是对传统卷积神经网络的一次现代化升级,它融合了Transformer的优秀设计思想,展现了卷积网络在现代深度学习时代的新活力。

1.2 模型结构

ConvNeXt-T模型结构图:

Layer Scale指的就是一个特征图的缩放。

1.3 网络的设计与实验

这个网络模型的结构很精简,而且结构上看上去也“没什么亮点”,那么它为什么能取得比较优异的性能呢?

作者认为,随着信息技术和时代的发展,各种新的架构和优化策略促使了transformer拥有了更好的效果,那么如果我们使用相同的策略去训练CNN,是否也能达到更好的效果呢?作者进行了一些列的实验。

Macro design

在这一部分又分成两个小部分,分别是stage ratio和patchify stem。

stage ratio:在Resnet50当中,stage间的堆叠比例大致是1:1:2:1,而在swin transformer中它对应四个stage重复block的比例大概是1:1:3:1。所以作者就将resnet50的stage的堆叠比例也改为了1:1:3:1。修改之后,作者发现准确率由78.8上升为79.4,GFLOPS上升。

patchify stem:stem指的是最初的下采样模块,比如说resnet50中的stem就是由conv1中的7x7卷积和下面的那个3x3最大池化下采样组成的。在swin transformer中,是采用4x4,步距为4的卷积得到的。所以作者就将resnet50的stem也替换成了 swin transformer的stem,替换之后,准确率上升0.1个点。GFLOPS下降。

ResNeXt

下图左为resnet的瓶颈结构(像一个沙漏,两头粗中间细)。

下图右为resneXt的结构,采用的是组卷积。

作者将组卷积极端化,直接每个通道安排一个卷积核,进行dw卷积。这么做之后,准确率由79.5降至78.3,GFLOPS大量降低。接下来作者增大了输入特征的维度(channel)使输入通道数和swin transformer保持一致都是96。这么做以后,准确率由78.3提升至80.5。

Inverted Bottleneck

倒残差,两头细中间粗,像一个坚果。

作者比较了一下,然后将resnet中的bottleneck变成了inverted bottleneck。然后准确率上升。

Large kernel size

将DW卷积模块上移,准确率从80.6下降为79.9。作者认为这个DW卷积有点像MSA,而MSA是放在MLP前面的,所以他就将DW放在了1x1前面。

然后调整DW卷积的卷积核尺寸。作者发现当size为7的时候准确率趋于饱和了,再增大就会发现准确率还出现降低的一个情况。而这个7正好和swin transformer窗口的大小是一致的。

Micro designs

对细节进行了一些改动。替换激活函数(准确率为80.6)、更少的激活函数(81.3)、更少的归一化层(81.4)、LN代替BN(81.5)、借鉴patch merging采用单独的下采样层(82.0)

1.4 模型性能

与SWIN  transformer相比,ConvNext效果要更好,且它的推理速度更快。

第四列的指标是指在a100这个GPU上每秒推理图片的数目,convnext-t推理速度相比swin transformer提升了47%

在COCO或者分割数据集上效果也很好。



1.5 模型参数

C代表每一个stage输入特征层的channel。B指每个stage重复block的次数。

附:GELU激活函数

http://www.lryc.cn/news/404061.html

相关文章:

  • Langchain[3]:Langchain架构演进与功能扩展:流式事件处理、事件过滤机制、回调传播策略及装饰器应用
  • java导出PDF详细教程+各种踩坑
  • 【博士每天一篇文献-算法】连续学习算法之HNet:Continual learning with hypernetworks
  • 使用 tcpdump 进行网络流量捕获与分析
  • k8s集群 安装配置 Prometheus+grafana
  • 【Java--数据结构】二叉树oj题(上)
  • 微服务之间Feign调用
  • 【Qt】按钮的属性相关API
  • blender和3dmax和maya和c4d比较
  • visio保存一部分图/emf图片打开很模糊/emf插入到word或ppt中很模糊
  • 沙尘传输模拟教程(基于wrf-chem)
  • 使用 Python 进行测试(8)纯净测试
  • python的tkinter、socket库开发tcp的客户端和服务端
  • Python面试题:Python中的异步编程:详细讲解asyncio库的使用
  • 【信号频率估计】MVDR算法及MATLAB仿真
  • HarmonyOS NEXT零基础入门到实战-第二部分
  • 《小程序02:云开发之增删改查》
  • SQL执行流程、SQL执行计划、SQL优化
  • 【前端】JavaScript入门及实战41-45
  • 更加深入Mysql-04-MySQL 多表查询与事务的操作
  • 基于最新版的flutter pointycastle: ^3.9.1的AES加密
  • K8S内存资源配置
  • 【多任务YOLO】 A-YOLOM: You Only Look at Once for Real-Time and Generic Multi-Task
  • 数学建模--灰色关联分析法
  • NetSuite Saved Search迁移工具
  • Java IO模型深入解析:BIO、NIO与AIO
  • 《从C/C++到Java入门指南》- 9.字符和字符串
  • Adobe国际认证详解-视频剪辑
  • 昇思25天学习打卡营第19天|MindNLP ChatGLM-6B StreamChat
  • .NET在游戏开发中有哪些成功的案例?