SETR:基于视觉 Transformer 的语义分割模型

Visual Transformer

Author:louwill

Machine Learning Lab

    

自从Transformer在视觉领域大火之后,一系列下游视觉任务应用研究也随之多了起来。基于视觉Transformer的语义分割正是ViT应用最多的一个经典视觉任务之一。

在视觉Transformer介入语义分割之前,基于深度学习的语义分割是被以UNet为代表的CNN模型主导的。基于编解码结构的FCN/UNet模型成为语义分割领域最主流的模型范式。本文介绍基于ViT的语义分割的第一个代表模型——SEgementation TRansformer (SETR),提出以纯Transformer结构的编码器来代替CNN编码器,改变现有的语义分割模型架构。

提出SETR的这篇论文为Rethinking Semantic Segmentation from a Sequence-to-Sequence  Perspective with Transformers,发表于2021年3月份,是由复旦和腾讯优图联合提出的一个基于ViT的新型架构的语义分割模型。

SETR的基本结构

SETR的整体模型结构如图1所示。


图1 SETR结构

SETR的核心架构仍然是Encoder-Decoder的结构,只不过相比于传统的以CNN为主导的编码器结构,SETR用Transformer来进行替代。图1中(a)图是SETR的整体架构,可以看到编码器是由纯Transformer层构成。

SETR编码器流程跟作为backbone的ViT模型较为一致。先对输入图像做分块处理,然后对每个图像分块做块嵌入并加上位置编码,这个过程就将图像转换为向量序列。之后就是Transformer block,里面包括24个Transformer层,每个Transformer层都是由MSA+MLP+Layer Norm+残差连接组成。

SETR的一个特色在于解码器的设计。将2D的编码器输出向量转换为3D特征图之后,论文中给SETR设计了三种解码器上采样方法。第一种就是最原始的上采样,论文中叫Naive upsampling,通过简单的1x1卷积加上双线性插值来实现图像像素恢复。这种上采样方法简称为SETR-Naive。

重点是第二种和第三种解码器设计。第二种解码器设计叫渐进式上采样 (Progressive UPsampling),作者认为一步到位式的上采样可能会产生大量的噪声,采样渐进式的上采样则可以最大程度上缓解这种问题。渐进式的上采样在于,每一次上采样只恢复上一步图像的2倍,这样经过4次操作就可以回复原始图像。这种解码设计简称为SETR-PUP,如图1中的(b)图所示。第三种解码设计为多层次特征加总 (Multi-Level feature Aggregation, MLA),这种设计跟特征金字塔网络类似,如图1中(c)图所示。

表1是基于不同预训练和backbone的SETR变体模型的参数量和效果展示。

表1 SETR模型细节

SETR训练与实验

SETR在主流的语义分割数据集上都做了大量实验,包括Cityscapes、ADE20K和PASCAL Context等数据集。SETR在多个数据集上都取得了SOTA的结果,如表2和表3所示。

表2 SETR在ADE20K上的表现


表3 SETR在PASCAL Context上的表现


图2是SETR在ADE20K数据集上的分割效果,左侧列为FCN分割效果,右侧列为SETR的分割效果。可以看到,SETR分割效果要明显优于FCN。


总结

总体而言,SETR的几个重要贡献如下:

  • 为基于FCN/UNet等CNN分割模型的语义分割提供了不同的思路,即基于序列的图像分割视角。Transformer作为这种序列模型的一个实现实例,SETR充分的探索了ViT的分割能力。

  • 设计了三种不同的解码器上采样方法,深入探索了不同的上采样设计的像素恢复效果。

  • 实验证明了基于Transformer的语义分割能够学习到超过FCN等CNN结构的语义表征。

但SETR也有诸多不足。跟ViT一样,SETR要取得好的结果,对预训练和数据集大小都有较大的依赖性。

参考资料:
Zheng S, Lu J, Zhao H, et al. Rethinking semantic segmentation from a sequence-to-sequence perspective with transformers[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2021: 6881-6890.
往期精彩:
 ViT:视觉Transformer backbone网络ViT论文与代码详解

【原创首发】机器学习公式推导与代码实现30讲.pdf
【原创首发】深度学习语义分割理论与实战指南.pdf
求个在看
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: PyTorch 是一个开源的深度学习库,它提供了高度灵活的神经网络构建和训练能力。其最大的特点是动态计算图机制,这意味着我们可以在模型训练过程中动态地修改、调整网络结构,使得它非常适合研究和实验。下面是关于 PyTorch 的几个重要特性: 1. 动态计算图:PyTorch 使用动态计算图机制,与静态计算图相比,动态计算图可以根据需要灵活地构建、修改和调整网络结构,这使得我们可以更容易理解和调试模型。此外,动态计算图还支持更复杂的模型,例如递归神经网络(RNN)等。 2. 张量操作与自动微分:PyTorch 提供了丰富的张量操作库,可以高效地进行向量和矩阵计算。此外,PyTorch 还支持自动微分,可以自动计算梯度,并且梯度在反向传播时自动更新。 3. 大量的预训练模型:PyTorch 社区提供了大量的预训练模型,这些模型在各种任务上经过了大规模的训练和优化,通常可以用于迁移学习等应用。 4. GPU 加速和分布式训练:PyTorch 支持 GPU 加速,可以利用 GPU 的强大计算能力加速模型训练。此外,PyTorch 还支持分布式训练,可以在多台计算机上同时训练模型,加快训练速度。 5. 简洁的代码:PyTorch 的 API 设计得相对简洁明了,使得用户能够更加直观地理解和使用库中的功能。此外,PyTorch 建立在 Python 上,使得其代码易于编写和调试。 总而言之,PyTorch 是一个功能强大、灵活易用的深度学习库,具有动态计算图、张量操作和自动微分、大量的预训练模型、GPU 加速和分布式训练等特性。它在学术研究中得到广泛应用,同时也被广大的工业界和开发者社区认可和使用。 ### 回答2: PyTorch是一个开源的机器学习库,其目的是为了让用户能够更加方便地构建和训练深度神经网络模型。 首先,PyTorch提供了一个灵活的张量计算库,这使得用户可以使用类似于NumPy的语法来进行张量操作。张量是PyTorch中最基本的数据结构,可以表示任意维度的数组。这使得PyTorch在处理各种类型的数据(如图像、文本、声音等)时变得非常方便。 其次,PyTorch采用了动态图的方法来构建计算图。这意味着用户可以在运行时定义计算图,并且可以根据需要进行修改。相比之下,其他框架(如TensorFlow)使用的是静态图,用户需要在编写代码之前定义整个计算图。动态图使得PyTorch更加易于调试和理解,同时也提供了更大的灵活性。 此外,PyTorch具有丰富的工具和资源,用于帮助用户进行模型训练和部署。例如,它提供了许多预先训练的模型,可以直接用于特定的任务。此外,PyTorch还提供了一些用于数据加载和处理的工具,使得用户能够高效地管理和处理大型数据集。 最后,PyTorch具有优秀的社区支持和文档资源。无论是初学者还是专业人士,都可以从社区中获取有关PyTorch的帮助和指导。此外,PyTorch官方文档详尽而清晰,提供了大量的示例代码和教程,帮助用户快速上手和理解PyTorch的各个功能。 总之,PyTorch是一个功能强大且易于使用的机器学习库,为用户提供了丰富的工具和资源,帮助他们构建和训练深度神经网络模型。无论是在学术研究还是工业应用中,PyTorch都是一个理想的选择。 ### 回答3: PyTorch是一个基于Python的开源机器学习库,被广泛应用于深度学习领域。它提供了丰富的工具和接口,便于用户构建和训练各种神经网络模型。 首先,PyTorch的设计理念是以动态计算图为核心。这意味着PyTorch允许用户在运行时动态地定义、修改和调整计算图,极大地提高了灵活性和可调试性。相比之下,其他许多深度学习框架比如TensorFlow则采用了静态计算图的方式,需要用户先定义好整个计算图再进行训练。 其次,PyTorch还具有良好的易用性和可读性。它的API设计简洁明了,语法与Python非常相似,使得编写模型和训练代码变得更加容易和直观。此外,PyTorch内置了许多实用的工具和函数,比如数据加载、模型优化、损失函数等,大大简化了深度学习流程的实现。 另外,PyTorch具有优秀的性能表现。它充分利用了现代GPU的并行计算能力,能够高效地处理大规模数据和复杂模型。此外,PyTorch还提供了分布式训练的支持,可以通过多台机器或多个GPU实现模型的并行训练,加速训练速度。 最后,PyTorch还积极推动深度学习社区的发展。它具有一个活跃的社区,提供了丰富的教程、示例和文档,方便用户学习和使用。同时,PyTorch也是很多顶尖研究机构和公司所选择的深度学习框架,很多前沿的研究成果都在PyTorch上实现和发布。 综上所述,PyTorch作为一款强大的深度学习库,以其动态计算图、易用性、性能表现和社区支持等优势,被广泛认可并应用于各个领域的深度学习任务中。无论是学术研究还是工业应用,PyTorch都为用户提供了丰富的工具和资源,帮助他们快速搭建和训练高效的神经网络模型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值