DETR能够消除物体检测中许多手工设计组件的需求,同时展示良好的性能。但由于注意力模块在处理图像特征图方面的限制,DETR存在收敛速度慢和特征分辨率有限的问题。为了缓解这些问题,论文提出了Deformable DETR,其注意力模块仅关注参考点周围的一小组关键采样点,通过更少的训练次数实现比DETR更好的性能

来源:晓飞的算法工程笔记 公众号

论文: Deformable DETR: Deformable Transformers for End-to-End Object Detection

Introduction


现代物体检测器采用许多手工制作的组件,例如锚点生成、基于规则的训练目标分配、非极大值抑制 (NMS) 后处理,导致其并不是完全端到端的。DETR的提出消除了对此类手工制作组件的需求,并构建了第一个完全端到端的物体检测器。DETR采用简单的架构,结合卷积神经网络 (CNN) 和Transformer编码器-解码器,利用Transformer的多功能且强大的关系建模功能,达到了很不错的性能。

尽管DETR具有有趣的设计和良好的性能,但它也有自己的问题:(1)需要更长的训练周期才能收敛。(2)DETR在检测小物体方面的性能相对较低,没有利用多尺度特征。

上述问题主要归因于Transformer组件在处理图像特征图方面的缺陷。在初始化时,注意力模块将几乎统一的注意力权重投射到特征图中的所有像素。长时间的训练对于注意力权重学习如何关注稀疏的有意义的位置是必要的。另一方面,Transformer编码器中的注意力权重计算与像素成二次计算度。因此,处理高分辨率特征图的计算和存储复杂度非常高。

在图像领域,可变形卷积是处理稀疏空间位置的强大而有效的机制,自然就避免了上述问题。但它缺乏元素关系建模机制,而这正是DETR成功的关键。

在本文中,论文提出了Deformable DETR,结合可变形卷积的稀疏空间采样和Transformers的关系建模能力,缓解了DETR收敛速度慢和计算复杂度高的问题。可变形注意模块仅关注一小组采样位置,相当于所有特征图像素中突出关键元素的预过滤器。该模块可以自然地扩展到多尺度特征架构,而无需FPN的帮助。在Deformable DETR中,论文利用(多尺度)可变形注意力模块来代替处理特征图的Transformer注意力模块,如图 1 所示。

Revisiting Transformers and DETR


Multi-Head Attention in Transformers.

定义 \(q\in\Omega_{q}\) 为查询元素下标,索引特征 \({z}_{q}\in {\mathbb{R}}^C\) ,\(k\in\Omega_{k}\) 为键元素下标,索引特征 \(x\_k \in \mathbb{R}^C\),\({C}\) 是特征维度,\(\Omega_{q}\) 和 \(\Omega\_{k}\) 分别为查询元素和键元素的集合。

多头注意力特征的计算可表示为:

\[
\mathrm{MultiHeadAttn}(z_{q},x)=\sum_{m=1}^{M}W_{m}[\sum_{k\in\Omega_{k}}A_{m q k}\cdot W_{m}^{\prime}x_{k}],

\quad\quad (1)

\]

其中 \(m\) 为注意力头下标,\(W_{m}^{\prime}\in\mathbb{R}^{C_{v}\times C}\) 和 \(W_{m}\in{\mathbb{R}^{{C}\times C_{v}}}\) 为可学习的权重(默认 \({C}_{v}=C/M\))。注意力权重 \(A_{m q k}\propto{exp}\lbrace\frac{z_{q}^{T}\,U_{m}^{T}\,\,V_{m}\,x_{k}}{\sqrt{C_{v}}}\rbrace\) 归一化为 \(\sum_{k\in\Omega_k}A_{mqk}=1\),其中 \(U_{m},V_{m}\in\mathbb{R}^{C_{v}\times C}\) 也是可学习的权重。为了区别不同的空间位置,特征 \({z}_{q}\) 和 \({z}\_{k}\) 通常是元素内容和位置嵌入的串联或求和。

Transformer有两个已知问题:1)收敛需要很长的训练周期。2)多头注意力的计算和内存复杂度可能非常高。

DETR

DETR建立在Transformer编码器-解码器架构之上,与基于集合的匈牙利损失相结合,通过二分匹配强制对每个GT的边界框进行预测。对DETR不熟悉的,可以看看之前的文章,【DETR:Facebook提出基于Transformer的目标检测新范式 | ECCV 2020 Oral】。

给定CNN主干网提取的输入特征图 \(x\in\mathbb{R}^{C\times H\times W}\),DETR利用标准Transformer编码器-解码器架构将输入特征图转换为一组对象查询的特征。在对象查询特征(由解码器产生)之上添加一个 3 层前馈神经网络(FFN)和一个线性投影作为检测头。FFN充当回归分支来预测边界框坐标 \(b\in 0, 1^4\),其中 \(b = {b_{x},b_{y},b_{w},b_{h}}\) 编码归一化的框中心坐标、框高度和框宽度(相对于图像大小),线性投影则作为分类分支来产生分类结果。

对于DETR中的Transformer编码器,查询元素和键元素都是主干网络特征图中的像素(带有编码的位置嵌入)。

对于DETR中的Transformer解码器,输入包括来自编码器的特征图和由可学习位置嵌入表示的N个对象查询。解码器中有两种类型的注意力模块,即交叉注意力模块和自注意力模块。

  • 在交叉注意力模块中,查询元素为学习到的对象查询,而键元素是编码器的输出特征图。
  • 在自注意力模块中,查询元素和键元素都是对象查询,从而捕获它们的关系。

DETR是一种极具吸引力的物体检测设计,无需许多手工设计的组件,但也有自己的问题:1)由于计算复杂度限制其可使用分辨率的大小,导致Transformer在检测小物体方面的性能相对较低。2)因为处理图像特征的注意力模块很难训练,DETR需要更多的训练周期才能收敛。

METHOD


Deformable Transformers for End-to-End Object Detection

  • Deformable Attention Module

在图像特征图上应用注意力计算的核心问题是,它会遍历所有的空间位置。为了解决这个问题,论文提出了一个可变形的注意力模块。受可变形卷积的启发,可变形注意力模块仅关注参考点周围的一小组关键采样点,而不管特征图的空间大小。如图 2 所示,通过为每个查询元素仅分配少量的键元素,可以缓解收敛慢和特征空间分辨率大的问题。

给定输入特征图 \(x\in\mathbb{R}^{C\times H\times W}\) ,\(q\) 为查询元素的下标,对应内容特征 \({z}_{q}\) 和二维参考点 \({p}_{q}\),可变形注意力特征的计算如下

\[
\mathrm{DeformAttn}(z_{q},p_{q},x)=\sum_{m=1}^{M}W_{m}\sum_{k=1}^{K}A_{m q k}\cdot W_{m}^{\prime}x(p_{q}+\Delta p\_{m q k}),

\quad\quad (2)

\]

其中 \(m\) 为注意力头下标,\(k\) 为采样点下标,\(K\) 为采样点总数( \(K\ll H W\) )。\({\Delta}p_{mqk}\) 和 \(A_{m q k}\) 表示第k个采样点的采样偏移及其使用的在第m个头中的注意力权重。注意力权重 \(A_{m q k}\) 在 \(0,1\) 范围内,由 \(\sum_{k=1}^{K}A_{m q k} = 1\) 归一化。 \({\Delta}p_{mqk}\in \mathbb{R}^{2}\)是无约束范围的二维实数,由于 \(p_{q} + \Delta p_{mqk}\) 是小数,需要应用双线性插值。\(\Delta p_{m q k}\) 和 \(A_{mqk}\) 均通过对查询特征 \({z}_{q}\) 的线性投影获得的。在实现中,查询特征 \(z_{q}\) 被输入到 \(3MK\) 通道的线性投影运算符,其中前 \(2MK\) 通道对 \({\Delta}P_{m q k}\) 采样偏移进行编码,剩余的 \(MK\) 通道输入到 \(Softmax\) 运算符以获得 \(A_{m q k}\) 注意力权重。

定义 \(N_{q}\) 为查询元素的数量,当 \(M K\) 相对较小时,可变形注意力模块的复杂度为\(O(2N_{q}C^{2}+\operatorname\*{min}(H W C^{2},N_{q}K C^{2}))\)。当应用于__DETR__编码器时,其中 \(N_{q}=H W\) ,复杂度变为 \(O(H W C^{2})\),与空间大小成线性复杂度。当应用于DETR解码器中的交叉注意模块时,其中 \(N\_{q}=N\) (\(N\) 是对象查询的数量),复杂度变为 \(O(NKC^2)\),这与空间大小\(HW\)无关。

  • Multi-scale Deformable Attention Module

大多数现代目标检测框架都受益于多尺度特征图,论文提出的可变形注意模块也可以自然地扩展到多尺度特征图。

定义 \(\left{x^{l}\right}^{L}_{l=1}\) 为输入的多尺度特征图,其中 \(x^{l}\in \mathbb{R}^{C\times H_{l}\times W_{l}}\)。定义 \({\hat{p}}_{q}\in0,1^{2}\) 为每个查询元素 \(q\) 对应的参考点的归一化坐标,多尺度可变形注意模块的计算为:

\[
\mathrm{MSDeformAttn}(z_{q},\hat{p}_{q},{x^{l}}_{l=1}^{L})=\sum_{m=1}^{M}W_{m}\bigl[\sum_{l=1}^{L}\sum_{k=1}^{K}A_{m l q k}\cdot W_{m}^{\prime}x^{l}(\phi_{l}(\hat{p}_{q})+\Delta p_{m l q k}\bigr)\bigr],

\quad\quad (3)

\]

其中 \(m\) 为注意力头下标,\(l\) 为输入特征级别下标,\(k\) 为采样点下标。\(\Delta p_{mlqk}\) 和 \(A_{mlqk}\) 表示第 \({{k}}^{th}\) 个采样点在第 \({{l}}^{th}\) 个特征级别和第 \({{m}}^{th}\) 个注意头中的采样偏移和注意力权重,其中标量注意力权重 \(A_{mlqk}\) 由 \(\sum^L_{l=1}\sum^K_{k=1}A_{mlqk}=1\) 归一化。为了缩放方便,使用归一化的坐标 \({\hat{p}}_{q}\in0,1^{2}\),其中 \((0,0)\) 和 \((1,1)\) 分别表示图像的左上角和右下角。公式 3 中的函数 \(\phi_{l}{({\hat{p}}_{q})}^{\cdot}\) 将归一化坐标 \({\hat{p}}_{q}\) 重新缩放到第 \({l}^{th}\) 级别的输入特征图的坐标。多尺度可变形注意力与之前的单尺度版本非常相似,只是它从多尺度特征图中采样 \(LK\) 个点,而不是仅从单尺度特征图中采样 \(K\) 个点。

当 \(L=1\),\(K=1\) 以及将 \(W^{'}_{m}\in \mathbb{R}^{{C}_{v}\times C}\) 固定为单位矩阵时,论文所提出的注意力模块即退化为可变形卷积。

可变形卷积是针对单尺度输入而设计的,每个注意力头仅关注一个采样点,而论文的多尺度可变形注意力会关注来自多尺度输入的多个采样点。(多尺度)可变形注意模块也可以被视为Transformer注意力的有效变体,可变形采样位置相当于引入预过滤机制。当采样点为所有位置时,可变形注意力模块相当于Transformer注意力。

  • Deformable Transformer Encoder

DETR中处理特征图的注意力模块替换为多尺度可变形注意力模块,编码器的输入和输出都是具有相同分辨率的多尺度特征图。

ResNet的 \(C_3\) 到 \(C\_5\) 阶段的输出特征图,通过 \(1\times 1\) 卷积提取多尺度特征图 \(\left{x^{l}\right}_{l=1}^{L-1}\)(\(L=4\)),其中 \(C_{l}\) 的分辨率为输入图像的 \(2^{l}\) 倍降采样。最低分辨率特征图 \(x^{L}\) 是通过对 \(C\_5\) 阶段的输出进行步幅为 2 的 \(3\ \times\ 3\) 卷积获得,表示为 \(C_{6}\) 阶段。所有多尺度特征图都是 \(C=256\) 通道。这里没有使用类似FPN的自上而下结构,因为论文提出的多尺度可变形注意力本身就可以在多尺度特征图之间交换信息,添加FPN并不会提高性能。

在编码器中应用多尺度可变形注意力模块时,输出是与输入具有相同分辨率的多尺度特征图,键和查询元素都是来自多尺度特征图的像素。对于每个查询像素,参考点是其本身。为了确定每个查询像素位于哪个特征级别,除了位置嵌入之外,还在特征中添加了尺度级别嵌入 \(e\_{l}\)。与固定编码的位置嵌入不同,尺度级嵌入是随机初始化并与网络联合训练的。

  • Deformable Transformer Decoder

解码器中有交叉注意力和自注意力模块,两种类型的注意力模块的查询元素都是对象查询。在交叉注意力模块中,键元素是编码器的输出特征图,对象查询通过与特征图交互提取特征。而在自注意力模块中,键元素也是对象查询,对象查询即相互交互提取特征。

由于可变形注意模块的设计初衷是将卷积特征图作为键元素,因此论文仅将交叉注意模块替换为多尺度可变形注意模块,保持自注意模块不变。对于每个对象查询,参考点 \({\hat{p}}\_{q}\) 的二维归一化坐标是通过带 \(\mathrm{sigmoid}\) 函数的可学习线性投影从对象查询嵌入中预测的。

由于多尺度可变形注意模块提取参考点周围的图像特征,论文将参考点作为边界框中心的初始猜测,然后检测头预测边的相对偏移量。这样,不仅能够降低优化难度,还能让解码器注意力将与预测的边界框具有很强的相关性,加速训练收敛。

Additional Improvements and Variants for Deformable DETR

由于其快速收敛以及高效率的计算,可变形DETR为各种端到端目标检测器的变体提供了可能性,比如:

  • Iterative Bounding Box Refinement:通过级联的方式,每层解码器优化前一层的预测结果。
  • Two-Stage Deformable DETR:通过两阶段检测的方式,选择第一阶段预测的高分区域提案作为第二阶段解码器的对象查询。

EXPERIMENT


表 1 展示了与Faster R-CNN+FPNDETR的性能对比。

表 2 列出了所提出的可变形注意模块的各种设计选择的消融实验。

表 3 与其他最先进的方法进行了比较。

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

Deformable DETR:商汤提出可变型 DETR,提点又加速 | ICLR 2021 Oral的更多相关文章

  1. 商汤提出解偶检测中分类和定位分支的新方法TSD,COCO 51.2mAP | CVPR 2020

    目前很多研究表明目标检测中的分类分支和定位分支存在较大的偏差,论文从sibling head改造入手,跳出常规的优化方向,提出TSD方法解决混合任务带来的内在冲突,从主干的proposal中学习不同的 ...

  2. 旷视向左、商汤向右,AI一哥之名将落谁家

    编辑 | 于斌 出品 | 于见(mpyujian) AI风口历经多年洗礼之后,真正意义上的AI第一股终于要来了. 相比于聚焦在语音识别技术上的科大讯飞.立足互联网产业的百度.发力人形机器人领域的优必选 ...

  3. 商汤科技汤晓鸥:其实不存在AI行业,唯一存在的是“AI+“行业

    https://mp.weixin.qq.com/s/bU-TFh8lBAF5L0JrWEGgUQ 9 月 17 日,2018 世界人工智能大会在上海召开,在上午主论坛大会上,商汤科技联合创始人汤晓鸥 ...

  4. 2019 计蒜之道 初赛 第一场 商汤AI园区的n个路口(中等) (树形dp)

    北京市商汤科技开发有限公司建立了新的 AI 人工智能产业园,这个产业园区里有 nn 个路口,由 n - 1n−1 条道路连通.第 ii 条道路连接路口 u_iui​ 和 v_ivi​. 每个路口都布有 ...

  5. 计蒜客 第四场 C 商汤科技的行人检测(中等)平面几何好题

    商汤科技近日推出的 SenseVideo 能够对视频监控中的对象进行识别与分析,包括行人检测等.在行人检测问题中,最重要的就是对行人移动的检测.由于往往是在视频监控数据中检测行人,我们将图像上的行人抽 ...

  6. 商汤开源的mmdetection技术报告

    目录 1. 简介 2. 支持的算法 3. 框架与架构 6. 相关链接 前言:让我惊艳的几个库: ultralytics的yolov3,在一众yolov3的pytorch版本实现算法中脱颖而出,收到开发 ...

  7. 面试 | 商汤科技面试经历之Promise红绿灯的实现

    说在前面 说实话,刚开始在听到这个面试题的实话,我是诧异的,红绿灯?这不是单片机.FPGA.F28335.PLC的实验吗?! 而且还要用Promise去写,当时我确实没思路,只好硬着头皮去写,下来再r ...

  8. SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛 A. 地铁站

    //其实比赛的时候就想到这方法了,但看到数据太吓人,就没写//看着标程,实际上就是这方法,太坑爹…… /* 假设值为k,对于图中任意两点,圆1半径k/t1,圆2半径k/t2 圆1与圆2的交集为可以设置 ...

  9. SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛 D. 白色相簿

    从某一点开始,以层次遍历的方式建树若三点a.b.c互相连接,首先必先经过其中一点a,然后a可以拓展b.c两点,b.c两点的高度是相同的,若b(c)拓展时找到高度与之相同的点,则存在三点互相连接 //等 ...

  10. SenseTime Ace Coder Challenge 暨 商汤在线编程挑战赛 E. 疯狂计数

    1.改高精度 :float/double的精度为x位,小数部分最多x+x位(乘法和加法),整数部分<1000000*1000000/2=5 * 10^11 2.分成整数部分和小数部分分别存储,貌 ...

随机推荐

  1. C# DateTime日期字段转中文文字

    public static String ToChineseYearAndMonth(this DateTime dt) { string[] chineseNumbers = { "零&q ...

  2. Pycharm创建的虚拟环境,使用命令行指定库的版本进行安装

    Pycharm创建的项目,使用了虚拟环境,对库的版本进行管理:有些项目的对第三方库的版本 要求不同,可使用虚拟环境进行管理 直接想通过pip命令安装,直接看第3点 操作步骤: 1.找到当前项目的虚拟环 ...

  3. Java全局唯一ID生成策略

    在分布式系统中常会需要生成系统唯一ID,生成ID有很多方法,根据不同的生成策略,以满足不同的场景.需求以及性能要求. 1.数据库自增序列 这是最常见的一种方式,利用DB来生成全库唯一ID. 优点: 此 ...

  4. Mac下安装Redis,附可视化工具Medis

    导读 我之前写过很多相关的redis的博文,有时候,为了开发,还得去虚拟机上搭建一个redis,感觉太麻烦了,为了做个demo,直接在自己mac本上安装一个即可. Redis 从入门到精通:点我直达 ...

  5. 2023 NOIP 游记

    \(\text{Day -INF}\) 提高 \(135\) 卡线进 \(\text{NOIP}\). 集训两天成绩:\(50 \to 135\). \(\text{Day 1}\) 开赛 \(13\ ...

  6. 解决IE11兼容问题的一些心得

    IE11中,都不支持es6新特性. vue想要兼容IE11不要写箭头函数, UI框架不要写有箭头的回调函数(编译成es5的时候,会通不过), 使用label将es6编译成es5. 使用typescri ...

  7. JavaScript小面试~节流

    节流,当用户发出多次请求时,需要对事件进行限制,不要让事件过多触发.场景:在用户浏览页面的时候,用户拼命滚动屏幕时,控制页面滚动的事件会多次触发,会导致网络阻塞或者出现渲染差.此时需要对其进行约束.无 ...

  8. CFileViewer(文件浏览器)

    1 #pragma once 2 #include <afxwin.h> 3 #include <afxtempl.h> 4 5 class CFileViewer : pub ...

  9. 「图论」Bron-kerbosch算法

    7.21晚上加赛 T2.七负我,做这题找到了性质发现需要求最大团,不会,爆搜,打假了,赛后改,对了,但时间复杂度大爆炸,看下发题解,有这么一句话:于是学习了一下. Bron-kerbosch算法-求图 ...

  10. 什么是spring.factories,引入未知模块报错如何解决

    对于maven中引入其他外部包加入容器的过程,需要用到spring.factories spring.factories的作用:将自动配置类与对应的配置类集中在一起,方便springboot自动装配, ...