当前位置: 首页 > news >正文

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

【语义分割|代码解析】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


http://www.mrgr.cn/news/63941.html

相关文章:

  • qt QDialog详解
  • 苍穹外卖-day01
  • 第十单元历年真题整理
  • 2024年10月文章一览
  • Installshield 总是跳出 Activation 激活对话框,而且创建项目失败
  • 【急救】——心肺复苏和AED使用以及海姆立克法
  • 学生党百元预算如何选到高性价比头戴耳机?四款百元热门耳机推荐
  • 国密SM2 非对称加解密前后端工具
  • 在 openEuler 22.03 服务器上搭建 web 服务教程
  • 100种算法【Python版】第34篇——PageRank算法
  • 构建高效信息学科平台:Spring Boot实践
  • 小区搜索和SSB简介
  • 华为机试HJ17 坐标移动
  • 基于java+SpringBoot+Vue的美容院管理系统设计与实现
  • 【华为HCIP实战课程三十】中间到中间系统协议IS-IS路由渗透及TAG标识详解,网络工程师
  • 【第几小】
  • 华为 HCIP-Datacom H12-821 题库 (40)
  • (undone) MIT6.S081 2023 一个月速通 (Day1: 了解 xv6 结构) (TODO: fs.img 生成方式不清楚)
  • ‌5G SSB(同步信号块)位于物理层‌
  • 微模型开发迫在眉睫
  • 职场中记住对方的名字很重要
  • 【星闪EBM-H63开发板】小熊派的开发板实物
  • 李红《复变函数与积分变换》第五版课后习题答案PDF
  • Linux中的rm命令详解
  • 【专有网络VPC】IPv4网关
  • 探索 Move 编程语言:智能合约开发的新纪元