中文笔记:DERT
前言
最近在看Video Moment Retrieval和Highlight Detection的相关研究,其中效果比较好的工作如Moment-DETR,QD-DETR,CG-DETR都使用了DETR作为基本结构?所以有了这篇笔记。
DETR (Detection Transformer) 概述
DETR 将目标检测任务视为集合预测问题,主要目标是设计一个端到端的模型,不依赖人工设计的先验信息(如non-maximum suppression和anchor generation)。该网络可以分为四个主要部分:
CNN特征提取:
使用卷积神经网络(CNN)从输入图像中提取特征。Transformer编码器进行全局特征表征:
编码器采用 Transformer 架构,可以更好地捕捉图像中的全局上下文,有助于后续移除冗余的预测框。使用解码器生成预测框:
Transformer 解码器用于生成预测框。Object Query
用来控制生成多少个预测框。双边匹配损失:
使用双边匹配损失来将预测框与真实标注进行匹配,未匹配上的预测框会被标记为背景。在推理时,这一步会被省略,使用一个设定好的阈值来选择置信度较高的预测框作为输出。
DETR 成功的原因
DETR 的成功很大程度上归功于 Transformer,能够更好地从图像中抽取全局特征,从而提高检测性能。
集合预测损失
DETR 引入了一种新颖的集合预测损失,包含以下两个关键步骤:
最优双边匹配 (optimal bipartite matching):
这个过程类似于为工人分配任务,目标是使总成本最小化。在 DETR 中,预测框相当于工人,真实框相当于任务,cost矩阵中的cost为分类损失和预测框损失之和。这个匹配问题可以通过匈牙利算法(在 Python 中使用scipy.linear-sum-assignment
)解决。损失计算:
在预测框与真实框匹配后,计算实际损失并进行反向传播。与传统目标检测损失相比,DETR 进行了以下改进:- 去掉分类损失中的 log 函数。
- 预测框损失: 除了使用 L1 损失,还引入了 IOU(generalized Intersection over Union)损失,用于约束那些因为全局特征提取而预测出的大框。
推理过程
在推理时,第四步(双边匹配损失)会被省略,直接通过设置的置信度阈值来筛选输出的预测框。