DETR 论文笔记

End-to-End Object Detection with Transformers

DETR

论文链接: https://arxiv.org/abs/2005.12872

一、 Problem Statement

目前的检测器需要许多hand-designed components,比如NMS,anchor generation或者window centers等。

二、 Direction

DETR简化了detection pipeline,使用了CNN backbone,transformer encoder和decoder,和feed-forward network。

三、 Method

先来看一下整体的框架:

DETR主要包括了三个部分:

  • CNN backbone
  • Encoder-decoder transformer
  • feed-forward network

1. CNN backbone

首先输入的图像维度为 x i m g ∈ R 3 × H 0 × W 0 x_{img} \in \R^{3 \times H_0 \times W_0} ximgR3×H0×W0。通过backbone之后,最后的输出特征图为 f ∈ R 2048 × H 0 32 × W 0 32 f \in \R^{2048 \times \frac{H_0}{32}\times \frac{W_0}{32}} fR2048×32H0×32W0

2. Encoder-decoder transformer

这里分为两个部分:

  • encoder
    Transformer encoder首先会使用一个1x1卷积来减少backbone输出的通道数,输出特征 z 0 ∈ R d × H × W z_0 \in \R^{d \times H \times W} z0Rd×H×W。然后將这个特征图展开,变成维度为1的特征向量 z 0 ∈ R d × H W z_0 \in \R^{d \times HW} z0Rd×HW。Encoder 包含了Multi-head attention 和FFN。除了特征向量之外,positional encodings也被添加到Q,K queries之中。值得注意的是:
    输入图片需要进行zero-padding来确保维度为 ( H 0 , W 0 ) (H_0, W_0) (H0,W0)
  • decoder
    而对于Transformer decoder,和标准transformer decoder的区别是,本文的模型会在每个decoder layer平行地decode N个目标。decoder的输入分别为encoder的输出,spatial positional encoding和object queries。由于解码器也是置换不变的,因此N个输入embeddings必须不同才能产生不同的结果。这些input embeddings是学习的位置编码,称之为object queries,类似于编码器,我们将它们添加到每个注意层的输入中。解码器将N个对象查询转换为一个输出嵌入。然后,通过前馈网络将它们独立解码为框坐标和类标签,从而产生N个最终预测。

3. Feed-forward network

FFN有两个分支,一个是三层感知机和ReLU组成的bounding box prediction branch,另外一个是使用softmax function的classificatin branch。预测固定N个目标,N是远大于每张图片的目标数的。因此可能有一些是 ∅ \empty 的标签,相当于"background"。

4. Prediction loss

DETR会输出N个预测的固定集合。有一个问题就是训练的时候,怎么样把predicted objects(class, position,size)和ground-truth对应。

假设 y y y是ground truth集合, y ^ = { y ^ } i = 1 N \hat{y}=\{\hat{y}\}_{i=1}^N y^={y^}i=1N是N个预测的集合。如果 y y y的大小小于 N N N,就用 ∅ \empty 填充。为了匹配两个集合,计算代价函数,使用了匈牙利算法:

L H u n g a r i a n ( y , y ^ ) = ∑ i = 1 N [ − l o g p ^ σ ^ ( i ) + 1 c i ≠ ∅ L b o x ( b i , b ^ σ ^ ( i ) ) ] L_{Hungarian(y, \hat{y})} = \sum_{i=1}^N [-log \hat{p}_{\hat{\sigma}(i)} + 1_{c_i \neq \empty}L_{box(b_i, \hat{b}_{\hat{\sigma}}(i))}] LHungarian(y,y^)=i=1N[logp^σ^(i)+1ci=Lbox(bi,b^σ^(i))]

具体可以查看一下论文。

DETR具体性能如下:
在这里插入图片描述
在这里插入图片描述

四、 Conclusion

DETR对大目标的检测效果较好,但是对小目标检测较差。而且训练时长较长。CNN与transformer的结合,也是Transformer用于视觉任务的尝试。

Reference

你可能感兴趣的:(Transformer,论文笔记,计算机视觉,人工智能,深度学习)