CVPR 2022

2023-11-13

点击下方卡片,关注“CVer”公众号

AI/CV重磅干货,第一时间送达

作者:轻尘一笑  |  已授权转载(源:知乎)编辑:CVer

https://zhuanlan.zhihu.com/p/489839282

导读:在CVPR 2022上,新加坡南洋理工大学和商汤研究院的科研团队提出了SAM-DETR —— 利用语义对齐匹配加速DETR检测器收敛。它仅引入一个简单的即插即用的模块,通过采样“目标显著点”的特征使object query和图像特征的语义对齐,使DETR能够在MS-COCO数据集上迅速收敛。由于此方法即插即用的特性,SAM-DETR可以轻易地与现有的其他加速收敛的方法结合,实现更好的结果。根据作者已开源的代码,在MS-COCO数据集上,仅用ResNet-50,所提出的方法能在12 epoch内达到42.8% AP的检测精度,并能在50 epoch内达到47.1% AP的检测精度。

论文名称:Accelerating DETR Convergence via Semantic-Aligned Matching

d38cd1c8576247dfad6476472b26c0b2.png

论文:https://arxiv.org/abs/2203.06883

代码(现已开源):https://github.com/ZhangGongjie/SAM-DETR

问题和挑战

DEtection TRansformer(DETR) [1] 是一个新颖的目标检测框架。相比传统的基于Faster R-CNN或YOLO的目标检测器,DETR因其无需人为设计的组件(如Anchor、Non-Maximum-Suppression、训练时正负样本的采样规则等)的优势以及更优秀的检测精度受到了很多的关注。然而,DETR的最大的一个问题是其收敛非常缓慢,因而需要长时间的训练才能达到较高的精度。在MS-COCO数据集上,Faster R-CNN一般只需要12~36个epoch的训练即可收敛,而DETR则需要训练500个epoch才能达到理想的精度。如此高昂的训练成本限制了基于DETR框架的检测器的广泛使用。

动机

c676d2c7ae374497d97eaef42898c122.png

DETR [1] 使用一组object query来表示图像中不同位置的潜在目标,作为Transformer decoder的输入。如上图左部所示,DETR的Transformer decoder中的Cross-Attention(Encoder-Decoder Attention)模块可以被理解为一个“匹配+信息提取”的过程:每个object query需要先匹配与之对应的区域,再从这些区域中提取特征以供后续的预测。此过程也可用公式描述为:

474e3e0e52fe8c98606bced0da035691.png

其中Q表示object query,F表示Transformer Encoder输出的图像特征,Q’表示包含从F中提取的特征的object query。

然而,作者观察到在Transformer decoder中的Cross-Attention模块里,object query很难精确地匹配到其所对应的区域,这使得object query无法在Cross-Attention中精准地提取其所对应区域的特征。这直接导致了DETR的训练困难。如上图右部所示,造成object query无法正确聚焦于特定区域的原因是Cross-Attention之间的多个模块(Self-Attention和FFN)对object query进行了多次映射,使得object query与图像特征F的语义未对齐,也就是说,object query和图像特征F被映射到了不同的嵌入空间(Embedding Space)内。这使得object query和图像特征F之间的点乘(Dot-Product)+ Softmax难以聚焦在特定区域。

方法介绍

基于上述观察,作者提出了Semantic-Aligned-Matching DETR(SAM-DETR)以实现快速收敛的DETR。其方法的核心思想是利用孪生网络(Siamese Network)在各类匹配任务中的优秀性能,使Cross-Attention中的object query能更容易地聚焦于特定区域。孪生网络(Siamese Network)的核心思想是利用完全相同的两个子网络使匹配的双方被映射到同一个嵌入空间内,也就是说,匹配的双方将在相同的语义下计算相似度。这降低了匹配的难度,并提升了匹配的精确度。

ae4cb0b9d9c76bfdc493cba57d2d56d1.png

具体来说,如上图所示,SAM-DETR在每层Transformer Decoder Layer的Cross-Attention之前插入了一个“即插即用”的模块 – Semantics Aligner。Semantics Aligner对输入到Cross-Attention中的每一个object query从图像特征F中重采样,以确保匹配双方在语义上是对齐的。此外,不同于DETR [1] 为每一个object query建模一个对应的可学习的位置编码(Position Embedding),作者直接为每一个object query建模一个参考框(Reference Box),以限制重采样的范围。此外,其他设置与原始的DETR [1] 基本保持一致。由于所提出的SAM-DETR的核心部分是一个“即插即用”的模块,不需要对Cross-Attention进行魔改,所以SAM-DETR能够很轻易地与现有的DETR收敛解决方案进行结合,达到更好的效果。

1. 利用重采样实现语义对齐的匹配

bd71e5158f7f7cfbc330e86179f0ff40.png

上图所示是作者提出的Semantics Aligner的主要结构。对每个object query,Semantics Aligner根据参考框(Reference Box)用RoIAlign从图像特征中得到其对应区域的2D特征,并从中重采样(Re-Sampling)作为输入到Cross-Attention中的object query embedding。作者尝试了多种重采样方式(包括AvgPool,MaxPool等,见实验结果部分),发现使用多个搜索到的显著点(Salient Point)的特征效果最好。

2. 利用显著点特征进行重采样

对于检测任务而言,物体的显著点(Salient Point)(包括边界点、端点、强语义点等)是其识别和定位的关键。所以,作者对显著点的特征进行采样作为Semantics Aligner的输出。

作者直接对RoIAlign得到的区域特征进行卷积+MLP的操作,预测出8个显著点的坐标,再利用双线性插值(Bilinear Interpolation)从图像特征中采样相应位置的特征,并concatenate到一起作为新的object query embedding。相似地,这些显著点的坐标也用于生成对应的位置编码(Position Embedding),同样也concatenate到一起作为输出。搜索到的显著点如下图所示。这样得到的新的object query及其位置编码也可以不加改动地输入到后续的多头注意力(Multi-Head Attention)机制中进行处理。

910a4d282b4b68e8a5c754e359a06333.png

3. 通过特征重加权利用先前的信息

通过上述操作,Semantics Aligner输出了新的object query作为Cross-Attention的输入。但先前的object query仍然包含对Cross-Attention有用的信息。为有效利用这些信息,作者用之前的object query产生重加权参数,对新的object query进行特征重加权(Feature Reweighting)。如此,先前的信息得到了有效的利用,同时也保持了输出的object query的语义仍是与图像特征对齐的。

4. 与现有方法的结合

由于SAM-DETR仅引入了一个即插即用的模块,所以它可以很轻易地与现有方法进行结合。作者以SMCA-DETR [2] 为例,证明了SAM-DETR良好的可拓展性。

实验结果

下图为SAM-DETR与DETR [1] 的可视化对比。可以发现,SAM-DETR成功搜索到有意义的显著点,且相比DETR,SAM-DETR的Cross-Attention的响应更加集中。这证明了SAM-DETR能有效地降低object query与图像特征的匹配难度。

d44b87b692fe5bc99bbfb49c6b79fdfe.png

下表是消融实验的结果,证明了语义对齐和搜索显著点特征的有效性。

23ad72ccfa5b9809c41efa5edf763d5a.png

最后和当前SOTA的对比,SAM-DETR能在很短的训练周期下收敛。值得注意的是,当与SMCA [2] 结合时,即使仅在MS-COCO数据集上训练12个epoch,其检测精度也超过了Faster R-CNN。

0cc2860d2ca088b99496f88788f893ec.png

值得一提的是,在作者开源的代码中,还额外提供了SAM-DETR的多尺度版本和已训练好的模型。在MS-COCO数据集,12-epoch下检测精度可达42.8% AP,50-epoch下检测精度可达47.1% AP。

结语

本文介绍了SAM-DETR检测器以加速DETR的收敛。SAM-DETR 的核心是一个简单的即插即用模块,它能在语义上对齐object query和图像特征,以促进它们之间的匹配。此模块还显式搜索显著点的特征以进行语义对齐匹配。SAM-DETR 可以很容易地与现有的DETR收敛解决方案集成,以进一步提高性能。即使仅训练12个epoch,作者所提出的方法也可在MS-COCO数据集上超越Faster R-CNN的检测精度。

References

[1] Carion, Nicolas, Francisco Massa, Gabriel Synnaeve, Nicolas Usunier, Alexander Kirillov, and Sergey Zagoruyko. "End-to-end object detection with Transformers." In European Conference on Computer Vision (ECCV), pp. 213-229. 2020.

[2] Gao, Peng, Minghang Zheng, Xiaogang Wang, Jifeng Dai, and Hongsheng Li. "Fast convergence of DETR with spatially modulated co-attention." In Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV), pp. 3621-3630. 2021.

ICCV和CVPR 2021论文和代码下载

后台回复:CVPR2021,即可下载CVPR 2021论文和代码开源的论文合集

后台回复:ICCV2021,即可下载ICCV 2021论文和代码开源的论文合集

后台回复:Transformer综述,即可下载最新的3篇Transformer综述PDF
CVer-目标检测交流群成立
扫描下方二维码,或者添加微信:CVer6666,即可添加CVer小助手微信,便可申请加入CVer-目标检测 微信交流群。另外其他垂直方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch、TensorFlow和Transformer等。
一定要备注:研究方向+地点+学校/公司+昵称(如目标检测+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群

▲扫码或加微信: CVer6666,进交流群
CVer学术交流群(知识星球)来了!想要了解最新最快最好的CV/DL/ML论文速递、优质开源项目、学习教程和实战训练等资料,欢迎扫描下方二维码,加入CVer学术交流群,已汇集数千人!

▲扫码进群
▲点击上方卡片,关注CVer公众号

整理不易,请点赞和在看
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CVPR 2022 的相关文章

  • Python 函数句柄 ala Matlab

    在 MATLAB 中可以创建function handles http www mathworks co uk help techdoc ref function handle html与类似的东西 myfun arglist body 这
  • 如何将 Google Cloud Storage 中的许多文件设为私有?

    我进行了很多研究 但无法为此提出解决方案 以下是我用来在 GCP 中公开所有文件的代码 def make blob public bucket name blob name Makes a blob publicly accessible
  • 如何使用 .pth 文件添加 Python 导入路径

    如果我将 pth 文件放入 site packages 中 则会给出一个ImportError 我不知道如何通过创建 pth 文件来导入 指在Python中导入 https stackoverflow com questions 69728
  • python blpapi安装错误

    我试图根据 README 中的说明为 python 安装 blpapi 3 5 5 但是在运行时 python setup py install 我收到以下错误 running install running build running b
  • 无法使用 Python 循环分页 API 响应

    所以 我对这个感到摸不着头脑 使用 HubSpot 的 API 我需要获取我客户的 门户 帐户 中所有公司的列表 遗憾的是 标准 API 调用一次只能返回 100 家公司 当它返回响应时 它包含两个参数 使分页响应成为可能 其中之一是 ha
  • 更改 numpy 数组的结构强制给定值

    如何缩小栅格数据的比例4 X 6大小成2 X 3如果 2 2 像素内的任何元素包含 1 则大小强制选择 1 否则选择 0 import numpy as np data np array 0 0 1 1 0 0 1 0 0 1 0 0 1
  • 如何计算查询集中每个项目的两个字段的总和

    假设我有以下模型结构 class SomeModel Model base price DecimalField commision DecimalField 我不想存储total price在我的数据库中为了数据一致性并希望将其计算为ba
  • 在Python中清理属于不同语言的文本

    我有一个文本集合 其中的句子要么完全是英语 印地语或马拉地语 每个句子附加的 id 为 0 1 2 分别代表文本的语言 无论任何语言的文本都可能有 HTML 标签 标点符号等 我可以使用下面的代码清理英语句子 import HTMLPars
  • 如何解决CDK CLI版本不匹配的问题

    我收到以下错误 此 CDK CLI 与您的应用程序使用的 CDK 库不兼容 请将CLI升级到最新版本 云程序集架构版本不匹配 支持的最大架构版本为 8 0 0 但发现为 9 0 0 发出后cdk diff命令 我确实跑了npm instal
  • 如何在python mechanize中设置cookie

    向服务器发送请求后 br open http xxxx br select form nr 0 br form MESSAGE 1 2 3 4 5 br submit 我得到了响应标题 其中包含 set cookie Set Cookie
  • python lxml 使用iterparse编辑并输出xml

    我已经在 lxml 库上摆弄了一段时间了 也许我没有正确理解它 或者我错过了一些东西 但我似乎无法弄清楚在捕获某个 xpath 后如何编辑文件并且然后能够在逐个元素解析时将其写回到 xml 中 假设我们有这个 xml 作为示例
  • 使用 os.forkpty() 创建一个伪终端以 ssh 到远程服务器并与其通信

    我正在尝试编写一个 python 脚本 它可以 ssh 到远程服务器 并可以从 python 客户端执行 ls cd 等简单命令 但是 在成功 ssh 到服务器后 我无法读取伪终端的输出 任何人都可以在这里帮助我 以便我可以在服务器上执行一
  • Pandas 中的数据透视表小计

    我有以下数据 Employee Account Currency Amount Location Test 2 Basic USD 3000 Airport Test 2 Net USD 2000 Airport Test 1 Basic
  • 在 matplotlib 中将 3D 背景更改为黑色

    我在将 3D 图表的背景更改为黑色时遇到问题 这是我当前的代码 当我将facecolor设置为黑色时 它会将图表内部更改为灰色 这不是我想要的 fig plt figure fig set size inches 10 10 ax plt
  • 向结构化 numpy 数组添加字段

    将字段添加到结构化 numpy 数组的最简洁方法是什么 是否可以破坏性地完成 或者是否有必要创建一个新数组并复制现有字段 每个字段的内容是否连续存储在内存中 以便可以有效地完成此类复制 如果您使用 numpy 1 3 还有 numpy li
  • 列表中的“u”是什么意思?

    这是我第一次遇到这种情况 刚刚打印了一个列表 每个元素似乎都有一个u在它前面 即 u hello u hi u hey 它是什么意思 为什么列表的每个元素前面都会有这个 由于我不知道这种情况有多常见 如果您想了解我是如何遇到它的 我会很乐意
  • 给定一个字符串,如何删除所有重复的连续字母?

    如何从字符串中删除两个连续的字母 例如 a str hii thherre 应该成为 hi there 我尝试这样做 a str join sorted set a str key a str index 但是 我得到 hi ter 是的
  • python:xml.etree.ElementTree,删除“命名空间”

    我喜欢 ElementTree 解析 xml 的方式 特别是 Xpath 功能 我有一个带有嵌套标签的应用程序的 xml 输出 我想按名称访问此标签而不指定名称空间 这可能吗 例如 root findall molpro job 代替 ro
  • 访问影子 DOM 中的元素

    是否有可能查找 Shadow DOM 中的元素与蟒蛇硒 示例用例 我有这个input with type date
  • 具有行业级约束的 SciPy 投资组合优化

    尝试在这里优化投资组合权重分配 通过限制风险来最大化我的回报函数 我可以毫无问题地通过简单的约束 所有权重之和等于 1 找到产生我的回报函数的优化权重 并做出另一个约束 即我的总风险低于目标风险 我的问题是 如何为每个组添加行业权重界限 我

随机推荐

  • Windows下安装RabbitMQ

    认准官网 https www rabbitmq com getstarted 往下拉找到官网下载渠道 使用windows chocolatey自动安装 choco install rabbitmq 手动安装 必须先安装Erlang OTP
  • Element浅尝辄止9:Popover 弹出框组件

    Popover 的属性与 Tooltip 很类似 它们都是基于Vue popper开发的 因此有重复属性 1 如何使用 trigger属性用于设置何时触发 Popover 支持四种触发方式 hover click focus 和 manua
  • NOIP中的数学--第6课 排列与组合

    排列与组合的概念与计算公式 1 排列 在乎顺序 全排列 n个人全部来排队 队长为n 第一个位置可以选n个 第二位置可以选n 1个 以此类推得 P n n n n 1 n 2 321 n 规定0 1 部分排列 n个人选m个来排队 m lt n
  • MachineLearningWu_17/P78-P83_UsingBiasAndVarianceToDiagnose

    x 1 高bias和高variance的意义 我们引入高bias和高variance是为了衡量模型是underfit还是overfit的问题 我们使用Jtrain来代表训练误差 使用Jcv即交叉熵损失表示验证集误差 高bias意味着欠拟合
  • java模拟http请求,通过流的方式发送数据,模拟接收流文件和json数据

    项目里碰到过模拟ajax请求的案例 研究了一下 觉得 httpClient 是真心好用 由于模拟环境搞了大半天 httpclient就另外再写博文吧 下面的例子介绍流的方式发送和接收 这个就有点暴力了 想传啥都行 以字节流的方式发送数据 可
  • java image 透明,绘制完全透明的“白色”在Java BufferedImage中

    This might sound like a bit of strange title but bear with me there is a reason I am trying to generate a white glow aro
  • 【调用百度翻译接口实现简单窗口的汉译英】

    与百度翻译同种方法实现简单窗口的汉译英 前言 一 思路梳理 二 思路3的文件代码展示 1 引入库 总结 前言 基于python爬虫方面 我们能做很多事 这里 我们先找到百度翻译的接口 然后自己构建逻辑 实现建议窗口汉语翻译英语功能 一 思路
  • python 数据库连接池_python数据库连接池

    一 DBUtils的认识 首先管理数据库连接池的包是 DBUtils 为高频度并发的数据库访问提供更好的性能 可以自动管理连接对象的创建和释放 最常用的两个外部接口是PersistentDB 和 PooledDB 前者提供了单个线程专用的数
  • mac下面有epoll?

    没有的 但是mac下面有kqueue 跟epoll原理是差不多的 这个是没办法的 如果实在需要 就用Ubuntu吧 这个也可以无缝迁移 更多资源 更多文章由小白技术社提供 是我啦
  • Mysql学习(十一) -- 常见问题处理

    1 MySQL数据库cpu飙升的话你会如何分析 重点是定位问题 使用top观察mysqld的cpu利用率 切换到常用的数据库 使用show full processlist 查看会话 观察是哪些sql消耗了资源 其中重点观察state指标
  • 5G到底有哪些能力

    来源 工信头条 作者 华为5G首席科学家 童文 摘要 华为5G首席科学家告诉你5G到底有哪些能力 2019年是5G产业进入全面商用的关键一年 全球5G网络的部署已经启动 2018年6月 5G独立组网标准冻结 5G完成了第一阶段全功能eMBB
  • Android Execution failed for task ‘:app:mergeDebugAssets‘. > java.nio.file.AccessDeniedException:错误

    博主前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住也分享一下给大家 点击跳转到网站 错误详情图 在项目中引入萤石云的依赖后 compile com ezviz sdk ezuikit 2 2 1 就开始报这个错误 前前后
  • (.*?)正则表达式

    1 匹配任意除换行符 n 外的字符 2 表示匹配前一个字符0次或无限次 3 表示前边字符的0次或1次重复 4 或 后跟 表示非贪婪匹配 即尽可能少的匹配 如 重复任意次 但尽可能少重复 5 表示匹配任意数量的重复 但是在能使整个匹配成功的前
  • cookies添加python selenium

    def add ck a browser delete all cookies 删除原有cookies cookies 在浏览器里面复制 a BIDUPSID B8D733AE1AF91ABF07AE6448B2DF91AA PSTM 16
  • 预约到家按摩小程序开发定制同城服务

    随着生活节奏加快 生活压力也随之而来 很多人忙于工作与生计 身体和心理两方面都在承受重压 而按摩能够消除身体的疲惫 增强人的身体体质 在劳累过后放松身心按摩一会儿 可以快速恢复精神状态 增强免疫力和抵抗力 按摩的好处很多 但由于现代人时间和
  • 0001.两数之和(简单)

    代码 Java版 2020 07 03 public int twoSum int nums int target int ans new int 2 for int i 0 i lt nums length i for int j i 1
  • c#线程二

    下面的表格列展了 NET对协调或同步线程动作的可用的工具 简易阻止方法 构成 目的 Sleep 阻止给定的时间周期 Join 等待另一个线程完成 锁系统 构成 目的 跨进程 速度 lock 确保只有一个线程访问某个资源或某段代码 否 快 M
  • 记录WIN10选择文件右键后资源管理器无响应的解决方法

    现象 WIN10选择文件 右键文件后资源管理器无响应 解决方法 找到一种亲测可用的解决方法 即清除文件资源管理器历史记录 详细操作 1 打开文件资源管理器 2 点击左上角 文件 点击 选项 找到 隐私 下方的 清除 按钮 点击 清除 最后点
  • DVWA - XSS DOM (high)

    随便选择一个 url中会出现我们选的哪个 http 127 0 0 1 DVWA master vulnerabilities xss d default 3Cscript
  • CVPR 2022

    点击下方卡片 关注 CVer 公众号 AI CV重磅干货 第一时间送达 作者 轻尘一笑 已授权转载 源 知乎 编辑 CVer https zhuanlan zhihu com p 489839282 导读 在CVPR 2022上 新加坡南洋