深度学习(30)—— DeformableDETR(1)

news2024/11/26 4:37:27

深度学习(30)—— DeformableDETR(1)

原本想在一篇文章中就把理论和debug的过程都呈现,但是发现内容很多,所以就分开两篇,照常先记录理论学习过程,然后是实践过程。
注:大家一定不要看过理论就完事儿了,去扣代码,看人家怎么完成的?也学学大佬们的代码习惯,好吧。别把代码写得像屎一样。对自己对别人都好,尤其是那些变量名不要随便起,每一个咱都是有意义的,好吧!这一点基本咱还是养成吧!

文章目录

  • 深度学习(30)—— DeformableDETR(1)
    • 1. DETR的优缺点
      • 1.1 优点
      • 1.2 缺点
    • 2. DeformableDETR拟解决问题
    • 3. 核心block
      • 3.1 Deformable attention module
      • 3.2 Multi-scale Deformable Attention Module
      • 3.3 Deformable Transformer Encoder
      • 3.4 Deformable Transformer Decoder
    • 4. 适用场景

【paper】点击自取

1. DETR的优缺点

1.1 优点

作为一种基于transformer的目标检测算法,DETR相比传统的基于区域的方法的优点是:

  • 端到端的训练:DETR采用完全端到端的训练方式,不需要使用额外的候选框生成和选择算法,简化了目标检测流程并提高了效率。
  • 不受先验知识限制:DETR不依赖于先验知识,如anchor或proposal,能够自动从数据中学习目标的位置和类别信息,更加灵活。
  • 多任务学习:DETR可以同时进行物体检测和物体关联任务,通过在解码器中引入匹配损失函数,实现了全局感知和关联建模。
  • 可解释性强:由于采用了Transformer的自注意力机制,DETR生成的目标位置是可解释的,每个位置处都对应一个类别和一个边界框。

1.2 缺点

  • 训练时间较长:DETR的训练时间通常比传统的基于区域提议的方法要长,因为它需要更多的计算资源和更大规模的数据集来训练Transformer模型。
  • 对小目标检测不够准确:DETR在处理小目标时容易出现检测不准确的问题,这可能是由于Transformer模型在处理小尺度信息时存在困难所导致的。
  • 对密集目标的处理较差:DETR对于密集目标的检测效果相对较差,因为它没有显式地建模目标之间的重叠关系,而是通过注意力机制来实现目标关联。

2. DeformableDETR拟解决问题

为了解决DETR的KnowledgeGap,deformableDETR使用了以下方法:

  • Deformable Attention Module:可变性注意力机制,不需要考虑全部的点,选择与其相关性强的点进行计算【reference point】,可以极大减少运算时间,提高模型效率。
  • Multi-scale Deformable Attention Module:这个模块考虑多尺度特征图可以提高小目标检测的精度

3. 核心block

  • transformer可以学习特征之间的关系,但是attention权重在开始的时候都是一个水平线上的,一起学习
  • 可变性卷积可以有效的提取更鲜明特征,突出有特点的特征,但是他无法学习重要特征之间的关系
  • 将可变性卷积和transformer结合【可变性注意力机制】发扬光大~

3.1 Deformable attention module

在这里插入图片描述
核心公式 其中m表示多头的head个数,k表示一个reference point采样的点,代码中设置为4,图中展示的是三个点。下面的举例我按照图解释,那么怎么做的呢?

  • 首先对于reference point 【p】,先使用特征图x连接一个linear层得到与这个点相关性更强周围其他的三个点(k的个数)
  • query这个特征连接linear得到reference point三个点的相对于其本身的3个key的偏移量(2维,x和y)
  • query特征连接linear得到这三个点与reference point的重要程度(类似于attention权重)
    在这里插入图片描述
    相较于以前:以前每个点都要与特征图上所有的点计算重要程度,得到相关性的权重。现在每个点只需要和与其相关的k(=3)个点计算

3.2 Multi-scale Deformable Attention Module

在这里插入图片描述
其实这里和前面的DeformableAttention Module类似,只是多了level的加成,既然要把不同level的特征做加和就难免需要考虑一个问题:如何将这些特征对齐?——只需要将reference point和他的key每个特征图上的位置做归一化,都在0-1的范围内,即可对齐。

3.3 Deformable Transformer Encoder

将DETR中的transformer attention机制全部替换成multi-scale deformable attention block。在encoder,分别从resnet的stage3-stage5学习到的特征,最小的特征图是stage5的一个卷积得到的。面对这种从上到下的结构没有使用FPN,使用multi-scale deformable attention block可以学习到不同分辨率特征的信息。在encoder的过程中这些特征要embedding,因为在不同的层级,所以作者不止使用position_embedding 而且增加了level_embedding。【level_embedding是可学习的!!!】

在这里插入图片描述

3.4 Deformable Transformer Decoder

在decoder中既有self-attention又有cross-attention。和DETR一样在这两个过程中都需要object query,与DETR不同,DETR初始化100个,Deformable DETR初始化300个。在cross-attention中,object query 用于提取学习从encoder学习的特征,即encoder学习的特征作为key。在self-attention中,就是object query自身进行

4. 适用场景

  • 复杂场景下的目标检测:DeformableDETR能够处理不规则形状的目标,因此适用于复杂场景下的目标检测任务。
  • 对细粒度特征要求较高的目标检测,DeformableDETR能够获得更准确和细节的特征表示,适用于对细粒度特征建模要求较高的目标检测任务。

886,我晚上梳理一下代码,明天出代码篇~

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

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

相关文章

Flutter学习—— Vscode创建项目

目录 一、Vscode创建项目 二、补充五种项目类型 Application: Module 模块开发, Package开发 Plugin 插件开发 Skeleton 骨架开发 一、Vscode创建项目 1.快捷键 CtrlShiftP 打开命令面板,选择新项目 2.选择需要开发的项目类型 Application 应用开…

勾股dev部署

1.克隆项目 项目的地址: https://gitee.com/gouguopen/dev?_fromgitee_search#-%E5%BC%80%E6%BA%90%E5%8A%A9%E5%8A%9B 可以采用git clone https://gitee.com/gouguopen/dev.git 或者使用下载压缩包的形式 2.进入项目的根目录 cd gougudev 3.下载php依赖 需要…

三种策略改进的沙猫群优化算法(MSCSO),与白鲸、蜣螂、麻雀等多种算法进行比较,MATLAB代码...

沙猫群优化算法(sand cat swarm optimiza⁃ tion,SCSO)是 2022年提出的元启发式优化算法,该算法灵感来源于沙猫的捕食行为,沙猫群会通过搜索阶段和捕食阶段获得食物。其中算法额外使用自适应的rG和R以达到搜索阶段和捕食阶段的无缝 切换。该算法具有寻优…

刷题日记09《图论基础》

图的存储结构 对于图结构而言,常见的存储结构主要有两种:邻接表和邻接矩阵: 邻接表很直观,我把每个节点 x 的邻居都存到一个列表里,然后把 x 和这个列表关联起来,这样就可以通过一个节点 x 找到它的所有相邻…

java 8树结构返回前端

接口&#xff1a; EntityResult getOrgReal(Map<String, Object> mapParam); 实现类&#xff1a; PMethodHandle(runMethodName "TQmsZjxmzbImpl.getOrgReal", timeout 600) Override public EntityResult getOrgReal(Map<String, Object> mapParam…

vs2015 工程组织与动态加载

10.Visual Studio动态加载_哔哩哔哩_bilibili 1.工程组织 ① researcher.cpp #include "nn/nn.h"#include "nn/factory.h" #include "nn/factory_impl/factory_impl.h"#include <iostream>int main() {int ret 0;factory_i* fct new f…

Invalid bound statement (not found),springboot扫描不到jar包中mapper文件的问题处理

参考这位大佬的博客&#xff1a;Invalid bound statement (not found)&#xff0c;springboot扫描不到jar包中mapper文件的问题处理_springboot扫描不到mapper_Jamesharden13的博客-CSDN博客 classpath:和classpath*:的区别_classpath和classpath*区别_明快de玄米61的博客-CSD…

JavaWeb课程设计项目实战(06)——项目编码实践3

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 在本教程教程中&#xff0c;我们实现学生列表的显示。 Student 请在bean包下创建Student类&#xff0c;代码如下&#xff1a; package com.cn.bean; /*** 本文作者&#…

MIMIC数据库申请流程

MIMIC是一个公开的临床数据库&#xff0c;之前查找了很多资料&#xff0c;在这里记录一下整个申请流程。 一、CITI证书 要申请mimic数据库的使用权限&#xff0c;首先需要有CITI证书&#xff0c;这是一个国际知名的网络训练课程&#xff0c;其中就有用于健康资讯隐私及保护 (…

Spring 用了哪些设计模式

关于设计模式&#xff0c;如果使用得当&#xff0c;将会使我们的代码更加简洁&#xff0c;并且更具扩展性。本文主要讲解Spring中如何使用策略模式&#xff0c;工厂方法模式以及Builder模式。 策略模式 关于策略模式的使用方式&#xff0c;在Spring中其实比较简单&#xff0c…

408-2009

一、选择题&#xff08;2 分/题&#xff09; 1.为解决计算机主机与打印机之间速度不匹配问题&#xff0c;通常设置一个打印数据缓冲区&#xff0c;主机将要输出的数据一次写入该缓冲取&#xff0c;而打印机则依次从该缓冲区中取出数据。该缓冲区的逻辑结构应该是______。 A.栈 …

iOS--编译连接的过程_2

文章目录 iOS编译&#xff08;一&#xff09;编译器前端 编译器后端执行一次XCode build的流程 IPA包的内容二进制文件的内容iOS Link Map File文件说明1. Link Map File 是什么2. Link Map File 有什么用3. 生成 Link Map File查看Link Map File1&#xff09;路径部分计算机系…

Linux进程间通信(fifo有名管道)

文章目录 前言一、有名管道概念讲解二、命令行创建fifo三、非命令行创建fifo四、fifo和管道对比总结 前言 上篇文章我们讲解了无名管道&#xff0c;这篇文章我们就来讲解一下有名管道。 一、有名管道概念讲解 有名管道(fifo) 有名管道&#xff08;FIFO&#xff09;是一种命…

jmeter请求重试实现思路

文章目录 一、背景二、尝试的解决方案三、最终解决方案&#xff1a;jmeter retrier插件&#xff01; 一、背景 最近系统需要压测一些活动&#xff0c;场景是新建抽奖活动之后&#xff0c;每隔2s查询1次&#xff08;最多3次&#xff0c;3次后还是失败就算失败&#xff09;&…

linux学成之路(基础篇)(二十)rsync服务器

目录 前言 一、概述 监听端口 二、特点 快捷 安全 三、数据的同步方式 四、rsync传输方式 本地传输 远程传输 守护进程 五、命令 作为远程命令 作为rsync服务 选项 六、配置文件 全局配置 模块配置 守护进程传输 七、rsyncinotfy实时同步 一、服务端 二、…

Qgis二次开发-QgsMapLayer(加载矢量、栅格图层)

1.简介 QgsMapLayer是所有地图层类型的基类&#xff0c;这是所有地图层类型(矢量&#xff0c;栅格)的基类&#xff0c;首先定义一个QgsMapCanvas地图画布&#xff0c;然后画布上添加图层&#xff0c;使用以下方法设置图层集合。 //设置当前图层集合 void setLayers (const QL…

算法提高-动态规划-单调队列优化DP

单调队列优化DP AcWing 135. 最大子序和AcWing 1087. 修剪草坪AcWing 1089. 烽火传递AcWing 1090. 绿色通道 关于单调队列的初始化 AcWing 135. 最大子序和 注意hh 0,tt -1 tt 0初始化的时候队列有什么不同&#xff0c;主要还是要理解队列的实际意义 #include <iostre…

利用python绘制二维向量图

为了实现地层数据的变化趋势的可视化模拟&#xff0c;最近研究了python环境下的可视化方案&#xff0c;为后续的流体运动的仿真模拟做好储备&#xff0c;主要采用matplotlib中的quiver函数&#xff0c;实现二维等值线数据的随深度或者地层数据的变化趋势绘制。 一、运行环境&a…

MySQL--主从复制

目录 1.理解MySQL主从复制原理。 2.完成MySQL主从复制。 1.理解MySQL主从复制原理。 1.主要基于MySQL二进制日志 2.主要包括三个线程&#xff08;2个I/O线程&#xff0c;1个SQL线程&#xff09; 概括&#xff1a; 1、MySQL将数据变化记录到二进制日志中&#xff1b; 2、Slave…

【前端动画】点击移动放大出现蒙版,点击蒙版原路返回 css动画animation

<template><div><!-- 蒙版 Mask--><divv-if"isShowTableMask":class"${maskClass}"click"closeTableMask"></div><div style"" class"table-dialog" :class"${centerTableClass} …