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

DEFORMABLE DETR

DEFORMABLE DETR: DEFORMABLE TRANSFORMERS FOR END-TO-END OBJECT DETECTION

参考:AI-杂货铺-Transformer跨界CV又一佳作!Deformable DETR:超强的小目标检测算法!

摘要

摘要部分,作者主要说明了如下几点:

  1. 为了解决DETR中使用Transformer架构在处理图像特征图时的局限性而导致的收敛速度慢,特征空间分辨率有限的问题;
  2. Deformable DETR只关注和参考周围的一小部分关键采样点(例如对一个输入到encoder中的图片拉直后的向量,每个像素点只关注其周围的几个像素点,互相计算相似度即可,不需要和所有的像素点计算相似度),并获得了更好的效果(尤其是在小目标任务当中),收敛时间相较于DETR减少了近10倍;

延伸:YOLO检测小目标效果不好是因为网络越深检测小目标的效果越不好,同时YOLO中图片的输入尺寸较小

介绍

DETR存在的问题

原始的DETR需要更多的Epochs数量才收敛;DETR在检测小物体时性能不好,导致检测小物体性能不好的原因是因为Transformer架构在初始化时,其注意力模块对特征图中所有像素施加了几乎一致的注意力权重(即在初始化时,注意力机制没有被唤醒,特征图中的一些很有意义的像素点没有被注意力机制关注到),因此训练epochs数量很多(训练Epochs数量增加之后,就会激活注意力机制对图像特征的关注)。

同时,作者指出Transformer中的自注意力机制是针对于图像像素数量的二次计算,这在处理高分辨率特征图时会具有非常高的计算和记忆复杂性。(Transformer中计算复杂度与图像的宽度W和高度H成正相关,例如:一张图片为100x100,那么拉直之后输入到encoder的时候为10000,然后每个像素点与自己和其他像素点计算相似度,那么计算量就是10000x10000,就是十亿,计算代价太高,而且没有共享参数)这就导致原始的DETR是耗费大量资源的,同时还不能处理高分辨率图片。

Deformable Convolution(可变形卷积)

可变形卷积是一种处理稀疏空间位置的强大而有效的机制,这种机制可以很好地解决上述问题,但是可变形卷积缺少元素之间的关系建模机制,而关系建模(全局建模能力)是DETR成功的关键所在。

Deformable DETR中,可变形卷积思想的作用就是将原来的注意力机制中,每个像素点和周围的像素点进行相似度计算转为,每个像素点注意力进行偏移(使得每个像素点注意力在一些重要的地方),但是这样带来一个问题就是可变性卷积无法关注注意力集中的地方相似的特征,即点与点之间的关系建模等(为什么可变形卷积关注的是重要特征,希望模型去学习重要特征之间有什么关系),这就需要结合DETR的全局建模能力来解决这一问题。

Deformable DETR

请添加图片描述

Deformable DETR结合了可变形卷积的稀疏建模能力,同时又结合了DETR的关系建模能力。作者提出了可变形注意力模块,关注一小部分采样位置,作为所有特征图像素中突出关键元素的预滤波器。同时,该模块可以很轻松地扩展以聚合多尺度特征,而不需要FPN。

可变形注意力模块

针对某个像素点周边的像素进行采样,同时该模块还具有聚合多尺度特征的能力(在聚合多尺度特征的时候如果考虑细致的话需要进行特征对齐,如果考虑的不细致的话就是简单的拼接)。在该篇文章中,作者就做了对齐的操作。(延伸:使用FPN网络,例如类似于UNet一样,进行多尺度操作,这样的特征融合之后是没有对齐的,只是简单做了拼接操作

作者提出的可变形注意力模块替代了传统的Transformer架构中的attention模块。

相关工作

相关工作对Transformer和DETR介绍较多,可以直接去读两者相关的论文。

文章主体部分(第四章-Methods)

Deformable Attention模块

请添加图片描述
文中指出,传统的Transformer中的注意力机制存在遍历所有可能的空间位置。(论文中“the deformable attention module only attends to a small set of key sampling points around a reference point, regardless of the spatial size of the feature maps,”,这句话中的reference point可以理解为:图片特征map中的一些坐标点(特征Map中的一些初始化位置点)。在论文对应的源码中,在每个坐标点周围只设置了K=4个采样点

Deformable Attention公式理解

D e f o r m A t t n ( 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 ) ] DeformAttn(z_q, p_q, x)=\sum_{m=1}^M W_m[\sum_{k=1}^K A_{mqk}\cdot W'_m x(p_q + \Delta p_{mqk})] DeformAttn(zq,pq,x)=m=1MWm[k=1KAmqkWmx(pq+Δpmqk)]

其中, x x x文中说明为图片的特征Map,但是实际上更可以理解为输入到Encoder中的序列,然后该序列的宽为W,高为H。其中每个点对应的channel通道数为C。文中设定 q q q索引一个叫做 z q z_q zq的内容query。(这里的内容query就是每个点对应的通道数为channel的特征向量)然后, p q p_q pq表示特征图Map中的某个q索引位置上的点。m表示多头注意力机制中的头的数量(源码当中设置为M=8)。k表示采样点数量,也就是从当前点开始与索引值在k这个范围内的所有点之间计算交互(源码中的K=4)。

公式中, Δ p m q k \Delta p_{mqk} Δpmqk表示采样偏移量,是需要通过训练得到的。 A m q k A_{mqk} Amqk表示在第m个注意力头中的第q个参考点周围的共k个采样点中每个采样点分配的注意力权重(也就是说K个采样点权重相加应当为1),也是需要训练得到的。

请添加图片描述

其中,蓝色点表示当前点(reference point),然后按照K=4的采样点数量,蓝色点周围的红色点是需要进行计算交互的,但是,由于红色点左上角的绿色点才是蓝色点真正地需要关注的,那么这个时候偏移量就是绿色点针对于蓝色点左边的红色点的偏移。

请添加图片描述

同时,还存在一个问题,如果上图中蓝色点关注右上角的黑色点的时候,注意力没有正好落在黑点上,那么这个时候,关注的点的权重是由其周围四个点根据距离加权之后得到的。

偏移量是由 z q z_q zq得到的,可变形机制就是说的偏移量可变。

公式中, W W W W ′ W' W都是全连接层,也是需要训练来决定其中的权重的。偏移量是通过将feature map中每个点对应的特征 z q z_q zq输入到一个FC(包含W和b)中,在反向传播过程中去更新FC中的W和b即可。

原始论文中有语句:Both Δ p m q k \Delta p_{mqk} Δpmqk and A m q k A_{mqk} Amqk are obtained via linear projection over the query feature z q z_q zq.
其中, Δ p m q k \Delta p_{mqk} Δpmqk A m q k A_{mqk} Amqk是由 z q z_q zq输入到FC层中得到的。然后在实现的时候,作者说明:In implementation, the query feature z q z_q zq is fed to a linear projection operator of 3MK channels, where the first 2MK channels encode the sampling offsets Δ p m q k \Delta p_{mqk} Δpmqk, and the remaining MK channels are fed to a softmax operator to obtain the attention weights A m q k A_{mqk} Amqk.

Multi-scale Deformable Attention 模块理解(本篇论文的核心)

作者首先强调,多尺度在很多任务当中都很work,然后又说Deformable Attention Module模块也可以扩展到多尺度。

请添加图片描述

上式中, p ^ q ∈ [ 0 , 1 ] 2 \hat{p}_q \in [0, 1]^2 p^q[0,1]2表示对q索引对应的query element中的参考点的归一化坐标(相当于多尺度对齐)。

多尺度可变形注意力模块中,计算方式基本上和单尺度的一样,只是从原来的对单个feature map进行操作改为对L层多尺度feature map进行操作。这里需要注意的是,其中的 ϕ l ( p ^ q ) \phi_l (\hat{p}_q) ϕl(p^q)表示将归一化之后的坐标针对l层特征的大小,进行缩放,从而找到对应l层特征的参考点的实际位置,然后在该层特征下计算可变形注意力。

请添加图片描述

上图中是对上述公式的一个详细的形象化概括。其中,对于不同level的特征,其位置编码(positional encoding)除了该层级对应的位置编码之外,还需要加上一个层级的位置编码(主要是用来区分归一化坐标相同的点在不同层级feature map上具有实际不同的位置编码)。此外,这篇文章中的位置编码也是可学习的。

注意:上图中的Object Queries数量由传统的DETR的N=100,增加到了N=300

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

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

相关文章

Datawhale AI夏令营 - 用户新增预测挑战赛 | 学习笔记

任务1:跑通Baseline # 1. 导入需要用到的相关库 # 导入 pandas 库,用于数据处理和分析 import pandas as pd # 导入 numpy 库,用于科学计算和多维数组操作 import numpy as np # 从 sklearn.tree 模块中导入 DecisionTreeClassifier 类 # De…

开源容灾备份软件,开源cdp备份软件

数据的安全性和完整性面临着硬件问题、黑客攻击、人为错误等各种威胁。在这种环境下,开源容灾备份软件应运而生,通过提供自动数据备份和恢复,有效地保证了公司的数据安全。 一、开源容灾备份软件的定义和作用 开源容灾备份软件是一种基于开源…

全流程R语言Meta分析核心技术教程

详情点击链接:全流程R语言Meta分析核心技术教程 一,Meta分析的选题与检索 1、Meta分析的选题与文献检索 1)什么是Meta分析? 2)Meta分析的选题策略 3)精确检索策略,如何检索全、检索准 4)文献的管理与清洗,如何制定文…

Django基础5——ORM中间程序

文章目录 一、基本了解二、ORM基本操作2.1 连接数据库2.1.1 使用sqlite数据库2.1.2 使用MySQL数据库 2.2 对数据库操作2.2.1 增(前端数据——>数据库)2.2.2 查(数据库——>前端展示)2.2.3 改(修改数据&#xff0…

C# Winfrom通过COM接口访问和控制Excel应用程序,将Excel数据导入DataGridView

1.首先要创建xlsx文件 2.在Com中添加引用 3. 添加命名空间 using ApExcel Microsoft.Office.Interop.Excel; --这样起个名字方面后面写 4.样例 //点击操作excelDataTable dt new DataTable();string fileName "D:\desktop\tmp\test.xlsx";ApExcel.Application exA…

软件测试知识点总结(一)

文章目录 前言一. 什么是软件测试二. 软件测试和软件调试的区别三. 软件测试和研发的区别四. 优秀的测试人员所应该具备的素质总结 前言 在现实生活中的很多场景下,我们都会进行测试。 比如买件衣服,我们需要看衣服是不是穿着好看,衣服材质如…

pyton\yolov8安装和基础使用,训练和预测

首先到官网下载yolov8,官方的地址,下载好压缩包后,解压到pycharm打开,我个人使用的是pycharm,接下来也是在pycharm里操作的。(专业版pycharm) yolov8的官方文档有说明,必须要有的环境…

“深度学习”学习日记:Tensorflow实现VGG每一个卷积层的可视化

2023.8.19 深度学习的卷积对于初学者是非常抽象,当时在入门学习的时候直接劝退一大班人,还好我坚持了下来。可视化时用到的图片(我们学校的一角!!!)以下展示了一个卷积和一次Relu的变化 作者使…

【C51 GPIO的原理和内部结构】

51单片机项目基础篇 中篇:介绍GPIO1、认识GPIO2、GPIO 结构框图与工作原理2.1、P0端口结构框图与工作原理2.1.1、剖析组成 P0 口的每个单元的作用2.1.2、 P0 口做为 I/O 口及地址/数据总线使用时的具体工作过程 2.2、P1 端口结构框图与工作原理2.3、P2 端口结构框图…

Lamda表达式

为什么要使用lamda表达式 避免匿名内部类定义过多可以让你的代码看起来很简洁去掉了一堆没有意义的代码,只留下核心的逻辑 函数式接口 理解Functionalnterface (函数式接口)是学习Java8 lambda表达式的关键所在. 定义: 任何接口,如果只包含唯一一个…

多维时序 | MATLAB实现SABO-CNN-GRU-Attention多变量时间序列预测

多维时序 | MATLAB实现SABO-CNN-GRU-Attention多变量时间序列预测 目录 多维时序 | MATLAB实现SABO-CNN-GRU-Attention多变量时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 多维时序 | MATLAB实现SABO-CNN-GRU-Attention多变量时间序列预测。 模型描…

Java小白基础自学阶段(持续更新...)

引言 Java作为一门广泛应用于企业级开发的编程语言,对初学者来说可能会感到有些复杂。然而,通过适当的学习方法和资源,即使是小白也可以轻松掌握Java的基础知识。本文将提供一些有用的建议和资源,帮助小白自学Java基础。 学习步骤…

cpolar做一个内网穿透

因为不在公司,需要访问公司的数据库,所以做一个内网穿透 下载安装 下载地址: https://dashboard.cpolar.com/get-started 下载后是个压缩包,解压后傻瓜式安装 操作隧道 安装后打开Cpolar Web UI 登录账号,查看隧…

【头歌】构建哈夫曼树及编码

构建哈夫曼树及编码 第1关:构建哈夫曼树 任务描述 本关任务:构建哈夫曼树,从键盘读入字符个数n及这n个字符出现的频率即权值,构造带权路径最短的最优二叉树(哈夫曼树)。 相关知识 哈夫曼树的定义 设二叉树具有n个带权值的叶子结点{w1,w2,...,wn},从根结点到每个叶…

淘宝API技术解析,实现关键词搜索淘宝商品(商品详情接口等)

淘宝提供了开放平台接口(API)来实现按图搜索淘宝商品的功能。您可以通过以下步骤来实现: 获取开放平台的访问权限:首先,您需要在淘宝开放平台创建一个应用,获取访问淘宝API的权限。具体的申请步骤和要求可以…

图文并茂:Python Tkinter从入门到高级实战全解析

目录 介绍什么是Tkinter?准备工作第一个Tkinter程序界面布局事件处理补充知识点 文本输入框复选框和单选框列表框弹出对话框 综合案例:待办事项列表总结 介绍 欢迎来到本篇文章,我们将带您深入了解如何在Python中使用Tkinter库来创建图形用…

cortex-A7 SPI实验 --- STM32MP157

实验目的: 1、数码管显示相同的值 0000 1111 ......9999 2、数码管显示不同的值 1234 一,SPI概念 1,SPI总线是 全双工三线 / 四线同步串行总线,有两根单向数据线(MOSI ,MISO),一根设备片选线&#xff0…

Meta AI发布SeamlessM4T模型,支持转录和翻译近100种语言|已开源

一、前言 Meta AI 近期的重磅动作频频不断,短短一个多月的时间接连发布了一系列开源大模型,下面我们看看都有哪些有影响力的产品。 2023 年 7 月 14 日 Meta AI 隆重推出 CM3leon,这是一款首个多模态模型,可实现最先进的文本到…

leetcode 767. Reorganize String(重组字符串)

重新排列字符串s中的字母,使得任意两个相邻的字母都不相同。 思路: 让相邻字母不同,能想到的办法是先把相同的字母排列, 然后在相同字母的缝隙中插入另一种字母。 比如"aab", 先把"a a"排出来,再…

5G与4G的RRC协议之异同

什么是无线资源控制(RRC)? 我们知道,在移动通信中,无线资源管理是非常重要的一个环节,首先介绍一下什么是无线资源控制(RRC)。 手机和网络通过无线信道相互通信,彼此交…