一.选择原因。 Self-Supervised Depth是一种用于图像分割的深度学习模型。它是基于Self-Supervised模型的改进,通过引入链接模块和下采样模块来提高分割性能。

Self-Supervised Depth的核心思想是在Self-Supervised的基础上引入链接模块和下采样模块。链接模块用于捕捉不同尺度的特征,它将不同层的特征图进行连接,从而增强了特征提取能力。下采样模块用于减小特征图的尺寸,同时保留更多的语义信息。这两个模块结合起来可以有效地提高分割性能。

他的训练过程包括两个阶段:首先,使用卷积神经网络对图像进行特征提取,然后使用反卷积操作将特征图恢复到原始图像大小,并进行像素级别的分类。在这个过程中,Self-Supervised Depth使用了多个链接模块和下采样模块,以提高特征提取和分割性能。

他也在各种图像分割任务中取得了显著的成果,包括医学影像分割、道路场景分割等。它具有较高的准确率和鲁棒性,并且能够处理不同尺度和复杂场景下的图像分割问题。因此,Self-Supervised Depth成为了图像分割领域的一个重要研究方向。

二.模型分析 下面是Self-Supervised Depth的模型结构 image.png粗体 Self-Supervised Depth使用在ImageNet数据集上预先训练的ResNet34作为编码器。ResNet34最初是为中分辨率图像大小为256×256的分类任务而设计的,但在这个挑战中,任务是从大小为1024×1024的高分辨率卫_星图像分割道路。考虑到道路的狭窄性、连通性、复杂性和跨度大,在保留详细信息的同时,增加网络中心部分特征点的接受域是很重要的。利用池化层可以成倍增加特征点的接收域,但可能会降低中心特征图的分辨率,降低空间信息。一些最先进的深度学习模型[21,25,26,16]表明,膨胀卷积层是池化层的理想选择。Self-Supervised Depth使用了一些膨胀卷积层,在中心部分跳跃连接。         膨胀卷积可以以级联方式堆叠。如果堆叠的膨胀卷积层的膨胀率分别为1、2、4、8、16,则每一层的接受域为3、7、15、31、63。编码器部分(RseNet34)有5个下采样层,如果一个大小为1024×1024的图像通过编码器部分,输出的feature map为大小为32×32。在这种情况下,Self-Supervised Depth在中心部分使用膨胀的卷积层,膨胀率为1,2,4,8,因此最后中间的层上的特征点将在第一个中心特征图上看到31×31个点,覆盖第一个中心特征图的主要部分。但是,Self-Supervised Depth利用了多分辨率的特性,Self-Supervised Depth的中心部分可以看作是如图2所示的并行模式。

三.模型训练 2.2 预训练的编码器         我本次项目的特色是采用了预训练的编码器: 迁移学习是一种有效的计算机视觉方法,特别是在训练图像数量有限的情况下。使用ImageNet预训练模型作为网络的编码器是语义分割领域广泛使用的一种方法。在DeepGlobe Road extraction Challenge中,我们发现迁移学习可以加速我们的网络收敛,使其在几乎不需要额外成本的情况下具有更好的性能。 核心代码

class SelfAttention(torch.nn.Module): def init(self, in_channels, out_channels): super().init() self.conv = torch.nn.Conv2d(in_channels, out_channels, 3, padding=1, bias=False) self.attention = torch.nn.Conv2d(in_channels, out_channels, kernel_size=3, padding=1, bias=False) with torch.no_grad(): self.attention.weight.copy_(torch.zeros_like(self.attention.weight))

def forward(self, x):
    features = self.conv(x)
    attention_mask = torch.sigmoid(self.attention(x))
    return features * attention_mask

四.模型测试  我在Cityscapes数据集上测试了将数据集表示为二值分割问题,其中道路标记为前景。 其他物体标记为背景。

测试效果如下: image.png

五.总结收获

在此次比赛中,我通过不断更新模型结构,调整数据集的处理方式,最后还通过使用Intel提供的模型训练平台和分析工具,得到了比较好的分割效果。非常感谢intel举办此次比赛,能够让我学到了很多东西。尤其是对于Intel架构的掌握。