32_ConvNeXt网络详解
1.1 简介
ConvNeXt是一种计算机视觉模型,由Meta AI(前Facebook AI)的研究人员在2022年提出,它旨在探索卷积神经网络(CNN)在图像识别任务上的潜力,尤其是在与当时流行的Vision Transformer(ViT)模型相比较时。ConvNeXt设计的核心目标是结合Transformer模型中的设计理念,如大 kernel size、层归一化位置、 MLP结构等,来升级传统的卷积神经网络架构,从而在不牺牲效率的情况下,达到或超越基于Transformer的模型的性能。
关键特性与设计原则
-
大核卷积(Large Kernel Convolution): ConvNeXt 引入了大核卷积层,类似于Transformer中的多头自注意力机制,能够捕捉更广泛的上下文信息。这有助于提高模型对图像中长距离依赖关系的理解能力。
-
层归一化(Layer Normalization): 与传统CNN中常用的批量归一化不同,ConvNeXt在每个卷积块之后使用层归一化,这与Transformer模型中的做法一致,有助于稳定训练过程并加速收敛。
-
MLP结构(Modified MLP Block): ConvNeXt采用了类似于ViT中的MLP(多层感知机)结构,即两层全连接层,中间夹带一个GELU激活函数,但将这种结构融入到卷积网络中,代替了传统的卷积-归一化-激活函数的组合,增强模型的表达能力。
-
深分层结构(Deep Hierarchical Structure): 类似于ResNet等经典网络,ConvNeXt采用深度分层的设计,通过逐步下采样和增加特征维度来构建多尺度特征表示。这样的设计有助于模型学习从低级到高级的视觉特征。
-
简洁性与可扩展性: 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激活函数
相关文章:

32_ConvNeXt网络详解
1.1 简介 ConvNeXt是一种计算机视觉模型,由Meta AI(前Facebook AI)的研究人员在2022年提出,它旨在探索卷积神经网络(CNN)在图像识别任务上的潜力,尤其是在与当时流行的Vision Transformer&…...

Langchain[3]:Langchain架构演进与功能扩展:流式事件处理、事件过滤机制、回调传播策略及装饰器应用
Langchain[3]:Langchain架构演进与功能扩展:流式事件处理、事件过滤机制、回调传播策略及装饰器应用 1. Langchain的演变 v0.1: 初始版本,包含基本功能。 从0.1~0.2完成的特性: 通过事件流 API 提供更好的流式支持。标准化工具调用支持Tool…...
java导出PDF详细教程+各种踩坑
直接上代码了 所需依赖: <dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.4.3</version> </dependency><dependency><groupId>com.itextpdf</groupId><art…...

【博士每天一篇文献-算法】连续学习算法之HNet:Continual learning with hypernetworks
阅读时间:2023-12-26 1 介绍 年份:2019 作者:Johannes von Oswald,Google Research;Christian Henning,EthonAI AG;Benjamin F. Grewe,苏黎世联邦理工学院神经信息学研究所 期刊&a…...
使用 tcpdump 进行网络流量捕获与分析
目录 安装 tcpdump基本用法捕获网络流量指定网络接口捕获特定主机的流量捕获特定端口的流量捕获特定协议的流量 常用选项保存捕获的数据包从文件读取数据包显示数据包内容指定捕获数据包的长度限制捕获的数据包数量显示详细信息过滤表达式 示例捕获本地回环接口上的HTTP流量捕获…...

k8s集群 安装配置 Prometheus+grafana
k8s集群 安装配置 Prometheusgrafana k8s环境如下:机器规划: node-exporter组件安装和配置安装node-exporter通过node-exporter采集数据显示192.168.40.180主机cpu的使用情况显示192.168.40.180主机负载使用情况 Prometheus server安装和配置创建sa账号&…...

【Java--数据结构】二叉树oj题(上)
前言 欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 判断是否是相同的树 oj链接 要判断树是否一样,要满足3个条件 根的 结构 和 值 一样左子树的结构和值一样右子树的结构和值一样 所以就可以总结以下思路…...
微服务之间Feign调用
需使用的服务 FeignClient(name "rdss-back-service", fallback SysUserServiceFallback.class, configuration FeignConfiguration.class) public interface SysUserService {/*** 订单下单用户模糊查询*/GetMapping(value "/user/getOrderUserName")…...

【Qt】按钮的属性相关API
目录 一. QPushButton 二. QRadioButton 按钮组 三. QCheckBox Qt中按钮的继承体系如下图 QAbstractButton是一个抽象类,集成了按钮的核心属性和API 按钮说明QPushButton(普通按钮)最常见的按钮,用于触发操作或者事件。可以设…...
blender和3dmax和maya和c4d比较
Blender、3ds Max、Maya和Cinema 4D (C4D)都是强大的3D建模和动画软件,但它们各有特点和适用领域。以下是它们的比较: Blender: 开源免费全面的功能,包括建模、动画、渲染、视频编辑等学习曲线较陡峭,但社区支持强大适合独立艺术家…...

visio保存一部分图/emf图片打开很模糊/emf插入到word或ppt中很模糊
本文主要解决三个问题 visio保存一部分图 需求描述:在一个visio文件中画了很多个图,但我只想把其中一部分保存成某种图片格式,比如jpg emf png之类的,以便做后续的处理。 方法:超级容易。 选中希望保存的这部分图&…...

沙尘传输模拟教程(基于wrf-chem)
沙尘传输模拟教程(基于wrf-chem) 文章目录 沙尘传输模拟教程(基于wrf-chem)简介实验目的wrf-chem简介 软件准备wps、wrf-chem安装conda安装ncl安装ncap安装 数据准备气象数据准备下垫面数据准备 WPS数据预处理namelist.wps的设置geogrid.exe下垫面处理ungrib.exe气象数据预处理…...
使用 Python 进行测试(8)纯净测试
原文:Testing with Python (part 8): purity test 总结 如果你要使用综合测试(integrated tests): def test_add_new_item_to_cart(product, cart):new_product Product.objects.create(nameNew Product, price15.00)new_cart…...

python的tkinter、socket库开发tcp的客户端和服务端
一、tcp通讯流程和开发步骤 1、tcp客户端和服务端通讯流程图 套接字是通讯的利器,连接时要经过三次握手建立连接,断开连接要经过四次挥手断开连接。 2、客户端开发流程 1)创建客户端套接字 2)和服务端器端套接字建立连接 3&#x…...
Python面试题:Python中的异步编程:详细讲解asyncio库的使用
Python 的异步编程是实现高效并发处理的一种方法,它使得程序能够在等待 I/O 操作时继续执行其他任务。在 Python 中,asyncio 库是实现异步编程的主要工具。asyncio 提供了一种机制来编写可以在单线程内并发执行的代码,适用于 I/O 密集型任务。…...

【信号频率估计】MVDR算法及MATLAB仿真
目录 一、MVDR算法1.1 简介1.2 原理1.3 特点1.3.1 优点1.3.2 缺点 二、算法应用实例2.1 信号的频率估计2.2 MATLAB仿真代码 三、参考文献 一、MVDR算法 1.1 简介 最小方差无失真响应(Mininum Variance Distortionless Response,MVDR)算法最…...

HarmonyOS NEXT零基础入门到实战-第二部分
HarmonyOS NEXT零基础入门到实战-第二部分 Swiper 轮播组件 Swiper是一个 容器 组件,当设置了多个子组件后,可以对这些 子组件 进行轮播显示。(文字、图片...) 1、Swiper基本语法 2、Swiper常见属性 3、Swiper样式自定义 4、案例&…...

《小程序02:云开发之增删改查》
一、前置操作 // 一定要用这个符号包含里面的${}才会生效 wx.showToast({title: 获取数据成功:${colorLista}, })1.1:初始化介绍 **1、获取数据库引用:**在开始使用数据库 API 进行增删改查操作之前,需要先获取数据库的引用 cons…...

SQL执行流程、SQL执行计划、SQL优化
select查询语句 select查询语句中join连接是如何工作的? 1、INNER JOIN 返回两个表中的匹配行。 2、LEFT JOIN 返回左表中的所有记录以及右表中的匹配记录。 3、RIGHT JOIN 返回右表中的所有记录以及左表中的匹配记录。 4、FULL OUTER JOIN 返回左侧或右侧表中有匹…...
【前端】JavaScript入门及实战41-45
文章目录 41 嵌套的for循环42 for循环嵌套练习(1)43 for循环嵌套练习(2)44 break和continue45 质数练习补充 41 嵌套的for循环 <!DOCTYPE html> <html> <head> <title></title> <meta charset "utf-8"> <script type"…...

css实现圆环展示百分比,根据值动态展示所占比例
代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
HTML前端开发:JavaScript 获取元素方法详解
作为前端开发者,高效获取 DOM 元素是必备技能。以下是 JS 中核心的获取元素方法,分为两大系列: 一、getElementBy... 系列 传统方法,直接通过 DOM 接口访问,返回动态集合(元素变化会实时更新)。…...
HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散
前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说,在叠衣服的过程中,我会带着团队对比各种模型、方法、策略,毕竟针对各个场景始终寻找更优的解决方案,是我个人和我司「七月在线」的职责之一 且个人认为,…...

MySQL的pymysql操作
本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...