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
notion image

简介

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

相关工作

  • set prediction的双边匹配损失
  • 基于Transformer的编码器-解码器架构
  • 并行解码
  • 物体检测方法

Set prediction

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

Transformers

注意力机制:
  • 从整个输入序列中汇总信息。
  • 类似于Non-local神经网络
  • global computations and prefect memory
 

物体检测

大多数现代物体检测方法:相对于一些初始猜测进行预测
notion image

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:
notion image
the set of N predictions:
notion image
pair-wise matching cost:
notion image
ground truth
notion image
损失:在预测对象和ground truth object之间产生一个最佳的双边匹配,然后优化特定对象(bounding box)的损失
notion image
寻找匹配的程序与启发式分配规则发挥着相同的作用,用于将proposal或anchor匹配到ground truth对象上。
主要的区别是,我们需要找到一对一的匹配来进行没有重复的direct set prediction。
notion image
notion image
第二步是计算损失函数,即上一步中匹配的所有配对的匈牙利损失。
notion image
hungarian matching loss:
  • 找到最佳的配对
  • 冗余的预测和空集配对,导致loss
notion image

Bounding box loss

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

DETR 架构

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

Backbone

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

Transformer encoder

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

Transformer decoder

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

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 函数预测类标签。

辅助解码损失

在训练期间,在解码器中使用辅助损失,帮助模型输出每个类别的对象的正确数量。
在每个解码层之后添加预测的 FFNs 和 Hungarian loss
所有预测的 FFNs 共享其参数。
我们使用一个额外的shared layer-norm来规范来自不同解码层的预测 FFNs 的输入。
 

效果

notion image
notion image
 

© Dino 2021 - 2023