当前位置: 首页 > news >正文

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上的预训练设置。
    在这里插入图片描述

相关文章:

2024AAAI SCTNet论文阅读笔记

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

Laravel操作ElasticSearch

在Laravel项目中操作ElasticSearch可以通过以下步骤来实现,通常会借助相应的ElasticSearch客户端扩展包。 ### 安装ElasticSearch客户端包 在Laravel项目中,常用的是 elasticsearch/elasticsearch 这个PHP客户端库来与ElasticSearch进行交互&#xff0c…...

江科大STM32入门——SPI通信笔记总结

wx:嵌入式工程师成长日记 (一)简介 四根通信线:SCK、MOSI、MISO、SS(片选信号) 同步(同步通信是一种通信模式,在这种模式下,发送方和接收方在同一时刻进行数据传输。),全…...

微信小程序map组件所有markers展示在视野范围内

注意&#xff1a;使用include-points属性不生效&#xff0c;要通过createMapContext实现 <template><view class"map-box"><map id"map" class"map" :markers"markers" :enable-traffic"true" :enable-poi&…...

深度解析 tanh ⁡ tanh 激活函数

1. 引言 在现代深度学习中&#xff0c;激活函数&#xff08;Activation Function&#xff09;是神经网络的核心组件之一。它的主要作用是引入非线性&#xff0c;从而使神经网络能够学习和表示复杂的非线性关系。如果没有激活函数&#xff0c;神经网络的输出将只是输入的线性组…...

嵌入式入门Day38

C Day1 第一个C程序C中的输入输出输出操作coutcin练习 命名空间使用方法自定义命名空间冲突问题 C对字符串的扩充C风格字符串的使用定义以及初始化C风格字符串与C风格字符串的转换C风格的字符串的关系运算常用的成员变量输入方法 布尔类型C对堆区空间使用的扩充作业 第一个C程序…...

探索Rancher服务发现机制:容器世界的“导航仪”

《探索Rancher服务发现机制&#xff1a;容器世界的“导航仪”》 在当今容器化技术蓬勃发展的时代&#xff0c;容器的大规模部署和微服务架构的广泛应用使得服务之间的相互发现与通信变得至关重要。Rancher作为一款功能强大的容器管理平台&#xff0c;其服务发现机制宛如一座无…...

【ROS2】Qt事件循环和ROS2订阅机制一起使用有什么注意事项?

1、简述 Qt的事件循环和ROS订阅回调函数都可能在阻塞函数中运行, 例如:Qt的QApplication::exec() 和 ROS的rclcpp::spin() 两个阻塞函数不能在同一个线程中使用,如果使用不当,会造成Qt不处理事件或者ROS2不处理订阅的回调函数。 2、多线程 一般 QApplication::exec() 运…...

donet (MVC)webAPI 的接受json 的操作

直接用对象来进行接收&#xff0c;这个方法还不错的。 public class BangdingWeiguiJiluController : ApiController{/// <summary>/// Json数据录入错误信息/// </summary>/// <param name"WeiguiInfos"></param>/// <returns></r…...

Qt 界面外观

一、前言 1、 一个完善的应用程序&#xff0c;不仅应该有实用的功能&#xff0c;还要有一个漂亮的外观&#xff0c;这样才能使应用程序更加友好&#xff0c;更加吸引用户。 2、 作为一个跨平台的UI开发框架&#xff0c;Qt提供了强大而灵活的界面外观设计机制。 3、 本篇会讲解&…...

aws(学习笔记第二十二课) 复杂的lambda应用程序(python zip打包)

aws(学习笔记第二十二课) 开发复杂的lambda应用程序(python的zip包) 学习内容&#xff1a; 练习使用CloudShell开发复杂lambda应用程序(python) 1. 练习使用CloudShell CloudShell使用背景 复杂的python的lambda程序会有许多依赖的包&#xff0c;如果不提前准备好这些python的…...

HTML课堂之搜索工具箱/讲师duluo

目录&#xff1a; 源码在最后 小提示&#xff1a; 1.养成打卡习惯没日多加练习即可提什能力 2.源码在最后&#xff0c;请先看完代码讲解&#xff0c;在尝试自己写&#xff0c;这样容易掌握 3.请勿复制粘贴&#xff0c;因为你没掌握&#xff0c;即使复制粘贴也学不会 课堂重点笔…...

当歌 - RSS 订阅分发平台开发

以下将详细介绍当歌平台的技术架构、功能实现以及相关代码逻辑。 一、项目概述 当歌是一个极简的 RSS 订阅分发平台&#xff0c;旨在为用户提供便捷的 RSS 管理和订阅服务&#xff0c;帮助用户轻松获取和分享最新资讯。 二、技术架构 后端语言&#xff1a;PHP 数据库&#…...

学习threejs,导入wrl格式的模型

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️THREE.VRMLLoader wrl模型加…...

使用GitLab+Jenkins搭建CICD执行环境

使用GitLabJenkins搭建CI\CD执行环境 前言什么是DevOps&#xff1f;什么是CI/CD&#xff1f;使用GitLabJenkins搭建CI\CD执行环境GitLab安装1. 安装和配置所需的依赖2. 下载并安装极狐GitLab3. 登录极狐GitLab 实例4.常用gitlab指令5.修改密码 Jenkins安装1.Jenkins 的主要特点…...

使用vue-pdf预览pdf和解决pdf电子签章显示问题

使用vue-pdf预览pdf和解决pdf电子签章显示问题 第一步&#xff1a;npm install vue-pdf 第二步页面使用vue-pdf <template><div class"pdf1"><Pdf v-for"i in numPages" :key"i" :src"src" :page"i" />…...

【Rust自学】11.3. 自定义错误信息

喜欢的话别忘了点赞、收藏加关注哦&#xff0c;对接下来的教程有兴趣的可以关注专栏。谢谢喵&#xff01;(&#xff65;ω&#xff65;) 11.3.1. 添加错误信息 在 11.2. 断言(Assert) 中我们学习了assert!、assert_eq!和assert_ne!这三个宏&#xff0c;而这篇文章讲的就是它…...

05、Docker学习,常用安装:Mysql、Redis、Nginx、Nacos

Docker学习&#xff0c;常用安装&#xff1a;Mysql、Redis、Nginx、Nacos 一、Docker安装Mysql 1、docker search mysql ##查找mysql版本都有哪些 2、docker pull mysql:5.6 ##下载5.6版本的mysql镜像 3、docker run -p 13306:3306 --name mysql ##运行…...

RabbitMQ高级篇之MQ可靠性 数据持久化

文章目录 消息丢失的原因分析内存存储的缺陷如何确保 RabbitMQ 的消息可靠性&#xff1f;数据持久化的三个方面持久化对性能的影响持久化实验验证性能对比Spring AMQP 默认持久化总结 消息丢失的原因分析 RabbitMQ 默认使用内存存储消息&#xff0c;但这种方式带来了两个主要问…...

leetcode 2274. 不含特殊楼层的最大连续楼层数 中等

Alice 管理着一家公司&#xff0c;并租用大楼的部分楼层作为办公空间。Alice 决定将一些楼层作为 特殊楼层 &#xff0c;仅用于放松。 给你两个整数 bottom 和 top &#xff0c;表示 Alice 租用了从 bottom 到 top&#xff08;含 bottom 和 top 在内&#xff09;的所有楼层。另…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec&#xff1f; IPsec VPN 5.1 IPsec传输模式&#xff08;Transport Mode&#xff09; 5.2 IPsec隧道模式&#xff08;Tunne…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

(一)单例模式

一、前言 单例模式属于六大创建型模式,即在软件设计过程中,主要关注创建对象的结果,并不关心创建对象的过程及细节。创建型设计模式将类对象的实例化过程进行抽象化接口设计,从而隐藏了类对象的实例是如何被创建的,封装了软件系统使用的具体对象类型。 六大创建型模式包括…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案

在大数据时代&#xff0c;海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构&#xff0c;在处理大规模数据抓取任务时展现出强大的能力。然而&#xff0c;随着业务规模的不断扩大和数据抓取需求的日益复杂&#xff0c;传统…...

Python训练营-Day26-函数专题1:函数定义与参数

题目1&#xff1a;计算圆的面积 任务&#xff1a; 编写一个名为 calculate_circle_area 的函数&#xff0c;该函数接收圆的半径 radius 作为参数&#xff0c;并返回圆的面积。圆的面积 π * radius (可以使用 math.pi 作为 π 的值)要求&#xff1a;函数接收一个位置参数 radi…...

聚六亚甲基单胍盐酸盐市场深度解析:现状、挑战与机遇

根据 QYResearch 发布的市场报告显示&#xff0c;全球市场规模预计在 2031 年达到 9848 万美元&#xff0c;2025 - 2031 年期间年复合增长率&#xff08;CAGR&#xff09;为 3.7%。在竞争格局上&#xff0c;市场集中度较高&#xff0c;2024 年全球前十强厂商占据约 74.0% 的市场…...