首页 > 其他分享 >DETR

DETR

时间:2024-12-06 11:43:49浏览次数:6  
标签:检测 Encoder Decoder DETR Anchor times

PDF: https://arxiv.org/pdf/2005.12872
Code: https://github.com/facebookresearch/detr

一、大体内容

DETR(DEtection TRansformer)基于Transformer提出了一个全新的端到端的目标检测框架,之前的目标检测方法,不管是两阶段、一阶段还是Anchor-free和Anchor-based方法,最后都需要有NMS操作来过滤重叠的预测框,而且基于Anchor和基于proposal都依赖于人为设定的大小。DETR将目标检测任务变成一个集合预测问题(原先都是通过 proposal或anchor来间接预测),不用借助NMS、Anchor、先验框等信息,直接端到端等输出物体检测框,且其只需要更换检测头就可以直接迁移到分割任务。
并且预测是并行出框的。但当时对小物体检测效果不太好且训练比较慢,但这些问题在后续提出的Deformable DETR中都得到了解决。

整体结构和流程


整体上分成4个模块,CNN骨架网络提取初始特征,加上位置编码后输入Encoder提取全局特征,再把可学习的object Queries输入到Decoder,最后经过检测头直接输出框和类别信息。

假设输入图片大小为\(800 \times 1066 \times 3\),预测类别为91类,图片经过卷积神经网络32倍下采样后抽取特征为\(25 \times 34 \times 2048\),在变换到\(25 \times 34 \times 256\),然后与同样大小的位置编码进行相加并拉直得到特征为\(850 \times 256\),输入到Transform Encoder学习全局特征还是\(850 \times 256\),再和可学习的固定个数的(超参 100个,所以大小为\(100 \times 256\))object Queries进行自注意力操作,再经过Encoder得到大小为\(100 \times 256\)的特征,最后经过一个检测头输出类别信息(\(1 \times 91\))和框信息(\(1 \times 4\))。

二、贡献点

  • 提出一个端到端的目标检测框架DETR,无需NMS等操作,也不需要一些先验知识去设置Anchor,直接并行输出目标框和类别
  • DETR很容易扩展到分割等任务,可以作为一个视觉通用框架,DETR新挖了个坑,后续很多工作对其进行了改进

三、细节

3.1 训练和预测区别


主要区别在于是否需要二分图匹配。
在训练时需要利用二分图匹配给每个真实框分配一个唯一的预测框,进行损失计算。
二分图匹配可以参考:https://www.cnblogs.com/xiaxuexiaoab/p/17838305.html
实现上直接采用scipy包的函数linear-sum-assignment
而推理时直接输出预定个数的框,然后按照一个给定分数阈值,得到最终检测框。

3.2 损失函数

DETR对任意图片都输出给定的N个框,在训练时给每个真实框分配一个唯一的预测框。

其中

整体结构上还是和Hungarian loss一致,由一个分类和一个框损失组成。

但是BETR中的分类损失没有用log,保证和框损失取值空间一致
框损失一般用L1Loss,考虑到L1 loss和出框大小有关,越大损失越大, BETR采用了GIou loss和L1 Loss结合

试验也表明框损失同时采用L1 loss和GIoU loss效果最好

3.3 Object Query

Object Query开始进行随机初始化,然后在Decoder中的第一个多头注意力进行自注意力。主要是为了移除冗余框,第二个多头注意力再与Encoder输出特征进行交叉注意力


这图说明学习的和anchor有点类似,相当于以不同的方式去询问,比如有的关注左下角,有的关注右侧,上图显示中间都有一条,作者给出的解释是COCO数据集一般中间都有一个大物体,这说明DETR是学习自动学习到了Anchor特征,这也避免了人为事先设定。

3.4 DETR的Transformer结构


与Transformer还是有点不一样,如:
DETR在Encoder里位置编码只加在Q和K上,而Transformer加在QKV上
DETR在解码器第一个多头注意力是对object queries进行的,到第二个才与Decoder输出关联,并将Object queries加到Q上

3.5 迁移到分割

作者通过可视化分析了Encoder和Decoder的结果,这也为直接迁移到分割提供了基础。

  • Encoder注意力可视化

    图片中牛的大体区域已经学习到了,包括那头小牛位置都很清晰。

  • Decoder可视化

    这张图效果更加明显,大象和斑马的皮肤很接近,但边缘位置Decoder学习的很好,能够把不同物体的边缘区分出来。

  • 分割网络
    在box后接入一个FPN(特征金字塔)网络可以直接实现全景分割。

3.6 不足点

  • 对小目标效果不好
  • 训练耗时,比较慢
    在DeTR中图像通过一系列的卷积层和池化层进行特征提取,这会导致特征图的分辨率降低,小物体在经过这些层后可能会失去很多细节信息,使得模型难以准确检测小目标。另外Transformer的注意力机制倾向于关注图像中的显著区域,这可能导致模型对小物体的关注度不足,在大物体占主导地位的场景中,小物体可能被忽略。
    目标检测和分割通常图片分辨率较大,且训练时需要进行二分图匹配才能计算损失,所以训练比较耗时。

这些问题半年之后deformable detr的提出把这两个问题都解决了。(FPN===>Faster RCNN用了两年半)

四、效果

  • 检测结果对比

  • 不同层数效果

  • 分割效果


标签:检测,Encoder,Decoder,DETR,Anchor,times
From: https://www.cnblogs.com/xiaxuexiaoab/p/18587297

相关文章

  • 论文必备 - RT-DETR热力图可视化,支持指定模型,指定显示层,设置置信度,以及10种可视化实现
    一、本文介绍本文带来的是RT-DETR热力图可视化功能,支持指定模型,指定显示层,设置置信度,以及10种可视化实现方式。我们经常看到一些论文里绘制了不同的热力图,一方面能够直观的感受其模型的有效性,另一方面也丰富了论文内容。特别是在使用了注意力模块的网络中,热力图就可以验证......
  • 以Deformable_DETR为例说明训练过程
    以Deformable_DETR为例说明使用服务器训练过程下载程序文件根据论文提供的github地址fundamentalvision/Deformable-DETR:DeformableDETR:DeformableTransformersforEnd-to-EndObjectDetection.下载zip到本地租用服务器在autodl平台租用服务器,申请账号氪金之后去市场......
  • yolov8目标检测_结果文件(run/detrct/train)详解
    笔者这里是自己学习yolov8结果文件时的笔记心得分享给各位读者,可能也有很多不足之处,希望大家批评指正,共同成长!在YOLOv8的训练过程中,训练结果会存储在runs/detect/train目录下,其中包含多个文件和子文件夹。这些文件记录了训练的过程和结果,便于后续的评估和分析。结果文件......
  • DETR:End-to-End Object Detection with Transformers
    【DETR论文精读【论文精读】-哔哩哔哩】https://b23.tv/Iy9k4O2 摘要:将目标检测看作一个集合预测的问题任务:给定一张图片,预测一组框,每个框需要得到坐标信息和包含的物体类别信息,将框可以视为集合,不同图片所对应的框不同,则所对应的集合就不同去除:NMS、生成anchor创新:......
  • RT-DETR融合[CVPRW2024]MAN中的MLKA模块及相关改进思路
    RT-DETR使用教程: RT-DETR使用教程RT-DETR改进汇总贴:RT-DETR更新汇总贴《Multi-scaleAttentionNetworkforSingleImageSuper-Resolution》一、模块介绍    论文链接:https://arxiv.org/pdf/2209.14145v2    代码链接:https://github.com/icand......
  • RT-DETR改进|爆改模型|涨点|使用VMamba作为骨干网络(附代码+修改教程)
    一、文本介绍本文修改的模型是RT-DETR,在原本的RT-DETR中,使用ResNet作为骨干网络,本文使用最新的VMamba(VisualStateSpaceModel)替换ResNet作为RT-DETR的骨干网络。VMamba是一种全新的视觉框架,VMamba结合了CNNs和ViTs的优势,同时优化了计算效率,能够在保持全局感受野的情况下实......
  • Deformable DETR改进|爆改模型|涨点|在骨干网络和可变形编码器间加入YOLOv10的PSA和SC
    一、文本介绍本文修改的模型是Deformable-DETR,在骨干网络和可变形编码器之间加入YOLOv10的PSA和SCDown模块。其中PSA是YOLOv10提出的一种高效的自注意力模块,为了避免注意力带来的巨额开销,本文将PSA应用于可变形编码器输入的最高层级特征图。SCConv是一种空间和通道解耦的卷积......
  • Deformable-DETR改进|爆改模型|在可变形编解码器之间加入RT-DETR中的CCFM模块(附代码+
    一、文本介绍本文修改的模型是Deformable-DETR,修改的位置是在可变形编码器和可变形解码器之间,在可变形编码器和可变形解码器之间加入RT-DERT中的CCFM模块,CCFM模块的输入为可变形编码器的最高层级特征图以及backbone的输出。CCFM模块可以提升模型的特征融合能力。二、模型图......
  • RT-DETR改进策略:BackBone改进|Swin Transformer,最强主干改进RT-DETR
    摘要在深度学习与计算机视觉领域,SwinTransformer作为一种强大的视觉Transformer架构,以其卓越的特征提取能力和自注意力机制,正逐步引领着图像识别与检测技术的革新。近期,我们成功地将SwinTransformer引入并深度整合至RT-DERT(一种高效的实时目标检测与识别框架)中,通过替换其......
  • DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection
    AbstractWepresentDINO(DETRwithImproveddeNoisinganchOrboxes),astate-of-the-artend-to-endobjectdetector.DINOimprovesoverpreviousDETR-likemodelsinperformanceandefficiencybyusingacontrastivewayfordenoisingtraining,amixedqu......