【扒模块】DFF

news2024/9/19 10:57:27

医学图像分割任务

代码

import torch
import torch.nn as nn

from timm.models.layers import DropPath
# 论文:D-Net:具有动态特征融合的动态大核,用于体积医学图像分割(3D图像任务)
# https://arxiv.org/abs/2403.10674
#代码:https://github.com/sotiraslab/DLK
'''
动态特征融合(DFF)模块:
我们提出了一个动态特征融合(DFF)模块,基于全局信息自适应地融合多尺度局部特征(图2)。
它是通过根据其全局信息动态选择重要特征来实现的融合。
具体来说,特征映射F l 1和F l 2沿着通道连接起来。
为了确保以下块可以采用融合特性,
需要一个通道减少机制来将通道的数量减少到原来的通道。
DFF中的信道减少采用1×1×1卷积,而不是简单的全局×信息。
通过级联平均池化(AVGPool)、卷积层(Conv1)和Sigmoid激活来提取这些信息来描述特征的重要性。
主要用于3D医学图像分割任务,同时也适用于所有CV3D图像任务。
'''
class DFF(nn.Module):
    def __init__(self, dim):

        # 调用父类的初始化方法
        super().__init__()

        # 创建一个自适应平均池化层,用于全局特征提取
        self.avg_pool = nn.AdaptiveAvgPool3d(1)

        # 创建一个顺序模型,用于特征的注意力加权
        self.conv_atten = nn.Sequential(
            nn.Conv3d(dim * 2, dim * 2, kernel_size=1, bias=False),    # 3D卷积层,用于特征的线性变换
            nn.Sigmoid()    # Sigmoid激活函数,用于生成注意力权重
        )

        # 3D卷积层,用于特征的降维
        self.conv_redu = nn.Conv3d(dim * 2, dim, kernel_size=1, bias=False)

        # 3D卷积层,用于生成空间注意力
        self.conv1 = nn.Conv3d(dim, 1, kernel_size=1, stride=1, bias=True)

        # 另一个3D卷积层,用于生成空间注意力
        self.conv2 = nn.Conv3d(dim, 1, kernel_size=1, stride=1, bias=True)

        # Sigmoid激活函数,用于生成最终的空间注意力权重
        self.nonlin = nn.Sigmoid()

    def forward(self, x, skip):
        '''
          
        in: self, x, skip
            x: 输入特征图1
            skip: 输入特征图2(跳跃连接)
        out: output
          
        '''
        # 沿通道维度拼接两个特征图
        output = torch.cat([x, skip], dim=1)

        # 使用平均池化和注意力卷积生成全局通道注意力
        att = self.conv_atten(self.avg_pool(output))

        # 将全局通道注意力应用于拼接后的特征图
        output = output * att

        # 使用降维卷积减少特征图的通道数
        output = self.conv_redu(output)

        # 使用两个卷积层分别生成空间注意力
        att = self.conv1(x) + self.conv2(skip)

        # 应用非线性激活函数生成最终的空间注意力权重
        att = self.nonlin(att)

        # 将空间注意力应用于降维后的特征图
        output = output * att

        # 返回最终的输出特征图
        return output
"""HELP:

    DFF 类实现了一个动态特征融合模块,它接收两个输入特征图 x 和 skip,这两个特征图通常是来自编码器的不同层。
    在 __init__ 方法中,定义了模型所需的所有卷积层和激活函数。
    forward 方法定义了模型的前向传播过程:
        1 将两个输入特征图沿通道维度拼接。
        2 使用平均池化和注意力卷积生成全局通道注意力。
        3 将全局通道注意力应用于拼接后的特征图。
        4 使用降维卷积减少特征图的通道数。
        5 使用两个卷积层分别生成空间注意力,并将它们相加。
        6 应用非线性激活函数生成最终的空间注意力权重。
        7 将空间注意力应用于降维后的特征图,得到最终的输出特征图。

""" 

if __name__ == '__main__':
    input1 = torch.randn(1, 32, 16, 64, 64) # x: (B, C, D,H, W) 3D图像维度
    input2 = torch.randn(1, 32, 16, 64, 64)  # x: (B, C, D,H, W) 3D图像维度
    model = DFF(32)
    output = model(input1,input2)
    print("DFF_input size:", input1.size())
    print("DFF_Output size:", output.size())

原文

[2403.10674] D-Net: Dynamic Large Kernel with Dynamic Feature Fusion for Volumetric Medical Image Segmentation (arxiv.org)

代码: sotiraslab/DLK (github.com)

摘要:

Hierarchical transformers have achieved significant success in medical image segmentation due to their large receptive field and capabilities of effectively leveraging global long-range contextual information. Convolutional neural networks (CNNs) can also deliver a large receptive field by using large kernels, enabling them to achieve competitive performance with fewer model parameters. However, CNNs incorporated with large convolutional kernels remain constrained in adaptively capturing multi-scale features from organs with large variations in shape and size due to the employment of fixed-sized kernels. Additionally, they are unable to utilize global contextual information efficiently. To address these limitations, we propose Dynamic Large Kernel (DLK) and Dynamic Feature Fusion (DFF) modules. The DLK module employs multiple large kernels with varying kernel sizes and dilation rates to capture multi-scale features. Subsequently, a dynamic selection mechanism is utilized to adaptively highlight the most important spatial features based on global information. Additionally, the DFF module is proposed to adaptively fuse multi-scale local feature maps based on their global information. We integrate DLK and DFF in a hierarchical transformer architecture to develop a novel architecture, termed D-Net. D-Net is able to effectively utilize a multi-scale large receptive field and adaptively harness global contextual information. Extensive experimental results demonstrate that D-Net outperforms other state-of-the-art models in the two volumetric segmentation tasks, including abdominal multi-organ segmentation and multi-modality brain tumor segmentation. Our code is available at this https URL.

在医学图像分割领域,分层变换器(Hierarchical transformers)因其具有较大的感受野和有效利用全局长距离上下文信息的能力而取得了显著的成功。卷积神经网络(CNNs)也可以通过使用大卷积核来实现大感受野,这使得它们在模型参数较少的情况下也能取得有竞争力的性能。然而,采用大卷积核的CNN在适应性地捕获形状和大小变化较大的器官的多尺度特征方面存在限制,因为它们使用的是固定大小的卷积核。此外,它们也未能有效地利用全局上下文信息。为了解决这些限制,我们提出了动态大核(DLK)和动态特征融合(DFF)模块。DLK模块采用多个具有不同核大小和扩张率的大卷积核来捕获多尺度特征。随后,利用动态选择机制根据全局信息自适应地突出显示最重要的空间特征。此外,DFF模块被提出用于根据全局信息自适应地融合多尺度局部特征图。我们将DLK和DFF集成到分层变换器架构中,开发了一种称为D-Net的新型架构。D-Net能够有效地利用多尺度大感受野并自适应地利用全局上下文信息。广泛的实验结果表明,在包括腹部多器官分割和多模态脑肿瘤分割在内的两项体积分割任务中,D-Net的性能超过了其他最先进的模型。我们的代码可在 https://github.com/sotiraslab/DLK 上获取。
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1961932.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[C#]基于wpf实现的一百多种音色的Midi键盘软件

键盘 音色库 源码地址:https://download.csdn.net/download/FL1623863129/89599322

前端必知必会-html表单的基本使用

文章目录 HTML 表单<form> 元素<input> 元素文本字段<label> 元素单选按钮复选框提交按钮<input> 的 Name 属性总结 HTML 表单 HTML 表单用于收集用户输入。用户输入通常发送到服务器进行处理。 <form> 元素 HTML <form> 元素用于创建 H…

无人机环保行业解决方案-河道自动巡检

搭配大疆机场&#xff0c;智能化巡检 轻量一体化设计 相较于其他市面产品&#xff0c;大疆机场更加小巧&#xff0c;占地面积不足1平方米。 展开状态&#xff1a;长1675 mm&#xff0c;宽895 mm&#xff0c;高530mm&#xff08;不含气象站&#xff09; 闭合状态&#xff1a;…

C++之引用(详解,引用与指针的区别)

目录 1. 引⽤的概念和定义 2. 引⽤的特性 3. 引⽤的使⽤ 4. const引⽤ 5. 指针和引⽤的关系 1. 引⽤的概念和定义 引⽤不是新定义⼀个变量&#xff0c;⽽是给已存在变量取了⼀个别名(相当于是给变量起了个外号)&#xff0c;编译器不会为引⽤变量开辟内存空间&#xff0c;它…

冷月大佬的EVA-GAN: 可扩展的音频生成GAN结构-论文阅读笔记

前言&#xff1a; 最近在调研asr和tts相关的内容&#xff0c;准备开始学习相关的经典工作&#xff0c;为了倒逼自己学进脑子&#xff0c;我尝试将这些看到的一些好的学习笔记分享出来。 萌新学徒&#xff0c;欢迎相关领域的朋友推荐学习路径和经典工作&#xff01;拜谢&#x…

idea 配置 Tomcat

一、状态栏找到 “ Preferences ” 二、 搜索栏输入“application”——>“Application Servers”——>“”号 三、 点击“Tomcat Sever” 四、 选择电脑中Tomcat所在位置——>OK 五、状态栏——>Run——>Edit Configurations 六、 点击&#xff1a;“ ”号 七…

对称密码体制的工作模式及标准解析

目录 1. 对称加密 2. 分组密码工作模式 2.1 ECB 2.2 CBC 2.3 CFB 2.4 OFB 2.5 CTR ​​​​​​​2.6 XTS 3. DES/3DES ​​​​​​​4. AES ​​​​​​​5. SM4 1. 对称加密 对称加密是一种发送方和接收方都使用相同密钥对数据进行加解密的方法。它只提供保密性…

Django的响应对象

【图书介绍】《Django 5企业级Web应用开发实战&#xff08;视频教学版&#xff09;》_django 5企业级web应用开发实战(视频教学版)-CSDN博客 《Django 5企业级Web应用开发实战&#xff08;视频教学版&#xff09;》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com) Django的请…

支持向量机和梯度提升决策树

支持向量机&#xff08;SVM, Support Vector Machine&#xff09; 原理 支持向量机是一种监督学习模型&#xff0c;适用于分类和回归任务。SVM 的目标是找到一个能够最大化类别间间隔的超平面&#xff0c;以便更好地对数据进行分类。对于非线性数据&#xff0c;SVM 通过核技巧…

C语言程序设计17

程序设计17 问题17_1代码17_1结果17_1 问题17_2代码17_2结果17_2 问题17_3代码17_3结果17_3 问题17_1 下列给定程序的功能是 &#xff1a;调用函数 f u n fun fun 将指定源文件中的内容复制到指定的目标文件中&#xff0c;复制成功时函数返回 1 1 1 &#xff0c;失败时返回 …

Brant-2:开启脑信号分析新篇章的基础模型

人工智能咨询培训老师叶梓 转载标明出处 脑信号&#xff0c;包括通过侵入性或非侵入性方式收集的脑电图&#xff08;EEG&#xff09;和立体脑电图&#xff08;SEEG&#xff09;等生物测量信息&#xff0c;为我们理解大脑的生理功能和相关疾病的机制提供了宝贵的洞见。然而脑信号…

vue3+cesium创建地图

1.我这边使用的是cdn引入形式 比较简单的方式 不需要下载依赖 在项目文件的index.html引入 这样cesium就会挂载到window对象上面去了 <!-- 引入cesium-js文件 --><script src"https://cesium.com/downloads/cesiumjs/releases/1.111/Build/Cesium/Cesium.js"…

Java二十三种设计模式-外观模式(9/23)

外观模式&#xff1a;简化复杂系统的统一接口 引言 外观模式&#xff08;Facade Pattern&#xff09;是一种结构型设计模式&#xff0c;它为子系统中的一组接口提供一个统一的高层接口。外观模式定义了一个可以与复杂子系统交互的简化接口&#xff0c;使得子系统更加易于使用…

科研绘图系列:R语言GWAS曼哈顿图(Manhattan plot)

介绍 曼哈顿图(Manhattan Plot)是一种常用于展示全基因组关联研究(Genome-Wide Association Study, GWAS)结果的图形。GWAS是一种研究方法,用于识别整个基因组中与特定疾病或性状相关的遗传变异。 特点: 染色体表示:曼哈顿图通常将每个染色体表示为一个水平条,染色体…

Git 基础操作手册:轻松掌握常用命令

Git 操作完全手册&#xff1a;轻松掌握常用命令 引言一、暂存&#xff1a;git add ✏️二、提交&#xff1a;git commit &#x1f4dd;三、拉取、拉取合并 &#x1f504;四、推送&#xff1a;git push &#x1f310;五、查看状态&#xff1a;git status &#x1f4ca;六、查看历…

第09课 Scratch入门篇:小鸡啄米-自制积木实现

小鸡啄米-自制积木 故事背景&#xff1a; 在上一章的案例中&#xff0c;实现了小鸡啄米的动画&#xff0c;但是发现太多的重复代码&#xff0c;是我们编程的时候代码泰国繁琐&#xff0c;我们可以使用自制积木&#xff0c;将相同的代码提取出来制作成一个新的积木&#xff0c;在…

ESP32CAM人工智能教学17

ESP32CAM人工智能教学17 内网穿透,视频上云 小智一心想让ESP32Cam视频能发送到云端,这样我们在任何地方,都能查看到家里的摄像头了,甚至能控制摄像头的小车了。 内网穿透的技术原理想要让ESP32Cam把视频发送到云端,就必须要做内网穿透。也就是用户的手机(或电脑),可以…

Windows中如何配置Gradle环境变量?

本篇教程,主要介绍,如何在Windows中配置Gradle7.4环境变量 一、下载安装包 安装包下载;gradle-7.4-all.zip 二、解压安装包

Python基础知识笔记---保留字

保留字&#xff0c;也称关键字&#xff0c;是指被编程语言内部定义并保留使用的标识符。 一、保留字概览 二、保留字用途 1. False&#xff1a;表示布尔值假。 2. None&#xff1a;表示空值或无值。 3. True&#xff1a;表示布尔值真。 4. not&#xff1a;布尔逻辑操作符…