赞
踩
主要工程文件为这5个
分别作用为:
代码框架由3部分组成,encode,decode和decode中将图像还原成语义分割预测图
整体思路是这样的,decode一共分为4个阶段
主要用空的数组来保存每一个阶段的输出值,与DCNN在每一个阶段通过RAM进行连接
在class TransResNetV2(nn.Module)函数中进行相应的具体编写
相应的RAM操作示意图
An和Sn分别表示第n阶段主编码器和辅助编码器的输出
一共组成分为4部分,将每一层都进行相应的整合,最后放在数组里面
将读入的数据进行打平操作
embeddings(trans_x)
这部分操作的一般情况下的Swin transformer一样,同样满足(2,2,6,2)的层数结构,只不过是,加入了相应的残差结构,经过了扁平化操作后的数据类型为[12, 4096, 96]
具体的transformer操作在这部分进行
在这个函数中主要是transformer块和SIM的残差组合
在这步之后,x就可以就是组成的tranform块输出的格式,其中是由shift_size来进行判断是W-MSA,还是SW-MSA,来进行的窗口移动,还是就单纯的结构的划分
shift_size=0 if (i % 2 == 0) else window_size // 2, # 判断是不是SW_MSA
起了决定性的判断作用
这段代码进行执行4次,将每次执行的结果进行保存
if (i_layer < self.num_layers - 1):
trans_x = self.Down_features[i_layer](trans_x)
在每一个Swin transformer阶段都进行了下采样,除了最后一个阶段
结构示意图
整体的代码逻辑都是按照这个思路来的,来进行的整合和结合
首先进行的是root函数,主打的是一个对图片进行预先处理
对图片进行相应的变形,主要还是三步走的对策,卷积,归一,relu。进行DCNN卷积网络时基本都是这样进行的
将这两个归为一个操作,body里面是几个卷积的模块config.resnet.num_layers = (3, 4, 6, 3)组成的,重复的次数由设定好的值来进行重复
PreActBottleneck(nn.Module) 里面的值就是很单纯的DCNN的卷积网络的堆积
在这里DCN加了一个, DeformConv2d,这个函数是自己编写的,一个可变形的卷积操作,其实他本质上和普通的卷积操作一样
后面也是相同的操作,通过RAM模块将相应的结果组合在一起
输入分为了主编码器和辅助编码器,总共的结合组成为3种,将不同变化的进行拼接
相应参数:
输出参数值主要分为两类:
将这两个数据进行带入Encode,进行解码,可以逐步还原成原始图像
代码主要分为两步来实现:
skip是每个特征层的进过RAM后的保存数据,所有的融合卷积操作在block中完成
在连接阶段主要是conv1和conv2,这两个函数, 进行上采样来保存维度一致,使他可以cat在一起 conv3和conv4在连接完成后,进行相应的上采样环节来使图像还原成原来的[n, 6, 256, 256]
这部分代码将这里独立出去了
在这里x的输入参数应该是(N,16,256,256)
在进行了一次卷积和上采用后,就恢复成了原始图像
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。