DEtection with TRansformers 阅读笔记
模型结构
CNN Backbone
常规做法, 用来特征提取。输出一个 C * HW 的特征图。
Transformer
- 多头注意力机制
- 把
pos_embed
给 sum 到 Encoder 的 query 和 key 里 - Decoder 里固定查 N = 100 个 token
FFN
实际上就是 1*1 的卷积。
数据
COCO Dataset
训练
计算损失
由于产出 100 个检测结果,故而和事实做二分图匹配,跑个 Hungarian 算法即可获得匹配关系。
DINO 阅读笔记
Preliminaries
论文提到两个对它影响比较大的工作:
- DAB-DETR 将 positional query 描述成 R^4 里的一个向量 (x, y, w, h)
- DN-DETR 认为收敛缓慢可能是因为二分图匹配不够稳定,因此引入 denosing ,将带噪声的 label 和 box 送入 DETR
- Deformable DETR 让 attention 关注 sampling points 周围的一小部份点。首先它引入了 query selection 技术(直接从 encoder 的输出提取 features 和 reference boxes);其次是它用了所谓梯度分离技术,这里叫它 look forward once
Backbone
分别用 ResNet-50 和 SwinL 作为 backbone
模型
- look forward twice: 一个类似 residual connection 的操作,用来减少梯度消失的风险
- Mixed Query Selection: 选择 top-k 个 feature 传入 decoder
训练
- Contrastive DeNoising Training (CDN) ,将 Ground Truth 内的作为正样本,外的作为负样本,可以避免重复预测。
Grounding DINO 阅读笔记
Preliminaries
提出一个范式:Backbone 用于 feature extraction, neck 用于 feature enchancement, head 用于 region refinement(box prediction)
模型
image 经过一个 Swin-T 作为 backbone, 而 text 则经过一个 BERT
然后是一个 Feature Enhance Layer, SAM 和它有点相似,都是 image 和 text (在 SAM 里是 prompt) 各经过一个 self-attention / deformable self-attention 以后做一个双向的 cross-attention, 然后各 FFN 以后输出。
接着是 Language-Guided Query Selection, 这个部分首先将 image 和 text 的 feature 沿第三维卷积,取 max 作为 img feat,最后取 topk 返回。
接着是 Cross-Modality Decoder, 将 Query 经过 self-attention 以后,取 Q 分别和 Image Features, Text Features 的 K, V 做 Cross-Attention ,再过一个 FFN 以后输出。
输入
处理 Text Prompt: 以往采用两种 text prompt, 作者称之为 Sentence Level 和 Word Level; 在这里则使用了 Sub-sentence Level
训练
- 类似 DETR, 仍然是先二分图匹配再计算损失
Ablations
消融实验认为 Encoder fusion 是最重要的部份