论文学习6:EMCAD:Efficient Multi-scale Convolutional Attention Decoding for Medical Image Segmentation

代码来源

SLDGroup/EMCAD

模块作用

EMCAD 利用独特的多尺度深度卷积块,通过多尺度卷积显著增强特征图。EMCAD 还采用通道、空间和分组(大核)门控注意力机制,这些机制在捕捉复杂的空间关系的同时,还能高度有效地关注显著区域。

模块结构

  • 多尺度深度卷积块(Multi-scale Depth-wise Convolution Block):

    • 通过在多个尺度上进行卷积操作,增强特征图的表达能力,捕捉不同层次的空间信息。
    • 采用深度卷积和组卷积,减少计算量和参数数量,提高计算效率。
  • 多尺度卷积注意力模块(Multi-scale Convolutional Attention Module,MSCAM):

    • 多尺度卷积块(MSC Block): 在不同尺度上进行卷积,捕捉多层次的空间信息。
    • 通道注意力块(Channel Attention Block,CAB): 根据通道重要性调整特征权重,强调关键特征,抑制无关特征。
    • 空间注意力块(Spatial Attention Block,SAB): 关注空间区域的显著性,增强重要区域的特征表示。                        
  • 高效上卷积块(Efficient Up-convolution Block):

    • 使用深度卷积代替传统的3x3卷积,减少计算量,加速特征图的上采样过程。
  • 分割头(Segmentation Head):

    • 通过1x1卷积,将解码器输出的特征图映射到所需的分割类别,实现像素级分类。                    

代码

class EMCAD(nn.Module):
    def __init__(self, channels=[512,320,128,64], kernel_sizes=[1,3,5], expansion_factor=6, dw_parallel=True, add=True, lgag_ks=3, activation='relu6'):
        super(EMCAD,self).__init__()
        eucb_ks = 3 # kernel size for eucb
        self.mscb4 = MSCBLayer(channels[0], channels[0], n=1, stride=1, kernel_sizes=kernel_sizes, expansion_factor=expansion_factor, dw_parallel=dw_parallel, add=add, activation=activation)
	
        self.eucb3 = EUCB(in_channels=channels[0], out_channels=channels[1], kernel_size=eucb_ks, stride=eucb_ks//2)
        self.lgag3 = LGAG(F_g=channels[1], F_l=channels[1], F_int=channels[1]//2, kernel_size=lgag_ks, groups=channels[1]//2)
        self.mscb3 = MSCBLayer(channels[1], channels[1], n=1, stride=1, kernel_sizes=kernel_sizes, expansion_factor=expansion_factor, dw_parallel=dw_parallel, add=add, activation=activation)

        self.eucb2 = EUCB(in_channels=channels[1], out_channels=channels[2], kernel_size=eucb_ks, stride=eucb_ks//2)
        self.lgag2 = LGAG(F_g=channels[2], F_l=channels[2], F_int=channels[2]//2, kernel_size=lgag_ks, groups=channels[2]//2)
        self.mscb2 = MSCBLayer(channels[2], channels[2], n=1, stride=1, kernel_sizes=kernel_sizes, expansion_factor=expansion_factor, dw_parallel=dw_parallel, add=add, activation=activation)
        
        self.eucb1 = EUCB(in_channels=channels[2], out_channels=channels[3], kernel_size=eucb_ks, stride=eucb_ks//2)
        self.lgag1 = LGAG(F_g=channels[3], F_l=channels[3], F_int=int(channels[3]/2), kernel_size=lgag_ks, groups=int(channels[3]/2))
        self.mscb1 = MSCBLayer(channels[3], channels[3], n=1, stride=1, kernel_sizes=kernel_sizes, expansion_factor=expansion_factor, dw_parallel=dw_parallel, add=add, activation=activation)
        
        self.cab4 = CAB(channels[0])
        self.cab3 = CAB(channels[1])
        self.cab2 = CAB(channels[2])
        self.cab1 = CAB(channels[3])
        
        self.sab = SAB()
       
      
    def forward(self, x, skips):
            
        # MSCAM4
        d4 = self.cab4(x)*x
        d4 = self.sab(d4)*d4 
        d4 = self.mscb4(d4)
        
        # EUCB3
        d3 = self.eucb3(d4)
                
        # LGAG3
        x3 = self.lgag3(g=d3, x=skips[0])
        
        # Additive aggregation 3
        d3 = d3 + x3
        
        # MSCAM3
        d3 = self.cab3(d3)*d3
        d3 = self.sab(d3)*d3  
        d3 = self.mscb3(d3)
        
        # EUCB2
        d2 = self.eucb2(d3)
        
        # LGAG2
        x2 = self.lgag2(g=d2, x=skips[1])
        
        # Additive aggregation 2
        d2 = d2 + x2 
        
        # MSCAM2
        d2 = self.cab2(d2)*d2
        d2 = self.sab(d2)*d2
        d2 = self.mscb2(d2)
        
        # EUCB1
        d1 = self.eucb1(d2)
        
        # LGAG1
        x1 = self.lgag1(g=d1, x=skips[2])
        
        # Additive aggregation 1
        d1 = d1 + x1 
        
        # MSCAM1
        d1 = self.cab1(d1)*d1
        d1 = self.sab(d1)*d1
        d1 = self.mscb1(d1)
        
        return [d4, d3, d2, d1]

总结

在本文中,我们介绍了一种新型高效的多尺度卷积注意力解码器 EMCAD,专为医学图像分割中的多阶段特征聚合和细化而设计。EMCAD 采用多尺度深度卷积块,这对于捕获特征图中的不同尺度信息至关重要,而特征图是医学图像分割精度的关键因素。这种设计选择使用深度卷积而不是标准的 3×3 卷积块,使 EMCAD 非常高效。EMCAD 与较小的编码器兼容,使其非常适合即时诊断应用,同时保持高性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值