SMCA:港中文提出注意力图校准的DETR加速方案 | ICCV 2021
为了加速
DETR收敛,论文提出了简单而有效的Spatially Modulated Co-Attention(SMCA)机制,通过在初始边界框位置给予较高的协同注意力响应值的约束来构建DETR的回归感知协同注意力。此外,将SMCA扩展为多头注意力和尺度选择注意力后,对比DETR可以实现更好的性能(108周期45.6 mAPvs500周期43.3 mAP)来源:晓飞的算法工程笔记 公众号
论文: Fast Convergence of DETR with Spatially Modulated Co-Attention

Introduction
最近提出的DETR通过消除手工设置的锚框和非极大值抑制(NMS),显著简化了目标检测流程。但与两阶段或一阶段检测器相比,DETR的收敛速度较慢(500 vs 40 周期),导致算法设计周期变长。研究人员难以进一步扩展该算法,从而阻碍了其广泛使用。
在DETR中,对象查询向量负责检测不同空间位置的对象。每个对象查询都与卷积神经网络 (CNN) 编码的空间视觉特征交互,通过协同注意力机制自适应地从空间位置收集信息,估计边界框位置和对象类别。但在DETR的解码器中,每个对象查询的协同关注视觉区域可能与查询要预测的边界框无关。因此,DETR的解码器需要长时间的训练来搜索适当的协同关注视觉区域,以准确识别相应的对象。

受这一观察的启发,论文提出了一种名为空间调制协同注意(SMCA)的新模块。取代DETR中现有的协同注意力机制,实现更快的收敛和更高的性能。
SMCA动态预测每个对象查询对应的框的初始中心和尺寸,生成2D空间的类高斯权重图。权重图逐元素与对象查询和图像特征产生的协同注意力特征图相乘,可以有效地聚合来自视觉特征图的查询对象的相关信息。通过这种方式,空间权重图有效地调节每个对象查询的协同注意力的搜索范围,使其适当地围绕最初预测对象的中心和尺寸。通过利用预测的高斯分布空间先验,SMCA可以显著加快DETR的训练速度。
虽然将SMCA机制简单地融入DETR中可以加速收敛速度,但与DETR相比性能较差(50 个周期时为41.0 mAP,108 个周期时为 42.7 mAP vs. 500个周期时为43.3 mAP)。受到多头注意力和多尺度特征的启发,论文将其与SMCA集成来进一步增强:
- 对于编码器中的多尺度视觉特征,不是简单地对
CNN主干的多尺度特征进行缩放以形成联合多尺度特征图,而是引入了尺度内和多尺度混合的自注意力机制来进行多尺度视觉特征之间的信息传播。 - 在解码器中,每个对象查询可以通过尺度选择注意力自适应地选择适当尺度的编码特征。对于解码器中的多个协同注意头,都会估计特定的对象中心和尺度,生成不同的空间权重图用于调整协同注意力特征。
论文的贡献如下:
- 提出了一种新颖的空间调制协同注意力(
SMCA),通过位置约束的目标回归来加速DETR的收敛。没有多尺度特征和多头注意力的基础版SMCA已经可以在 50 个周期时达到41.0 mAP,在 108 个周期时达到42.7 mAP。 - 完整版
SMCA进一步集成了多尺度特征和多头空间调制,可以通过更少的训练迭代进一步显着改进和超越DETR。SMCA在 50 个周期时可以达到43.7 mAP,在 108 个周期时可以达到45.6 mAP。 - 在
COCO 2017数据集进行了广泛的消融研究,以验证SMCA模块和网络设计。
Spatially Modulated Co-Attention
A Revisit of DETR
DETR将目标检测转化为集合预测问题。对DETR不熟悉的,可以看看之前的文章,【DETR:Facebook提出基于Transformer的目标检测新范式 | ECCV 2020 Oral】。
DETR先用卷积神经网络 (CNN) 从图像 \(I\in\mathbb{R}^{3\times H_{0}\times W_{0}}\) 中提取视觉特征图 \(f\in\mathbb{R}^{C\times H\times W}\),其中 \(H,W\) 和 \(H_{0},W_{0}\) 分别是输入图像和特征图的高度和宽度。
经过位置嵌入增强的视觉特征 \(f_{pe}\) 将被输入到__Transformer__的编码器中,对 \(f_{p e}\) 生成的键、查询和值特征进行自注意力计算,在所有空间位置的特征之间交换信息。为了增加特征多样性,这些特征将沿着通道维度分为多个组进行多头自注意力:
\begin{array}{l c r}{{E_{i}=\mathrm{Softmax}(K_{i}^{T}Q_{i}/\sqrt{d})V_{i},}}\ {{E=\mathrm{Concat}(E_{1},\cdot\cdot\cdot\cdot\cdot E_{H}),}}\end{array}
\quad\quad (1)
\]
其中 \(K_{i}\), \(Q_{i}\), \(V\_{i}\) 表示键、查询和值特征的第 \(i\) 个特征组。每种类型的特征都有 \(H\) 组,输出的编码器特征 \(E\) 经过进一步变换后输入到Transformer的解码器中。
对于编码器编码的视觉特征 \(E\),DETR在对象查询 \(O\_q\in\mathbb{R}^{N\times C}\) 和 \(E\in\mathbb{R}^{L\times C}\) 之间执行协同注意力(\(N\) 表示预先指定的对象查询的数量,\(L\) 是空间视觉特征的数量):
\begin{array}{l}
{{Q=\mathrm{FC}(O\_{q}),\ K,V=\mathrm{FC}(E)}}
\
{{C\_{i}=\mathrm{Softmax}(K\_i^T Q\_i/\sqrt{d})V\_i,}}
\
{{C_{i}=\mathrm{Concat}(C_{1},\ldots\cdot C\_{H}),}}
\end{array}
\quad\quad (2)
\]
其中 \(\mathrm{FC}\) 表示单层线性变换,\(C\_i\) 表示第 \(i\) 个协同注意力头关于对象查询 \(O\_q\) 的协同特征。解码器的每个对象查询的输出特征由多层感知器 (MLP) 处理,输出每个对象的类分数和框位置。
给定预测的框和类别,在预测结果和GT之间应用匈牙利算法来识别每个对象查询的学习目标。
Spatially Modulated Co-Attention

DETR中的原始协同注意力不知道预测的边界框,因此需要多次迭代才能为每个对象查询生成正确的注意力图。论文提出的SMCA的核心思想是,将可学习的协同注意力图与手工设计的查询空间先验相结合,使得关注的特征限制在对象查询的初始输出位置周围,从而与最终的对象预测更加相关。
- Dynamic spatial weight maps
每个对象查询先动态预测其负责对象的中心和比例,用于生成类似2D高斯的空间权重图。对象查询 \(O\_q\) 的类高斯分布归一化中心 \(c\_h^{norm}\)、\(c\_w^{norm}\) 和尺度 \(s\_h\)、\(s\_w\) 的计算为:
\begin{array}{c}{{c_{h}^{\mathrm{norm}},c_{w}^{\mathrm{norm}}={\mathrm{sigmoid}}(\mathrm{MLP}(O_{q})),}}\ {{s_{h},s_{w}=\mathrm{FC}(O_{q}),}}\end{array}
\quad\quad (3)
\]
由于物体有不同的尺度和高宽比,预测与宽度和高度无关的尺度\(s_{h}\)、\(s_{w}\)可以更好地处理现实场景中的复杂物体。对于大或小物体,SMCA动态生成不同的 \(s_{h}\)、\(s_{w}\) 值,以便通过空间权重图 \(G\) 来调整协同注意力图,从而聚合来自大物体所有部分的足够信息或抑制小物体的背景杂乱。
在得到上述对象信息后,SMCA生成类高斯权重图:
G(i,j)=\mathrm{exp}(-\frac{(i-c\_w)^2}{\beta s^2\_w} - \frac{(j-c\_h)^2}{\beta s^2\_h})
\quad\quad (4)
\]
其中 \((i,j)\in0,W\;\times0,H\) 是权重图 \(G\) 的空间索引,\(\beta\) 是用于调整类高斯分布bandwidth的超参数。一般来说,权重图 \(G\) 对靠近中心的空间位置分配高重要性,对远离中心的位置分配低重要性。\(\beta\) 可以通过手动调整来确保 \(G\) 在训练开始时覆盖较大的空间范围,使得网络能够接收到更多信息的梯度。
- Spatially-modulated co-attention
给定动态生成的空间先验 \(G\),用于调整对象查询 \(O\_Q\) 和自注意力编码特征 \(E\) 之间的每个协同注意图 \(C\_i\)(在基础版的SMCA中,\(G\) 是所有协同注意力头共享的):
C_{i}=\mathrm{softmax}\bigl(K_{i}^{T}Q_{i}/\sqrt{d}+\mathrm{log}G\bigr)V_{i}
\quad\quad (5)
\]
SMCA在空间图 \(G\) 的对数和协同注意力点积 \(K_{h}^{T}Q_{h}/\sqrt{d}\) 之间执行元素加法,然后对所有空间位置进行softmax归一化。这样,解码器的协同注意力在预测的边界框位置周围的权重更大,可以限制协同注意力的搜索空间,从而提高收敛速度。类高斯权重图如图 2 所示,限制协同注意力更多地关注预测边界框位置附近的区域,从而显着提高DETR的收敛速度。在SMCA基本版中,多个注意力头的协同注意力图 \(C\_{i}\) 共享相同的类高斯权重图 \(G\)。
- SMCA with multi-head modulation
论文还研究了针对不同的协同注意头使用不同的类高斯权重图调整协同注意特征。每个头从共享的中心 \(c_{w}, c_{h}\) 开始,预测特定的相对于中心的偏移 \(\Delta c_{w,i},\Delta c_{h,i}\) 和特定的尺度 \(s_{w,i},s_{h,i}\)。基于上述信息生成特定的类高斯空间权重图 \(G\_{i}\),随后得到协同注意特征图 \(C\_1\cdots C\_H\):
C_{i}=\mathrm{softmax}(K_{i}^{T}Q_{i}/\sqrt{d}+\log G_{i})V\_{i}\quad\mathrm{for}\,i=1,\cdot\cdot,H.
\quad\quad (6)
\]
多个空间权重图可以强调不同的上下文并提高检测精度。
- SMCA with multi-scale visual features
特征金字塔在目标检测框架中很流行,对比单尺度特征编码能带来显着的性能提升。因此,论文还将多尺度特征集成到SMCA中,通过在Transformer的编码器中用多尺度特征编码替换单尺度特征编码来进一步改进框架。
给定图像,从CNN主干网络提取采样率为16、32、64多尺度视觉特征 \(f_{16}\)、\(f_{32}\)、\(f\_{64}\),编码器中的自注意力机制在不同尺度的所有特征像素之间传播和聚合信息。但由于多尺度特征的像素数量都非常大,自注意力操作的计算成本很高。为了解决这个问题,论文引入了尺度内自注意力编码,仅在每个尺度内的特征像素之间计算自注意力,而Transformer块的权重(自注意力和前馈子网络)在不同尺度上共享。论文的实证研究表明,跨尺度的参数共享增强了尺度内自注意力编码的泛化能力。
对于SMCA编码器的最终设计,采用2个尺度内自注意力编码块,然后是1个多尺度自注意力块,再接另外2个尺度内自注意力块。该设计具有与5个多尺度自注意力编码块非常相似的检测性能,但计算量要小得多。
给定编码器输出的多尺度编码特征 \(E_{16}\)、\(E_{32}\)、\(E_{64}\),解码器执行协同注意力的简单解决方案是首先重新缩放并连接多尺度特征以形成单尺度特征图,然后在对象查询和生成的特征图之间计算协同注意力。然而,论文注意到一些对象查询可能只需要特定尺度的信息,并不总是需要所有尺度的信息。例如,低分辨率特征图 \(E_{64}\) 中缺少小对象的信息,负责小物体的对象查询应该更有效地仅从高分辨率特征图中获取信息。与将每个边界框显式分配给特定尺度的特征图的传统方法(例如FPN)不同,论文使用可学习的尺度注意力机制自动地为每个框选择尺度:
\alpha_{16},\alpha_{32},\alpha_{64}=\mathrm{Sortmax}(\mathrm{FC}(O_{q})),
\quad\quad (7)
\]
其中 \(\alpha_{16}\)、\(\alpha_{32}\)、\(\alpha\_{64}\) 代表选择对应特征的重要程度。
为了在对象查询\(O_{q}\)和多尺度视觉特征 \(E_{16}\)、\(E_{32}\)、\(E_{64}\) 之间计算协同注意力,首先通过不同的线性变化从对应的编码特征中获得注意力头 \(i\) 的多尺度键 \(K_{i,16},K_{i,32},K_{i,64}\) 和值特征 \(V_{i,16},V_{i,32},V_{i,64}\),随后执行添加尺度选择权重和多尺度的SMCA计算:
\begin{array}{l}
{{C_{i,j}=\mathrm{Softmax(K_{i,j}^T\ Q_i/\sqrt{d}+log G\_i)V_{i,j}\odot \alpha\_{j}}}}
\quad\quad\ (8)
\
{{C_{i,j}=\underset{\mathrm{all}\ j}{\sum}\mathrm{C}_{i,j},\quad\mathrm{for} j\in{16,32,64},}}
\quad\quad\quad\quad\quad (9)
\end{array}
\]
其中 \(C\_{i,j}\) 代表查询和第 \(j\) 个尺度视觉特征在第 \(i\) 个协同注意力头中的协同注意力特征。通过这种尺度选择注意力机制,与每个对象查询最相关的尺度被平滑地选择,同时抑制其它尺度的视觉特征。
加上尺度内注意力和尺度选择注意力机制后,完整的SMCA可以比基础版更好地处理目标检测。
- SMCA box prediction
在对象查询和编码图像特征之间进行协同注意力后,得到对象查询 \(O\_q\) 的更新特征 \(D\in\mathbb{R}^{N\times C}\)。在原始DETR中,分别使用 3 层MLP和 1 个线性层来预测边界框和分类置信度:
\begin{array}{l}
{{\mathrm{Box}=\mathrm{Sigmoid}(\mathrm{MLP}(D))}}
\quad\quad (10)
\
{{\mathrm{Score}=\mathrm{FC}(D)}}
\quad\quad\quad\quad\quad\quad\ \ (11)
\end{array}
\]
其中 \(\mathrm{Box}\) 代表预测框在归一化坐标系中的中心、高度、宽度,\({\mathrm{Score}}\) 代表分类预测。而在SMCA中,由于协同注意力被限制在初始预测的对象中心 \(c_{h}^{\mathrm{norm}},c_{w}^{\mathrm{norm}}\) 周围,将初始中心作为约束边界框预测的先验进行校正预测:
\begin{array}{c}
{{\widehat{\mathrm{Box}}=\mathrm{MLP}(D)}}
\
{{\widehat{\mathrm{Box}}:2=\widehat{\mathrm{Box}}:2 + c\_h^\widehat{norm},c\_w^\widehat{norm}}}
\
{{\mathrm{Box}=\mathrm{Sigmoid(\widehat{Box})}}}
\end{array}
\quad\quad (12)
\]
在Sigmoid之前进行中心坐标的相加,能确保边界框预测与SMCA中突出的协同注意区域高度相关。
Experiments

表 1 展示了SMCA与其它DETR进行对比。


表 3 和表 4 展示了论文提出的空间调制协同注意力、多头调整注意力和多尺度特征之间的对比实验。

图 3 展示了SMCA的特征可视化。

表 5 与SOTA模型进行对比。
如果本文对你有帮助,麻烦点个赞或在看呗~undefined更多内容请关注 微信公众号【晓飞的算法工程笔记】

SMCA:港中文提出注意力图校准的DETR加速方案 | ICCV 2021的更多相关文章
- 腾讯优图&港科大提出一种基于深度学习的非光流 HDR 成像方法
目前最好的高动态范围(HDR)成像方法通常是先利用光流将输入图像对齐,随后再合成 HDR 图像.然而由于输入图像存在遮挡和较大运动,这种方法生成的图像仍然有很多缺陷.最近,腾讯优图和香港科技大学的研究 ...
- 【中文分词】二阶隐马尔可夫模型2-HMM
在前一篇中介绍了用HMM做中文分词,对于未登录词(out-of-vocabulary, OOV)有良好的识别效果,但是缺点也十分明显--对于词典中的(in-vocabulary, IV)词却未能很好地 ...
- 【中文分词】简单高效的MMSeg
最近碰到一个分词匹配需求--给定一个关键词表,作为自定义分词词典,用户query文本分词后,是否有词落入这个自定义词典中?现有的大多数Java系的分词方案基本都支持添加自定义词典,但是却不支持HDFS ...
- Servlet向客户端发送中文数据的编码情况
(更多内容请关注本人微信订阅号:it_pupil) 本文讲述服务端servlet向客户端浏览器发送中文数据的编码情况,需要抓住下面几点: 输出流发送数据,必须是以字节形式传输的.也就是说,如果你在服务 ...
- 见招拆招-PostgreSQL中文全文索引效率优化
* { color: #3e3e3e } body { font-family: "Helvetica Neue", Helvetica, "Hiragino Sans ...
- iReport 5.6.0 PDF导出中文不显示问题 解决方案
问题描述 iReport 5.6.0 PDF格式导出,中文不显示. 报错信息如下: Error exporting print... Could not load the following font ...
- controller返回js中文变成?解决方案
在使用spring-mvc的mvc的时候既享受它带来的便捷,又头痛它的一些问题,比如经典的中文乱码问题.现在是用json作为客户端和服务端 的数据交换格式貌似很流行,但是在springmvc中有时候会 ...
- Atitit 图像处理和计算机视觉的分类 三部分 图像处理 图像分析 计算机视觉
Atitit 图像处理和计算机视觉的分类 三部分 图像处理 图像分析 计算机视觉 1.1. 按照当前流行的分类方法,可以分为以下三部分:三部分 图像处理 图像分析 计算机视觉1 1.2. 图像处理需要 ...
- (转)CVPR 2016 Visual Tracking Paper Review
CVPR 2016 Visual Tracking Paper Review 本文摘自:http://blog.csdn.net/ben_ben_niao/article/details/52072 ...
- 2018 AI产业界大盘点
2018 AI产业界大盘点 大事件盘点 “ 1.24——Facebook人工智能部门负责人Yann LeCun宣布卸任 Facebook人工智能研究部门(FAIR)的负责人Yann LeCun宣布卸 ...
随机推荐
- 天翼云安装nexus3.37.1
有点操蛋,官网网络太慢了! 百度了不少网友的内容,综合如下 总体是个皮毛,但已经可以用于开发了! 一.下载和安装 https://download.sonatype.com/nexus/3/nexus ...
- 高通与At指令:基础概念
背景 在某个新基线上移植AT指令,发现有问题,因此收集了这个系列的 文章 作为 这方面的知识补充. 原文作者:laozhuxinlu,本文有删改. AT指令在产线中是一类比较重要的问题, 一天没来得及 ...
- Docker Harbor的安装配置
1.先安装docker-compose curl -L http://github.com/docker/compose/releases/download/1.21.2/docker-compose ...
- 实测分享,瑞芯微RK3588八核国产处理器性能测评!确实“遥遥领先”!
RK3588处理器优势 RK3588是瑞芯微最新一代旗舰工业处理器,它具有如下卓越优势: 超强运算能力:四核ARM Cortex-A76@2.4GHz + 四核ARM Cortex-A55@1.8GH ...
- JpaRepository:Paging query needs to have a Pageable parameter! Offending method public abstract
在练习 Spring Data JPA 时,使用分页接口 Pageable 查询数据,接口实现后,运行报错: Paging query needs to have a Pageable paramet ...
- vulnhub - hackme1
vulnhub - hackme1 信息收集 端口扫描 详细扫描 目录扫描跟漏洞探测没发现什么可用信息,除了登录还有一个uploads目录应该是进入后台之后才能使用 web主页是个登录注册页面,爆了一 ...
- Spring5.X常见的注入方式
使用set方法注入 Video.java package net.cybclass.sp.domain; public class Video { private int id; private St ...
- 拆解LangChain的大模型记忆方案
之前我们聊过如何使用LangChain给LLM(大模型)装上记忆,里面提到对话链ConversationChain和MessagesPlaceholder,可以简化安装记忆的流程.下文来拆解基于Lan ...
- Spring MVC 中视图的实现原理,在Spring MVC 中实现重定向和转发,以及访问静态资源
1. Spring MVC 中视图的实现原理,在Spring MVC 中实现重定向和转发,以及访问静态资源 @ 目录 1. Spring MVC 中视图的实现原理,在Spring MVC 中实现重定向 ...
- 3. set 的使用
3. set 的使用 因为在实际工程中,我们不会将具体文件全部写出来,这是一件费力不讨好的事情. 3.1 set 定义变量 在 CMake 文件中,默认的变量数据类型是字符串,如果要用别的类型,需要进 ...