读一下End-to-End Object Detection with Transformers

读一下End-to-End Object Detection with Transformers

目标检测旨在为感兴趣目标预测bounding boxes以及类别(category).
现代检测器多通过在数据庞大的proposals,anchors,window centers等集合上面,设计可替代的回归和分类模块,以后处理方式去处理该预测问题。这种方式的算法性能严重依赖于前述后处理操作。

本文将目标检测问题视为一个直接的集合预测问题。为什么能做到这个呢?主要在于引入了基于transformer的encoder-decoder处理模块--一个很流行的序列预测框架。

transformer的自注意力机制,可明确对序列中成对元素之间的关系进行建模,这就决定了这一类框架对于一些特定要求的集合预测问题诸如移除重复预测任务具有得天独厚的优势和适用性。

DETR一次性对所有目标进行预测,端到端,一套损失函数,在预测结果和Ground Truth之间进行双向匹配。

DETR简化了目标检测pipeline,丢弃了多个人工设计部件,比如spatial anchors,non-maximal supression.
DETR的主要特征通过并行解码(non-autoregressive)将双向匹配损失(bipartite matching loss)与transformer关联起来。
该双向匹配函数为每一个预测结果唯一地分配一个ground truth,且具有排列不变性,因此可并行操作。
DETR基于下面这些先验工作:
bipartite matching loss for set detection.
encoder-decoder architectures based on the transformer.
parallel decoding.
object detection methods.

3 The DETR model
对于检测任务中的直接集合预测(direct set prediction),有两个必要因素:
(1) 需要一个集合预测损失(set prediction loss)去迫使算法对预测结果和GT boxes做一个唯一的匹配操作;
(2) 一个可以一次性(in a single pass)预测一系列目标并对它们之间的关系进行建模的预测框架。
3.1 Object detection set prediction loss
训练中的一个主要困难在于:参照GT给预测目标(class, position, size)打分。
本文损失在预测结果和GT之间产生一个最佳双向匹配结果,然后优化特定目标(bounding box)的损失。
最优匹配通过匈牙利匹配算法高效计算得到。
匹配损失同时将类别预测结果和预测结果与GT的相似度考虑在内。

3.2 DETR architecture
DETR的整体架构异常简单,包括3个主要部分:一个CNN backbone,用于首先提取一个紧实的特征表示;一个解码器-编码器结构的transformer;一个简单的前馈神经网络(feed forward network, FFN)用于最终的检测结果预测。
描述下DETR框架流程,Fig.2:
输入图片,使用一个CNN backbone学习2D特征表示;
将特征展平,并加入位置编码信息作为补充信息;
然后transformer解码器将位置编码作为其一个输入,称之为object queries,并将其加入encoder的输出之中;
然后将decoders的每一个output embedding送入一个共享的前馈神经网络,它会去预测检测结果(class and bounding box) 或者预测一个 “no object” class。

===>Backbone
a conventional CNN backbone generate a lower-resolution activation map.

===>Transformer encoder
首先一个1*1卷积给第一步得到的高维特征图降维,得到一个新的特征图,暂称之为z;
encoder期望一个序列作为其输入,然后我们可以将z的空间维度降为一维,得到一个d*HW的特征图;
each encoder layer都包含一个标准结构(前面描述过), 一个多头自注意力模块,以及一个前馈神经网络(FFN)。
由于transformer结果is permutation-invariant,so作者加入了fixed position encodings作为supplement,这个位置编码信息,训练时被加入每一注意力层的输入之中。

===>Transformer decoder
作者依然使用标准的decoder结构,不同之处在于作者在使用的时候,在每一个解码层并行对N个目标进行解码,而"Attention is all you need"的作者使用一个自回归模型一次预测一个元素的输出序列(use an autoregressive model that predicts the output sequence one element at a time);
still permutation-invariant,同样需要一个位置编码,在训练时候作为每一层自注意力层的一个输入,也即object queries,which is similarly to the encoder. N个object queries经过解码器之后被转化为一个output embedding,然后这些embedding通过前馈神经网络FFN被独立解码为box coordinates和class labels,至此可得N个predictions。
使用一个自编码-解码的注意力机制,处理前述提及的embeddings,模型可以使用它们之间的成对关系将所有目标聚集在一起,以此可以将整张图片作为上下文信息来利用。

===>Prediction feed-forward networks(FFNS)
最终预测阶段:一个包含RuLU激活函数,d个隐藏层,和一个线性映射层的3层感知机。
FFN预测归一化的中心坐标,高,宽 w.r.t the predicted box of the input image, 另,线性层使用softmax function预测box的class label,细节补充:还有一个附加类别作为"no object"/"background" class。

===>Auxiliary decoding losses
作者还使用了辅助Loss帮助网络训练。






上一篇:c++ 引用犯的一个错


下一篇:【李宏毅2020 ML/DL】P59 Unsupervised Learning - Auto-encoder