点击下方“深度学习爱好者”,选择加"星标"或“置顶”
论文信息
题目:EMF-former: An Efficient and Memory-Friendly Transformer for Medical Image Segmentation
EMF-former:一种用于医学图像分割的高效且内存友好的Transformer
作者:Zhaoquan Hao, Hongyan Quan, and Yinbin Lu
论文创新点
- 深度可分离混洗卷积模块(DSPConv):作者提出了一个新颖的卷积模块,称为DSPConv,它通过结合深度可分离卷积(DWConv)、通道混洗和逐点卷积(PWConv)来减少卷积操作中的参数数量。这种设计不仅降低了模型的计算复杂度,还保证了不同通道间信息的交互,从而在减少参数的同时保持了特征提取的准确性。
- 向量聚合注意力(VAA):为了降低自注意力机制中的计算复杂度,作者引入了一种高效的向量聚合注意力机制。VAA通过将两个向量广播后的元素级乘法替代传统的矩阵乘法,再通过一个全连接层来计算注意力分数,显著降低了计算复杂度,同时保持了全局依赖性的捕捉能力。
- 串行多头注意力模块(S-MHA):针对多头注意力中存在的特征冗余问题,作者设计了一种串行多头注意力模块。S-MHA通过串行计算注意力,并且在计算过程中忽略某些头部,从而减少了内存使用量和计算冗余。这种方法不仅节省了计算资源,还鼓励了模型在不同头部之间学习更丰富的特征表示。
摘要
医学图像分割对于计算机辅助诊断具有重要意义。在这项任务中,基于卷积神经网络(CNNs)的方法在提取局部特征方面表现出色。然而,它们无法捕获全局依赖性,这对于医学图像至关重要。另一方面,基于Transformer的方法可以通过自注意力建立全局依赖性,为局部卷积提供补充。然而,普通Transformer中的自注意力的昂贵矩阵乘法和内存使用量仍然是一个瓶颈。在这项工作中,我们提出了一个名为EMF-former的分割模型。通过结合DWConv、通道混洗和PWConv,我们设计了一个深度可分离混洗卷积模块(DSPConv),以减少卷积的参数数量。此外,我们采用了一种高效的向量聚合注意力(VAA),用元素级乘法替换了两个向量广播后的键值交互,以降低计算复杂性。此外,我们用串行多头注意力模块(S-MHA)替换了并行多头注意力模块,以减少多头注意力中的内存使用量和特征冗余。结合上述模块,EMF-former能够在保持分割精度的同时,以更少的参数数量、更低的计算复杂性和更低的内存使用量高效执行医学图像分割。我们在ACDC和Hippocampus数据集上进行了实验评估,分别达到了80.5%和78.8%的mIOU值。关键词
Transformer · 轻量级 · 医学图像分割2 方法
2.1 DSPConv模块
在这项工作中,我们提出了一个名为DSPConv的卷积模块,通过结合DWConv、通道混洗和PWConv。这个卷积模块旨在减少卷积操作中的参数数量和特征冗余,同时确保准确的特征提取。受到Chen等人[6]的启发,我们将自然图像领域的方法应用于医学图像领域,并尝试改进这种方法,选择性地仅对特征图中的一部分通道应用DWConv。与常规Conv相比,DSPConv的参数更少,并且可以通过通道混洗和PWConv确保不同通道之间的信息交换。具体来说,所提出的DSPConv模块如图2(b3)所示。在获得输出O ∈ RH×W ×C1的过程中,首先,我们的DSPConv模块使用核大小为K的DWConv对第一个1/4的通道C1进行操作。此外,为了确保不同通道之间的信息交互,我们采用了通道混洗,在DWConv卷积操作后混洗通道,并在剩余的3/4通道C1上执行PWConv以促进信息交换。因此,我们的DSPConv所需的参数数量为这比常规Conv的要少。此外,随着输入通道大小c的增加,总数的差异变得更加明显。通过实施这种方法,我们可以在实现轻量级结果的同时减少特征冗余。图2(b2)中所示的DSPConv模块用于DSPConv Stem,该模块可以将特征图下采样4倍。另一个是在DSPConv Merge中使用的模块,如图2(b1)所示,其中特征图可以下采样2倍。2.2 向量聚合注意力
对于注意力计算,Q、K、V∈ RN×d分别表示查询、键和值矩阵(N = H × W,其中H和W分别是特征图的高度和宽度)。注意力函数将每个查询转换为值的加权和,然后乘以V矩阵以获得注意力分数。这个过程需要在Q、K、V之间进行矩阵乘法,它们都有维度RN×d,并且结果的复杂度为O(N^2d),如下所示:为了降低计算复杂度,在这项工作中,我们引入了一种高效的向量聚合注意力(VAA),受到Shaker等人[23]和Lin等人[16]提出的方法的启发,如图2(c)所示。我们用两个广播向量的元素级乘法替换了Q和K的矩阵乘法。此外,我们用全连接层替换了键值交互。这种方法不仅能够计算全局注意力,而且与自注意力相比,还降低了计算复杂度。具体来说,在单个头内使用线性层生成Q和K,其中Q和K都是∈ RN×d,N代表令牌的数量,d可以被解释为每个令牌的长度。我们使用两个可学习的向量,Wq ∈ Rd×1和Wk ∈ R1×N,分别与Q和K相乘。这生成了两个全局注意力向量,Qα ∈ RN×1和Kα ∈ R1×d,如下所示:其中,Qα可以被理解为聚合了每个令牌的所有维度的特征,而Kα可以被理解为将所有令牌聚合成一个单一的令牌。随后,我们执行广播操作以获得两个具有相同维度RN×d的矩阵。然后这些矩阵逐元素相乘,并通过线性层计算全局注意力,如下所示:因此,我们提出的VAA避免了直接在Q矩阵和K矩阵上执行矩阵乘法,并降低了计算复杂度到O(N)。L是线性层,它替换了V矩阵。2.3 串行多头注意力模块
同时,多头注意力在不同头部之间存在特征冗余[12]、[10]。这导致了多头注意力不仅占用了任何内存和计算资源,而且它的许多组件被用来提取冗余的全局特征,这限制了整体效率。为了解决这个问题,我们设计了串行多头注意力模块(S-MHA),如图2(d)所示,并且每个头部的两个不同头部被组合成一个头部组。然后不同头部组的计算结果被连接到下一个头部组进行求和,并且再次执行注意力计算。此外,我们尝试将Chen等人[6]的工作引入Transformer。具体来说,而不是在每个头部组中对第二个头部执行注意力计算,我们直接将第一个头部的计算结果求和。原因是我们假设由于多头注意力中存在特征冗余,我们可以避免对某些头部执行注意力计算。随后的实验证明了我们的概念是正确的。我们设置多头注意力最多有8个头(n=8),正式地,这种注意力可以被表述为:其中Xi表示第i个头的注意力输出(i是奇数)。HGi表示第i个头部组的输出。值得注意的是,由于对Headi(i是偶数)没有执行注意力计算,输出可以被认为是Headi本身,因此Yi表示第i个头的输出(i是偶数)。为了减少头部之间的冗余并鼓励Q、K层在具有更丰富信息的特征上学习投影。我们将头部组的输出添加到后续头部:Head_{2i+1}将被用作第(2i+1)个头的新输入特征。最终,我们连接头部组的输出以获得输出:总的来说,通过上述操作,可以节省内存和计算资源,因为串行多头注意力模块不需要同时在多头上进行计算。也有可能在不同头部之间学习更丰富的特征,以提高模型性能。3 实验
声明
本文内容为论文学习收获分享,受限于知识能力,本文对原文的理解可能存在偏差,最终内容以原论文为准。本文信息旨在传播和学术交流,其内容由作者负责,不代表本号观点。文中作品文字、图片等如涉及内容、版权和其他问题,请及时与我们联系,我们将在第一时间回复并处理。在「深度学习爱好者」公众号后台回复:Pytorch常用函数手册,即可下载全网第一份Pytorch常用函数手册,涵盖Tensors介绍、基础函数介绍、数据处理函数、优化函数、CUDA编程、多线程处理等十四章章内容。
在「小白学视觉」公众号后台回复:Python视觉实战项目,即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。
交流群
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~