DETR Doesn’t Need Multi-Scale or Locality Design

论文名称:PlainDetr
发表时间:ICCV2023
开源代码
作者及组织: Yutong Lin,Yuhui Yuan等,来自西安交大,微软亚洲研究院。

前言

 自Detr以来,后续paper的改进的方向:主要是将归纳偏置重新又引入进Detr结构,比如DINO,ConditionDetr,HybridMatch等。但这与Detr原始简洁的结构设计背道而驰。于是本篇工作旨在保持Detr简洁结构设计上,提高其精度。
  关于DETR相关内容可参考:
   1)Detr
   2)DeformableDetr
   3)ConditionalDetr
   4)DAB-DETR
   5)DN-DETR
   6)DINO

1、方法

 文中首先设计了一个强的Detr的Baseline,在coco上12epoch的mAP=37.2。详细的配置参数如下图:表格中的小trick均来自其余论文。具体是啥就不详细介绍了,感兴趣可参考前言中文献 😏。

在这里插入图片描述

1.1.MIM预训练Backbone

  在目标检测中,MIM已经证实比全监督预训练的性能更好 ,消融实验表明:mim-swin-s比sup-swin-s的mAP从37.2提高到44.6。
 另外,MM中每层特征图中其实都蕴含了归纳偏置,故可以只用一层layer即可,无需FPN或者MultiHeadAttn。如下图,作者采用了©的结构,且实验表明,并没有掉点。
在这里插入图片描述
在这里插入图片描述

1.2.Box-to-Pixel Relative Position Bias

  原始Detr中cross-attention可表示为:
O = S o f t m a x ( Q K T ) V + X \begin{equation} O = Softmax(QK^ {\mathrm{T}} )V+X \end{equation} O=Softmax(QKT)V+X
  本文提出的BoxRPE可表示为:
O = S o f t m a x ( Q K T + B ) V + X \begin{equation} O = Softmax(QK^ {\mathrm{T}} +B)V+X \end{equation} O=Softmax(QKT+B)V+X
  其中,上式中的B的计算流程如下图所示:首先输入是一张图像及pred_box,两个五角星的位置分别表示pred_box的左上角和右下角角点。然后分别从X轴和Y轴对这两个角点进行编码:以 $\delta(x_1) $ 为0点,依次向左向右编码W个相对坐标[-4,7];然后经过MLP并广播得到B。
在这里插入图片描述

1.3. Bounding Box Regression re-param

  在Detr回归中,xywh均进行了归一化,但没有区分大小物体的损失权重:被大物体的损失主导。于是,作者重新编码了回归的范式:

在这里插入图片描述

 其中 l 表示第几层layer, t* 表示模型的gt值 ,然后跟预测框进行loss计算即可。

2、实验

 上述三个trick的消融实验如下图:
在这里插入图片描述

  跟其余方法对比实验:
在这里插入图片描述

思考

  相较于DeformableDetr,省去了MultiHeadAttn这个算子,且只用一层layer,结构变得简洁 。但是在源码中,作者在生成候选框时,其实还是采用了四层,作者说只用一层的话,会掉一个点左右,还需实测一下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/743158.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

云计算 3月12号 (PEX)

什么是PXE? PXE,全名Pre-boot Execution Environment,预启动执行环境; 通过网络接口启动计算机,不依赖本地存储设备(如硬盘)或本地已安装的操作系统; 由Intel和Systemsoft公司于199…

JVM简单调优

jdk自带了许多对jvm进行监控的程序,例如JVisualVM、jstack等等。 现在进行一些简单的对jvm的监控。 我们可以使用JVisualVM来对堆区进行图形化监控。 我们可以在命令行输入jvisualvm,然后就进入了jvisualvm的图形化界面。 然后我们随便执行一个主方法…

【LLMs+小羊驼】23.03.Vicuna: 类似GPT4的开源聊天机器人( 90%* ChatGPT Quality)

官方在线demo: https://chat.lmsys.org/ Github项目代码:https://github.com/lm-sys/FastChat 官方博客:Vicuna: An Open-Source Chatbot Impressing GPT-4 with 90% ChatGPT Quality 模型下载: https://huggingface.co/lmsys/vicuna-7b-v1.5 | 所有的模…

STM32输入捕获频率和占空比proteus仿真失败

这次用了两天的时间来验证这个功能,虽然实验没有成功,但是也要记录一下,后面能解决了,回来再写上解决的办法: 这个程序最后的实验结果是读取到的CCR1和CCR2的值都是0,所以没有办法算出来频率和占空比。 还…

如何创建Gitflow图表

如何创建Gitflow图表 drawio是一款强大的图表绘制软件,支持在线云端版本以及windows, macOS, linux安装版。 如果想在线直接使用,则直接输入网址drawon.cn或者使用drawon(桌案), drawon.cn内部完整的集成了drawio的所有功能,并实现了云端存储…

排序算法之快速排序算法介绍

目录 快速排序介绍 时间复杂度和稳定性 代码实现 C语言实现 c实现 java实现 快速排序介绍 快速排序(Quick Sort)使用分治法策略。 它的基本思想是:选择一个基准数,通过一趟排序将要排序的数据分割成独立的两部分;其中一部分的所有数据…

C++Qt学习——添加资源文件

目录 1、创建好了文件之后,在左边空白处按下CtrlN,创建Qt 以及Qt Resource File 2、写入名称,点击下一步 3、可以发现已经创建好啦。 4、点击Add Prefix 5、写上前缀,最好加上斜杠 6、选择提前放好的图片或者icon 7、发…

Python异步编程探究:深入理解asyncio的使用和原理【第130篇—asyncio】

Python异步编程探究:深入理解asyncio的使用和原理 随着计算机应用程序的复杂性不断增加,对于高效处理I/O密集型任务的需求也越来越迫切。在Python中,asyncio模块提供了一种强大的异步编程方式,使得开发者能够轻松地处理并发任务&…

Vulnhub - DC-1

希望和各位大佬一起学习,如果文章内容有错请多多指正,谢谢! 个人博客链接:CH4SER的个人BLOG – Welcome To Ch4sers Blog DC-1 靶机下载地址:DC: 1 ~ VulnHub 0x01 信息收集 Nmap扫描目标主机,发现开…

面试题 --- jdbc执行流程、MyBatis执行流程、MyBatis拦截器配置流程

jdbc执行流程 1. 注册驱动 2. 创建数据库操作对象 3. 执行sql语句 4 .处理操作结果 5 .关闭连接释放资源 MyBatis 执行流程 Executor执行器、MappedStatement 对象、 StatementHandler 语句处理器 关系可以用以下步骤概括 用户通过 SqlSession 调用一个方法,Sq…

双链表(上)

1.结构 1.带头双向循环链表 注意:这里的“带头”跟前面我们说的“头节点”是两个概念,实际前面的在单链表阶段称呼不严 谨,但是为了同学们更好的理解就直接称为单链表的头节点。 带头链表里的头节点,实际为“哨兵位”&#xff0c…

【ARM】MDK在programming algorithm界面添加FLM

【更多软件使用问题请点击亿道电子官方网站查询】 1、 文档目标 解决在programming algorithm界面中无法添加想要的Flash编程算法的问题 2、 问题场景 在对于Debug进行Flash Download进行配置的时候,在programming algorithm界面中有对应的Flash编程算法。可以通过…

数据结构 之 树

目录 1. 定义: 2. 概念(重要): 3. 树的表示形式: 4. 树的应用: 1. 定义: 树是一种非线性的数据结构,,它是由n(n>0)个有限结点组成一个具有…

LeetCode——贪心算法(Java)

贪心算法 简介[简单] 455. 分发饼干[中等] 376. 摆动序列[中等] 53. 最大子数组和[中等] 122. 买卖股票的最佳时机 II[中等] 55. 跳跃游戏 简介 记录一下自己刷题的历程以及代码。写题过程中参考了 代码随想录的刷题路线。会附上一些个人的思路,如果有错误&#xf…

解决JVM进程被系统杀掉问题

背景 服务A在测试环境,隔几个小时接口就无法访问。登录机器查看,发现进程已经没了。大致猜想是进程使用的内存或CPU资源使用太多,导致被系统kill。 问题定位 使用dmesg命令查看进程被kill的详情。 > dmesg --time-format iso2024-03-0…

EasyCode 插件的具体使用

前言 EasyCode 是基于IntelliJ IDEA Ultimate版开发的一个代码生成插件,主要通过自定义模板(基于velocity)来生成各种你想要的代码。通常用于生成Entity、Dao、Service、Controller。如果你动手能力强还可以用于生成HTML、JS、PHP等代码。理…

iOS 判断触摸位置是否在图片的透明区域

装扮功能系列: Swift 使用UIScrollerView 实现装扮功能(基础)Swift 使用UIScrollerView 实现装扮功能(拓展)iOS 判断触摸位置是否在图片的透明区域 背景 在装扮功能中,一般都是长按使道具进入编辑状态&…

Docker拉取镜像存储不足

在使用Docker时,我们经常遇到一个问题,就是拉取镜像时提示存储空间不足。这是因为Docker在拉取镜像时需要将镜像文件下载到本地存储中,而有时本地存储空间不足以容纳完整的镜像文件。 本文将介绍一些解决这个问题的方法,并提供相…

Java学习笔记(11)

面向对象进阶 Static 静态变量 所有对象一起共享,就用static修饰 不属于对象,属于类的 可以用 类名.静态变量 “”;赋值 但是 对象.静态变量也可以访问到内容 Static内存图 Student这个类的字节码文件加载到方法区,并在内…

“人工智能+”成国策,天翼云如何打造大模型时代的驱动力样板?

文 | 智能相对论 作者 | 叶远风 两会政府工作报告中明确指出要制定支持数字经济高质量发展政策,开展“人工智能”行动,这意味着,“人工智能”已经成为国策。 在这种大背景下,大模型的重要性无疑被抬到了新的高度。 此时&#…