当前位置: 首页 > news >正文

Group DETR

论文:Group DETR: Fast DETR Training with Groupwise One-to-Many Assignment

1. Motivation

在目标检测中,lable assignment 是模型训练中非常关键且必要的步骤。所谓 label assignment,就是通过决定将 GT 指派给哪个 anchor(anchor box 或 anchor point 或 object query)来预测,来定义或 anchor 的正负性:

  • positive anchor:需要负责预测 GT 的 anchor;
  • negative anchor:不需要负责预测 GT 的 anchor 。

根据将一个 GT 交给多少个 anchor 来预测,可以将现有的 lable assignment 分为以下两类:

  • one-to-many assignment:一个 GT 由多个 anchor 来预测。由于多个 anchor 同时负责预测同一个 GT,在测试时将产生重复预测。这时需要使用NMS来消除重复的预测框。
  • one-to-one assignment:一个 GT 只由一个 anchor 来预测。这种方法是DETR系列算法所使用的 label assignment 方法,好处是在测试时不会产生重复预测,也就不需要使用NMS。

作者通过进行多个实验,在DETR系列算法中,不同的label assignment对模型性能的影响。如下图所示,横轴表示object query的数量。 可以得出以下结论:

  • 在one-to-one assignment中,不管是否使用NMS,单独增加object query的数量对模型性能的提升作用很小。
  • 相比于one-to-one assignment的方法,在使用NMS的情况下,one-to-many assignment对模型性能的提升效果很明显。
  • 在one-to-many assignment中,NMS是不可或缺的。
    在这里插入图片描述

上述实验表明,使用多个anchor来同时预测一个GT可以提升模型性能,因为网络在学习过程中,会隐式地比较这些预测同一个GT的anchor的差异。而使用一个anchor来预测一个GT的好处是不会产生重复预测。对此,作者提出Group-wise One-to-Many assignment,该方法结合了one-to-one assignment和one-to-many assignment的优点,在不增加模型参数量和计算量的前提下,大大提升了模型的检测性能。

2. 方法

Group DETR提出的Group-wise One-to-Many assignment的原理如下:

  1. 将所有的object queries分为 K K K组;
  2. 使用同一个decoder self-attention对各个组的object queries进行计算;
  3. 在每个组中进行与DETR一样的one-to-one assignment。在每个组中,一个GT由一个object query负责预测,因此在 K K K个组中,一个GT由 K K K个object queries负责预测。

在这里插入图片描述
在前向推断时,只使用第一组object queries。作者通过实验表明,在前向推断时,使用不同组别的object queries的效果基本一样。如下图所示,不同组别的object queries的分布几乎一样。
在这里插入图片描述

3. 实验结果

在这里插入图片描述
在这里插入图片描述

相关文章:

  • 设计模式 工厂方法模式
  • 自动控制原理7.3---z变换理论
  • 基于ISO14229协议的安全访问系列_1
  • 自动控制原理7.4---离散系统的数学模型
  • 【ELFK】之zookeeper
  • ALTERA FPGA IPCORE核之FIFO详细教程
  • 【ELK】日志分析系统概述及部署
  • MyBatis一对多查询,MyBatis中resultMap的使用,MyBatis中collection注意事项,MyBatis的级联搜索
  • STC15单片机-RS-485通信
  • 【JAVA-1】JDK、JRE安装及卸载,有手就会!
  • Python 操作MySql数据库(封装、优雅)
  • 《蓝海战略》让你竞争中获得优势
  • RequestMapping注解
  • 实战Spring Boot集成quartz任务调度框架
  • 神经网络深度学习(五)初始化
  • [Vue CLI 3] 配置解析之 css.extract
  • angular学习第一篇-----环境搭建
  • CODING 缺陷管理功能正式开始公测
  • HTTP 简介
  • javascript 哈希表
  • Laravel5.4 Queues队列学习
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • maya建模与骨骼动画快速实现人工鱼
  • overflow: hidden IE7无效
  • vue.js框架原理浅析
  • Vue2.x学习三:事件处理生命周期钩子
  • webpack入门学习手记(二)
  • 模型微调
  • 前端存储 - localStorage
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 深入浏览器事件循环的本质
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 使用iElevator.js模拟segmentfault的文章标题导航
  • 正则表达式
  • Nginx实现动静分离
  • 整理一些计算机基础知识!
  • #{} 和 ${}区别
  • (2)STM32单片机上位机
  • (9)STL算法之逆转旋转
  • (done) 两个矩阵 “相似” 是什么意思?
  • (ZT)一个美国文科博士的YardLife
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (二)斐波那契Fabonacci函数
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (力扣)循环队列的实现与详解(C语言)
  • (转)jdk与jre的区别
  • (转)mysql使用Navicat 导出和导入数据库
  • (最优化理论与方法)第二章最优化所需基础知识-第三节:重要凸集举例
  • ****** 二 ******、软设笔记【数据结构】-KMP算法、树、二叉树
  • ***通过什么方式***网吧
  • .“空心村”成因分析及解决对策122344
  • .bat批处理出现中文乱码的情况
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性