赞
踩
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出来图片分类,识别等的任务
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.
在预测时,会自动载入正确率最高的模型权重
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。