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

【详细版】DETR系列之Deformable DETR(2021 ICLR)

论文标题Deformable DETR: Deformable Transformers for End-to-End Object Detection
论文作者Xizhou Zhu, Weijie Su, Lewei Lu, Bin Li, Xiaogang Wang, Jifeng Dai
发表日期2021年03月01日
GB引用> Xizhou Zhu, Weijie Su, Lewei Lu, et al. Deformable DETR: Deformable Transformers for End-to-End Object Detection.[J]. CoRR, 2020, abs/2010.04159.
>
DOIhttps://arxiv.org/abs/2010.04159

摘要

Deformable DETR是一种端到端的目标检测器,通过引入可变形注意力机制解决DETR在处理图像特征图时收敛慢和特征空间分辨率低的问题。该模型仅关注参考点周围的少量关键采样点,从而实现比DETR更好的性能(尤其是在小目标检测上),并且只需其十分之一的训练周期。实验表明,Deformable DETR在COCO数据集上的表现优于DETR,并且具有更快的收敛速度和更高的运行效率。

这篇论文的主要内容可以总结如下:

  1. 问题背景:DETR作为一种端到端的目标检测方法,虽然在消除手工设计组件方面取得了进展,但存在收敛速度慢小目标检测性能有限的问题。
  2. Deformable DETR提出:为了解决这些问题,论文提出了Deformable DETR,这是一种改进的Transformer模型,它通过引入可变形注意力模块来增强模型对关键特征点的聚焦能力。
  3. 核心创新
    • 可变形注意力模块:只关注参考点周围的一小部分关键采样点,减少计算量,加快收敛速度。
    • 多尺度可变形注意力:自然扩展到多尺度特征图,无需依赖FPN等结构。
  4. 方法细节
    • 编码器和解码器:使用多尺度可变形注意力模块替换DETR中的Transformer注意力模块。
    • 迭代边界框细化:在解码器中引入迭代机制,逐层细化预测的边界框。
    • 两阶段Deformable DETR:第一阶段生成区域提议,第二阶段进行细化。
  5. 实验验证
    • 在COCO数据集上进行了广泛的实验,证明了Deformable DETR在检测性能、特别是小目标检测上的优势。
    • 收敛速度显著提升,训练周期大大减少。
  6. 消融实验:对可变形注意力模块的不同设计选择进行了消融实验,展示了多尺度输入和采样点数量对性能的影响。
  7. 与最先进方法的比较:使用不同骨干网络的Deformable DETR与其他最先进目标检测方法进行了比较,展示了其竞争力。
  8. 可视化分析:通过可视化分析,展示了Deformable DETR在最终检测结果中关注图像的哪些部分,以及多尺度可变形注意力模块的学习情况。
  9. 结论:Deformable DETR作为一种高效且快速收敛的端到端目标检测方法,为探索更多有趣的端到端目标检测变体提供了新的可能性。
  10. 未来工作:论文最后提出了一些可能的研究方向,包括注意力机制的改进、多尺度特征融合策略、模型泛化能力等。 整体而言,这篇论文通过引入可变形注意力机制,有效地提升了目标检测的性能和效率,特别是在小目标和快速收敛方面取得了显著的进展。

研究问题

如何设计一种高效的注意力机制来解决基于Transformer的端到端目标检测器在处理图像特征图时遇到的收敛慢和特征空间分辨率低的问题?

研究方法

实验研究: 该研究通过提出Deformable DETR模型,并在COCO 2017数据集上进行了广泛的实验,验证了其有效性。研究中使用了预训练的ResNet-50作为主干网络,并且没有使用FPN。模型在不同的训练策略和参数设置下进行了测试,以评估其性能。

比较研究: 研究对比了Deformable DETR与DETR、Faster R-CNN + FPN等其他检测模型的性能。结果显示,Deformable DETR在检测小物体方面表现更优,且所需的训练轮数仅为DETR的十分之一。

混合方法研究: 研究结合了迭代边界框细化机制和两阶段检测框架,进一步提高了检测精度。通过引入这两种改进措施,Deformable DETR在COCO 2017验证集上的性能得到了显著提升。

研究思路与解决方案

解决方案: 通过引入变形注意力模块,Deformable DETR解决了传统DETR在处理图像特征图时遇到的收敛慢和高复杂度的问题。该模块只关注参考点周围的少量关键采样点,而不是整个空间位置,从而提高了处理效率和性能。

研究思路:

  1. 设计并实现变形注意力模块,用于替代DETR中处理特征图的传统Transformer注意力模块。
    • Deformable Attention Module(可变形注意力模块): - 受到可变形卷积的启发,Deformable DETR引入了可变形注意力模块,该模块只关注参考点周围的一小部分关键采样点,而不是像传统Transformer那样关注所有可能的空间位置。这减少了计算量,并加快了收敛速度。
  2. 探索多尺度变形注意力模块,允许不同尺度特征之间的信息交换。
    • Multi-scale Deformable Attention Module(多尺度可变形注意力模块): - 为了利用多尺度特征图,Deformable DETR扩展了可变形注意力模块,使其能够在不同尺度的特征图上进行采样,从而更有效地表示不同尺寸的物体。
    • Deformable Transformer Encoder and Decoder(可变形Transformer编码器和解码器): - 用提出的多尺度可变形注意力模块替换DETR中的Transformer注意力模块,以处理多尺度特征图。编码器和解码器的输入和输出都是具有相同分辨率的多尺度特征图。
    • Efficient and Fast Converging Detection System(高效且快速收敛的检测系统): - 通过替代DETR中的注意力模块,Deformable DETR建立了一个高效且快速收敛的检测系统,减少了训练周期,提高了小目标的检测性能。
  3. 引入迭代边界框细化机制以进一步提高检测性能。
    • Iterative Bounding Box Refinement(迭代边界框细化): - 受到光流估计中迭代细化的启发,Deformable DETR实现了一种简单的迭代边界框细化机制,每个解码器层都基于前一层的预测来细化边界框。
  4. 探索两阶段变形DETR模型,生成区域建议作为第一阶段,然后将这些区域建议送入解码器进行进一步细化。
    • Two-Stage Deformable DETR(两阶段Deformable DETR): - 借鉴两阶段目标检测器的思想,Deformable DETR的一个变体在第一阶段生成区域提议,然后在第二阶段对这些提议进行细化,形成一个两阶段的检测流程。
    • Implementation Details(实现细节): - 论文还提供了实现细节,包括网络结构、训练策略、损失函数选择等,确保了Deformable DETR的有效实现和性能提升。

可变形Transformer用于端到端目标检测

可变形注意力模块。应用 Transformer 注意力在图像特征图上的核心问题在于它会查看所有可能的空间位置。为了解决这个问题,我们提出了一种可变形注意力模块。受到可变形卷积(Dai等人,2017;Zhu等人,2019年b)的启发,可变形注意模块只关注参考点周围的一组关键采样点,而不考虑特征图的空间大小,如图2所示。通过为每个查询分配一小部分固定的键,可以缓解收敛性和特征空间分辨率的问题。

给定输入特征图 x ∈ R C × H × W x\in\mathbb{R}^{C\times H\times W} xRC×H×W,令 q q q索引具有内容特征 z q z_q zq和二维参考点 p q p_q pq的查询元素,则可变形注意力特征由计算得出:

DeformAttn ( z q , p q , x ) = ∑ m = 1 M W m [ ∑ k = 1 K A m q k ⋅ W m ′ x ( p q + Δ p m q k ) ] ,          ( 2 ) \text{DeformAttn}(\boldsymbol{z}_q,\boldsymbol{p}_q,\boldsymbol{x})=\sum_{m=1}^M\boldsymbol{W}_m\left[\sum_{k=1}^KA_{mqk}\cdot\boldsymbol{W}_m^{\prime}\boldsymbol{x}(\boldsymbol{p}_q+\Delta\boldsymbol{p}_{mqk})\right],\ \ \ \ \ \ \ \ \mathrm{(2)} DeformAttn(zq,pq,x)=m=1MWm[k=1KAmqkWmx(pq+Δpmqk)],        (2)

其中, m m m索引注意头, k k k索引采样键, K K K是总采样键数( K ≪ H W K\ll HW KHW)。 Δ p m q k \Delta\boldsymbol{p}_{mqk} Δpmqk A m q k A_{mqk} Amqk分别表示在第 m m m个注意头上第 k k k个采样点的采样偏移量和注意力权重。 A m q k A_{mqk} Amqk的标量注意力权重位于 [ 0 , 1 ] [0,1] [0,1]范围内,并通过归一化 ∑ k = 1

相关文章:

【详细版】DETR系列之Deformable DETR(2021 ICLR)

论文标题Deformable DETR: Deformable Transformers for End-to-End Object Detection论文作者Xizhou Zhu, Weijie Su, Lewei Lu, Bin Li, Xiaogang Wang, Jifeng Dai发表日期2021年03月01日GB引用> Xizhou Zhu, Weijie Su, Lewei Lu, et al. Deformable DETR: Deformable T…...

c++----函数重载

目录标题 为什么会有函数重载函数重载的概念函数重载的例子第一个:参数的类型不同第二个:参数的个数不同第三种:类型的顺序不同函数重载的奇异性重载函数的底层原理有关函数重载的一个问题 为什么会有函数重载 大家在学c语言的时候有没有发现…...

从云原生到 AI 原生,谈谈我经历的网关发展历程和趋势

作者:谢吉宝(唐三) 编者按: 云原生 API 网关系列教程即将推出,欢迎文末查看教程内容。本文整理自阿里云智能集团资深技术专家,云原生产品线中间件负责人谢吉宝(唐三) 在云栖大会的精…...

前端开发中,如何判断一个元素是否在可视区域中?

在前端开发中,判断一个元素是否在可视区域中是一个常见的需求,比如实现懒加载图片、无限滚动加载更多内容等功能。下面我将详细阐述这个问题。 一、判断元素是否在可视区域的方法 1. 使用 getBoundingClientRect 方法 getBoundingClientRect 方法返回…...

【干活分享】2025年可以免费问答的一些GPT网站-deepseek等免费gpt

2025年已经到来,大家也都陆续回归到忙碌的工作中。在新的一年里,如何更高效地完成工作任务,提升工作效率,是很多人关心的问题。今天,就为大家分享一些实用性很强的GPT网站,帮助大家在工作中事半功倍。 Dee…...

使用Redis实现业务信息缓存(缓存详解,缓存更新策略,缓存三大问题)

一、什么是缓存? 缓存是一种高效的数据存储方式,它通过将数据保存在内存中来提供快速的读写访问。这种机制特别适用于需要高速数据访问的应用场景,如网站、应用程序和服务。在处理大量数据和高并发请求时, 缓存能显著提高性能和用户体验。 Redis就是一款常用的缓存中间件。…...

ORB-SLAM3源码的学习:Atlas.cc②: Atlas:: CreateNewMap创建新地图

前言 简单总结一下地图是何时创建的: 构建slam系统时还没有地图就需要创建,当时间戳不对劲时影响数据的同步时需要创建,当跟踪的第一和第二阶段都为失败时都要分别创建,且满足一定要求的地图会保留作为非活跃地图。 1.创建新地…...

多头自注意力中的多头作用及相关思考

文章目录 1. num_heads2. pytorch源码演算 1. num_heads 将矩阵的最后一维度进行按照num_heads的方式进行切割矩阵,具体表示如下: 2. pytorch源码演算 pytorch 代码 import torch import torch.nn as nn import torch.nn.functional as Ftorch.set…...

常用的python库-安装与使用

常用的python库函数 yield关键字openslide库openslide库的安装-linuxopenslide的使用openslide对象的常用属性 cv2库numpy库ASAP库-multiresolutionimageinterface库ASAP库的安装ASAP库的使用 concurrent.futures.ThreadPoolExecutorxml.etree.ElementTree库skimage库PIL.Image…...

对接DeepSeek

其实,整个对接过程很简单,就四步,获取key,找到接口文档,接口测试,代码对接。 获取 KEY https://platform.deepseek.com/transactions 直接付款就是了(现在官网暂停充值2025年2月7日&#xff0…...

DevOps工具链概述

1. DevOps工具链概述 1.1 DevOps工具链的定义 DevOps工具链是支持DevOps实践的一系列工具的集合,这些工具覆盖了软件开发的整个生命周期,包括需求管理、开发、测试、部署和运维等各个环节。它旨在通过工具的集成和自动化,打破开发与运维之间…...

ChatGPT提问技巧:行业热门应用提示词案例-文案写作

ChatGPT 作为强大的 AI 语言模型,已经成为文案写作的得力助手。但要让它写出真正符合你需求的文案,关键在于如何与它“沟通”,也就是如何设计提示词(Prompt)。以下是一些实用的提示词案例,帮助你解锁 ChatG…...

分享如何通过Mq、Redis、XxlJob实现算法任务的异步解耦调度

一、背景 1.1 产品简介 基于大模型塔斯,整合传统的多项能力(NLP、OCR、CV等),构建以场景为中心的新型智能文档平台。通过文档审阅,实现结构化、半结构化和非结构化文档的信息获取、处理及审核,同时基于大…...

力扣-栈与队列-239 滑动窗口的最大值

双指针思路 每移动一次&#xff0c;可以比较上一次窗口的最大值和被移除的值&#xff0c;如果被移除的值小于最大值&#xff0c;则说明最大值仍在新的区间&#xff0c;但是最后超时了 双指针超时代码 class Solution { public:vector<int> maxSlidingWindow(vector<…...

在 MySQL 中,通过存储过程结合条件判断来实现添加表字段时,如果字段已存在则不再重复添加

-- 创建存储过程 DELIMITER $$ CREATE PROCEDURE add_column(IN db_name VARCHAR(255),IN table_name VARCHAR(255),IN column_name VARCHAR(255),IN column_definition VARCHAR(255),IN column_comment VARCHAR(255) ) BEGINDECLARE column_exists INT;-- 检查字段是否存在SEL…...

8.flask+websocket

http是短连接&#xff0c;无状态的。 websocket是长连接&#xff0c;有状态的。 flask中使用websocket from flask import Flask, request import asyncio import json import time import websockets from threading import Thread from urllib.parse import urlparse, pars…...

【大模型实战】使用Ollama+Chatbox实现本地Deepseek R1模型搭建

下载安装Ollama Ollama官方链接:https://ollama.com/,打开链接后就可以看到大大的下载按钮,如下图: 我选择用Win的安装。将Ollama的安装包下载到本地,如果下载慢可以复制链接到迅雷里面,提高下载速度,如下图: 双击之后,就可以开始安装了,如下图: 默认安装到C盘,…...

VMware 虚拟机 ubuntu 20.04 扩容工作硬盘

一、关闭虚拟机 关闭虚拟机参考下图&#xff0c;在vmware 调整磁盘容量 二、借助工具fdisk testubuntu ~ $ df -h Filesystem Size Used Avail Use% Mounted on udev 1.9G 0 1.9G 0% /dev tmpfs 388M 3.1M 385M 1% /run /dev/sda5 …...

ZooKeeper 和 Dubbo 的关系:技术体系与实际应用

引言 在现代微服务架构中&#xff0c;服务治理和协调是至关重要的环节。ZooKeeper 和 Dubbo 是两个在分布式系统中常用的技术工具&#xff0c;它们之间有着紧密的联系。本文将详细探讨 ZooKeeper 和 Dubbo 的关系&#xff0c;从基础概念、技术架构、具体实现到实际应用场景&am…...

【LeetCode 热题100】74:搜索二维矩阵(二分、线性两种方式 详细解析)(Go 语言实现)

&#x1f680; 力扣热题 74&#xff1a;搜索二维矩阵&#xff08;详细解析&#xff09; &#x1f4cc; 题目描述 力扣 74. 搜索二维矩阵 给你一个满足下述两条属性的 m x n 整数矩阵 matrix &#xff1a; 每行中的整数从左到右按非递减顺序排列。每行的第一个整数大于前一行的…...

《Peephole LSTM:窥视孔连接如何开启性能提升之门》

在深度学习的领域中&#xff0c;长短期记忆网络&#xff08;LSTM&#xff09;以其出色的序列数据处理能力而备受瞩目。而Peephole LSTM作为LSTM的一种重要变体&#xff0c;通过引入窥视孔连接&#xff0c;进一步提升了模型的性能。那么&#xff0c;窥视孔连接究竟是如何发挥作用…...

HTML之JavaScript变量和数据类型

HTML之JavaScript变量和数据类型 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</titl…...

(少儿编程)关于讲解C++函数(认识,了解)的思考与总结

前言&#xff1a; 在少儿编程中&#xff0c;讲解函数的概念时&#xff0c;需要将复杂的概念简化&#xff0c;并通过生动有趣的例子和互动方式来帮助孩子理解。以下是一个适合少儿的函数讲解思路和示例&#xff1a; 用生活中的例子引入函数的概念&#xff1a; 目标&#xff1a…...

【漫话机器学习系列】082.岭回归(或脊回归)中的α值(alpha in ridge regression)

岭回归&#xff08;Ridge Regression&#xff09;中的 α 值 岭回归&#xff08;Ridge Regression&#xff09;是一种 带有 L2​ 正则化 的线性回归方法&#xff0c;用于处理多重共线性&#xff08;Multicollinearity&#xff09;问题&#xff0c;提高模型的泛化能力。其中&am…...

Node.js怎么调用到打包的python文件呢

在 Node.js 中调用打包后的 Python 可执行文件&#xff08;如 PyInstaller 生成的 .exe 或二进制文件&#xff09;&#xff0c;可以通过以下步骤实现&#xff1a; 一、Python 打包准备 假设已有打包好的 Python 文件 your_script.exe&#xff08;以 Windows 为例&#xff09;&…...

9 Pydantic复杂数据结构的处理

在构建现代 Web 应用时&#xff0c;我们往往需要处理复杂的输入和输出数据结构。例如&#xff0c;响应数据可能包含嵌套字典、列表、元组&#xff0c;甚至是多个嵌套对象。Pydantic 是一个强大的数据验证和序列化库&#xff0c;可以帮助我们轻松地处理这些复杂的数据结构&#…...

C++ decltype 规则推导

C decltype 规则推导 文章目录 C decltype 规则推导**1. 基本规则****(1) 如果 decltype 的参数是变量名&#xff08;无括号的标识符&#xff09;****(2) 如果 decltype 的参数是表达式&#xff08;带括号或操作符&#xff09;** **2. 与 auto 的区别****3. 特殊场景****(1) 函…...

Rust 测试组织指南:单元测试与集成测试

一、为什么要同时使用单元测试与集成测试 单元测试&#xff1a;更为精细、聚焦某一逻辑单元&#xff1b;可以调用到私有函数&#xff0c;快速定位错误根源。集成测试&#xff1a;作为“外部代码”来使用库的公开接口&#xff0c;测试多个模块间的交互&#xff0c;确保整体功能…...

Day62_补20250210_图论part6_108冗余连接|109.冗余连接II

Day62_20250210_图论part6_108冗余连接|109.冗余连接II 108冗余连接 【把题意转化为并查集问题】 题目 有一个图&#xff0c;它是一棵树&#xff0c;他是拥有 n 个节点&#xff08;节点编号1到n&#xff09;和 n - 1 条边的连通无环无向图&#xff08;其实就是一个线形图&am…...

kafka消费端之消费者协调器和组协调器

文章目录 概述回顾历史老版本获取消费者变更老版本存在的问题 消费者协调器和组协调器新版如何解决老版本问题再均衡过程**第一阶段CFIND COORDINATOR****第二阶段&#xff08;JOINGROUP&#xff09;**选举消费组的lcader选举分区分配策略 第三阶段&#xff08;SYNC GROUP&…...