
💡💡💡本文独家改进:多层次特征融合(SDI)高效结合DualConv、PConv、GSConv等实现二次创新
1)替代原始的Concat;

论文: 2311.17791.pdf (arxiv.org)
摘要: 在本文中,我们介绍了U-Net v2,一种新的鲁棒和高效的U-Net变体,用于医学图像分割。它旨在增强语义信息注入到低级特征中,同时用更精细的细节提炼高级特征。对于输入图像,我们首先使用深度神经网络编码器提取多层次特征。接下来,我们通过Hadamard产品注入来自高级特征的语义信息,并集成来自低级特征的更精细的细节,从而增强每个级别的特征映射。我们新颖的跳过连接赋予所有级别的特征丰富的语义特征和复杂的细节。随后将改进的特征传输到解码器以进一步处理和分割。我们的方法可以无缝集成到任何编码器-解码器网络中。我们在几个公开的医学图像分割数据集上对我们的方法进行了皮肤病变分割和息肉分割的评估,实验结果表明,我们的新方法在保留内存和计算效率的同时,分割的准确性优于现有的方法。

图1所示。(a)我们的U-Net v2模型的整体架构,它包括一个编码器,SDI(语义和细节融合)模块和一个解码器。(b) SDI模块的结构。为简单起见,我们只展示了第三层特征的细化(l = 3)。SmoothConv表示用于特征平滑的3 × 3卷积。N为Hadamard积。
核心代码:
class SDI(nn.Module):
def __init__(self, channels):
super().__init__()
#self.convs = nn.ModuleList([nn.Conv2d(channel, channels[0], kernel_size=3, stride=1, padding=1) for channel in channels])
#self.convs = nn.ModuleList([GSConv(channel, channels[0]) for channel in channels])
self.convs = nn.ModuleList([DualConv(channel, channels[0]) for channel in channels])
#self.convs = nn.ModuleList([PConv(channel, channels[0]) for channel in channels])
def forward(self, xs):
ans = torch.ones_like(xs[0])
target_size = xs[0].shape[2:]
for i, x in enumerate(xs):
if x.shape[-1] > target_size[-1]:
x = F.adaptive_avg_pool2d(x, (target_size[0], target_size[1]))
elif x.shape[-1] < target_size[-1]:
x = F.interpolate(x, size=(target_size[0], target_size[1]),
mode='bilinear', align_corners=True)
ans = ans * self.convs[i](x)
return ansby AI小怪兽
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。