DETR的学习与分析

【AI】DETR模型可视化操作 Detr作为目标检测的算法,不同于之前算法的就是注意力机制,注意力机制能够直观看出来模型对图像关注的点,这个直观到底怎么直观呢,我们只听别人说肯定是不行的,上手测试才是最好的方式,像论文中插图那样的使用热度图的方式来展现注意力关注的重点才能叫做直观。幸运的是,官方hands_on手册中给了模型可视化的方式,我也搬过来用一下,方便后续查看。如果有其他模型可视化的操作,也可以借鉴这些代码。 阅读详情

DETR的学习与分析

前言

通过对Transformer在语义分割任务中应用的学习,发现自己对Query-Based的模型十分陌生,而这些模型大多都是基于DEtection TRansformer这一模型设计的,于是便找来DETR的原论文进行学习与分析。

DETR提出了基于Query(Query based)的端到端目标检测算法。从深度学习开始,一直到DETR,目标检测领域很少有端到端的方法。不论是proposal based的方法、anchor based的方法,还是non anchor based的方法,最后都需要非极大值抑制 (NMS) 这种后处理方法,去除冗余的预测框。而NMS的存在使得模型调参复杂、部署困难。而DETR既不需要proposal,也不需要anchor,直接利用Transformer的全局建模能力,把目标检测看成了一个集合预测的问题。并且DETR在训练过程中,预测结果与实际的真实值一一匹配,不会输出那么多冗余的框,不需要再用NMS进行后处理,使得模型的训练和部署简单了不少。

注:集合预测问题(set prediction) ——即给定一个固定小规模的目标查询集,DETR 推理目标和全局图像的关系,然后直接输出最终的预测集,最后再通过二分图匹配确定哪个框对应哪类目标。

1. DETR的特点

原论文参见:End-to-End Object Detection with Transformers

与RCNN的proposal + classifier的方法不同(通过一些密集的方框去覆盖整张图像可能出现物体的部分,然后预测该视野范围内的物体类别以及对该视野范围进行微调),DETR的检测方式与人类习惯更加相似:先确定物体的大体位置,再进一步判断这个物体是什么。

DETR提出了两个新的东西:
①提出了一个新的目标函数:通过二分图匹配的方式,强制模型输出一组独一无二的预测。理想状态下,一个物体对应生成一个框。(使用二分图匹配替代了原来的NMS)详见:DETR-二分图匹配 & 匈牙利算法
②使用了Transformer encoder & decoder的架构。其中包含两个小细节:

  • Transformer decoder中有另一个输入——learned object query(使用Object Quary替代了原来的Anchor)
  • 模型可以并行输出预测框(区别于NLP中Transformer通过自回归方式的串行输出,并行输出提高了时效性)

DETR的优点:
①想法简单,实现简单,不需要新的deep learning library,支持cnn和transformer就能支持DETR。
②能够简单地拓展到其他任务上,例如语义分割,只需加一个分割头即可。

DETR的缺点:
①对于小目标的检测效果不好。(通过使用多尺度的特征来提升小物体的检测,类比FPN对Faster R-CNN的改进)
②训练太慢。想要达到很好的效果需要在COCO数据集上训练500Epoch,而一般其他模型只需几十个Epoch

解决方案:Deformable DETR(Deformable Attention & 多尺度特征)

2. DETR模型结构

在这里插入图片描述
根据上图,整个模型的实现大体分成四步:

  1. 使用卷积神经网络提取特征
  2. 用Transformer Encoder学习全局特征。学习全局特征有助于大致判断不同物体的位置,消除冗余的框,帮助后面的目标检测
  3. 用Transformer Decoder生成很多的预测框。*object query限定了要出多少个框,通过query和特征不停做自注意力操作,从而得到最后的输出的框。*最终生成多少个框是作者定义的(原文中是100),即不论输入什么图片都会生成100个框。
  4. 用生成的预测框与Ground Truth的框做匹配,在匹配上的框中计算目标检测的loss(Ground Truth就是正确标注的数据)
    生成的框如何与Ground Truth的框做匹配,然后计算loss?
    作者将这个问题看成一个集合预测的问题,最后用二分图匹配的方法计算loss。例子:Ground Truth框有两个,通过计算100个预测框和这两个框的matching loss来决定100个预测中哪两个框是独一无二的。决定好框之后,再像普通的目标检测
    一样算一个分类的loss和一个bounding box的loss。至于没有匹配到Ground Truth的框会被标记为没有物体,即所谓的背景类。

在这里插入图片描述

3. 可视化分析

3.1 Encoder

在这里插入图片描述
将Transformer Encoder的自注意力进行可视化:在目标上设置一些基准点,计算该点和图像中其他点的自注意力,观察自注意力的分布。可以发现Transformer Encoder的自注意力已经基本将目标的形状恢复出来了,甚至有一点语义分割中mask的形状了,即使对于有遮挡的情况,还是能把目标分辨清楚。
在这里插入图片描述
从表中看出,Transformer Encoder的层数越深,学到的全局特征越好,有可能可视化就越清晰,目标之间分开更加清楚,目标检测就容易很多。

3.2 Decoder

在这里插入图片描述
经过Transformer Encoder后为什么还需要一个Decoder?Decoder在学什么?
图中将每个物体的自注意力用不同颜色表示出来了。左图中,小象使用黄色标识,大象用蓝色标识。可以发现即使在遮挡严重的情况下,例如大象的蹄子还是可以显示出蓝色;对于小象来说,大象和小象的皮肤其实非常接近,但还是能把轮廓分的很清楚(可以预想在伪装检测领域的威力)。
右图中,斑马本身的斑纹就是非常强的干扰特征,而且遮挡十分严重。即使这种情况下,DETR还是能准确分辨出斑马的边界和蹄子

回答:Encoder在学全局的特征,尽可能让目标之间分开,但是只是分开是不够的,对于头部、尾巴、边界这类极值点就交给Decoder去做了。因为Encoder已经把目标都分好了,Decoder就可以把所有注意力都分到学边缘,去更好地区分物体以及解决遮挡问题。(类似于语义分割中的U-net结构,encoder去抽取语义特征,Decoder一边恢复图片大小,另一边加入更多细节信息。)

3.3 Object Query

在这里插入图片描述
从设定的N=100个的Object Query输出框中选出了20个。图中绿色的点代表小的bounding box(边界框),红色的点代表大的、横向的bounding box,蓝色的点代表大的、竖向的bounding box。
可以发现,Object Query与Anchor有一些相似之处:Anchor是提前先去定义好了一些bounding box,最后将预测与提前定好的bounding box 做对比;而Object Query是一个可以学习的东西,它就像是一个问问题的人,例如第一个框他会问,左下角有没有一个小物体?中间有没有大的横向的物体?中间有没有大的纵向的物体?每当一张图片输入,各个框就会按照各自的方式去问图片各种各样的问题,如果得到了合适的答案,它就会把这个答案返回给你,而这个答案就是对应的bounding box。

4. 下一步计划

后续的 Deformable DETR、Sparse R-CNN 等工作进一步提高了基于 Query 的端到端物体检测算法的收敛速度以及精度。与之前基于锚框 / 锚点(anchor based/keypoint based)的方法相比,Query Based的方法已经取得了可媲美的结果。

在基于Query的目标检测算法快速发展的同时,如何将其有效拓展到语义分割领域成为值得探讨的问题。

  • 尝试使用DETR完成语义分割的下游任务
  • 追踪DETR后续的改进模型,进一步理解Object Queries(Cell-DETR & VisTR、QueryInst)
  • 跟进Mask Embeding部分。(通过ISTR、SOLQ理解图d;通过Max-DeepLab、Segmenter理解图e,见语义分割任务中的Transformer)
  • 学习FCN、DeepLabV1V2V3、LR-ASPP、U-Net、U2Net语义分割领域经典模型

参考

DETR论文精读

DETR(DEtection TRansformer)要点总结 DETR翻译过来就是检测transformer,是Detection Transformers的缩写。这是一个将2017年大火的transformer结构首次引入目标检测领域的模型,是transformer模型步入目标检测领域的开山之作。利用transformer结构的自注意力机制为各个目标编码,依靠其并行性,DETR构造了一个端到端的检测模型,并且避免了以往模型中各种类型的冗余操作,让目标检测问题变得更加简单。 阅读详情

相关推荐

DETR源码学习(三)之损失函数与后处理

在DETR模型中,在完成DETR模型的构建后,我们送入数据在完成前向传播后就需要使用预测值与真实值进行计算损失来进行反向传播进而更新梯度。 在DETR模型中,其标签匹配采用的是匈牙利匹配算法。 主要涉及models/matcher.py、models/detr.py和engine.py三个文件。首先在detr.py中会先定义好损失函数: 然后在engine.py的train_one_epoch中前向推理结束后将输出结果与真实标签作为参数并调用criterion函数,计算损失: outputs的值 pred_

pengxiang1998的博客 4206

【计算机视觉 | 目标检测】术语理解7:二值匹配(Binary Matching),DETR中的Object query的理解,匈牙利算法,DETR中的二分图匹配

【计算机视觉 | 目标检测】术语理解7:二值匹配(Binary Matching),DETR中的Object query的理解,匈牙利算法,DETR中的二分图匹配

wzk4869的博客 7789

DETR:目标检测的全新范式

在目标检测领域,DETR(Detection Transformer)就像一位 "破局者",彻底颠覆了传统的检测思路。它将 Transformer 引入检测任务,通过端到端的架构设计,让目标检测变得更加简洁高效。本文将深入浅出地介绍 DETR 的核心原理、Java 实现示例、复杂度分析、应用场景及学习建议。

分享技术应用、实践场景等,评论区开放技术难题讨论,共同成长进步。 1353

DETR特征图可视化代码

一共分为5个步骤,

m0_37412775的博客 3919

Semi-DETR: Semi-Supervised Object Detection with Detection Transformers阅读笔记

对基于DETR的半监督目标检测(SSOD)框架进行了分析,发现:(1)当伪真值边界盒不准确时,一对一分配策略会产生不正确的匹配,导致训练效率低下;(2)基于der的检测器在输入查询和预测输出之间缺乏确定性对应关系,这阻碍了当前SSOD方法中广泛使用的基于一致性的正则化的适用性。我们提出了Semi-DETR,第一个基于变压器的端到端半监督对象检测器,来解决这些问题。

2301_78698967的博客 3295

DETR目标检测:从Transformer原理到端到端集合预测实战

目标检测是计算机视觉的核心任务,传统方法依赖Anchor和NMS等手工设计组件,存在调参复杂、泛化性受限等问题。Transformer架构通过自注意力机制实现全局上下文建模,为视觉任务提供了新的解决方案。DETR将目标检测重构为端到端的集合预测问题,利用Transformer编码器-解码器架构和匈牙利匹配损失,消除了手工先验设计,实现了模型架构的简化和全局优化。这一范式在工业检测、自动驾驶等场景展现出潜力,尤其在小目标检测和遮挡处理方面具有优势。本文深入解析DETR的核心原理,涵盖Transformer在视

weixin_30800807的博客 397

目标检测学习笔记1-Detr源码分析

最近在学习detr,看完论文尝试着看源码,水平不行还是参考了很多大牛的解析,简单说一下看论文和源码的思路吧,我觉得这种方法还是很有帮助的。

lddddss的博客 2164

Transformer, VIT, Swin-TR, DETR, SETR:深度解析网络结构与改进思路

深度学习领域的模型不断涌现,其中Transformer、Vision Transformer(VIT)、Swin-Transformer(Swin-TR)、DEtection TRansformer(DETR)、和 SElf-TRansformer(SETR)等模型在自然语言处理和计算机视觉等任务中取得显著成就。这些模型的不断创新为深度学习领域带来了新的思路和方法。2. 空间关系建模: 引入更强大的空间关系建模机制,使模型能够更好地理解图像中不同区域的空间关系,有助于图像理解任务。

weixin_61224048的博客 1844

学习视觉CV Transformer (3)--ViT、DETR的原理及代码分析

CV Transformer --ViT、DETR的原理及代码分析

weixin_42495721的博客 1073

DSP TMS320F280049之CCS工程的建立(库函数版)

TMS320F280049 DSP是TI最新出的一款C2000系列的DSP,主频为100MHZ,功能较为强大,具有较多的片上模拟外设。这一节主要讲述如何新建F280049的CCS工程。 Step1.下载文件: 下载C2000Ware软件并安装。下载地址如下: http://www.ti.com.cn/tool/cn/C2000WARE?keyMatch=C2000Ware%2...

fanxianyan1993的博客 1万+

Python爬取天天基金网历史数据

前言 最近开始学习基金????,感觉需要收集一些数据统计分析才靠谱????毕竟给A股交学费的感觉可不好受???? 网上有很多公开的数据,我这里选择的是天天基金网进行爬取 页面分析 接口我分析过了,有些验证不太好获取数据,所以直接从html提取 在天天基金网中随便选择一款基金,然后点击进入历史数据页面 容易定位出日增长率的css选择器 还有翻页按钮 程序编写 使用selenium打开chrome浏览器进行爬取,全代码如下 from selenium import webdriver from sel

JiajunBernoulli的博客 2949

DETR-GROUNDING DINO、P TUNING简单总结

在backbone中提取的4个不同尺度的特征送入transformer中的encoder中,但是,DETR的使用的是单尺度特征,而且使用的是三角函数,不同位置的(x、y)坐标会生成不同的位置编码。作者这里将DCN和DETR相结合,DETR收敛慢和计算量大,其主要的原因是transformer模块带来的频繁计算(每个位置需要计算和其他所有位置的相似度,而且不像卷积那样共享参数),那么很朴素的想法就是:让每个位置不必和所有位置交互计算,只需要和部分(学习来的,重要的部分)进行交互即可。

qq_41590821的博客 2490

MATLAB应用实战系列(七十七)-基于长时间序列栅格数据的MK检验

1 MK检验介绍 MK检验是曼-肯德尔法,又称Mann—Kenddall 检验法,是一种气候诊断与预测技术,应用Mann-Kendall检验法可以判断气候序列中是否存在气候突变,如果存在,可确定出突变发生的时间。Mann-Kendall检验法也经常用于气候变化影响下的降水、干旱频次趋势检测。目前常用于长时间序列的栅格数据的显著性检验,在植被覆盖度,NDVI,NPP等方面尤为常见。 该检验功能强大,不需要样本遵从一定的分布,部分数据缺失不会对结果造成影响,不受少数异常值的干扰,适用性强。不但可以检验时

wenyusuran的专栏 6289

Co-DETR:协作式混合分配训练的DETR

文章对于每张图像中的一个GT框,可视化了原始正样本query和定制化正样本query的位置分布,其中红色表示由匈牙利匹配算法得到的正样本,蓝色表示由Faster R-CNN辅助检测头确定的正样本,橙色表示由ATSS辅助检测头确定的正样本。可以看到定制化的正样本query分布在物体的中心区域,可以为检测器提供足够的监督信号。正如文章所说,我个人也一直感觉相比于传统检测器的正负样本分配策略,原始DETR的正负样本分配策略产生的正样本数量太少。DN-DETR通过对GT添加噪声构造额外的正样本,提升了检测性能。

weixin_44052271的博客 2215

【Autosar从入门到精通到进阶实战篇】75 0x34/0x36/0x37:请求下载、传输数据、请求退出——刷写流程的“三兄弟”

文章摘要:UDS刷写流程0x34/0x36/0x37关键实现要点 本文通过一个真实ECU变砖案例,揭示了UDS刷写服务(0x34请求下载、0x36传输数据、0x37请求退出)的实现陷阱与最佳实践。核心要点: 安全架构设计: 0x34阶段只协商参数,不立即擦除Flash 采用缓冲区暂存数据,避免频繁写Flash 严格检查地址对齐和内存边界 关键改进措施: 实现数据包序列号校验(防错位) 传输层缓冲区溢出保护 0x37阶段必须包含完整性校验(如CRC32) 一次性批量写入Flash,减少擦写次数 典型错误模式:

企鹅码农的专属播客,分享10多年的实战案例和经验解读,包含YOLO、RT-DETR、AI等各个工作领域。 68

【OpenCV C++】基本绘图操作

OpenCV C++基本绘图操作程序说明代码运行效果 程序说明 // 程序描述:OpenCV C++基本绘图操作 //参 考:毛星云《OpenCV3编程入门》 // 操作系统: Windows 10 64bit // 开发语言: C++ // IDE 版 本:Visual Studio 2019 // OpenCV版本:4.20 代码 main函数写法很简单,先创建空表Mat图像,然后点用函数绘制化学原子图,接着绘制组合图,最后显示图像。 //-------------------------

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 765

DETR个人学习笔记(五)之DETR的网络结构

接下来正式介绍DETR的网络结构。 先来回顾一下目标检测,目标检测就是要定位和识别。定位就是要找到物体所在位置,即Bounding box,边界框,识别就是确定物体是什么,要给出物体标签(Category label)和置信度得分(Confidence score)。比如下图就给出了物体的类别、置信度标签和位置边界框。 对于目标检测,卷积神经网络的方法,它会确定图片中物体所在的边界框,但是这样的边界框可能有多个,所有需要后处理,进行非极大抑制处理,然后得到目标边界框 下图展示了基于Faster R-CN

weixin_44303979的博客 2839

2026AI漫剧放心大胆做!小白也能轻松出片(附保姆级教程)

要是在2025,我大概率会劝他再等等,毕竟那时工具还没这么顺手。但到了2026年的今天,我的回答得很干脆:放心去做,绝对没问题。这一年多来,AI漫剧这块的变化真可谓翻天覆地。过去你想拍个像样的短片,哪怕再简陋,也得凑齐拍摄设备、找场地、找演员,后期剪辑更是折磨。但现在,时代变了,AI已经把创作的门槛踏平了。你不需要请演员,也不用操心灯光布景,更不用为剪辑特效烧钱。一个人,一台电脑,花几天时间就能做一部完整的AI漫剧。你只要有有想表达的故事,突发的灵感,剩下的,都能直接交给AI落地。

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 427

古籍智能分析新突破:HisDoc-DETR模型技术解析与应用

骨干网络提取多尺度特征后,通过语义关系模块建立页级关联,双流特征融合模块则整合笔划细节与章节语义,最后GIoU预测头确保定位与分类一致性。对于需要持续服务的古籍数字化系统,平台的一键部署功能可快速发布为Web应用,方便研究团队协作使用。通过自注意力层建模跨区域关联,使系统能理解"注释指向正文"等复杂关系,这在处理经史子集类文献时尤为关键。同步应用通道注意力和坐标注意力机制,既识别重要特征通道,又精确定位关键空间区域。除基础版面分析外,该技术可延伸至:文物碎片数字化拼接、家谱世系图重构、碑文拓片解析等领域。

FrostfireStag78的博客 600

Marvell 88Q6113 如何制作一个完整的量产固件88Q6113_flash.bin并进行烧录

本章节介绍如何基于Marvell工具链,制作一个完整的量产固件88Q6113_flash.bin,集成用户自定义的配置文件 config.bin,用于88Q6113的Flash烧录。注:Marvell 88Q5072 与 Marvell 88Q6113 的配置流程是一样的。

老板来份猪脚拼叉烧的博客 2008

YOLO小目标检测优化:9种实用方案,准确率直接提升15%

小目标检测是个系统工程,没有银弹,但有明确的优化路径。优先搞数据。Copy-Paste + 提升分辨率,这俩加起来成本最低、收益最大,能解决80%的小目标问题。别一上来就改模型结构。调参走在改结构前面。锚框聚类、损失加权、增强优化,这些都是零成本的,先做满了再说改模型的事。P2层是大杀器,但不要轻易用。加了P2层,TensorRT部署、后处理、速度都要跟着调,工程化工作量翻倍。数据和训练做到位还不够,再加也不迟。滑动窗口是兜底的。能从训练端解决的问题,就不要拖到推理端。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 186

面向古籍版面数字化识别应用研究—基于HisDoc-DETR模型深入剖析

HisDoc-DETR 的成功在于对古籍特性的深入理解与针对性优化。它提醒我们,技术创新不仅是算法性能的提升,更在于将技术与实际场景紧密结合,从而实现学术价值与社会价值的双重提升。未来,类似的方法有望进一步拓展到多语种、跨时代文献的数字化处理,推动古籍保护与利用进入智能化新时代。

一键难忘的博客 8万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

PaddlePaddle镜像能否运行Deformable DETR做目标检测?

Deformable DETR凭借高效注意力机制成为目标检测新利器,结合PaddlePaddle官方Docker镜像与PaddleDetection工具库,可实现开箱即用的训练与部署。从环境搭建、模型配置到推理导出,全流程已高度封装,兼顾性能与工程落地需求,特别适合工业质检、安防等场景的快速迭代。

weixin_35751194的博客 627

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

探索Co-DETR:一种高效的多模态检测Transformer框架

探索Co-DETR:一种高效的多模态检测Transformer框架 Co-DETR[ICCV 2023] DETRs with Collaborative Hybrid Assignments Training项目地址:https://gitcode.com/gh_mirrors/co/Co-DETR 在计算机视觉领域,是一个引人注目的开源项目,它基于Transformer架构,旨在实现高效且准...

gitblog_00031的博客 1049

Deformable DETR学习详解

本文对比了普通卷积与可变形卷积的差异,重点分析了可变形卷积通过预测采样点偏移量实现自适应感受野的优势。针对DETR模型存在的收敛慢和小目标检测差的问题,详细阐述了DeformableDETR的创新设计:采用多尺度可变形注意力机制,使每个query仅关注少量关键采样点,大幅降低计算复杂度的同时提升检测性能。文章还介绍了DeformableDETR的整体架构。

u012316485的博客 904

DETR:基于Transformer的端到端目标检测模型原理与PyTorch实践

目标检测是计算机视觉的核心任务之一,旨在识别图像中物体的类别和位置。传统方法如Faster R-CNN依赖预设锚框(Anchor)和非极大值抑制(NMS)等手工设计组件,流程复杂。Transformer架构凭借其强大的全局关系建模能力,为视觉任务带来了新范式。DETR(Detection Transformer)首次将Transformer引入目标检测,通过编码器-解码器结构和可学习的对象查询,将检测任务重构为端到端的集合预测问题。其核心创新在于利用匈牙利算法进行二分图匹配,直接为预测框与真实物体建立最优对

weixin_29034963的博客 226
上一篇: 语义分割任务中的Transformer
下一篇: DETR-二分图匹配 & 匈牙利算法
东方采菊
博客等级 码龄7年 381粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值