您的位置:首页 > 汽车 > 时评 > 【目标检测】图解 DETR 系统框图

【目标检测】图解 DETR 系统框图

2024/11/18 19:22:22 来源:https://blog.csdn.net/Jiangnan_Cai/article/details/139865487  浏览:    关键词:【目标检测】图解 DETR 系统框图

简略版本

在这里插入图片描述

  1. Backbone:CNN backbone 学习图像的 2D 特征
  2. Positional Encoding:将 2D 特征展平,并对其使用位置编码(positional encoding)
  3. Encoder:经过 Transformer 的 encoder
  4. Decoder:encoder 的输出 + object queries 作为 Transformer 的 decoder 输入
  5. Prediction Heads:将 decoder 的每个输出都送到 FFN 去输出检测结果

细节版本

在这里插入图片描述

  1. Backbone:特征提取:CNN backbone 学习图像的 2D feature,输出 2048 个通道,32 倍下采样(输入为 ( C , H , W ) (C,H,W) (C,H,W) ,输出为 ( 2048 , H / 32 , W / 32 ) (2048, H/32,W/32) (2048,H/32,W/32)
  2. Backbone:降维:通过一个 1 × 1 1 \times 1 1×1 的 Conv2D 卷积,将通道降为 256(为的是减少 Embedding 向量,即 token 的长度)。
  3. Backbone:展平:将 2D 特征展平,然后将展平的维度放置在第一个维度
  4. Encoding:位置编码(1):与普通的 Transformer 不同的地方在于,普通 Transformer 只需要在第一个 Encoder 的输入处进行一次位置编码即可,但是 DETR 这里,如果有 N N N 个 Encoder,则需要在 N N N 个 Encoder 输入的时候都要进行一次位置编码。官方代码的位置编码的生成有两种方式:(a)正弦位置编码;(b)可学习的位置编码;
  5. Encoding:位置编码(2): K = X P E ⋅ W K \mathbf{K} = \mathbf{X}_{PE}\cdot\mathbf{W}^K K=XPEWK Q = X P E ⋅ W Q \mathbf{Q} = \mathbf{X}_{PE}\cdot\mathbf{W}^Q Q=XPEWQ 是通过经过位置编码处理的输入 X \mathbf{X} X 生成的;但是 V = X ⋅ W V \mathbf{V}=\mathbf{X}\cdot\mathbf{W}^V V=XWV 的输入是没有经过位置编码的。
  6. Encoding:Dropout:在这两个部分都会先进行 Dropout 操作

Decoder 的 4 个输入:
a. Encoder Memory:也就是 Encoder 的输出,应该和输入是一样的维度,也就是 ( 850 , b s , 256 ) (850, bs, 256) (850,bs,256)
b. Spatial positional encoding:空间位置编码,应该也是 256 维度的一维向量
c. Decoder received queries (Queries):表示内容信息 content(可理解为 label 信息),初始设置成 0,shape 是 100 × 256 100 \times 256 100×256
d. Output positional encoding (object queries):输出位置编码,表示位置信息 position(可理解为 box 位置信息),shape 也是 100 × 256 100 \times 256 100×256


  1. Decoding:Dropout:解码器部分的 Dropout,与编码器的部分一样。
  2. Decoding:位置编码:进入第一个多头注意力模块,与步骤 6 中的位置编码一样,进入第二个多头注意力模块,仅对上一个注意力的输出进行位置编码。
  3. Decoding:第二层多头注意力:假设 V \mathbf{V} V K \mathbf{K} K 在不考虑 batchsize 的情况下都是 ( 850 , 256 ) (850, 256) (850,256),而 Q \mathbf{Q} Q 的维度是 ( 100 , 256 ) (100, 256) (100,256)。经过过头注意力机制之后,输出的维度和 Q \mathbf{Q} Q 一样,还是 ( 100 , 256 ) (100, 256) (100,256)
  4. Decoding:输出维度:分为验证和训练两种情况,在训练阶段,会将 M M M 个 decoder 模块 FNN 层后的接出来,放到辅助解码损失里,一起计算损失,实现深监督(deep supervise),验证阶段就直接输出一个 ( b s , 100 , 256 ) (bs, 100, 256) (bs,100,256) 的矩阵。
  5. Prediction heads:Class:分类头,通过一个 FC 全连接层接一个 Softmax 函数实现的 FFN。这里的 num_cls + 1 多出来的一种分类是背景 background。
  6. Prediction heads:Bounding box:位置头,通过一个 MLP 网络,内含三个 FC 全连接层,结尾是 Sigmoid 函数进行归一化。
  7. 筛选:根据分类头得到的分类置信度和设定的阈值进行筛选,保留大于 0.7 的。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com