当前位置:   article > 正文

ConvNeXt网络模型

convnext

ConvNeXt网络模型

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

目录

一、理论知识

二、pytorch实现convnext

正文:

一、理论知识

1.对transformer的所有嫁接全部用在convnext上面
2.去papers with code上找方法中的的transformer的论文,把他们的设计论文全部拿过来自己弄一个
3.可以把convnext对于transformer的模仿用在其他网络模型上面
4.convnext作者谈到:更好的训练的策略和技术使得transfoemer效果更好
5.以swin-transformer的训练方法,训练别的网络
6.作者将resnet50的模块数3.4.6.3改为3.3.9.3
7.更换stem
在这里插入图片描述

组卷积数和输入特征矩阵的通道数一样
在这里插入图片描述
在这里插入图片描述
但是上面的改进使得正确率下降了,之后便模仿transformer增加输入特征矩阵的通道数,增加输入通道数后,正确率提升了。

将模块改变成中间大,两头小的模型(resnet就是两头大,中间小的瓶颈结构)
在这里插入图片描述
10.,
将depthwise conv上移,把两个11的卷积核移动到第二和第三的位置,之前在第一和第三的位置,这也就实现了,中间粗,两头细,
11.
并且最大卷积核的大小为77的,77卷积核的大小和transformer的窗口大小一样。
12.
把下采样改变成2*2卷积核,步长为2的卷积层
13.
在papers with code的视觉模块中找到使用transformer的论文,寻找使用pytorch写的代码,将transformer替换成convnext
14.
在方法中直接找transformer相关的论文,把transformer替换成convnext
15.把也就是视觉模块中的任务中的所有网络模型,换成convnext,所有图片处理论文中,只要是没有使用到transformer的,全部换成convNEXt。
16.
后面有时间再做transformer出来图片分类,识别等的任务
在这里插入图片描述
在这里插入图片描述

二、pytorch实现convnext

ConvNeXt自己重写了LayerNorm方法,pytorch官方的代码默认是从最后一个维度进开始做normalization。但是ConvNeXt是对channels维度进行normalization处理的。如果channels维度是放在最后面的,就可以直接使用官方的normalization代码,但是如果channels维度不是放在最后的话,就不能直接去使用了。
2.
在这里插入图片描述
3.
在这里插入图片描述
4.
在这里插入图片描述
5.
下面的代码实现的是图中1*1的卷积层
在这里插入图片描述
在这里插入图片描述
.6.
layer scale是通过gamma实现的
在这里插入图片描述
它的元素个数是和输入特征矩阵的channels相同的
在这里插入图片描述
7.

在这里插入图片描述
8.
调整通道顺序,把channels调整到最后面去。当channels在在最后时,就可以直接使用我们搭建的norm层了

在这里插入图片描述
默认搭建的norm层是channels_last格式
在这里插入图片描述

对每个通道的数据进行缩放
在这里插入图片描述
10.
还原通道顺序
在这里插入图片描述
11.
在这里插入图片描述
在这里插入图片描述
12.
在这里插入图片描述
13.
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
14.

保存每一个stage保存的block
在这里插入图片描述
15.
初始值是0,最终值是我们传入的drop_path_rate,总共有sum(depths)个数,也就是把depths相加。
在这里插入图片描述
这里的depths对应的是每一个block构建的次数,求和就是对所有的block求和。
在这里插入图片描述

cur是坐标
在这里插入图片描述
17.

在这里插入图片描述
在这里插入图片描述
18.
每个stage中的block都是通过之前定义好的Block类去创建一个新的block对象,然后再添加进去。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
21.
在这里插入图片描述
22.
在这里插入图片描述
在这里插入图片描述
23.
在这里插入图片描述

最后的全连接层,num_classes:需要分类的个数
在这里插入图片描述
25.
在这里插入图片描述

在这里插入图片描述
26.
i=1时
在这里插入图片描述

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

完成了下图的部分
在这里插入图片描述
在这里插入图片描述
28.
在倒数第一个和倒数第二个维度上求均值,其实就是H,W维度。其实就是在做global average pooling的操作,操作后就变成了N,C 格式了

在这里插入图片描述
最后再经过norm的处理,返回之后就是下面的x
在这里插入图片描述
在这里插入图片描述
29.
在这里插入图片描述
30.
在这里插入图片描述
在这里插入图片描述
31.
根据自己的数据集图片的大小自己设置
在这里插入图片描述
32.

在这里插入图片描述
33.
目录地址需要自己修改
在这里插入图片描述

在这里插入图片描述
35.
预训练权重名称在这里插入图片描述
在这里插入图片描述

default = False 训练所有的权重
default = True 冻结除全连接层的所有权重,之后的训练只会训练全连接层的权重

在这里插入图片描述

导入的模型要和训练的模型保持一致
在这里插入图片描述

你需要预测的图片的存储位置,这个图片可以是随便的一张图片,但是图片的size要和代码中的保持一致

在这里插入图片描述
39.
在预测时,会自动载入正确率最高的模型权重
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/419425
推荐阅读
相关标签
  

闽ICP备14008679号