当前位置: 首页 > 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;的所有楼层。另…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

基于 TAPD 进行项目管理

起因 自己写了个小工具&#xff0c;仓库用的Github。之前在用markdown进行需求管理&#xff0c;现在随着功能的增加&#xff0c;感觉有点难以管理了&#xff0c;所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD&#xff0c;需要提供一个企业名新建一个项目&#…...

十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建

【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...

ubuntu22.04有线网络无法连接,图标也没了

今天突然无法有线网络无法连接任何设备&#xff0c;并且图标都没了 错误案例 往上一顿搜索&#xff0c;试了很多博客都不行&#xff0c;比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动&#xff0c;重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...

【堆垛策略】设计方法

堆垛策略的设计是积木堆叠系统的核心&#xff0c;直接影响堆叠的稳定性、效率和容错能力。以下是分层次的堆垛策略设计方法&#xff0c;涵盖基础规则、优化算法和容错机制&#xff1a; 1. 基础堆垛规则 (1) 物理稳定性优先 重心原则&#xff1a; 大尺寸/重量积木在下&#xf…...

规则与人性的天平——由高考迟到事件引发的思考

当那位身着校服的考生在考场关闭1分钟后狂奔而至&#xff0c;他涨红的脸上写满绝望。铁门内秒针划过的弧度&#xff0c;成为改变人生的残酷抛物线。家长声嘶力竭的哀求与考务人员机械的"这是规定"&#xff0c;构成当代中国教育最尖锐的隐喻。 一、刚性规则的必要性 …...

MeanFlow:何凯明新作,单步去噪图像生成新SOTA

1.简介 这篇文章介绍了一种名为MeanFlow的新型生成模型框架&#xff0c;旨在通过单步生成过程高效地将先验分布转换为数据分布。文章的核心创新在于引入了平均速度的概念&#xff0c;这一概念的引入使得模型能够通过单次函数评估完成从先验分布到数据分布的转换&#xff0c;显…...

Python打卡训练营学习记录Day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

第6章:Neo4j数据导入与导出

在实际应用中&#xff0c;数据的导入与导出是使用Neo4j的重要环节。无论是初始数据加载、系统迁移还是数据备份&#xff0c;都需要高效可靠的数据传输机制。本章将详细介绍Neo4j中的各种数据导入与导出方法&#xff0c;帮助读者掌握不同场景下的最佳实践。 6.1 数据导入策略 …...