题目: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 · 轻量级 · 医学图像分割
在这项工作中,我们提出了一个名为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所需的参数数量为
/span>
span style="font-size: 15px;">这比常规Conv的
要少。而FLOPs为
/span>
span style="cursor: pointer;font-size: 15px;">
其中,Qα可以被理解为聚合了每个令牌的所有维度的特征,而Kα可以被理解为将所有令牌聚合成一个单一的令牌。随后,我们执行广播操作以获得两个具有相同维度RN×d的矩阵。然后这些矩阵逐元素相乘,并通过线性层计算全局注意力,如下所示:
因此,我们提出的VAA避免了直接在Q矩阵和K矩阵上执行矩阵乘法,并降低了计算复杂度到O(N)。L是线性层,它替换了V矩阵。
同时,多头注意力在不同头部之间存在特征冗余[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)个头的新输入特征。最终,我们连接头部组的输出以获得输出:
总的来说,通过上述操作,可以节省内存和计算资源,因为串行多头注意力模块不需要同时在多头上进行计算。也有可能在不同头部之间学习更丰富的特征,以提高模型性能。
本文内容为论文学习收获分享,受限于知识能力,本文对原文的理解可能存在偏差,最终内容以原论文为准。本文信息旨在传播和学术交流,其内容由作者负责,不代表本号观点。文中作品文字、图片等如涉及内容、版权和其他问题,请及时与我们联系,我们将在第一时间回复并处理。
到此这篇conv函数用法(convet函数)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/haskellbc/50732.html