首页 > 其他分享 >从DETR到DETR3D(1)

从DETR到DETR3D(1)

时间:2023-10-25 13:23:53浏览次数:40  
标签:DETR3D 检测 pos Encoder Decoder 100 DETR

最近参加了手写ai的车道线检测项目, 后续会更新一些文章展现对相关项目邻域的总结和理解。

一 DETR的原理


DETR输出是定长的:100个检测框和类别。这种操作可能跟COCO评测的时候取top 100的框有关,从这种角度看,DETR可以被认为具有100个adaptive anchor,其中Encoder和Object Query分别对特征和Anchor进行编码,最后用Decoder+FFN得到检测框和类别。
这篇文章也从侧面说明100个Anchor完全够用。但是进一步想,100个Anchor其实也是有一些冗余输出的:很多图里面物体很少,并不能用完100个检测框吧。
当然定长的输出有利于显存对齐,训练的时候会方便一些。
二 DETR的结构


DETR的整体结构Transformer类似:Backbone得到的特征铺平,加上Position信息之后送到一堆Encoder里,得到一些candidates的特征。这100个candidates是被Decoder并行解码,以得到最后的检测框。这里如果是计算成本太高的话可以并行计算

下面我们讲一下DETR中的Encoder、Decoder和Bipartite Matching。

2.1 DETR Encoder
网络一开始是使用Backbone(比如ResNet)提取一些feature,然后降维到d×HW。
Feature降维之后与Spatial Positional Encoding相加,然后被送到Encoder里。
为了体现图像在x和y维度上的信息,作者的代码里分别计算了两个维度的Positional Encoding,然后Cat到一起。
pos_x = torch.stack((pos_x[:, :, :, 0::2].sin(), pos_x[:, :, :, 1::2].cos()), dim=4).flatten(3) pos_y = torch.stack((pos_y[:, :, :, 0::2].sin(), pos_y[:, :, :, 1::2].cos()), dim=4).flatten(3) pos = torch.cat((pos_y, pos_x), dim=3).permute(0, 3, 1, 2)
FFN、LN等操作也与Transformer类似。Encoder最后得到的结果是对N个物体编码后的特征。

2.2 DETR Decoder
DETR Decoder的结构也与Transformer类似,区别在于Decode解码N个object。
每个Decoder有两个输入:一路是Object Query(或者是上一个Decoder的输出),另一路是Encoder的结果。
Object Query是一组nn.Embedding的weight(就是一组学到的参数)。另外一个与Transformer不同的地方是,DETR的Decoder也加了Positional Encoding。最后一个Decoder后面接了两个FFN,分别预测检测框及其类别。

2.3 Bipartite Matching

由于输出物体的顺序不一定与groud truth的序列相同,作者使用二元匹配将GT框与预测框进行匹配。其匹配策略如下:

最后的损失函数:

主要就是理解好其输入的query和位置编码模块,并且对decode部分熟悉就可以了。

三 总结

DETR利用transformer完成了端到端的目标检测,省去了proposal或者anchor,以及NMS。而是使用了100个object query和二分匹配算法(匈牙利匹配算法)完成了一对一的object预测。
优点:打破了传统的目标检测算法难部署,难适应不同数据集等缺点
缺点:训练时间长,收敛速度慢,需要500个epoch;对于小目标的检测性能低

标签:DETR3D,检测,pos,Encoder,Decoder,100,DETR
From: https://www.cnblogs.com/qsf1997/p/17786940.html

相关文章

  • DETR
    目前的方法,无论是单阶段的还是两阶段的,无论是AnchorBased还是Ancho一例外的需要使用后处理方法->NMS来过滤掉冗余的预测框这是因为目前的方法全都基于DenseFrediction,合人类识别物体的方在原理上,这种操作方式不符式。在实践中,这会导致目标检测中会有一系列的手工设计痕迹 摘......
  • 30%Token就能实现SOTA性能,华为诺亚轻量目标检测器Focus-DETR效率倍增
    前言 目前DETR类模型已经成为了目标检测的一个主流范式。但DETR算法模型复杂度高,推理速度低,严重影响了高准确度目标检测模型在端侧设备的部署,加大了学术研究和产业应用之间的鸿沟。来自华为诺亚、华中科技大学的研究者们设计了一种新型的DETR轻量化模型Focus-DETR来解决这......
  • RT-DETR:可以满足实时性要求的DETR模型
    本文分享自华为云社区《高性能网络设计秘笈:深入剖析Linux网络IO与epoll》,作者:LionLong。一、epoll简介epoll是Linux内核中一种可扩展的IO事件处理机制,可替代select和poll的系统调用。处理百万级并发访问性能更佳。二、select的局限性(1) 文件描述符越多,性能越差。 单个进程......
  • DETR
    目录1.用卷积神经网络抽特征(1)按数据、标签取数据(2)把数据做成序列(3)拉平特征2.用TransformerEncoder去学全局特征3.用TransformerDecoder调整objectquery生成100个预测框4.二分图匹配和损失函数相较于传统目标检测,DETR是一种纯端到端的网络。它不再需要NMS(非极大值......
  • detrex | 面向detr系列的目标检测开源框架
    DETR作为Transformer应用于目标检测领域的开山之作,后续有大量的算法都是在其基础上改进而来,如Deformable-DETR,DAB-DETR,DN-DETR,DINO等。这些模型尽管都是采用DETR的基本架构,但其改进创新却各有千秋,能否有一个框架将这些算法融合在一起方便我们使用呢?CVR团队分别开源了DAB-DETR,DN-D......
  • 加速44%!RT-DETR量化无损压缩优秀实战
    RT-DETR模型是飞表目标检测套件PaddleDetection最新发布的SOTA目标检测模型。它是一种基于DETR架构的端到端目标检测器,在速度和精度上均取了SOTA性能。在现实部署中,为了追求“更准、更小、更快”的效率,本文使用飞模模型压缩工具PaddleSlim中的自动压缩工具(ACT,AutoCompressionTo......
  • 超越YOLOv8,飞桨推出精度最高的实时检测器RT-DETR!
    众所周知,实时目标检测(Real-TimeObjectDetection)一直由YOLO系列模型主导。飞桨在去年3月份推出了高精度通用目标检测模型PP-YOLOE,同年在PP-YOLOE的基础上提出了PP-YOLOE+。后者在训练收敛速度、下游任务泛化能力以及高性能部署能力方面均达到了很好的效果。而继PP-......
  • YOLO超快时代终结了 | RT-DETR用114FPS实现54.8AP,远超YOLOv8
    前言 本文首先分析了现代实时目标检测器中NMS对推理速度的影响,并建立了端到端的速度基准。为了避免NMS引起的推理延迟,作者提出了一种实时检测Transformer(RT-DETR),这是第一个实时端到端目标检测器。具体而言,设计了一种高效的混合编码器,通过解耦尺度内交互和跨尺度融合来高效处理多......
  • gitee github 左侧栏树形显示插件 Octotree codetree 浏览器插件
    起因看到一位仁兄用gitee做仓库https://gitee.com/zhengqingya/java-developer-document然后左侧栏挺方便(抖音视频)下载chrome扩展市场搜octotree用于githubcodetree用于gitee双核浏览器扩展市场搜octotree用于githubgitcodetree用于gitee......
  • DINO-DETR论文学习记录
    摘要我们介绍了DINO(带有改进的去噪器box的DETR),一种最先进的端到端对象检测器。DINO通过使用对比方式进行去噪训练、混合查询选择方法进行锚点初始化以及用于框预测的ookfo......