【vision transformer】DETR原理及代码详解(一)

这篇具有很好参考价值的文章主要介绍了【vision transformer】DETR原理及代码详解(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

DETR: End-to-End Object Detection with Transformers

 

论文: https://arxiv.org/pdf/2005.12872.pdf

代码: https://github.com/facebookresearch/detr (pytorch)

https://github.com/BR-IDL/PaddleViT/tree/develop/object_detection/DETR(PaddlePaddle)

1. DETR 概述

DETR 是vision transformer 中目标检测的开山之作,是 Facebook 团队于 2020 年提出的基于 Transformer 的端到端目标检测,克服了传统目标检测的anchore机制和非极大值抑制 NMS ,大大简化了目标检测的 pipeline。

相比faster rcnn等做法,detr最大特点是将目标检测问题转化为无序集合预测问题。faster rcnn设置一大堆anchor,然后基于anchor进行分类和回归其实属于代理做法。目标检测任务就是输出无序集合,而faster rcnn等算法通过各种操作,并结合复杂后处理最终才得到无序集合,而detr则相对直接。

【vision transformer】DETR原理及代码详解(一)

图1 DETR 的主要部件

【vision transformer】DETR原理及代码详解(一)

图2 DETR流程

给定一张图片,经CNN backbone 提取深度feature,然后转为特征序列输入到transformer的encode-decode,结果直接输出指定长度为N的无序的预测集合,集合中每个元素包含预测物体的cls类别和bbox坐标。

CNN输出的结果是一个 H*W*C的tensor,代表了图片提取出的feature map。将feature map变成( H ∗ W ) ∗ C的二维矩阵放到transformer中。

模型输出的结果是固定的,也就是说最多检测一张图片中N个目标。其中N表示整个数据集中图片上最多物体的数目,因为整个训练和测试都Batch进行,如果不设置最大输出集合数,无法进行batch训练;如果图片中物体不够N个,那么就采用no object填充,表示该元素是背景。

set prediction

目标检测的新范式,输入一副图像,网络的输出就是最终的预测的集合,也不需要任何后处理能够直接得到预测的集合。对于每一个pred,找到对应的GT,然后每个(Pred,GT)求loss,再进行训练。

bipartite matching loss :

假设我们现在有两个sets,左边的sets是模型预测得到的N 个元素,每个元素里有一个bbox和对这个bbox预测的类别的概率分布,预测的类别可以是空,用ϕ 来表示;右边的sets是我们的ground truth,每个元素里有一个标签的类别和对应的bbox,如果标签的数量不足N 则用ϕ 来补充,,ϕ 可以认为是background。

两边sets的元素数量都是N ,所以我们是可以做一个配对的操作,让左边的元素都能找到右边的一个配对元素,每个左边元素找到的右边元素都是不同的,也就是一一对应。这样的组合可以有N ! 种,所有组合记作σ N 。这个N 即是模型可以预测的最大数量。

【vision transformer】DETR原理及代码详解(一)

我们的目的是在这所有的N ! 种匹配中,找到使得最小的那个组合,记作。

在分析loss计算前,需要先明确N个无序集合的target构建方式。detr输出是包括batchx100个无序集合,每个集合包括类别和坐标信息,其输出集合包括两个分支:分类分支shape=(b,100,92),bbox坐标分支shape=(b,100,4),对应的target也是包括分类target和bbox坐标target,如果不够100,则采用背景填充,计算loss时候bbox分支仅仅计算有物体位置,背景集合忽略。

问题:输出的bx100个检测结果是无序的,如何和gt bbox计算loss?

detr中利用匈牙利算法(双边匹配算法)先进行最优一对一匹配得到匹配索引,然后对bx100个结果进行重排就和gt bbox对应上,从而计算loss。

【vision transformer】DETR原理及代码详解(一)

优化对象是σ,其是长度为N 的list,σ(i)=i,表示无序gt bbox 集合的哪个元素和输出预测集合中的第i个匹配。即寻找最优匹配,因为在最佳匹配情况下l_match和最小即loss最小。

该函数核心是需要输入A集合和B集合两两元素之间的连接权重,基于该重要性进行内部最优匹配,连接权重大的优先匹配。

  2. DETR详细框架及流程

【vision transformer】DETR原理及代码详解(一)

图3 DETR 整体框架

输入:

【vision transformer】DETR原理及代码详解(一)

  图5 DETR 的输入

图像经backbone后的feature,flatten或reshape 成visual tokens,此处的CNN相当于vision transformer中 的patch embedding。

Encode:

【vision transformer】DETR原理及代码详解(一)

【vision transformer】DETR原理及代码详解(一)

 图6  DETR 的encode 部分

 类似VIT 的多层encoder堆叠,输入Visual Token+ position embedding(其中v值没有加position embedding,而且spatial position encode 在每一次的encode 中都参与计算,为了不断强化patch 的位置),输出为与Visual Token维度一致的特征。

Decode:

【vision transformer】DETR原理及代码详解(一)

【vision transformer】DETR原理及代码详解(一)

   图6  DETR 的decode 部分

 Decode 的目的是为了输出SeqtoSeq的方式,与encode的区别:输入除了encode output,还加入了object queries,类似于mask,重新定义一个可学习的参数或者embedding,不再用encode的输入visual token。处理过程加入了multi_head decode_encode attention,encode输出加入V,K,object queries 加入查询Q值。

object queries类似anchor(非几何上的),是可学习的特征向量。

Encode-decode:

【vision transformer】DETR原理及代码详解(一)

Decode 的注意力机制中加入了encode的输出。 

 DETR 的输出:

【vision transformer】DETR原理及代码详解(一)

 MLP即FC层,bbox四个坐标,output layer channel=4,output class = num_classes+1。

logist:(batch_size,num_queries,num_classes+1)

pred_boxes:(batch_size,num_queries,4)

 DETR的整体流程:

【vision transformer】DETR原理及代码详解(一)

position encoding 可采用可学习的方式,也可采用人为设定的(sin or cos),其持续性的加入层运算。文章来源地址https://www.toymoban.com/news/detail-478523.html

到了这里,关于【vision transformer】DETR原理及代码详解(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • DEFORMABLE DETR: DEFORMABLE TRANSFORMERS FOR END-TO-END OBJECT DETECTION 论文精读笔记

    DEFORMABLE DETR: DEFORMABLE TRANSFORMERS FOR END-TO-END OBJECT DETECTION 参考:AI-杂货铺-Transformer跨界CV又一佳作!Deformable DETR:超强的小目标检测算法! 摘要 摘要部分,作者主要说明了如下几点: 为了解决DETR中使用Transformer架构在处理图像特征图时的局限性而导致的收敛速度慢,特征空间

    2024年02月10日
    浏览(28)
  • 【Deformable DETR 论文+源码解读】Deformable Transformers for End-to-End Object Detection

    上一篇讲完了DETR相关原理和源码,打算继续再学习DETR相关改进。这次要解读的是21年发表的一篇论文: ICLR 2021:Deformable DETR: Deformable Transformers for End-to-End Object Detection 。 先感谢这位知乎大佬,讲的太细了: Deformable DETR: 基于稀疏空间采样的注意力机制,让DCN与Transformer一起玩

    2023年04月16日
    浏览(36)
  • DINO:DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection

    论文名称: DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection 发表时间:ICLR2023 作者及组织:Shilong Liu, Feng Li等,来自IDEA、港中文、清华。  该篇论文在DN-DETR基础上,额外引进3个trick进一步增强DETR的性能:在12epoch下coco上达到了49.0map。本文将分别介绍这3个trick,

    2024年01月18日
    浏览(26)
  • End-to-End Object Detection with Transformers(论文解析)

    我们提出了一种将目标检测视为直接集合预测问题的新方法。我们的方法简化了检测流程,有效地消除了许多手工设计的组件的需求,如显式编码我们关于任务的先验知识的非极大值抑制过程或锚点生成。新框架的主要要素,称为DEtection TRansformer或DETR,包括一个基于集合的全

    2024年02月09日
    浏览(34)
  • End-to-end 3D Human Pose Estimation with Transformer

    基于Transformer的端到端三维人体姿态估计 基于Transformer的架构已经成为自然语言处理中的常见选择,并且现在正在计算机视觉任务中实现SOTA性能,例如图像分类,对象检测。然而,卷积方法在3D人体姿态估计的许多方法中仍然保持SOTA性能。受视觉变换器最近发展的启发,我们

    2024年02月08日
    浏览(51)
  • 图像 跟踪 - MOTR: End-to-End Multiple-Object Tracking with Transformer (ECCV 2022)

    声明:此翻译仅为个人学习记录 文章信息 标题: MOTR: End-to-End Multiple-Object Tracking with Transformer (ECCV 2022) 作者: Fangao Zeng*, Bin Dong*, Yuang Zhang*, Tiancai Wang, Xiangyu Zhang, and Yichen Wei (*Equal contribution, **Corresponding author) 文章链接:https://arxiv.org/pdf/2105.03247.pdf 文章代码:https://github.co

    2024年02月13日
    浏览(33)
  • CV攻城狮入门VIT(vision transformer)之旅——VIT原理详解篇

    🍊作者简介:秃头小苏,致力于用最通俗的语言描述问题 🍊往期回顾:CV攻城狮入门VIT(vision transformer)之旅——近年超火的Transformer你再不了解就晚了! 🍊近期目标:写好专栏的每一篇文章 🍊支持小苏:点赞👍🏼、收藏⭐、留言📩   ​  在上一篇,我已经详细为大家

    2024年02月02日
    浏览(44)
  • Transformer | DETR目标检测中的位置编码position_encoding代码详解

    本文主要描述的是DETR论文中的position_encoding,详细DETR论文解析可参考  论文篇 | 2020-Facebook-DETR :利用Transformers端到端的目标检测=>翻译及理解(持续更新中)_夏天|여름이다的博客-CSDN博客_dert目标检测 Transformer不像RNN可以根据位置顺序接受和处理单词,所以为了得到词的

    2023年04月08日
    浏览(30)
  • [论文阅读&代码]DehazeNet: An End-to-End System for Single Image Haze Removal

    现有的单图像去雾方法使用很多约束和先验来获得去雾结果,去雾的关键是根据输入的雾图获得得到介质传输图(medium transmission map) 这篇文章提出了一种端到端的可训练的去雾系统—Dehaze Net,用于估计介质传输图 Dehaze Net中,输入为雾图,输出为介质传输图,随后通过大气散

    2024年02月08日
    浏览(30)
  • END-TO-END OPTIMIZED IMAGE COMPRESSION论文阅读

    END-TO-END OPTIMIZED IMAGE COMPRESSION 单词 image compression 图像压缩 quantizer 量化器 rate–distortion performance率失真性能 a variant of 什么什么的一个变体 construct 构造 entropy 熵 discrete value 离散值 摘要: We describe an image compression method, consisting of a nonlinear analysis transformation, a uniform quantizer,

    2024年02月12日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包