您的位置:首页 > 文旅 > 美景 > 最新经济新闻_web服务器软件_百度手机卫士_百度收录提交入口地址

最新经济新闻_web服务器软件_百度手机卫士_百度收录提交入口地址

2024/12/21 22:50:00 来源:https://blog.csdn.net/gaoxiaoxiao1209/article/details/143376335  浏览:    关键词:最新经济新闻_web服务器软件_百度手机卫士_百度收录提交入口地址
最新经济新闻_web服务器软件_百度手机卫士_百度收录提交入口地址

【语义分割|代码解析】CMTFNet-2: CNN and Multiscale Transformer Fusion Network 用于遥感图像分割!

【语义分割|代码解析】CMTFNet-2: CNN and Multiscale Transformer Fusion Network 用于遥感图像分割!


文章目录

  • 【语义分割|代码解析】CMTFNet-2: CNN and Multiscale Transformer Fusion Network 用于遥感图像分割!
  • 前言
    • 1. 定义 `SeparableConvBNReLU` 类
    • 2. 定义基础的分离卷积模块 `SeparableConvBN`
    • 3. 定义基础的分离卷积模块 `SeparableConv`
    • 总结


欢迎宝子们点赞、关注、收藏!欢迎宝子们批评指正!
祝所有的硕博生都能遇到好的导师!好的审稿人!好的同门!顺利毕业!

大多数高校硕博生毕业要求需要参加学术会议,发表EI或者SCI检索的学术论文会议论文:
可访问艾思科蓝官网,浏览即将召开的学术会议列表。会议入口:https://ais.cn/u/mmmiUz

论文地址:https://ieeexplore.ieee.org/document/10247595

前言

在这里插入图片描述
这段代码实现了三种分离卷积类,分别为 SeparableConvBNReLUSeparableConvBNSeparableConv。这些类的核心是分离卷积的应用,它通过深度卷积和逐点卷积的组合来减少参数量和计算量。以下是逐行解释:

1. 定义 SeparableConvBNReLU

class SeparableConvBNReLU(nn.Sequential):def __init__(self, in_channels, out_channels, kernel_size=3, stride=1, dilation=1,norm_layer=nn.BatchNorm2d):
  • 定义 SeparableConvBNReLU 类,继承自 nn.Sequential,包含深度卷积、逐点卷积、批归一化和激活函数。
  • in_channelsout_channels:输入和输出的通道数。
  • kernel_size:卷积核大小,默认为 3。
  • stride:卷积步幅,默认为 1。
  • dilation:卷积扩张率,控制卷积核的膨胀,默认为 1。
  • norm_layer:归一化层类型,默认为 nn.BatchNorm2d
        super(SeparableConvBNReLU, self).__init__(nn.Conv2d(in_channels, in_channels, kernel_size, stride=stride, dilation=dilation,padding=((stride - 1) + dilation * (kernel_size - 1)) // 2,groups=in_channels, bias=False),
  • nn.Conv2d:实现深度卷积,通过设置 groups=in_channels 使每个输入通道与相应的输出通道独立卷积。
  • padding:通过公式 ((stride - 1) + dilation * (kernel_size - 1)) // 2 计算,保持输出尺寸不变。
            norm_layer(in_channels),nn.Conv2d(in_channels, out_channels, kernel_size=1, bias=False),
  • norm_layer(in_channels):对深度卷积的输出进行批归一化。
  • nn.Conv2d(in_channels, out_channels, kernel_size=1, bias=False):逐点卷积(1x1卷积),整合深度卷积的结果,改变通道数。
            norm_layer(out_channels),nn.ReLU6())
  • norm_layer(out_channels):对逐点卷积的输出进行批归一化。
  • nn.ReLU6():ReLU6 激活函数,将输出值限制在 0 和 6 之间,适合移动端模型。

2. 定义基础的分离卷积模块 SeparableConvBN

class SeparableConvBN(nn.Sequential):def __init__(self, in_channels, out_channels, kernel_size=3, stride=1, dilation=1,norm_layer=nn.BatchNorm2d):
  • SeparableConvBN 类的定义与 SeparableConvBNReLU 类似,但不包含激活函数。
        super(SeparableConvBN, self).__init__(nn.Conv2d(in_channels, in_channels, kernel_size, stride=stride, dilation=dilation,padding=((stride - 1) + dilation * (kernel_size - 1)) // 2,groups=in_channels, bias=False),
  • 深度卷积的设置与 SeparableConvBNReLU 类相同。
            nn.Conv2d(in_channels, out_channels, kernel_size=1, bias=False),norm_layer(out_channels),)
  • 逐点卷积层用于调整输出通道数,接批归一化,作为模块的最后一层。

3. 定义基础的分离卷积模块 SeparableConv

class SeparableConv(nn.Sequential):def __init__(self, in_channels, out_channels, kernel_size=3, stride=1, dilation=1):
  • 定义 SeparableConv 类,包含深度卷积和逐点卷积,但不包含批归一化和激活函数。
        super(SeparableConv, self).__init__(nn.Conv2d(in_channels, in_channels, kernel_size, stride=stride, dilation=dilation,padding=((stride - 1) + dilation * (kernel_size - 1)) // 2,groups=in_channels, bias=False),nn.Conv2d(in_channels, out_channels, kernel_size=1, bias=False))
  • 仅包括深度卷积和逐点卷积,用于需要较低计算量且无需额外归一化的情况。

总结

  • SeparableConvBNReLU:包含深度卷积、逐点卷积、批归一化和 ReLU6 激活函数。
  • SeparableConvBN:包含深度卷积、逐点卷积和批归一化,无激活函数。
  • SeparableConv:包含深度卷积和逐点卷积,适合无需批归一化和激活的场景。

这些模块在 CMTFNet 中用于高效特征提取,适合处理高分辨率遥感图像的数据量较大且计算成本高的问题。

欢迎宝子们点赞、关注、收藏!欢迎宝子们批评指正!
祝所有的硕博生都能遇到好的导师!好的审稿人!好的同门!顺利毕业!

大多数高校硕博生毕业要求需要参加学术会议,发表EI或者SCI检索的学术论文会议论文:
可访问艾思科蓝官网,浏览即将召开的学术会议列表。会议入口:https://ais.cn/u/mmmiUz

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com