概念:DETR(Detection Transformer)是一种基于Transformer架构的端到端目标检测框架。它与传统的基于区域提议的目标检测方法有所不同。传统方法通常依赖于手工设计的组件(如锚框、非极大值抑制等),而DETR将目标检测视为直接集合预测问题。
1. 基本思想
- 先来个CNN得到各Patch作为输入,再套transformer做编码和解码
- 编码路子跟VIT基本一样,重在编码,直接预测100个坐标框
先通过CNN提取图像的特征;再送入到transformer encoder-decoder中,该编码器解码器的结构基本与transformer相同,主要是在输入部分和输出部分的修改;最后得到类别和bbox的预测,并通过二分匹配计算损失来优化网络。
2. 整体架构
DETR包括CNN的backbone(主干部分),Transformer 的 Encoder,Transformer的Decoder,最后的预测层 FFN。
- 图像编码:输入的图像先通过CNN进行特征提取,生成一个特征图(通常 Backbone 的输出通道为 2048,图像高和宽都变为了1/32),这些特征代表了图像中不同位置的语义信息。
- 位置编码:对于每个像素位置,DETR引入位置编码(positional Encoding),用以表示特征在图像中的空间位置。这些位置编码与特征图一起被输入到Transformer模型中。
- Transformer编码:特征图和位置编码被扁平化,并作为Transformer的输入。Transformer编码器由多个Encoder层组成每个层包括多头注意力机制(Multi-Head Self-Attention)和全连接前馈网络(Feed-Forward Neural Networks)。这些层有助于将图像中的全局和局部信息整合到特征向量中。
- 对象查询(Object queries)和类别嵌入(Class embeddings):在Transformer的每个Decoder层中,引入了一组特定的对象查询向量和类别嵌入向量。对象查询向量代表了模型要检测的目标的数量和位置,类别嵌入向量则用于表示不同目标类别的特征。
- 解码过程:解码器通过多头注意力机制将对象查询向量与Transformer编码器的输出进行关联,以获取与每个对象查询相对应的图像特征。同时,类别嵌入向量被用于预测每个目标的类别。这些信息整合后,模型能够生成每个目标的包围框(bounding box)及其相应的类别概率。
- 输出:最终,DETR模型输出一组预测的目标框及其对应的类别,这些框可以包括目标的位置和边界信息。
DETR的关键创新在于将目标检测问题转化为一个序列到序列的转换问题,并利用Transformer模型有效地捕捉图像中的全局上下文和目标之间的关系,从而实现端到端的目标检测过程。