Xiaoqi-Zhao-DLUT / MSNet-M2SNet

(MICCAI 2021) Automatic Polyp Segmentation via Multi-scale Subtraction Network
108 stars 14 forks source link

MSU单位 #6

Open kk-kaii opened 1 year ago

kk-kaii commented 1 year ago

您好 我看您论文中说的MSU单位是由一个1×1卷积加上一个3×3卷积再加上一个5×5卷积的总和再卷积得到的,但我看您提供的代码里,self.conv_3 = CNN1(64, 3, 1),self.conv_5 = CNN1(64, 5, 2),是3×3卷积和5×5卷积 后续相加的时候也没有1×1卷积 是怎么回事啊 或者是不是我理解错误呀 希望您能回复 谢谢

lostcorner commented 1 year ago

@kk-kaii 我的理解是已经做了的。

        x4_3_up = F.upsample(x4_3, size=x3_2.size()[2:], mode='bilinear')
        x4_3_up_map1 = self.conv_3(x4_3_up)
        x3_2_map1 = self.conv_3(x3_2)
        x4_3_up_map2 = self.conv_5(x4_3_up)
        x3_2_map2 = self.conv_5(x3_2)
        x4_3_2 = self.x4_x3_x2(abs(x4_3_up - x3_2)+abs(x4_3_up_map1-x3_2_map1)+abs(x4_3_up_map2-x3_2_map2) )

以这一段代码为例,map1和map2分别代表用conv3和conv5卷积后的结果。在最后的相加过程中分别有三次绝对值,对应1x1, 3x3, 5x5。

==================================== @kk-kaii @Xiaoqi-Zhao-DLUT
另外我也有些疑惑,麻烦作者或其他人帮忙解惑。 在最后一次MSU的过程,为什么要用到x5_dem_4的操作。按照之前的操作不应该是对x5_4_3_2进行上采样得到x5_4_3_2_up吗,为什么这里突然变成了x5_dem_4,然后对其进行上采样。 代码如下:

        x5_dem_4 = self.x5_dem_4(x5_4_3_2)
        x5_dem_4_up = F.upsample(x5_dem_4, size=x4_3_2_1.size()[2:], mode='bilinear')
        x5_dem_4_up_map1 = self.conv_3(x5_dem_4_up)
        x4_3_2_1_map1 = self.conv_3(x4_3_2_1)
        x5_dem_4_up_map2 = self.conv_5(x5_dem_4_up)
        x4_3_2_1_map2 = self.conv_5(x4_3_2_1)
        x5_4_3_2_1 = self.x5_x4_x3_x2_x1(
            abs(x5_dem_4_up - x4_3_2_1)+abs(x5_dem_4_up_map1-x4_3_2_1_map1)+abs(x5_dem_4_up_map2-x4_3_2_1_map2) )

另外还有一个问题二。 在后面的level的add过程中,在代码中是没有加上每一层的维度变化后的结果,就是x5_dem_1等等,但是论文图中是有连线的,不知道是图没有修改还是代码的问题。代码如下:

        level4 = x5_4 # 根据论文fig.2,缺少x4_dem_1,以下类推
        level3 = self.level3(x4_3 + x5_4_3)
        level2 = self.level2(x3_2 + x4_3_2 + x5_4_3_2)
        level1 = self.level1(x2_1 + x3_2_1 + x4_3_2_1 + x5_4_3_2_1)