位置: IT常识 - 正文

ConvNeXt-教你如何改模型(convwthn如何定义)

编辑:rootadmin
ConvNeXt-教你如何改模型 1.摘要

推荐整理分享ConvNeXt-教你如何改模型(convwthn如何定义),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:contnext,convnetion,conv如何使用,conv如何使用,convot,conv如何使用,convnetjs,contnext,内容如对您有帮助,希望把文章链接给更多的朋友!

2020年Transformer在CV领域一炮打响,谷歌提出的Vision Transformer (ViT)(An Image is Worth 16x16 Words,模仿“An Image is Worth a thousand Words”)再次横空出世,只是简单的将图片切成16X16的patch,扔到原封不动的NLP的Transformer中,结果竟然就一骑绝尘,表现超过了一众沉淀了多年的CNN,最神奇的是,它完全不考虑图像的特点, 什么CNN的平移不变性(Translational Invariance)和局部性(Locality) 统统都没有考虑,只要把图像打成patch后,丢到Transformer就成,和NLP的Sequence处理方法完全一样,这也再次诠释了"Attention is all you need!"。在此之后,大量基于Transformer的论文在CV领域出现,比如2021 年中,微软发表了一款基于窗口移动(Shift Window)的Swin Transformer,窗口移动有点CNN的感觉又回来了,窗口移动能够促进相邻patch之间交互,也是个屠榜级的存在。那这样一来,卷积神经网络真的要淡出舞台中央了吗?就在2022年一月份CNN发起了绝地反击,A ConvNet for the 2020s一文提出ConvNeXt,借鉴了 Vision Transformer 和 CNN 的成功经验,构建一个纯卷积网络,其性能超越了高大上(复杂的) 基于Transformer 的先进的模型,荣耀归卷积网络!但仔细看,好像也没又什么大的idea方面的创新,只是一堆Trick,使用现有的结构和方法便达到了ImageNet Top-1的准确率。

论文名称:A ConvNet for the 2020s 论文下载链接:https://arxiv.org/abs/2201.03545

2. ConvNext进化过程

ConvNeXt的出现,证明并不一定需要Transformer那么复杂的结构,只对原有CNN的技术和参数优化也能达到SOTA,ConvNeXt 首先采用标准神经网络 ResNet-50 并对其依据Vit的训练策略进行现代化改造,并以此作为baseline。下图展示了ConvNeXt的所有优化点它从ResNet-50[4]或者ResNet-200出发,依次从宏观设计,深度可分离卷积(ResNeXt[5]),逆瓶颈层(MobileNet v2[6]),大卷积核,细节设计这五个角度依次借鉴Swin Transformer的思想,然后在ImageNet-1K上进行训练和评估,最终得到ConvNeXt的核心结构。

2.1 Tranning Technique(训练技巧)

在ConvNeXt中,它的优化策略借鉴了Swin-Transformer。具体的优化策略包括

训练的epoch数从90变为了300使用AdamW优化器数据增强技术正则化方案ConvNeXt-教你如何改模型(convwthn如何定义)

详细参数如下:

2.2 Macro design(宏观设计)2.2.1 Changing stage compute ratio

在VGG网络中提出了把网络分成多个网络块结构,每个网络块通过池化操作将feature map下采样到不同的尺寸,在VGG网络中每个网络块的网络层结构数目是相同的,但是在之后的ResNet-50网络结构中,共有四个网络块,每个网络块有不同数量的网络层,在原来的ResNet-50网络中,一般conv4_x(即stage3)堆叠的block的次数是最多的。如下图中的ResNet50中stage1到stage4堆叠block的次数是(3, 4, 6, 3)比例大概是1:1:2:1,但在Swin Transformer中,比如Swin-T的比例是1:1:3:1,Swin-L的比例是1:1:9:1。很明显,在Swin Transformer中,stage3堆叠block的占比更高。所以作者就将ResNet50中的堆叠次数由(3, 4, 6, 3)调整成(3, 3, 9, 3),和Swin-T拥有相似的FLOPs。进行调整后,准确率由78.8%提升到了79.4%。下图是ResNet-50网络结构图:

2.2.2 Changing stem to “Patchify”

对于ImageNet数据集,我们通常采用 224×224的输入尺寸,这个尺寸对于ViT等基于Transformer的模型来说是非常大的,它们通常使用一个步长为4,大小也为4的卷积将其尺寸下采样到 56×56。因为这个卷积的步长和大小是完全相同的,所以它又是一个无覆盖的卷积,或者叫Patchify(补丁化)的卷积。这一部分在Swin-Transformer中叫做stem层,它是位于输入之后的一个降采样层。在ConvNeXt中,Stem层也是一个步长为4,大小也为4的卷积操作,这一操作将准确率从79.4%提升至79.5%,GFLOPs从4.5降到4.4%。也有人指出使用覆盖的卷积(例如步长为4,卷积核大小为7的卷积)能够获得更好的表现。

2.3 ResNeXt-ify(ResNeXt化)

由于ResNeXt在FLOPs/accuracy的权衡比ResNet更优秀,于是进行了一些借鉴,主要是使用了分组卷积,它将 3×3 卷积替换成了 3×3的分组卷积,这个操作将GFLOPs从4.4降到了2.4,但是它也将准确率从79.5%降到了78.3%。 ResNeXt的指导准则是“分更多的组,拓宽width”,因此本文直接使用了depthwise conv,即分组数等于输入通道数。这个技术在之前主要是应用在MobileNet这种轻量级网络中,用于降低计算量。但在这里,作者发现dw conv由于每个卷积核单独处理一个通道,这种形式跟self-attention机制很相似,都是在单个通道内做空间信息的混合加权。将bottleneck中的3x3卷积替换成dw conv,为了弥补准确率的下降,它将ResNet-50的基础通道数从64增加至96。这个操作将GFLOPs增加到了5.3,但是准确率提升到了80.5%

2.4 Inverted Bottleneck(反瓶颈)

在标准ResNet中使用的bottleneck是(大维度-小维度-大维度)的形式来减小计算量。后来在MobileNetV2中提出了inverted bottleneck结构,采用(小维度-大维度-小维度)形式,认为这样能让信息在不同维度特征空间之间转换时避免压缩维度带来的信息损失,后来在Transformer的MLP中也使用了类似的结构,即中间粗两头细,中间层全连接层维度数是两端的4倍。

a是ResNet中采用的Bottleneck模块b是MobileNetV2采用的Inverted Botleneck模块(图b的最后一个1x1的卷积层画错了,应该是384->96,后面如果作者发现后应该会修正过来)c是ConvNeXt采用的是Inverted Bottleneck模块。2.5 Large Kernel Sizes(更大的卷积核)

在Swin-T中使用7✖️7大小的卷积核,之前ConvNet上也使用过,但是是用3✖️3去堆加的,这样对GPU加速也好,所以作者采用了大卷积核,这里采用7*7,当然也尝试了其他的尺寸,但是发现取到7的时候就已经饱和了,又由于采用Inverted BottleNeck结构放大了中间卷积层的缘故,直接替换会导致参数量增大,因而作者把DW卷积的位置进行了调整,放到了反瓶颈的开头。最终结果相近,说明在7x7在相同参数量下效果是一致的。

2.6 Micro Design(微观设计)Replacing ReLU with GELU,在Transformer中激活函数基本用的都是GELU,而在卷积神经网络中最常用的是ReLU,于是作者又将激活函数替换成了GELU,替换后发现准确率没变化,主要是为了对齐比较,因为Transformer中有。Fewer activation functions,使用更少的激活函数。在卷积神经网络中,一般会在每个卷积层或全连接后都接上一个激活函数。但在Transformer中并不是每个模块后都跟有激活函数,比如MLP中只有第一个全连接层后跟了GELU激活函数。接着作者在ConvNeXt Block中也减少激活函数的使用,如下图所示,减少后发现准确率从80.6%增长到81.3%。 Fewer normalization layers,使用更少的Normalization。同样在Transformer中,Normalization使用的也比较少,接着作者也减少了ConvNeXt Block中的Normalization层,只保留了depthwise conv后的Normalization层。此时准确率已经达到了81.4%,已经超过了Swin-T。Substituting BN with LN,将BN替换成LN。Batch Normalization(BN)在卷积神经网络中是非常常用的操作了,它可以加速网络的收敛并减少过拟合(但用的不好也是个大坑)。但在Transformer中基本都用的Layer Normalization(LN),因为最开始Transformer是应用在NLP领域的,BN又不适用于NLP相关任务。接着作者将BN全部替换成了LN,发现准确率还有小幅提升达到了81.5%。Separate downsampling layers,单独的下采样层。在ResNet网络中stage2-stage4的下采样都是通过将主分支上3x3的卷积层步距设置成2,捷径分支上1x1的卷积层步距设置成2进行下采样的。但在Swin Transformer中是通过一个单独的Patch Merging实现的。接着作者就为ConvNext网络单独使用了一个下采样层,就是通过一个Laryer Normalization加上一个卷积核大小为2步距为2的卷积层构成。更改后准确率就提升到了82.0%。2.7 ConvNeXt-T 结构图

3. 总结

ConvNeXt的出现证明,并不一定需要Transformer那么复杂的结构,只对原有CNN的技术和参数优化也能达到SOTA,未来CV领域,CNN和Transformer谁主沉浮?

参考:太阳花的小绿豆

本文链接地址:https://www.jiuchutong.com/zhishi/298966.html 转载请保留说明!

上一篇:鲜花商城系统设计与实现(Java+Web+MySQL)(鲜花售卖系统)

下一篇:一文详解vue-cli2.0与vue-cli3.0之间的区别(vue-cli2.0)

  • 小米手机时间不对怎么调(小米手机时间不对怎么校准)

    小米手机时间不对怎么调(小米手机时间不对怎么校准)

  • 怎么查看qq邮箱收到的信息(怎么查看qq邮箱地址)

    怎么查看qq邮箱收到的信息(怎么查看qq邮箱地址)

  • 抖音里添加的表情在哪里找(抖音里添加的表情怎么添加到微信)

    抖音里添加的表情在哪里找(抖音里添加的表情怎么添加到微信)

  • 举报别人会被发现吗(举报别人会发出对大概多长时间封)

    举报别人会被发现吗(举报别人会发出对大概多长时间封)

  • 红米手机相册图标没了(红米手机相册图片放到桌面)

    红米手机相册图标没了(红米手机相册图片放到桌面)

  • 电脑显示器分辨率(电脑显示器分辨率怎么调)

    电脑显示器分辨率(电脑显示器分辨率怎么调)

  • 淘宝号注销了还能找回吗(淘宝号注销了还 能收到信息吗)

    淘宝号注销了还能找回吗(淘宝号注销了还 能收到信息吗)

  • 抖音不在线为什么显示在线(抖音不在线为什么收不到私信)

    抖音不在线为什么显示在线(抖音不在线为什么收不到私信)

  • 华为的ai叫小什么(华为ai叫啥名字)

    华为的ai叫小什么(华为ai叫啥名字)

  • 怎么阻止58同城打电话(怎么阻止58同城给我发短信)

    怎么阻止58同城打电话(怎么阻止58同城给我发短信)

  • ipad微信不能群发消息(ipad微信群消息接收不全)

    ipad微信不能群发消息(ipad微信群消息接收不全)

  • iphone6像素多少万(iphone6像素多少万前置)

    iphone6像素多少万(iphone6像素多少万前置)

  • 微信最近联系人怎么查(微信最近联系人怎么查找)

    微信最近联系人怎么查(微信最近联系人怎么查找)

  • 计算机的运算器主要功能是(计算机的运算器控制器及内存储器统称为)

    计算机的运算器主要功能是(计算机的运算器控制器及内存储器统称为)

  • ipad2018出厂有膜吗(ipad2020出厂带不带膜)

    ipad2018出厂有膜吗(ipad2020出厂带不带膜)

  • 手机动态音乐壁纸怎么设置(设置手机动态壁纸带音乐用什么软件)

    手机动态音乐壁纸怎么设置(设置手机动态壁纸带音乐用什么软件)

  • 怎么把微信签名放中间(怎么把微信签名竖着写)

    怎么把微信签名放中间(怎么把微信签名竖着写)

  • 淘宝商城和淘宝网的区别(淘宝商城和淘宝店铺区别)

    淘宝商城和淘宝网的区别(淘宝商城和淘宝店铺区别)

  • 抖音视频可二次编辑吗(抖音视频可二次推广吗)

    抖音视频可二次编辑吗(抖音视频可二次推广吗)

  • win7改win10(戴尔台式机win7改win10)

    win7改win10(戴尔台式机win7改win10)

  • 美国抖音怎么下载(美国抖音怎么下载安卓)

    美国抖音怎么下载(美国抖音怎么下载安卓)

  • 西瓜视频怎么注销账户(西瓜视频怎么注销不了)

    西瓜视频怎么注销账户(西瓜视频怎么注销不了)

  • 苹果la是什么版本(iphonella是什么版本)

    苹果la是什么版本(iphonella是什么版本)

  • Windows7纯净版系统魔兽争霸3闪退问题的解决方法(win7纯净版系统)

    Windows7纯净版系统魔兽争霸3闪退问题的解决方法(win7纯净版系统)

  • win7电脑中如果文件夹属性没有安全选项怎么办?(win7电脑怎么样)

    win7电脑中如果文件夹属性没有安全选项怎么办?(win7电脑怎么样)

  • 用css画一个csdn程序猿(用css画一个扇形)

    用css画一个csdn程序猿(用css画一个扇形)

  • 公司收到劳务发票怎么申报个税
  • 公允价值下降属于资产吗
  • 企业怎么挑选计提折旧方式方法
  • 房地产企业预售阶段企业所得税
  • 转让房产的单位和个人都需要缴纳契税吗?
  • 企业的定期存款
  • 应交增值税明细科目核算内容
  • 当月确认收入下月开票
  • 商业折扣和现金折扣的区别
  • 计提本月应缴纳增值税
  • 清包工简易征收文件
  • 企业增值税普通发票和增值税专用发票
  • 高新技术企业研发费
  • 增值税发票地址开错了有影响吗
  • 折旧费和摊销费怎么算
  • 购买土地建厂房还要交土地使用费吗
  • 经营性现金净流量是什么意思
  • 开票金额与收入金额有差额可以吗
  • 累计结转是什么意思
  • 设备修理费
  • 未知文件格式怎么打开
  • 鸿蒙系统怎么设置导航键
  • 先征后返的会计分录
  • 如何找回windows密钥
  • 年度汇算清缴收入应该填什么
  • pps是啥文件
  • 截图快捷键ctrl+alt+
  • 记账凭证不见了怎么办
  • 商业零售企业存货非正常损失
  • css盒子如何居中
  • 企业新产品销售收入数据
  • 利用Linux Find命令查找文件方法记录 快速查找文件位置
  • yum命令详解
  • gitpull命令
  • mongodb用法
  • php实现导出带样本的方法
  • 电子商业汇票业务
  • 工资可以当月计提当月发放怎么做账
  • 我们买得起一辆新车吗?英文
  • 金蝶暂存凭证怎样转正常凭证
  • 所有者权益股东权益区别
  • 债券发行时发生的承销费、法律费
  • 用友t3建立新的帐套的流程
  • 财务报表漏报了会影响领票吗
  • 一般纳税人之外还有什么
  • 代收代付的会计分录
  • 公司法人往公司账户打钱怎么能换回来
  • 股东权益是资产吗
  • 企业会计凭证怎么写
  • 进项税转出怎么交税
  • 记账凭证分类
  • 支付结算办法是部门规章吗
  • 资产负债表中的货币资金怎么算
  • 外资企业对应的企业是什么
  • 汽车加油费属于交通费用吗
  • 应纳税额与应纳所得额
  • 银行汇票结算程序有哪些
  • windows pe无法启动怎么办
  • office技术预览版和增强版
  • win8无法连接wifi
  • xp系统分区工具
  • linux常用命令修改
  • dwm22.exe病毒
  • cpqeadm.exe是什么进程 可以关闭吗 cpqeadm进程查询
  • windows设备和打印机
  • xp远程连接win7
  • linux shell find
  • windows8用的人少
  • 在linux操作系统中
  • android系统分区理解及分区目录细解
  • 在js中如何判断数据类型
  • shell中判断文件是否存在
  • unity mobile3d
  • 利用forever和pm2部署node.js项目过程
  • unity3d打包apk
  • 大学奖学金需要什么材料
  • 每年个人所得税2万工资多少
  • 税务核查主要核算内容
  • 电子税务密码输入错误五次怎么办
  • 金税盘读取发票
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设