语义分割新范式!StructToken:对per-pixel 分类范式的重新思考

作者丨Lart

编辑丨极市平台

语义分割新范式!StructToken:对per-pixel 分类范式的重新思考

论文链接:https://arxiv.org/abs/2203.12612

本文是对语义分割传统编解码逐像素分类范式的一种思考和改进。

之前语义分割的工作将其视作一种逐像素分类任务,主流范式是编解码结构,通过编码器和解码器学习逐像素表征后,通过对每个像素单独分类到不同的类别中从而获得预测的语义掩码结果。这篇文章选择了另一种策略,即将结构信息作为先验直接构造语义掩码然后逐步细化,而不再是按照逐像素分类的范式。

具体来看,对于给定的输入图像,模型中可学习的结构token会和图像表征进行交互,从而推理出最终的语义掩码。这一思路和最初的ViT结构中的cls token的行为颇为类似。考虑到这份工作的实现是基于ViT-L,所以可以很直观的推想出,StructToken的思路很是将Transformer原本的形式向语义分割这样的密集预测任务的一种“直接”迁移,这其中并没有像其他工作那样,过多受到目标任务中原始的卷积神经网络设计范式的影响。

所以值得思考的几点可以由此提出:

相关工作

语义分割新范式!StructToken:对per-pixel 分类范式的重新思考

现有的语义分割领域已经出现了大量的工作,但是目前出现的工作中基本上都可以被归类为逐像素分类范式,差别主要在于分类参数是否是动态的:

这些工作从整体上来看, 都是在学习针对每一类的线性判别函数,要么是静态的卷积,要么动态的矩阵乘法运算。这会作用在逐像素的特征表示上,从而来为其赋予一个最相关的语义类别。

作者们认为,按照人识别物体的过程,先是捕获语义类别的结构信息(形状等),然后关注于内部细节。想要分割图像中不同语义类别的区域,通常先根据结构生成一个粗略的mask,之后在调整mask的细节。现有的两种逐像素分类范式并没有充分的体现这一过程,而更多的是,直接在模型倒数第二层的特征图上分类像素从而获得得分图。这一特性鼓励网络优化单一像素的表征,而忽略甚至破坏了最重要的结构特征。

本文中作者们提出了一种结构先验范式来解决这一问题,直接从结构token中构造得分图来分割图像,然后逐渐细化。

主要内容

语义分割新范式!StructToken:对per-pixel 分类范式的重新思考

文中主要研究了如何从特征图中根据结构token提取有用的信息。提出的结构整体遵循这样的过程:

  1. 提取特征:使用Transformer骨干网络,例如ViT,提取特征图F,大小为[C,H/16,W/16]。
  2. 构造结构token:随机初始化可学习的结构token S,大小为[K,N],K为数据集类别数量,N为patch数量,即[H/16,W/16]。
  3. 信息交互:使用交互结构来处理S。捕获特征图中的结构信息,并根据学习到的先验为每一类构建粗略的mask。
  4. 特征细化:独立的FFN用于结构token的细化,并处理特征图。
  5. 级联处理:堆叠多个基础单元(包括交互和细化)来重复处理特征。
  6. 预测结果:尾部使用两个卷积层和跳过链接构成的卷积块来细化最终构建的分割mask并得到最终的结果。

这些步骤中,交互式结构的设计是本文的核心。文中主要探索了三种交互式结构。其中包含两种动态结构和一种静态结构。

上面结构中在执行Attention操作之前,S和F会被送入投影层处理,虽然是针对通道的Attention处理,但是这里的投影层使用的是1x1卷积+3x3深度卷积+1x1卷积的形式,仍然是空间维度共享的操作。

这些模块的两个输出都会各自接一个FFN。这里的FFN使用的是FC+3x3分组卷积+FC的结构。即可以细化局部特征,也可以看作是一种隐式位置编码。

实验结果

对比实验

文中在三个主要的语义分割数据集上进行了验证。本文的方法是构建在ViT的不同变体之上的,也因此没有使用那些金字塔架构形式的多尺度特征。

从这里的实验中可以发现一个趋势,语义分割方法使用的backbone越来越大,从早期的的Res101,到现在的ViT-L、MiT-B5、Swin-L。预训练权重甚至都开始使用ImageNet21K上的了。不知道这样的潮流是否真的有意义。

语义分割新范式!StructToken:对per-pixel 分类范式的重新思考

语义分割新范式!StructToken:对per-pixel 分类范式的重新思考

语义分割新范式!StructToken:对per-pixel 分类范式的重新思考

语义分割新范式!StructToken:对per-pixel 分类范式的重新思考

消融实验

对提出的结构中的不同组件进行了消融实验。这里的baseline模型基于ViT,仅隔着一个CSE模块和FFN模块。这里的FFN没有使用分组卷积,另外这里不对Query、Key和Value的投影层进行消融实验,因为作者们觉得如果替换成常规的全连接成,会导致无法支持多尺度推理。因为为了保持attention操作本身的原始性,仅对输入转置来实现通道attention而非手动修改投影层的情况下,此时的投影层就成了空间上的全连接了。

语义分割新范式!StructToken:对per-pixel 分类范式的重新思考

这里还对提出的解码块堆叠数量进行了实验,最终作者们考虑性能与计算复杂度的平衡,就选择了4。实际上实验中反映出来,更多的块会带来更好的性能表现。

语义分割新范式!StructToken:对per-pixel 分类范式的重新思考

但是作者们并没有讨论这些伴随而来的计算量和参数量对于性能的影响。

为了验证提出的结构token保留结构信息的能力,作者们构建了一个逐像素分类范式的对等参考,backbone提取的特征会先将通道数量调整到类别数(类似于本文提出的结构token那样),每个通道认为对应一个类别。之后通过四个残差块来进行处理,最终使用1x1卷积生成最终的得分图。来自每个残差块的输出会被用来与本文模型中每个交互块的结构token输出进行可视化对比。下图中,不同的行组对应着不同的类别。可以看到,尽管输出的得分图很类似,但是结构token在中间的输出却展现出了更清晰的目标形状、轮廓等结构信息。而且随着多个块的处理,这些目标信息更加清晰(典型如第9行)。

语义分割新范式!StructToken:对per-pixel 分类范式的重新思考

总结与思考

回答开头的问题:

展开阅读全文

页面更新:2024-04-23

标签:范式   语义   卷积   像素   图像   特征   通道   类别   结构   信息

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top