【扒模块】DFF

医学图像分割任务

代码

import torch
import torch.nn as nnfrom 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, skipx: 输入特征图1skip: 输入特征图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://xiahunao.cn/news/3281569.html

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

相关文章

嵌入式开发问题总汇

1. 事情经过:有天快下班的时候,我们采购经理找到我,说,生成的bin文件通过软件上传烧录时,烧录就会重启,但是其他的板子就不会。最后他换了一个A厂家的flash芯片,就可以了。但是,B厂…

整箱排柜不返工?用易境通散拼系统就OK

想必困扰散货拼柜小伙伴们一大难题就是,怎么把错乱纷繁的货物有序地整箱排柜,并且要保证集装箱高效利用,运输成本尽量降低。这不仅要求操作者具备卓越的统筹规划能力,更需长期积累的实践经验和敏锐的应变能力。易境通散拼系统可以…

SSM城市垃圾分类管理系统-计算机毕业设计源码44582

摘 要 在当前全球环境问题日益突出的背景下,城市垃圾分类成为推动可持续发展和环境保护的重要举措之一。然而,传统的垃圾处理方式存在效率低下、资源浪费和环境污染等问题。因此,开发一个基于Java编程语言、MySQL数据库和HTML前端技术的高效…

前缀和与差分大总结!!!C++

学了忘忘了学o(╥﹏╥)o 题源acwing 讲解前缀和一维,用于序列二维,用于矩阵 讲解差分什么是差分数组?一维差分数组二维差分数组 题目一:前缀和题目二:子矩阵的和题目三:差分题目四:差分矩阵 讲…

中电金信:金融机构企业级客户中心建设指南

客户中心系统(ECIF​)承担了数字化转型的重要使命,管理和认识客户是内部运营和外部监管的共同需求。更为重要的是,客户数据需要全场景地参与到数字化运营中,几乎所有业务都围绕着客户展开,几乎所有场景都需…

无人机技术已应用至地理测绘,Infortrend存储助力测绘数据

--高扩展保存海量无人机数据,高性能支持快速调取建模,数据安全也有免费的备份功能,实实在在好用的存储设备。

KeePass密码管理工具部署

KeePass密码管理工具部署 安装包下载入口 双击执行,根据提示完成安装: 安装完成后如图:

什么是邮件安全证书?如何获取邮件安全证书?

国内药企要想获得GMP认证,除了需满足FDA对药品的审核标准之外,还明文规定需要使用邮件安全证书(S/MIME证书)与之进行加密邮件沟通。那么什么是邮件安全证书?如何获取邮件安全证书? 什么是邮件安全证书&…

C++ 右值 左值引用

一.什么是左值引用 右值引用 1.左值引用 左值是一个表示数据的表达式(如变量名或解引用的指针),我们可以获取它的地址可以对它赋值。定义时const修饰符后的左值,不能给他赋值,但是可以取它的地址。左值引用就是给左值的引用,给左…

Java扫码点餐系统奶茶店类型堂食配送小程序源码

🥤【奶茶新风尚!扫码点餐系统,堂食配送两不误】🥤 🏠【堂食新体验:一键下单,即享美味】🏠 踏入心仪的奶茶店,不再需要排队等候点单,只需拿起手机&#xff0…

18730 涂色问题

这个问题可以通过动态规划来解决。我们可以定义一个状态dp[i][j],表示前i个牛舍中最后一个牛舍的颜色是j的涂色方案数量。然后我们可以通过状态转移方程来更新dp[i][j]。 状态转移方程如下: dp[i][j] dp[i-1][k] (k ! j) 然后我们需要对所有的dp[i][…

【iOS】—— iOS持久化

iOS持久化 1. 数据持久化的目的2. iOS持久化的方案3. 数据持久化方式的分类内存缓存磁盘缓存 4. 沙盒机制5. 沙盒的目录结构获取应用程序的沙盒路径每次编译代码会生成新的沙盒路径,每次运行获得的沙盒路径都不一样。访问沙盒目录常用C函数介绍沙盒目录介绍 6. 持久…

Tomcat IntelliJ IDEA整合

一、下载及安装Tomcat 下载官网:Apache Tomcat - Welcome! 1.点击红色框中的任意一个版本 2.点击下载 3.解压后放在任意路径(我的是放在D盘) 4.在bin目录下找到startup.bat,点击启动Tomcat 5.如果双击启动后,终端出…

什么是通孔,盲孔,埋孔

通孔:贯穿所有层的孔,容易被逆向破解。 盲孔:表层和内层中间的孔,破解难度加大。 埋孔:内层的孔,破解难度极大。 贯通孔, 浪费了许多宝贵的布线通道,为解决这一矛盾,出…

【综合案例】使用DevEco Studio编写人气卡片

效果展示 知识点 绝对定位 作用:控制组件位置,可以实现层叠效果 特点: 参照 父组件左上角 进行偏移绝对定位后的组件 不再占用自身原有位置 语法:.position(位置对象) 参数:{ x: 水平偏移量 , y: 垂直偏移量} z…

(三)延时任务篇——通过redis的zset数据结构,实现延迟任务实战

前言 在前一篇内容中我们介绍了如何使用redis key过期失效的监控,完成任务延时关闭的功能,同时官方并不支持使用此种方式实现,由于其安全性较低,存在数据丢失的情况。本节内容是对延迟任务的又一实现方案,通过redis z…

多线程上下文切换:详解与优化

多线程上下文切换:详解与优化 一、什么是多线程上下文切换?二、对性能的影响2.1 优点2.2 缺点 三、优化策略 💖The Begin💖点点关注,收藏不迷路💖 一、什么是多线程上下文切换? 多线程上下文切…

使用pfld模型进行表盘读数检测

目录 1. 下载项目和数据集2. 配置环境3. 训练和测试3.1 训练3.2 测试 4. 参考 使用pfld模型对压力表进行读表检测 1. 下载项目和数据集 下载项目: git clone https://github.com/zhouayi/pfld.git下载数据集: wget https://github.com/zhouayi/pfld/r…

钢琴模拟器

文章目录 钢琴模拟器代码结构HTML结构CSS样式JavaScript功能 源码效果图 钢琴模拟器 代码结构 HTML结构 <html>: HTML文档的根元素。 <head>: 包含文档的元数据。 <base>: 指定相对URL的基准。 <title>: 指定页面的标题。 <style>: 包含嵌入的…

Linux中进程间通信和理解管道

管道文件为内存及文件&#xff0c;没有名称&#xff08;匿名管道&#xff09; 如何让两个进程看到同一个管道文件&#xff1f; 通过fork创建子进程完成。 匿名管道可以用于父子进程之间的通信。 匿名管道是一个固定大小的缓冲区&#xff0c;写端写满后就会阻塞&#xff0c;…