【目标检测】对DETR的简单理解
文章目录
- 【目标检测】对DETR的简单理解
-
- [1. Abs](#1. Abs)
- [2. Intro](#2. Intro)
- [3. Method](#3. Method)
-
- [3.1 模型结构](#3.1 模型结构)
- [3.2 Loss](#3.2 Loss)
- [4. Exp](#4. Exp)
- [5. Discussion](#5. Discussion)
-
- [5.1 二分匹配](#5.1 二分匹配)
- [5.2 注意力机制](#5.2 注意力机制)
- [5.3 方法存在的问题](#5.3 方法存在的问题)
- [6. Conclusion](#6. Conclusion)
- 参考
1. Abs
两句话概括:
- 第一个真正意义上的端到端检测器
- 最早将transformer应用到计算机视觉领域方法之一
2. Intro
基于Conv目标检测方法,如YOLO,在精度和速度上都已经非常优秀。
但是这些传统算法往往需要prior和post-process流程,导致额外的计算量,需要复杂的代码来部署模型。
prior:例如,YOLOv5使用聚类算法提前计算anchor boxes
post-process:例如,NMS去除多余预测框
DETR则完全不需要这些,从输入到输出,一气呵成,简洁优雅。
3. Method
3.1 模型结构
网络架构如图所示,同样非常简单
- 一个backbone:提取特征
- 两个transformer
- encoder:将特征图展平成序列,加上位置编码,使用self-attn进一步处理,使得每个特征向量关注到合适的特征表示
- decoder:cross-attn,query在特征序列上"逐个问询是否存在目标,目标在哪,有多大",使得query学习到目标的位置信息和特征表示
- 两个FFN:对query的信息进行"解压",得到预测结果(类别和边界框)。
3.2 Loss
分类:负log损失
bbox:(GIoU)IoU损失 + L1损失
4. Exp
除了AP75和APs,DETR在同样的参数规模下都超过了Faster RCNN,但是计算量和检测速度更慢。
5. Discussion
5.1 二分匹配
匈牙利算法可参考[3]
- 由于DETR默认使用100个queries,即模型输出100个预测框,而实际目标数量只有几个;
- 因此,需要通过二分匹配算法得到最终的预测结果;
- 简单来说,就是要把query和gt一一对应,如果一张图像中有5个gt,则在100个queries中通过匹配算法筛选出5个最接近gt的预测结果。
5.2 注意力机制
如图是decoder的注意力可视化结果,可以看到query更关注于物体的边边角角,为目标定位提供了有效信息。
5.3 方法存在的问题
- 使用self-attn,太长的特征序列会导致爆炸的计算量,因此输入图像也不能太大
- transformer收敛速度慢,训练时间长
- 小目标效果一般
6. Conclusion
DETR为目标检测提供了简洁有效的端到端检测框架,且达到了主流检测器的水平,但仍然有较多改进空间。
参考
[1] https://arxiv.org/abs/2005.12872
[2] https://www.bilibili.com/video/BV1ZT411D7xK/
[3] https://blog.csdn.net/qq_54185421/article/details/125992305