最新的实时语义分割方法通常采用额外的语义分支来追求丰富的长距离上下文。然而,额外的分支会带来不必要的计算开销,并减缓推理速度。为了消除这一困境,我们提出了SCTNet,一种带有transformer语义信息的单分支CNN用于实时分割。
https://arxiv.org/abs/2312.17071 https://github.com/xzz777/SCTNet
SCTNet在保留轻量级单分支CNN高效性的同时,还拥有语义分支的丰富语义表示。考虑到transformer提取长距离上下文的卓越能力,SCTNet将transformer作为仅用于训练的语义分支。借助于提出的transformer类CNN块CFBlock和语义信息对齐模块,SCTNet可以在训练中从transformer分支捕获丰富的语义信息。在推理过程中,只需要部署单分支CNN。我们在Cityscapes,ADE20K和COCO-Stuff-10K上进行了广泛的实验,结果表明,我们的方法达到了新的最先进水平。
本文贡献主要包含以下三点:
降低计算成本的同时,获得丰富的语义信息,我们将现在流行的两个分支架构拆解为:
Backbone 为了提高推理速度,SCTNet采用了典型的分层CNN骨干。 SCTNet的Stem模块由两个3×3卷积构成; 前两个阶段是由堆叠的残积模块组成的;后两个阶段则是由所提CFBlock构成。 CFBlock采用了几个精心设计的卷积操作来执行类似于Transformer块的远程上下文捕获功能。 Decoder Head 解码头由DAPPM与分割头构成,为进一步丰富上下文信息,作者在Stage4后面添加了DAPPM。然后,作者将S2和S4输出进行拼接并送入分割头。 Training Phase 众所周知,Transformer在捕获全局语义上下文方面表现出色。 另一方面,CNN已被证明比变换器更适合于对分层局部信息进行建模。 受Transformer和CNN优点的启发,我们探索配备一个具有这两种优点的实时分割网络。 我们提出了一个单分支CNN,它学习将其特征与强大的Transformer的特征对齐。 这种特征对齐使单分支CNN能够提取丰富的全局上下文和详细的空间信息。 具体而言,SCTNet采用了一个仅作用在训练阶段的Transformer作为语义分支来提取强大的全局语义上下文,语义信息对齐模块监督卷积分支以对齐来自Transformer的高质量全局上下文。 Inference Phase 为了避免两个分支的巨大计算成本,在推理阶段只部署了CNN分支。 利用transformer对齐的语义信息,单分支CNN可以生成准确的分割结果,而无需额外的语义或昂贵的密集融合。 更具体地说,输入图像被送入到单分支层次卷积主干中,解码器头拾取主干中的特征并进行简单的拼接进行像素分类.
上图与表为Cityscapes语义分割上不同方案的性能对比,从中可以看到:
上表为ADE20K与COCO-Stuff-10K两个数据集上不同分割方案的性能对比,很明显:所提SCTNet同样取得了更优的速度-精度均衡。