0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

利用Transformer和CNN 各自的优势以获得更好的分割性能

jf_pmFSk4VX 来源:GiantPandaCV 作者:GiantPandaCV 2022-11-05 11:38 次阅读

概述

在这篇论文中,提出了一种新的医学图像分割混合架构:PHTrans,它在主要构建块中并行混合 Transformer 和 CNN,分别从全局和局部特征中生成层次表示并自适应聚合它们,旨在充分利用 Transformer 和 CNN 各自的优势以获得更好的分割性能。

具体来说,PHTrans 沿用 U 形设计,在深层引入并行混合模块,其中卷积块和修改后的 3D Swin Transformer 块分别学习局部特征和全局依赖关系,然后使用 sequence-to-volume 操作统一输出维度以实现特征聚合,操作的具体细节在这篇阅读笔记的后面详细介绍。最后在 BCV 和 ACDC 数据集上验证了其有效性,并用 nnUNet 包预处理 BCV 和 ACDC 数据集。

为什么要并行

下图的 (a)~(d) 是几种流行的基于 Transformer 和 CNN 的混合架构,既将 Transformer 添加到以 CNN 为 backbone 的模型中,或替换部分组件。其中 (c) 与 (b) 的区别是通过 Transformer 桥接从编码器到解码器的所有阶段,而不仅仅是相邻的阶段,这就捕获了多尺度全局依赖。(d) 表示将 Transformer 和 CNN 交织成一个混合模型,其中卷积编码精确的空间信息,而自注意力机制捕获全局上下文信息。

图 (e) 表示二者的并行。在串行组合中,卷积和自注意力机制无法贯穿整个网络架构,难以连续建模局部和全局表示,因此这篇论文里认为并行可以充分发挥它们的潜力。

9e278bca-5c48-11ed-a3b6-dac502259ad0.png

PHTrans 架构 overview

首先,我们从总体上分析一下 PHTrans 架构,然后在下一部分看它的细节。如下图 (b),其主要构建块由 CNN 和 Swin Transformer 组成,以同时聚合全局和局部表示。图 (a) 依旧遵循的 U 形架构设计,在浅层只是普通的卷积块,在深层引入了 sequence-to-volume 操作来实现 Swin Transformer 和 CNN 在一个块中的并行组合。

我们上一篇解析的 UNeXT 也是只在深层使用 TokMLP 的,看来浅层的卷积还是必要的。也就是说,与串行混合架构相比,PHTrans 可以独立并行构建分层的局部和全局表示,并在每个阶段融合它们。

进一步解释下为什么输入的第一层也就是 U 型架构的浅层没有用 Trans&Conv Block?因为自注意力机制的计算复杂度高,Transformer 无法直接接收以像素为标记的输入。在论文的实现中,使用了级联卷积块和下采样操作来减小空间大小,逐步提取高分辨率的低级特征以获得精细的空间信息。类似地,这些纯卷积模块也部署在解码器的对应层,并通过上采样恢复原始维度。

9e4cd718-5c48-11ed-a3b6-dac502259ad0.png

我们仔细看下 PHTrans 的编码器,对于 H×W×D 的输入 volume(3D 医学图像),其中 H、W 和 D 分别表示高度、宽度和深度,首先使用几个纯卷积模块得到的 volume,其中 N1 和 C 表示卷积块和通道的数量。然后输入到 Trans&Conv Block 重复 N2 次。对于解码器同样基于纯卷积模块和并行混合模块构建,并通过跳跃连接和加法操作融合来自编码器的语义信息。此外,在训练期间在解码器的每个阶段都使用深度监督机制,产生总共 N1 + N2 个输出,其中应用了由交叉熵和 DICE 的联合损失。

深度监督(deep supervision)又称为中继监督(intermediate supervision),其实就是网络的中间部分新添加了额外的 Loss,跟多任务是有区别的,多任务有不同的 GT 计算不同的 Loss,而深度监督的 GT 都是同一个 GT,不同位置的 Loss 按系数求和。深度监督的目的是为了浅层能够得到更加充分的训练,避免梯度消失(有待研究)。在提供的 Github 代码里,提到的超参数有 N1、N2、M1 和 M2,M1 和M2 是并行混合模块中 Swin Transformer 块和卷积块的数量。

Trans&Conv block

Trans&Conv block 的设计是我们最感兴趣的地方。缩小比例的特征图分别输入 Swin Transformer (ST) 块和卷积 (Conv) 块,分别在 ST 块的开头和结尾引入 Volume-to-Sequence (V2S) 和 Sequence-to-Volume (S2V) 操作来实现 volume 和 sequence 的变换,使其与 Conv 块产生的输出兼容。具体来说,V2S 用于将整个 3D 图像重塑为具有窗口大小的 3D patches 序列。S2V 是相反的操作。

如上一节的图 (b) 所示,一个 ST 块由一个基于移位窗口的多头自注意力 (MSA) 模块组成,然后是一个 2 层 MLP。在每个 MSA 模块和每个 MLP 之前应用一个 LayerNorm (LN) 层,在每个模块之后应用一个残差连接。在 M1 个连续的 ST 块中,W-MSA 和 SW-MSA 交替嵌入到 ST 块中,W-MSA能够降低计算复杂度,但是不重合的窗口之间缺乏信息交流,这样其实就失去了 Transformer 利用 Self-Attention 从全局构建关系的能力,于是用 SW-MSA 来跨窗口进行信息交流(跨窗口连接),同时保持非重叠窗口的高效计算。

对于医学图像分割,需要将标准 ST 块修改为 3D 版本,该版本在局部 3D 窗口内计算自注意力,这些窗口被安排为以非重叠方式均匀划分体积。计算方法是下面这样的:假设 x ∈ H×W×S×C 是 ST 块的输入,首先将其 reshape 为 N×L×C,其中 N 和 L = Wh × Ww × Ws 分别表示 3D 窗口的数量和维度。每个 head 中的 self-attention 计算如下:

9e6be52c-5c48-11ed-a3b6-dac502259ad0.png

Q, K, V ∈ L×d 是查询、键和值矩阵,d 是查询/键维度,B ∈ L×L 是相对位置偏差。B 的取值在论文和代码里都可以找到,这里我们就不仔细探究了。(b) 中的卷积块以 3 × 3 × 3 卷积层、GELU 非线性和实例归一化层为单位重复 M2 次。最后,通过加法运算融合 ST 块和 Conv 块的输出。编码器中 Trans&Conv 块的计算过程(抽象成并行)可以总结如下:

9e7bb790-5c48-11ed-a3b6-dac502259ad0.png

xi−1 是编码器第 i−1 阶段的下采样结果。值得注意的是,在解码器中,除了跳跃连接之外,还通过加法操作来补充来自编码器的上下文信息(图 (a) 中的圈 C 和 圈 +)。因此,解码器中的 Trans&Conv 块计算(抽象成并行)可以表示为:

9e8a4850-5c48-11ed-a3b6-dac502259ad0.png

实验

实验在 BCV 和 ACDC 数据集上,BCV 分割腹部 CT 多个目标,ACDC 是 MRI 心脏分割,标记了左心室 (LV)、右心室 (RV) 和心肌 (MYO)。在 BCV 上和其他 SOTA 方法的比较如下表:

9f024b8e-5c48-11ed-a3b6-dac502259ad0.png

在 ACDC 上和其他 SOTA 方法的比较如 Table 2 所示,Table 3 中的参数量和 FLOPS 和其他方法比也没有很夸张,参数量甚至和 nnU-Net 相近。

9f1e4f3c-5c48-11ed-a3b6-dac502259ad0.png

可视化分割结果如下图,我们只定位蓝色肝脏的分割效果,箭头位置表明分割的效果 PHTrans 是更优秀的。

9f380dd2-5c48-11ed-a3b6-dac502259ad0.png

总结

PHTrans 也许为更多下游医学图像任务开发了新的可能性。在 PHTrans 中,都是普通的 Swin Transformer 和简单的 CNN 块,这表明性能提升源于并行混合架构设计,而不是 Transformer 和 CNN 块。此外,PHTrans 没有经过预训练,因为到目前为止还没有足够大的通用 3D 医学图像数据集。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据集
    +关注

    关注

    4

    文章

    1187

    浏览量

    24468
  • cnn
    cnn
    +关注

    关注

    3

    文章

    333

    浏览量

    21602
  • Transformer
    +关注

    关注

    0

    文章

    132

    浏览量

    5916

原文标题:PHTrans 并行聚合全局和局部表示来进行医学图像分割

文章出处:【微信号:GiantPandaCV,微信公众号:GiantPandaCV】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    手把手教你使用LabVIEW实现Mask R-CNN图像实例分割(含源码)

    使用LabVIEW实现Mask R-CNN图像实例分割
    的头像 发表于 03-21 13:39 1659次阅读
    手把手教你使用LabVIEW实现Mask R-<b class='flag-5'>CNN</b>图像实例<b class='flag-5'>分割</b>(含源码)

    如何更改ABBYY PDF Transformer+界面语言

    在安装ABBYY PDF Transformer+时会让您选择界面语言。此语言将用于所有消息、对话框、按钮和菜单项。在特殊情况下,您可能需要在安装完成后更改界面语言适应需求,方法其实很简单,本文
    发表于 10-11 16:13

    如何利用PyTorch API构建CNN?

    重要组成部分称为最大池层。这有助于我们减少功能部件的数量,即使功能锐化以使我们的CNN性能更好。  对于所有卷积层,我们都应用RELU激活函数。  在将卷积层映射到输出时,我们需要使用线性层。因此
    发表于 07-16 18:13

    如何利用卷积神经网络去更好地控制巡线智能车呢

    巡线智能车控制中的CNN网络有何应用?嵌入式单片机中的神经网络该怎样去使用?如何利用卷积神经网络去更好地控制巡线智能车呢?
    发表于 12-21 07:47

    基于MLP的快速医学图像分割网络UNeXt相关资料分享

    主要关注的地方。最终,UNeXt 将参数数量减少了 72倍,计算复杂度降低了 68 倍,推理速度提高了 10 倍,同时还获得更好分割性能,如下图所示。  UNeXt 架构  UNe
    发表于 09-23 14:53

    有没有人可以解释如何设置RFO寄存器获得更好的范围?

    你好!有没有人可以解释我们如何设置这个RFO正常电平定义寄存器获得更好的范围?谢谢你。
    发表于 12-07 09:03

    介绍一种用于密集预测的mlp架构CycleMLP

    ,CycleMLP的性能明显优于ResNet和PVT。与Swin Transformer相比,CycleMLP可以获得与Swin Transformer相当甚至
    发表于 02-09 16:28

    局部聚类分析的FCN-CNN云图分割方法

    空气中的尘埃、污染物及气溶胶粒子的存在严重影响了大气预测的有效性,毫米波雷达云图的有效分割成为了解决这一问题的关键,本文提出了一种基于超像素分析的全卷积神经网路FCN和深度卷积神经网络CNN
    发表于 12-15 16:44 0次下载

    如何在Vivado中应用物理优化获得更好的设计性能

    物理优化是Vivado实现流程中更快时序收敛的重要组成部分。 了解如何在Vivado中应用此功能以交换运行时以获得更好的设计性能
    的头像 发表于 11-23 06:06 3826次阅读

    视觉新范式Transformer之ViT的成功

      这是一篇来自谷歌大脑的paper。这篇paper的主要成果是用Transformer[1]取代CNN,并证明了CNN不是必需的,甚至在大规模数据集预训练的基础上在一些benchmarks做到
    的头像 发表于 02-24 09:31 6588次阅读
    视觉新范式<b class='flag-5'>Transformer</b>之ViT的成功

    一种基于Mask R-CNN的人脸检测及分割方法

    针对现有主流的人脸检测算法不具备像素级分割,从而存在人脸特征具有噪声及检测精度不理想的问题提出了一种基于 Mask r-CNN的人脸检测及分割方法。通过 Res Net-l01结合RPN网络生成候选
    发表于 04-01 10:42 5次下载
    一种基于Mask R-<b class='flag-5'>CNN</b>的人脸检测及<b class='flag-5'>分割</b>方法

    如何使用Transformer来做物体检测?

    )是Facebook研究团队巧妙地利用Transformer 架构开发的一个目标检测模型。在这篇文章中,我将通过分析DETR架构的内部工作方式来帮助提供一些关于它的含义。下面,我将解释一些结构,但是
    的头像 发表于 04-25 10:45 2433次阅读
    如何使用<b class='flag-5'>Transformer</b>来做物体检测?

    用于实例分割的Mask R-CNN框架

    我们的方法称为 Mask R-CNN,扩展了 Faster RCNN ,方法是在每个感兴趣区域 (RoI) 上添加一个用于预测分割掩码的分支,与用于分类和边界框回归的现有分支并行(图 1)。掩码分支
    的头像 发表于 04-13 10:40 2357次阅读

    普通视觉Transformer(ViT)用于语义分割的能力

    本文探讨了普通视觉Transformer(ViT)用于语义分割的能力,并提出了SegViT。以前基于ViT的分割网络通常从ViT的输出中学习像素级表示。不同的是,本文利用基本的组件注意
    的头像 发表于 10-31 09:57 4279次阅读

    基于 Transformer分割与检测方法

    一篇关于  Transformer-Based 的 Segmentation 的综述,系统地回顾了近些年来基于 Transformer  的分割与检测模型,调研的最新模型
    的头像 发表于 07-05 10:18 623次阅读
    基于 <b class='flag-5'>Transformer</b> 的<b class='flag-5'>分割</b>与检测方法