Transformer实战-系列教程13:DETR 算法解读

🚩🚩🚩Transformer实战-系列教程总目录

有任何问题欢迎在下面留言
本篇文章的代码运行界面均在Pycharm中进行
本篇文章配套的代码资源已经上传
点我下载源码

1、物体检测

说到目标检测你能想到什么
faster-rcnn系列,开山之作,各种proposal方法
YOLO肯定也少不了,都是基于anchor这路子玩的
NMS那也一定得用上,输出结果肯定要过滤一下的
如果一个目标检测算法,上面这三点都木有,你说神不神!

faster-rcnn是开山之作,15年的物体检测算法,yolo系列实际上就是把faster-rcnn做的更加简单了,但是源码量确增加了。但是都有问题,都是基于anchor做的。

anchor base都会产生一些问题,因为会产生多个框,多个框就用NMS非极大值抑制过滤一下框。但是框的过滤效率比较低。

在之前,Transformer都是作为一个backbone,即特征提取的网络,主要在他的基础上做下游任务。物体检测这么多年了,一直也是faster-rcnn、YOLO、NMS这些没变过,如果突然把这些全部打破,是不是有点太夸张了?

2、DETR

在这里插入图片描述
DETR,Detection Transformer
首先还是和Swin Transformer一样,先用CNN把图像转换成Patch
再套用Transformer的self-Attention、Encoder、Decoder那一套,直接预测出100个坐标框出来

在编码器中初始化100个向量,让这100个向量都预测一个坐标框和一个类别的概率值。
这100个框中有物体和非物体,但是在非物体就不管了,过滤掉,只找出
但是这100个框是并行,不是串行的

3、基本架构

在这里插入图片描述
通过CNN得到patch再加上位置编码,作为Encoder的输入,这个输入没有cls

而Decoder初始化100个向量(object queries),Decoder利用Encoder的输出去重构这100个向量,Decoder输出去预测出100个框,这个框有没有物体,物体的类别,以及框的坐标

4、Encoder作用

在这里插入图片描述

为什么前面要用Encoder的输出来重构初始化的向量呢?直接用CNN输出的向量来重构不可以吗?

论文中这样解释,基于注意力的结果,可以告诉解码器应该关注图像的哪些区域,即哪些区域是物体

如图所示,不同的patch提供了不同的注意力,左边上图和下图分别注意到了不同的两头牛,而右边上图和下图也分别注意到了不同的两头牛,这是不同的patch提取到的特征,关注到了不同的物体,即使图像中的物体有遮挡现象但是还是由于注意力机制还是不影响特征的提取。

5、整体架构

在这里插入图片描述

输出层就是100个object queries预测
编码器木有啥特别的,正常整就行
解码器首先随机初始化object queries
(0+位置编码,简直惊呆。。。)
通过多层让其学习如何利用输入特征

编码器和VIT、Swin Transformer一样没有特别的,原始图像CNN提取成patch再生成Q、K、V,经过多头注意力机制和MLP,中间还有一些残差连接

但是解码器竟然初始化全部都是0,然后这个0再加上位置编码,这个位置编码和原始图像的位置编码是没有关系的,是这100个向量的位置编码。这100个向量生成第一轮的Q、K、V,先去做self-Attention。

然后第一轮的输出作为Q,Encoder的输出作为K、V,其中K加上了位置编码,V没有加上位置编码,然后这里的QKV再去做多头注意力机制,这中间还有一些残差连接。

这两轮的输出再经过MLP后,一个经过全连接去做分类任务预测类别,一个经过全连接去做回归任务预测框

在DETR中的Decoder没有加入mask机制

6、输出匹配

在这里插入图片描述
GT(Ground Truth)只有两个,但是预测的恒为100个,怎么匹配呢?
匈牙利匹配完成,按照LOSS最小的组合,剩下98个都是背景

7、Transformer的神奇之处

在这里插入图片描述
这是论文中给出的图片,蓝色的是大的大象,橙色是小的大象,注意力机制所关注到的地方是大象的鼻子和腿,即使这个腿的重叠遮挡这么严重,还是能够区别出来两头大象

8、论文细节补充

在这里插入图片描述
在Decoder的左上角有一个Mx,意为多次堆叠这个过程,但是论文中提到这个堆叠每一层都做了损失计算,也就是说每层都进行了类别的分类预测和框的回归预测。

在每一层都加上监督,能够确保这个过程进行的更加好一点。

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

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

相关文章

Conda历史版本下载地址和python对应关系

一、前言 因为Conda安装版本问题,带来了很多问题,虽然不能直接确定二者之间的关系,但是安装指定版本的conda,确实是一个比较好的方法。特此记忆。 二、下载地址 下载最新版本:Free Download | Anaconda 下载历史版本&#xff…

Springboot集成flowable工作流

文章目录 概要包依赖问题小结 概要 Spirng boot 集成flowable <spring-boot.version>3.1.5</spring-boot.version>包依赖 <dependency><groupId>org.flowable</groupId><artifactId>flowable-spring-boot-starter</artifactId>&l…

vuecli3 执行 npm run build 打包命令报错:TypeError: file.split is not a function

问题 今天有个项目在打包的时候遇到了一个问题&#xff0c;就是执行 npm run build 命令的时候报错了&#xff0c;如下&#xff1a; 解决 我排查了一下&#xff0c;模拟代码如下&#xff1a;在打包的时候用了 MinChunkSizePlugin const webpack require("webpack"…

c++设计模式之装饰器模式

作用 为现有类增加功能 案例说明 class Car { public:virtual void show()0; };class Bmw:public Car { public:void show(){cout<<"宝马汽车>>"<<endl;} };class Audi:public Car { public:void show(){cout<<"奥迪汽车>>&q…

5G NR 信道号计算

一、5G NR的频段 增加带宽是增加容量和传输速率最直接的方法&#xff0c;目前5G最大带宽将会达到400MHz&#xff0c;考虑到目前频率占用情况&#xff0c;5G将不得不使用高频进行通信。 3GPP协议定义了从Sub6G(FR1)到毫米波(FR2)的5G目标频谱。 其中FR1是5G的核心频段&#xff0…

戴上HUAWEI WATCH GT 4,解锁龙年新玩法

春节将至&#xff0c;华为WATCH GT 4作为一款颜值和实力并存的手表&#xff0c;能为节日增添了不少趣味和便利。无论你是钟情于龙年表盘或定制属于自己的表盘&#xff0c;还是过年用来抢红包或远程操控手机拍全家福等等&#xff0c;它都能成为你的“玩伴”。接下来&#xff0c;…

STM32单片机基本原理与应用(四)

直流电机驱动控制原理 1、电机正反转控制 在STM32中&#xff0c;直流电机的正反转控制主要通过改变电机输入电源的极性来实现。当电机的电压极性发生变化时&#xff0c;电机的旋转方向也会相应改变。在硬件电路中&#xff0c;可以通过继电器或晶体管等电子开关来切换电机的电源…

vscode连接ssh报错

关于vscode更新版本至1.86后&#xff0c;导致无法连接服务器问题的记录 原因&#xff1a;vscode1.86更新了对glibc的要求&#xff0c;需要最低2.28版本&#xff0c;导致各种旧版本的linux发行版&#xff08;比如最常见的centos 7&#xff09;都无法用remote-ssh来连接了&#…

springboot微信小程序uniapp学习计划与日程管理系统

基于springboot学习计划与日程管理系统&#xff0c;确定学习计划小程序的目标&#xff0c;明确用户需求&#xff0c;学习计划小程序的主要功能是帮助用户制定学习计划&#xff0c;并跟踪学习进度。页面设计主要包括主页、计划学习页、个人中心页等&#xff0c;然后用户可以利用…

LiteFlow规则引擎框架

LiteFlow规则引擎框架 Hi&#xff0c;我是阿昌&#xff0c;今天介绍一个规则引擎框架&#xff0c;LiteFlow&#xff1b; 一、前言 那首先得知道什么是规则引擎&#xff1f;规则引擎是 一种用于自动化处理业务规则的软件组件。 在软件行业中&#xff0c;规则引擎通常用于解决…

Python中HTTP隧道的基本原理与实现

HTTP隧道是一种允许客户端和服务器之间通过中间代理进行通信的技术。这种隧道技术允许代理服务器转发客户端和服务器之间的所有HTTP请求和响应&#xff0c;而不需要对请求或响应内容进行任何处理或解析。Python提供了强大的网络编程能力&#xff0c;可以使用标准库中的socket和…

深度学习入门笔记(八)可以不断思考的模型:RNN与LSTM

8.1 循环神经网络RNN 之前学到的 CNN 和全连接&#xff0c;模型的输入数据之间是没有关联的&#xff0c;比如图像分类&#xff0c;每次输入的图片与图片之间就没有任何关系&#xff0c;上一张图片的内容不会影响到下一张图片的结果。但在自然语言处理领域&#xff0c;这就成了…

RabbitMQ高可用架构涉及常用功能整理

RabbitMQ高可用架构涉及常用功能整理 1. rabbitmq的集群模式2. 镜像模式高可用系统架构和相关组件3. rabbitmq的核心参数3.1 镜像策略3.2 新镜像同步策略3.3 从节点晋升策略3.4 主队列选择策略 4. rabbitmq常用命令4.1 常用基础命令4.1.1 服务管理4.1.2 用户管理4.1.3 角色管理…

MacOS上怎么把格式化成APFS的U盘或者硬盘格式化回ExFAT?

一、问题 MacOS在更新MacOS Monterey后或者更高系统后发现&#xff0c;格式U盘或者硬盘只有4个APFS选项&#xff0c;那么我们该如何将APFS格式成ExFAT&#xff1f; 二、解答 将APFS的U盘或者硬盘拓展成MacOS的拓展格式即可&#xff0c;操作步骤如下 1、电脑接入U盘或者硬盘 2…

项目02《游戏-11-开发》Unity3D

基于 项目02《游戏-10-开发》Unity3D &#xff0c; 任务&#xff1a;飞行坐骑 首先创建脚本&#xff0c; 绑定脚本&#xff0c; using UnityEngine; public class Dragon : MonoBehaviour{ [SerializeField] private float speed 10f; public Transfo…

RCE(命令执行)知识点总结最详细

description: 这里是CTF做题时常见的会遇见的RCE的漏洞知识点总结。 如果你觉得写得好并且想看更多web知识的话可以去gitbook.22kaka.fun去看&#xff0c;上面是我写的一本关于web学习的一个gitbook&#xff0c;当然如果你能去我的github为我的这个项目点亮星星我会感激不尽htt…

uniapp的配置和使用

①安装环境和编辑器 注册小程序账号 微信开发者工具下载 uniapp 官网 HbuilderX 下载 首先先下载Hbuilder和微信开发者工具 &#xff08;都是傻瓜式安装&#xff09;&#xff0c;然后注册小程序账号&#xff1a; 拿到appid&#xff1a; ②简单通过demo使用微信开发者工具和…

Flask基础学习

1.debug、host、port 模式修改 1) debug模式 默认debug模式是off&#xff0c;在修改代码调试过程中需要暂停重启使用&#xff0c;这时可修改on模式解决。 同时在debug模式开启下可看到出错信息。 下面有关于Pycharm社区版和专业版修改debug模式的区别 专业版 社区版&#…

目标检测 | 卷积神经网络(CNN)详细介绍及其原理详解

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。卷积神经网络&#xff08;Convolutional Neural Network&#xff0c;CNN&#xff09;是一种深度学习模型&#xff0c;主要用于图像识别和计算机视觉任务。它的设计灵感来自于生物学中视觉皮层的工作原理。CNN的核心思想是通…

Android meminfo 查看方法及解析

目录 Android 上查看memory 信息的方法 内存限制的信息 手动释放缓存 例 adb shell dumpsys meminfo pid 解析 adb shell dumpsys meminfo 汇总信息说明 Total RAM Free RAM ION Used RAM Lost RAM ZRAM /proc/meminfo 参考文档 Android 上查看memory 信息的方法 …