End-to-End Object Detection with Transformers
date
Nov 18, 2021
slug
detr
status
Published
tags
学习
论文
summary
用transformer做detection
type
Post
摘要
一种新的方法:将对象检测作为一个集合预测问题。
消除对许多手工设计的组件的需要
给定一个固定的小型object queries,DETR 对object和全局图像context的关系进行推理,直接并行输出最终预测集。
不需要专门的库,这与许多其他modern detector不同。
DETR 可以很容易地泛化,实现全景分割 in a unified manner

简介
物体检测的目标:为每个感兴趣的物体预测一组bounding box和类别标签。
modern detectors:
- proposal、锚、窗口中心
- 性能受到后处理步骤(去除近乎重复的预测)的影响。
Transformer:一个用于序列预测的流行架构
self-attention机制:明确地建模序列中元素之间的所有pairwise interaction
DETR:
- 一次性预测所有的物体,并且用一个设定的损失函数进行端到端的训练。
- 通过丢弃多个手工设计的编码先验知识组件来简化detection pipeline
- 不需要任何customized layers
- 结合了双边匹配损失和Transformer的并行解码(非自回归),以前的工作主要是用 RNN 进行自回归解码。
- 在大型物体上表现出明显更好的性能
- 在小物体上获得较低的性能(未来可像FPN对Faster R-CNN的改善一样,改善这个问题
- 需要超长的训练时间
自回归机制:
在每个新单词产生后,该单词就被添加在之前生成的单词序列后面,这个序列会成为模型下一步的新输入。这种机制叫做自回归(auto-regression),同时也是令 RNN 模型效果拔群的重要思想。

相关工作
- set prediction的双边匹配损失
- 基于Transformer的编码器-解码器架构
- 并行解码
- 物体检测方法
Set prediction
基本集合预测任务:多标签分类
难点:避免近似重复(目前的检测器使用后处理,如非极大值抑制NMS来解决这个问题。
解决方案:在匈牙利算法的基础上设计一个损失,在ground truth和预测之间找到一个双边的匹配。
匈牙利算法主要用来解决两个问题:求二分图的最大匹配数和最小点覆盖数。

Transformers
注意力机制:
- 从整个输入序列中汇总信息。
- 类似于Non-local神经网络
- global computations and prefect memory
物体检测
大多数现代物体检测方法:相对于一些初始猜测进行预测

DETR model
两个基本组成
- a set prediction loss
- an architecture that predicts a set of objects andmodels their relation
物体检测set prediction损失
DETR 推断出一个固定大小的 N 个预测集,只需通过一次解码器就能完成
训练难点:预测对象(类别、位置、大小)相对于ground truth的得分
ground truth set of objects:

the set of N predictions:

pair-wise matching cost:

ground truth

损失:在预测对象和ground truth object之间产生一个最佳的双边匹配,然后优化特定对象(bounding box)的损失

寻找匹配的程序与启发式分配规则发挥着相同的作用,用于将proposal或anchor匹配到ground truth对象上。
主要的区别是,我们需要找到一对一的匹配来进行没有重复的direct set prediction。


第二步是计算损失函数,即上一步中匹配的所有配对的匈牙利损失。

hungarian matching loss:
- 找到最佳的配对
- 冗余的预测和空集配对,导致loss

Bounding box loss
匹配成本和匈牙利损失的第二部分是 L_box(),它对bounding box进行评分。
box loss采用了L1 loss和generalized IoU loss的线性组合


DETR 架构
- 一个 CNN 主干,用于提取一个紧凑的特征表示
- 一个编码器-解码器的Transformer
- 一个简单的前馈网络

Backbone
从初始图像开始,传统的 CNN 主干生成一个低分辨率的激活图
初始图像:

低分辨率的激活图:



Transformer encoder
首先,使用1*1 的卷积核降低通道维度。

position encoding:

位置编码的需求:
- 需要体现同一个单词在不同位置的区别
- 需要体现一定的先后次序关系,并且在一定范围内的编码差异不应该依赖于文本长度,具有一定不变性
从零构想一个位置编码:
- 计数:特征会向尾部倾斜;影响word embedding
- 归一化:在较短的文本中紧紧相邻的两个字的位置编码差异,会和长文本中相邻数个字的两个字的位置编码差异不一致
- 有界的周期性函数:放弃绝对位置追求,仅关注一定范围内的相对次序关系
编码器希望有一个序列作为输入,因此我们将 z_0 的空间维度折叠成一个维度
编码器层:
- 一个multi-head self-attention module
- 一个前馈网络


Transformer decoder
使用multi-headed self- and encoder-decoder attention机制,对 N 个大小为 d 的embeddings进行转换
差异:
- 我们的模型在每个解码层对 N 个对象进行并行解码
Transformer作者使用一个自动回归模型,每次预测一个元素的输出序列

Prediction feed-forward networks
The final prediction is computed by a 3-layer perception with ReLU activation function and hidden dimension d, a linear projection layer.
FFNs 预测归一化的中心坐标、高度和宽度。
线性层使用 softmax 函数预测类标签。
辅助解码损失
效果

