DPAFNet:一种用于多模式脑肿瘤分割的残差双路径注意力融合卷积神经网络

DPAFNet: A Residual Dual-Path Attention-Fusion Convolutional Neural Network for Multimodal Brain Tumor Segmentation

  • DPAFNet:一种用于多模式脑肿瘤分割的残差双路径注意力融合卷积神经网络
    • 背景
    • 贡献
    • 实验
    • 方法
      • ulti-scale context feature extraction block(多尺度上下文特征提取模块)
      • 3D iterative dilated convolution merging (IDCM) module(3D重复空洞卷积合并模块)
    • 损失函数
    • Thinking

DPAFNet:一种用于多模式脑肿瘤分割的残差双路径注意力融合卷积神经网络

Biomedical Signal Processing and Control 【2023】

背景

早期2D分割,缺乏连续信息,很难提取全局上下文信息,3D卷积更具上下文意识,然而3D方法仍然不准;类别不平衡,对小肿瘤仍然难分割,BraTs2019中肿瘤仅占图像的1.5%,ET仅占WT的11%,1,2,4之间的边界模糊

贡献

从两条路径中提取特征,选择性地融合特征图,最大限度地提取了有意义的语义信息;针对类别不平衡问题提出基于双路径模块和多尺度注意力融合块,该模块聚焦于ET等小目标区域,以缓解类间模糊问题;应用3D迭代扩张卷积合并模块,扩展感受野,提高上下文感知能力

  1. 提出了一种基于编码器-解码器结构的新的3D分割模型,该模型将不同信道的全局和局部信息与MAF模块相结合。
  2. 提出了一种新的由残差连接DP模块和MAF模块组成的三维特征提取块。这两个分支应用不同大小的卷积核来提取特征,并引入残差连接以避免网络退化。提取的特征图在不同尺度上进行融合,以获得更丰富的语义信息。
  3. 为了进一步提高模型的上下文感知能力,引入了一个3D IDCM模块,该模块迭代地将特征图与不同的感受野融合,以更有效地进行上下文学习。该模块有利于密集像素级预测,提高最终分割精度。

实验

BraTs 18/19/20 剪裁为128×128×128体素,并将其输入网络。由于MRI的成像方式、病例和设备的多样性,不同的扫描时间会对MRI产生影响,导致MRI的强度不均匀。为了标准化T1、T2、T1ce和FLAIR序列的强度,使用z评分标准化方法来获得标准尺度下的强度值。z=(xμ)/σ(9),其中x是原始特征的每个像素的强度值,μ是平均强度值,σ是强度值的标准偏差。此外,为了提高模型的学习和泛化能力,使用了多种数据增强方法,包括随机镜像翻转、随机旋转(±10◦ ), 随机强度偏移和随机尺度变换。
在这里插入图片描述
在这里插入图片描述
IDCM的不同空洞率实验
在这里插入图片描述
后处理消融实验,以及各模块消融实验

方法

在这里插入图片描述

ulti-scale context feature extraction block(多尺度上下文特征提取模块)

在这里插入图片描述
(a)残差连接的双分支模块
(b)Pointwise Conv就是1x1x1卷积
MAF module,把DP得到的两个特征图加权融合
通过残差连接的对偶路径卷积获得不同尺度的特征图,然后通过合并注意力模块获得融合特征,如图所示。3。在通道级别,每个特征图都被压缩为分支中的标量。这种压缩强调全局分布的大型对象。然后,为了减轻尺度变化并强调较小的对象,在另一个分支中应用逐点卷积作为局部上下文聚合器,该聚合器利用每个空间位置进行逐点通道交互。通过Sigmoid函数将特征图G+L映射到(0,1)。融合权重ω和1ω位于该区间,这使得网络能够在不同尺度特征S1和S2之间进行加权平均,以实现全局和局部信息的聚合。值得注意的是,在该模块中,通过对集成特征执行信道缩减和信道恢复操作,使用类似瓶颈的结构来减少参数的数量。在该模块中,集成特征、局部通道信息和融合细化特征具有相同的通道和分辨率,可以保留和突出低级视觉信息的细节特征。

3D iterative dilated convolution merging (IDCM) module(3D重复空洞卷积合并模块)

在这里插入图片描述
在分割网络中,通常通过池化、插值等方法进行下采样和上采样,以降低或恢复输入特征图的分辨率,从而达到对输入图像进行特征提取和图像重建的效果。然而,这些操作导致了分割中的问题,例如像素和空间级别的信息丢失、小对象重建的困难等。扩展卷积可以保存内部数据,避免像素的丢失,扩展感受野,获得更丰富的上下文信息,通常用于缓解这些问题。在不同的膨胀率下,膨胀卷积可以满足不同大小对象的分割要求,并注意不同距离的信息。然而,当膨胀率的值较大时,提取特征时会出现网格效应,这将失去上下文信息的连续性,降低像素级任务的分割效果。为了解决这个问题,介绍了一个密集连接的IDCM模块,并将其扩展到3D,如图4所示。该模块提取了编码器最后一层输入的输出特征,其中包含了经过多次特征提取后的语义特征图的更丰富表示。通过不同膨胀率的膨胀卷积将输入特征迭代连接到特征图中,并使用1×1×1卷积将通道数量减少到与输入特征相同,从而融合局部和全局上下文信息,合并多尺度特征,并捕获丰富的全局表示。此外,IDCM模块使用不同膨胀率的膨胀卷积来获得不同尺度的特征,以有效扩展卷积核的感受野,提高模型对不同尺度目标的识别能力。不同尺度特征的迭代叠加可以有效地减少扩张卷积的网格效应,避免像素点的丢失,保留空间层次信息,最终保证分割模型具有更丰富的语义表示

损失函数

generalize dice loss (GDL)
测试时间增强(TTA)作为后处理方法

Thinking

把3DUNet的DoubleConv替换为DP+MAF(多尺度特征加权融合),在瓶颈层加入IDCM(不同尺度特征重复叠加)

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

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

相关文章

【Spring】之IoC与对象存取

未来的几周时间,大概率我会更新一下Spring家族的一些简单知识。而什么是Spring家族,好多同学还不是很清楚,我先来简单介绍一下吧: 所谓Spring家族,它其实就是一个框架,是基于Servlet再次进行封装的内容。为…

VMware——WindowServer2012R2环境安装mysql5.7.14解压版_互为主从(图解版)

目录 一、服务器信息二、192.168.132.35服务器上安装mysql(主)2.1、环境变量配置2.2、安装2.2.1、修改配置文件内容2.2.2、初始化mysql并指定超级用户密码2.2.3、安装mysql服务2.2.4、启动mysql服务2.2.5、登录用户管理及密码修改2.2.6、开启远程访问 三…

C++函数

转载知呼大佬06 - C函数 - 知乎 (zhihu.com) 06 - C函数 本期我们讨论的是 C 中的函数。 函数到底是什么呢,函数就是我们写的代码块,被设计用来执行特定的任务,以后我们学习 class 类的时候,这些块会被称为方法,但是…

windows电脑连接Android和iPhone真机调试

windows电脑连接Android和iPhone真机调试 目前用的是Hbuilder X编辑器,在正常情况下,Android手机需要在 "设置 ----> 更多设置 ----->关于手机 ------> 版本号(手指点击5-7下即可打开开发者模式)"(我的是vivo的…

hosts 配置本地映射不生效

关闭所有科学上网工具!!刷新 DNS 解析缓存:ipconfig /flushdns关闭所有浏览器访问映射地址时,带上端口号

给ORACLE创建一个用新用户并且给部分视图或表查询权限

这里写自定义目录标题 视图或表属于哪个用户查询登录所属账户 打开 cmd输入 sqlplus/nologconn 账号/密码 as sysdba创建用户赋予用户视图权限赋予用户视图权限连接数据库权限 视图或表属于哪个用户查询 表: SELECT * FROM ALL_OBJECTS WHERE OBJECT_TYPETABLE a…

MATLAB | 绘图复刻(十三) | 带NaN图例的地图绘制

有粉丝问我地图绘制如何添加NaN,大概像这样: 或者这样: 直接上干货: 原始绘图 假设我们有这样的一张图地图,注意运行本文代码需要去matlab官网下载Mapping Toolbox工具箱,但是其实原理都是相似的&…

C#的LINQ查询

当使用LINQ(Language Integrated Query)查询时,我们可以在C#中以一种类似于SQL的语法来查询数据。LINQ提供了一种统一的方式来查询各种数据源,如集合、数据库、XML等。 在上述示例中,我们使用LINQ查询来将两个列表根据…

LeetCode8-字符串转换整数(atoi)

目录 1.大神解法2.我的辣鸡解法:3.整数相加的溢出判断(chaGPT代码)4.整数相乘溢出判断(chatGPT代码) 到目前为止比较简单容易理解的一个代码: 参考链接: 🔗:【8. 字符串转换整数 String to Integer (atoi) 【LeetCode 力扣官方题解】-哔哩哔哩】 1.大神解法 累乘和…

mysql redolog

一、什么是redolog日志 redolog又叫重做日志,处于存储引擎层,是innodb特有的日志。主要是为了实现事务的持久性而存在的。事务的持久性:只要提交了事务,出现停机或者崩溃的情况,都能将提交事务的数据修改正常持久化到…

被环境变量虐过一遍获得的启示

Oracle数据库环境存在两个数据库版本12C及19C,在执行一些操作时需要设置对应版本的环境变量 计划登录12C环境,于是按如下方式设置环境变量 export ORACLE_BASE/u01/app/oracle export ORACLE_HOME$ORACLE_HOME/product/12.2.0/dbhome_1 export ORACLE_S…

springboot踩坑一:添加webapp文件夹能访问jsp却找不到静态资源404

参考一下链接解决问题: https://www.xjx100.cn/news/670143.html?actiononClick

人工智能基础_机器学习046_OVR模型多分类器的使用_逻辑回归OVR建模与概率预测---人工智能工作笔记0086

首先我们来看一下什么是OVR分类.我们知道sigmoid函数可以用来进行二分类,那么多分类怎么实现呢?其中一个方法就是使用OVR进行把多分类转换成二分类进行计算. OVR,全称One-vs-Rest,是一种将多分类问题转化为多个二分类子问题的策略。在这种策略中,多分类问题被分解为若干个二…

【JS】Chapter14-深入面向对象

站在巨人的肩膀上 黑马程序员前端JavaScript入门到精通全套视频教程,javascript核心进阶ES6语法、API、js高级等基础知识和实战教程 (十四)深入面向对象 1. 编程思想 1.1 面向过程介绍 面向过程就是分析出解决问题所需要的步骤&#xff0c…

【Python百宝箱】Python测试工具大揭秘:从单元测试到Web自动化

前言 在现代软件开发中,测试是确保代码质量和稳定性的关键步骤。Python作为一门广泛应用的编程语言,拥有丰富的测试工具和库,从单元测试到Web自动化,覆盖了多个测试层面。本文将介绍一系列Python测试工具,帮助开发者选…

计算机毕业设计 基于SpringBoot的社区物资交易互助平台/系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

日志门面slf4j与常用的日志框架Log4j,Logback和Log4j2

slf4j 是众多日志框架接口的集合(俗称日志门面),它不负责具体的日志实现,只在编译时负责寻找合适的日志框架进行绑定,各日志框架通过扩展jar包中的适配器与slf4j建立适配 SLF4J可以和Log4j、Logback、Log4j2、JUL等日志框架配合使用,这里主要…

【C++】泛型编程 ⑩ ( 类模板的运算符重载 - 函数实现 写在类外部的同一个 cpp 代码中 | 类模板 的 外部友元函数二次编译问题 )

文章目录 一、类模板 - 函数声明与函数实现分离1、类模板 外部 实现 构造函数2、类模板 外部 实现 普通函数3、类模板 外部 实现 友元函数( 1 ) 错误示例及分析 - 类模板 的 外部友元函数 二次编译 问题( 2 ) 正确写法 二、代码示例 - 函数声明与函数实现分离1、代码示例2、执行…

go同步锁 sync mutex

goroutine http://127.0.0.1:3999/concurrency/11 go tour 到此 就结束了. 继续 学习 可以 从 以下网站 文档 https://golang.org/doc/ https://golang.org/doc/code https://golang.org/doc/codewalk/functions/ 博客 https://go.dev/blog/ wiki 服务器教程 服务器…

level=warning msg=“failed to retrieve runc version: signal: segmentation fault“

安装docker启动后,发现里面没有runc版本信息 目前看是少了runc组件 那我们安装runc https://github.com/opencontainers/runc/releases/download/v1.1.10/runc.amd64 [rootlocalhost ~]# mv runc.amd64 /usr/bin/runc mv:是否覆盖"/usr/bin/runc&q…