【目标检测】对DETR的简单理解

【目标检测】对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

两句话概括:

  1. 第一个真正意义上的端到端检测器
  2. 最早将transformer应用到计算机视觉领域方法之一

2. Intro

基于Conv目标检测方法,如YOLO,在精度和速度上都已经非常优秀。

但是这些传统算法往往需要prior和post-process流程,导致额外的计算量,需要复杂的代码来部署模型。

prior:例如,YOLOv5使用聚类算法提前计算anchor boxes

post-process:例如,NMS去除多余预测框

DETR则完全不需要这些,从输入到输出,一气呵成,简洁优雅。

3. Method

3.1 模型结构

网络架构如图所示,同样非常简单

  1. 一个backbone:提取特征
  2. 两个transformer
    1. encoder:将特征图展平成序列,加上位置编码,使用self-attn进一步处理,使得每个特征向量关注到合适的特征表示
    2. decoder:cross-attn,query在特征序列上"逐个问询是否存在目标,目标在哪,有多大",使得query学习到目标的位置信息和特征表示
  3. 两个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 方法存在的问题

  1. 使用self-attn,太长的特征序列会导致爆炸的计算量,因此输入图像也不能太大
  2. transformer收敛速度慢,训练时间长
  3. 小目标效果一般

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

相关推荐
arbboter5 分钟前
【AI插件开发】Notepad++ AI插件开发1.0发布和使用说明
人工智能·大模型·notepad++·ai助手·ai插件·aicoder·notepad++插件开发
IT_Octopus17 分钟前
AI工程pytorch小白TorchServe部署模型服务
人工智能·pytorch·python
果冻人工智能22 分钟前
AI军备竞赛:我们是不是正在造一个无法控制的神?
人工智能
暴龙胡乱写博客27 分钟前
OpenCV---图像预处理(四)
人工智能·opencv·计算机视觉
程序员辣条35 分钟前
深度测评 RAG 应用评估框架:指标最全面的 RAGas
人工智能·程序员
curdcv_po36 分钟前
字节跳动Trae:一款革命性的免费AI编程工具完全评测
人工智能·trae
程序员辣条37 分钟前
为什么需要提示词工程?什么是提示词工程(prompt engineering)?为什么需要提示词工程?收藏我这一篇就够了!
人工智能·程序员·产品经理
孔令飞41 分钟前
Go:终于有了处理未定义字段的实用方案
人工智能·云原生·go
清流君1 小时前
【MySQL】数据库 Navicat 可视化工具与 MySQL 命令行基本操作
数据库·人工智能·笔记·mysql·ue5·数字孪生
Blossom.1181 小时前
人工智能在智能家居中的应用与发展
人工智能·深度学习·机器学习·智能家居·vr·虚拟现实·多模态融合