2024AAAI SCTNet论文阅读笔记

文章目录

  • SCTNet: Single-Branch CNN with Transformer Semantic Information for Real-Time Segmentation
    • 摘要
    • 背景
    • 创新点
    • 方法
      • Conv-Former Block
        • 卷积注意力机制
        • 前馈网络FFN
      • 语义信息对齐模块
        • 主干特征对齐
        • 共享解码头对齐
      • 总体架构
        • backbone
        • 解码器头
      • 对齐损失
    • 实验
      • SOTA效果对比
      • Cityscapes可视化对比
    • 结论
    • 补充

SCTNet: Single-Branch CNN with Transformer Semantic Information for Real-Time Segmentation

论文地址: https://ojs.aaai.org/index.php/AAAI/article/view/28457
代码地址: https://github.com/xzz777/SCTNet

摘要

  • 最近的实时语义分割方法通常采用一个额外的语义分支来追求丰富的远程上下文。
  • 然而,额外的分支会带来额外的计算开销,并减慢推理速度
  • 为了解决这种困境,我们提出了SCTNet——一个用于实时语义分割的具有Transformer语义信息的单分支CNN
  • SCTNet具有推理解放语义分支的丰富语义表示,同时保持轻量级单分支CNN的高效率
  • 考虑到它的强大的语义能力,SCTNet利用一个transformer作为只用来训练的语义分支
  • 借助所提出的transformer类CNN模块CFBlock和语义信息对齐模块,SCTNet可以在训练中从transformer分支中捕获丰富的语义信息。
  • 推理阶段,只有单个CNN分支需要部署。
  • 对Cityscapes、ADE20K和COCO-Stuff-10K上进行实验,结果表示我们的方法达到了新的SOTA性能。

背景

  • 最近的语义分割方法追求丰富的长程上下文信息。Transformer的自注意力机制被证明具有对长程上下文建模的显著能力。尽管这些工作得到了显著改进,但也会导致高昂的计算成本。基于自注意力的工作在图像分辨率方面甚至具有平方计算复杂度,这会显著增加处理高分辨率图像的延迟。
  • 最近许多实时工作采用双边架构来快速提取高质量的语义信息。BiSeNet提出了一种双边网络,用于在早期阶段分离详细的空间特征和丰富的上下文信息,并并行处理它们,如下图a所示。BiSeNetV2和STDC做了进一步努力,以增强提取丰富的长程上下文的能力或降低空间分支的计算成本。为了平衡推理速度和精度,DDRNet、RTFormer和SeaFormer采用一种特征共享架构,该架构在深层阶段划分空间和上下文特征,如下图b所示。但是这些方法在两个分支之间引入了密集融合模块,以增强提取特征的语义信息。总之,所以的双边方法都由于额外的分支和多个融合模块而导致推理速度有限和计算成本高。
    在这里插入图片描述

创新点

  • 为了解决上述困境,提出了一个用于实时分割的单分支CNN,其中包含Transformer语义信息。它可以有效地提取语义信息,而不会因为双边网络而繁重的计算。
  • SCTNet从仅用于训练的Transformer语义分支学习长程上下文信息到CNN分支。
  • 为了减轻Transformer和CNN之间的语义差距,设计了一个类似Transformer的CNN模块,称为CFBklock。在对齐之前使用共享解码头。
  • 通过在训练中对齐的语义信息,单分支CNN可以联合编码语义信息和空间细节。
  • SCTNet可以保持轻量级单分支CNN架构在推理中的高效的同时,对齐来自Transformer架构的大感受野的语义表示。整体架构如上图c表示。主图如下图所示
    在这里插入图片描述

方法

Conv-Former Block

CNN和Transformer提取的特征表示存在显著差异。直接对齐CNN和Transformer之间的特征会使学习过程变得困难,导致性能提升有限。为了让CNN分支能够轻松学习到从Transformer分支中提取到的 高质量的语义信息,设计了Conv-Former模块。

Cov-Former模块尽可能的模拟Transformer模块的结构,以便更好地学习Transformer分支的语义信息。同时,Conv-Former仅使用高效地卷积运算来实现注意力函数。

Conv-Former模块的结构类似于典型的Transformer编码器结构,如下图左侧所示。其过程为:
f = N o r m ( x + C o n v A t t e n t i o n ( x ) ) y = N o r m ( f + F F N ( f ) ) \begin{aligned} f&=Norm(x+ConvAttention(x))\\ y&=Norm(f+FFN(f)) \end{aligned} fy=Norm(x+ConvAttention(x))=Norm(f+FFN(f))
其中 N o r m Norm Norm表示batch Normalization。
在这里插入图片描述

卷积注意力机制

用于实时分割的注意力机制应具有低延迟和强大的语义提取能力。GFA是一个潜在的候选方案,提出的卷积注意力机制源于GFA。

GFA和提出的卷积注意力机制主要有两个区别:

  1. 将GFA的矩阵乘法替换为像素级卷积运算。点卷积等于像素到像素的乘法,但不涉及特征扁平化和重塑操作。这些操作不利于保持固有的空间结构,并会增加额外的推理延迟。此外,卷积提高了一种更灵活的方式来扩展外部参数。
  2. 由于Transformer和CNN之间的语义差距,仅仅计算几个可学习向量与每个像素之间的相似性,然后根据相似图和可学习向量增强像素,不足以捕捉丰富的上下文信息。为了更好地对齐Transformer的语义信息,将可学习向量扩展为可学习核。一方面,这将像素与可学习向量之间的相似度计算转换为像素块与可学习核之间的相似性计算;另一方面,使用可学习核的卷积操作在某种程度上保留了更多局部空间信息。

卷积注意力的操作可以总结如下:
X = θ ( X ⊗ K ) ⊗ K T , X=\theta(X\otimes K)\otimes K^T, X=θ(XK)KT,
其中 X ∈ R C × H × W X\in\mathbb{R}^{C\times H\times W} XRC×H×W, K ∈ R C × N × k × k K\in\mathbb{R}^{C\times N\times k\times k} KRC×N×k×k, K T ∈ R N × C × k × k K^T\in\mathbb{R}^{N\times C\times k\times k} KTRN×C×k×k分别表示输入图像和可学习的query和key。 N N N表示可学习参数的数量, k k k表示可学习参数的核大小。 θ \theta θ表示分组双重归一化,它在 H × W H\times W H×W维度上应用softmax, 并在 N N N维度上应用分组 L 2 L_2 L2归一化, ⊗ \otimes 表示卷积操作。

考虑到效率, 使用条带卷积而不是标准卷积来实现卷积注意力。具体来说,利用一个 1 × k 1\times k 1×k卷积核一个 k × 1 k\times1 k×1卷积来近似一个 k × k k\times k k×k卷积层。上图右侧为卷积注意力的实现细节。

前馈网络FFN

经典的FFN在提供位置编码和嵌入通道方面起着至关重要的作用。最近的Transformer模型中的FFN由扩展点卷积、深度方向 3 × 3 3\times 3 3×3卷积核压缩点卷积组成。与经典的FFN不同,本文的FFN由两个标准 3 × 3 3\times 3 3×3卷积层组成。这样可以更高效,并提供更大的感受野。

语义信息对齐模块

提出了一个简单而有效地对齐模块来进行训练过程中的特征学习。它可以分为主干特征对齐和共享解码器头对齐。

主干特征对齐

由于Conv-Former模块类似Transformer的架构,对齐损失可以轻松地将Conv-Former模块的特征与Transformer的特征对齐。简而言之,主干特征对齐首先对来自Transformer和CNN分支的特征进行下采样或上采样以进行对齐。然后将CNN的特征投影到Transformer的维度。需要统一通道数量以及避免直接对齐。直接对齐会在训练过程中破坏CNN的真实标签监督。最后,将语义对齐损失应用于投影后的特征以对齐语义表示。

共享解码头对齐

Transformer解码器通常使用多个阶段的特征进行复杂解码,而SCTNet解码器仅选择stage2和stage4的特征。考虑到两者之间解码空间的显著差异,直接对齐解码头特征和输出logits只能获得有限的改进。因此,提出共享解码头对齐。具体来说,将单分支CNN的concatenation stage2和stage4特征输入到点卷积中以扩展维度。然后将高维特征通过Transformer解码器。Transformer解码器的新输出特征和logits用于计算与Transformer解码器原始输出的对齐损失。

总体架构

为了获得丰富的语义信息的同时降低计算成本,将流行的两分支架构简化为一个用于推理的快速CNN分支和一个只用于训练的语义对齐的Transformer分支。

backbone

为了提高推理速度,SCTNet采用典型的CNN主干网络。SCTNet起始于一个由两个连续的 3 × 3 3\times3 3×3卷积层组成的stem块。前两个阶段由堆叠的残差块组成,后两个阶段包含提出的类似Transformer的块,称为Conv-Former块(CFBlock)。CFBlock采用多个精心设计的卷积操作来执行与Transformer块类似的远程上下文捕获功能。在2-4阶段的开始应用一个由bacth normal和ReLU激活的步幅卷积组成的convdown层进行下采样。

解码器头

解码头由一个DAPPM和一个分割头组成。为了进一步丰富上下文信息,在第4阶段的输出之后添加了一个DAPPM。然后将输出与阶段2的特征图连接起来。最后,这个输出特征被传递到一个分割头。精确地说,分割头由一个 3 × 3 3\times3 3×3的Conv-BN-ReLU算子后跟一个 1 × 1 1\times1 1×1卷积分类器组成。

对齐损失

为了更好地对齐语义信息, 需要一种关注语义而不是空间信息的对齐损失。在实现中,使用CWD损失作为对齐损失, 它显示出比其他损失函数更好地结果。CWD损失如下:
ϕ ( x c ) = e x p ( x c , i τ ) ∑ i = 1 W ⋅ H e x p ( x c , i τ ) , L c w d = τ 2 C ∑ c = 1 C ∑ i = 1 H ⋅ W ϕ ( x T c , i ) ⋅ log ⁡ [ ϕ ( x T c , i ) ϕ ( x T c , i ) ] , \begin{aligned} \phi(x_c)&=\frac{exp(\frac{x_{c,i}}{\tau})}{\sum^{W\cdot H}_{i=1}exp(\frac{x_{c,i}}{\tau})},\\ L_{cwd}&=\frac{\tau^2}{C}\sum^C_{c=1}\sum^{H\cdot W}_{i=1}\phi(x^{c,i}_T)\cdot \log\left [\frac{\phi(x^{c,i}_T)}{\phi(x^{c,i}_T)}\right ], \end{aligned} ϕ(xc)Lcwd=i=1WHexp(τxc,i)exp(τxc,i),=Cτ2c=1Ci=1HWϕ(xTc,i)log[ϕ(xTc,i)ϕ(xTc,i)],

其中 c = 1 , 2 , … , C c=1,2,\dots,C c=1,2,,C表示通道索引, i = 1 , 2 , … , H ⋅ W i=1,2,\dots,H\cdot W i=1,2,,HW表示空间位置, x T x^T xT x S x^S xS分别表示Transformer分支和CNN分支的特征图。 ϕ \phi ϕ将特征激活转换为逐通道概率分布,消除了Transformer和CNN紧凑CNN之间的尺度影响。为了最小化 L c w d L_{cwd} Lcwd, 当 ϕ ( x T c , i ) \phi(x^{c,i}_T) ϕ(xTc,i)很大时, ϕ ( x S c , i ) \phi(x^{c,i}_S) ϕ(xSc,i)应该很大。但当 ϕ ( x T c , i ) \phi(x^{c,i}_T) ϕ(xTc,i)很小时, ϕ ( x S c , i ) \phi(x^{c,i}_S) ϕ(xSc,i)的值无关紧要。这迫使CNN学习前景显著性的分布,其中包含语义信息。 τ \tau τ是一个超参数,值越大,概率分布就越平滑。

实验

SOTA效果对比

Cityscapes:
在这里插入图片描述

ADE20K:
在这里插入图片描述

COCO-Stuff-10k:
在这里插入图片描述

Cityscapes可视化对比

在这里插入图片描述

结论

在本文中,我们提出了SCTNet,这是一种新颖的单分支架构,它可以在不增加额外推理计算成本的情况下提取高质量的远程上下文。 广泛的实验表明,SCTNet取得了新的最先进的结果。 此外,通过证明SCTNet的效率,我们为双边分支网络中的语义分支提供了一种新的见解,并提供了一种新的方法来提升实时分割社区,这不仅采用了Transformer的结构,而且还利用了它的知识。

补充

  • 在ImageNet-1K上进行预训练。遵循swin-transformer在ImageNet-1K上的预训练设置。
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/949806.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录 数组test5(leetcode 59.螺旋矩阵)

59. 螺旋矩阵 II - 力扣(LeetCode) 大致的想法是从起点开始以顺时针走到中心,有两种实现方式:一圈一圈赋值或者每走一步就赋值 方法一:按圈循环 思路: 外层循环是要循环的圈数,这里需要分奇偶讨论,若题目给出的n为偶…

向成电子XC3588H工控主板助力内窥镜应用升级

随着微创手术在全球范围内普及,内窥镜应用越来越广泛。利用内窥镜,医生可以看到X射线不能显示的病变,对医疗诊断有非常重要的作用。内窥镜设备凝聚了先进的影像技术,提供高画像精度诊断微小的病变。在设备智能化的今天&#xff0c…

基于SpringBoot的音乐网站与分享平台

基于SpringBoot的音乐网站与分享平台 摘要1. 研究背景2.研究内容3.系统功能 3.1前台首页功能模块3.2在线听歌功能模块3.3后台登录功能模块3.4在线听歌管理模块 4.部分功能代码实现5.源码分享(免费获取) 需要源码联系我即可(免费获取)~ ??大家点赞、收藏、关注、评论啦 、查…

nginx-灰度发布策略(split_clients)

一. 简述: 基于客户端的灰度发布(也称为蓝绿部署或金丝雀发布)是一种逐步将新版本的服务或应用暴露给部分用户,以确保在出现问题时可以快速回滚并最小化影响的技术。对于 Nginx,可以通过配置和使用不同的模块来实现基于…

【数据结构】栈与队列(FIFO)

在阅读该篇文章之前&#xff0c;可以先了解一下堆栈寄存器和栈帧的运作原理&#xff1a;<【操作系统】堆栈寄存器sp详解以及栈帧>。 栈(FILO) 特性: 栈区的存储遵循着先进后出的原则。 例子: 枪的弹夹&#xff0c;最先装进去的子弹最后射出来&#xff0c;最后装入的子弹…

python基础案例

#一个年份如果能被4整除但不能被 100整除&#xff0c;或能被 400整除&#xff0c;那么这个年份就是闰年。 year int(input(请输入年份&#xff1a;)) if (year %40 and year %100!0) or year %4000:print("这个年份就是闰年") else:print("这个年份不是闰…

微服务框架,Http异步编程中,如何保证数据的最终一致性

一、背景 在微服务框架下&#xff0c;跨服务之间的调用&#xff0c;当遇到操作耗时或者量大的情况&#xff0c;我们一般会采用异步编程实现。 本文出现的问题是&#xff1a;异步回调过来时&#xff0c;却未查询到数据库中的任务&#xff0c;导致未能正常处理回调。 下面是当…

Kafka详解 ③ | Kafka集群操作与API操作

目录 1、Kafka集群操作 1.1、创建 topic 1.2、查看主题命令 1.3、生产者生产 1.4、消费者消费数据 1.5、运行 describe topics命令 1.6、增加 topic分区数 1.7、增加配置 1.8、删除配置 1.9、删除 topic 2、Kafka的Java API操作 2.1、生产者代码 2.2、消费者代 2…

Echarts集成Vue2个人总结与反思

协同净焦水处理系统 统计模块 环境部署 1、创建数据库ry-cloud并导入数据脚本ry_2021xxxx.sql&#xff08;必须&#xff09;&#xff0c;quartz.sql&#xff08;可选&#xff09; 2、创建数据库ry-config并导入数据脚本ry_config_2021xxxx.sql&#xff08;必须&#xff09; …

aardio —— 虚表 —— 模拟属性框

写了个简单的属性框例程&#xff0c;抛砖引玉&#xff0c;期待你做出更丰富强大的功能。 本例演示&#xff1a;折叠子行、选择框、输入文本、输入数值、下拉选择、选择图片、选择颜色、选择字体等功能。 只有想不到&#xff0c;没有做不到&#xff0c;发挥你的想象力吧。 imp…

《Vue3 七》插槽 Slot

插槽可以让组件的使用者来决定组件中的某一块区域到底存放什么元素和内容。 使用插槽&#xff1a; 插槽的使用过程其实就是抽取共性、预留不同。将共同的元素、内容依然留在组件内进行封装&#xff1b;将不同的元素使用 slot 作为占位&#xff0c;让外部决定到底显示什么样的…

Functions

1.trigonometric function 定义和图像 反三角函数是三角函数的反函数 versin(verse -sin)&#xff1a;1/sinx 性质 三角函数的公式 三角恒等式 周期性公式&#xff1a;直接画图记 公式记忆&#xff1a;先想象一个在第一象限的锐角 1&#xff1a;在坐标轴中旋转360 2.sin&am…

微服务-网关、配置热更新、动态路由

祝小伙伴们每天开心 每天都能进步一点点 目录 1 网关路由 1.1 认识网关 什么是网关捏 网关实现方案 1.2 快速入门 &#xff08;1&#xff09;引入依赖 &#xff08;2&#xff09;配置路由 1.3 路由过滤 路由规则语法 常见属性 predicates&#xff08;路由断言&…

uni-app 资源引用(绝对路径和相对路径)方法汇总

文章目录 一、前言&#x1f343;二、绝对路径和相对路径2.1 绝对路径2.2 相对路径 三、引用组件四、引用js4.1 js 文件引入4.2 NPM支持 五、引用css六、引用json6.1 json文件引入 七、引用静态资源7.1 模板内引入静态资源7.2 css 引入静态资源7.3 js/uts 引入静态资源7.4 静态资…

机器学习基础-支持向量机SVM

目录 基本概念和定义 1. 超平面&#xff08;Hyperplane&#xff09; 2. 支持向量&#xff08;Support Vectors&#xff09; 3. 线性可分 4. 边界 SVM算法基本思想和分类 基本思想 间隔最大化 间隔&#xff08;Margin&#xff09; 软边距 SVM 核函数的概念 基本概念…

TypyScript从入门到精通

TypyScript从入门到精通 TypyScript 是什么&#xff1f;增加了什么环境搭建二、为何需要 TypeScript三、编译 TypeScript四、类型声明五、类型推断基本类型六、类型总览JavaScript 中的数据类型TypeScript 中的数据类型1. 上述所有 JavaScript 类型2. 六个新类型&#xff1a;3.…

mybatisX插件的使用,以及打包成配置

装mybatisX插件&#xff1b; idea连接数据库&#xff1b; 点击mybatisx-generator&#xff0c;设置自己装mybatisX插件&#xff1b; idea连接数据库&#xff1b; 点击mybatisx-generator&#xff0c;设置自己要的包和类&#xff1b; 如果要把自己的配置设置成一个自定义模板&a…

简单的jmeter数据请求学习

简单的jmeter数据请求学习 1.需求 我们的流程服务由原来的workflow-server调用wfms进行了优化&#xff0c;将wfms服务操作并入了workflow-server中&#xff0c;去除了原来的webservice服务调用形式&#xff0c;增加了并发处理&#xff0c;现在想测试模拟一下&#xff0c;在一…

Java后端常用的4种请求方式(通俗易懂)

文章目录 前言通用接口类(ControllerDemo)通用实体类(UserEntity)通用响应类(HttpClientResult)成功截图(先启动项目,然后右键执行main方法) HttpClientHttpClient 的主要类代码案例导入依赖工具类(HttpClientUtil)测试类 HttpURLConnection简介调用步骤代码案例导入依赖工具类…

floodfill算法_dfs

之前我们用BFS解决floodfil算法 BFS 解决 FloodFill 算法_图像渲染_岛屿数量_被围绕的区域-CSDN博客 下面我们用dfs进行解决 733. 图像渲染 从初始位置开始dfs&#xff0c;找和它值相同的&#xff0c;并在dfs过程中把值改为目标值。因为会改变原数组&#xff0c;不用vis记录经过…