DETR学习笔记

DETR是一种创新的目标检测框架,它摒弃了传统的回归和分类处理大量提案与anchor的方法,转而采用端到端的集合预测方式。通过Transformer的encoder-decoder结构,结合二分图匹配损失函数,实现直接预测目标集合,无需NMS后处理。实验表明,DETR在大型目标检测上表现出色,但在小目标检测上还有提升空间。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DETR学习笔记

1.问题

目前的检测方法不是直接预测一个目标的集合,而是使用替代的回归和分类去处理大量的proposals以及anchors。模型的效果会受到一系列问题的影响:后处理去消除大量重叠的预测、anchor的设计、如何把target box与anchor关联起来等问题。

2.解决方案

简化上述流程,将目标检测视为集合预测的方式,好处是训练与预测变成真正的端到端,无需NMS的后处理,十分方便。同时,也不用人为地预设anchor。

3.创新点

a.Set-based的全局loss,使用二分图匹配生成唯一的预测(预测框到ground-truth的匹配)
b.基于encoder-decoder结构的Transformer( 可以显示对序列中的元素进行两两关系的建模,可以在一定程度上缓解生成重复框的限制,也可以满足集合预测的要求)

4.Transformer结构

在这里插入图片描述
dert中的transformer不再使用自回归,而是使用并行直接的预测即直接预测出序列上所有对象的分类和 位置信息

5.二分图匹配方法在这里插入图片描述

图中CNN代表图像特征编码的backbone,transformer的后面的输出就是最终预测的结果集合,假设固定为5个预测结果也就是说网络的输出就是5×4(框中心坐标与对应原图的长宽比例)和5×(C+1)两个tensor,分别对应框的预测和类别的预测,C表示总共的类别数,+1是背景类。
DERT在一次解码的过程中,会推断出固定大小的N个预测集,其中N被设置为显著大于图像中对象的数量。

二分图匹配方法的具体做法:
a.首先对标签集合中padding加入no object,使得预测集与标签集数量一致
b.学习参数使得预测集合与GT之间的loss最小,如下式(1)所示,这个公式的求解使用的是Hungarian算法,同时考虑类别损失,框回归损失,与交并比损失,定义了最终的损失函数如下式(2)所示:
在这里插入图片描述

6.DETR结构在这里插入图片描述

具体步骤:
a.利用CNN提取图像特征,backbone可以使用主流的图像编码网络例如ResNet50等
b.编码-解码的transformer,encoder中带有position encoding,decoder中输入了object queries(随机向量,其个数决定了输出个数)
c.用来预测最终目标的前馈网络FFN,一个简单的三层前馈网络

tips:
a.encoder中输入的序列是channel维度的feature map
b.decoder输入object queries是N个向量,这N个向量是随机初始化然后训练得到的。每一个object query都学到了一些东西,右图显示了一些object query在做什么,比如第一行第一个就是在询问左下角有什么物体,第一行左数第二个就是在询问中间靠下的地方有什么。

在这里插入图片描述

7.实验结果

coco2017目标检测数据集
在这里插入图片描述
不同层数transformer-encoder的影响
在这里插入图片描述
transformer-encoder的热图
在这里插入图片描述
decoder输出结果NMS极大值抑制的影响
在这里插入图片描述
decoder attention的热图
在这里插入图片描述
loss对检测结果的影响
在这里插入图片描述

8、总结

a.基于Transformer的端到端目标检测框架
b.二分图匹配损失,用于直接set prediction
c.将DETR与Faster R-CNN基线方法进行了对比,结果发现DETR在大型目标上的检测性能要优于Faster R-CNN,但在小目标的检测上性能不如后者,这为今后DETR的改进提供了新的方向。

### RTDetrx 学习教程与资源 RT-Detrx 是一种基于 DETR (DEtection TRansformer) 的实时目标检测框架,旨在提高 DETR 在实际应用场景中的推理速度和效率。为了帮助理解这一复杂模型及其优化方法,以下是几个推荐的学习路径和参考资料: #### 1. 官方文档与论文 官方 GitHub 页面通常会提供详细的安装指南、使用说明以及一些基础示例代码[^2]。此外,阅读原始研究论文可以深入了解算法背后的理论依据和技术细节。 #### 2. 开源实现项目 许多开发者会在个人博客或技术社区分享自己对于 RT-Detrx 的理解和实践心得。这些开源项目的 README 文件往往包含了丰富的背景介绍、环境配置指导及常见问题解答等内容[^3]。 #### 3. 教程视频课程 在线教育平台如 Bilibili 或 YouTube 上可能存在由专家录制的教学系列,通过直观的方式讲解如何构建并训练自己的 RT-Detrx 模型。这类多媒体形式有助于更快速地掌握知识点[^4]。 #### 4. 技术论坛交流讨论 加入 Reddit、Stack Overflow 等国际知名的技术问答网站上的机器视觉板块,参与话题讨论可以获得来自全球同行的第一手经验反馈;同时也可以向他人请教遇到的具体难题[^5]。 ```python import torch from rt_detrx import build_model, get_args_parser def main(): args = get_args_parser().parse_args() model, criterion, postprocessors = build_model(args) if __name__ == '__main__': main() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值