ConvNeXt网络模型

ConvNeXt网络模型

ConvNeXt网络模型_第1张图片
ConvNeXt网络模型_第2张图片

目录

一、理论知识

二、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
ConvNeXt网络模型_第3张图片

组卷积数和输入特征矩阵的通道数一样
ConvNeXt网络模型_第4张图片

但是上面的改进使得正确率下降了,之后便模仿transformer增加输入特征矩阵的通道数,增加输入通道数后,正确率提升了。

将模块改变成中间大,两头小的模型(resnet就是两头大,中间小的瓶颈结构)
ConvNeXt网络模型_第5张图片
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出来图片分类,识别等的任务
ConvNeXt网络模型_第6张图片
ConvNeXt网络模型_第7张图片

二、pytorch实现convnext

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

ConvNeXt网络模型_第16张图片
8.
调整通道顺序,把channels调整到最后面去。当channels在在最后时,就可以直接使用我们搭建的norm层了

ConvNeXt网络模型_第17张图片
默认搭建的norm层是channels_last格式
ConvNeXt网络模型_第18张图片

对每个通道的数据进行缩放
ConvNeXt网络模型_第19张图片
10.
还原通道顺序
ConvNeXt网络模型_第20张图片
11.
ConvNeXt网络模型_第21张图片
ConvNeXt网络模型_第22张图片
12.
ConvNeXt网络模型_第23张图片
13.
ConvNeXt网络模型_第24张图片

ConvNeXt网络模型_第25张图片

ConvNeXt网络模型_第26张图片
14.

保存每一个stage保存的block
ConvNeXt网络模型_第27张图片
15.
初始值是0,最终值是我们传入的drop_path_rate,总共有sum(depths)个数,也就是把depths相加。
ConvNeXt网络模型_第28张图片
这里的depths对应的是每一个block构建的次数,求和就是对所有的block求和。
ConvNeXt网络模型_第29张图片

cur是坐标
ConvNeXt网络模型_第30张图片
17.

ConvNeXt网络模型_第31张图片
ConvNeXt网络模型_第32张图片
18.
每个stage中的block都是通过之前定义好的Block类去创建一个新的block对象,然后再添加进去。
ConvNeXt网络模型_第33张图片

ConvNeXt网络模型_第34张图片

ConvNeXt网络模型_第35张图片
21.
ConvNeXt网络模型_第36张图片
22.
ConvNeXt网络模型_第37张图片
ConvNeXt网络模型_第38张图片
23.
ConvNeXt网络模型_第39张图片

最后的全连接层,num_classes:需要分类的个数
在这里插入图片描述
25.
ConvNeXt网络模型_第40张图片

ConvNeXt网络模型_第41张图片
26.
i=1时
ConvNeXt网络模型_第42张图片

ConvNeXt网络模型_第43张图片
ConvNeXt网络模型_第44张图片

完成了下图的部分
ConvNeXt网络模型_第45张图片
ConvNeXt网络模型_第46张图片
28.
在倒数第一个和倒数第二个维度上求均值,其实就是H,W维度。其实就是在做global average pooling的操作,操作后就变成了N,C 格式了

ConvNeXt网络模型_第47张图片
最后再经过norm的处理,返回之后就是下面的x
ConvNeXt网络模型_第48张图片
ConvNeXt网络模型_第49张图片
29.
ConvNeXt网络模型_第50张图片
30.
在这里插入图片描述
ConvNeXt网络模型_第51张图片
31.
根据自己的数据集图片的大小自己设置
ConvNeXt网络模型_第52张图片
32.

ConvNeXt网络模型_第53张图片
33.
目录地址需要自己修改
ConvNeXt网络模型_第54张图片

ConvNeXt网络模型_第55张图片
35.
预训练权重名称ConvNeXt网络模型_第56张图片
ConvNeXt网络模型_第57张图片

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

ConvNeXt网络模型_第58张图片

导入的模型要和训练的模型保持一致
ConvNeXt网络模型_第59张图片

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

ConvNeXt网络模型_第60张图片
39.
在预测时,会自动载入正确率最高的模型权重
ConvNeXt网络模型_第61张图片

你可能感兴趣的:(Code,Python,网络,transformer,深度学习)