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,意为多次堆叠这个过程,但是论文中提到这个堆叠每一层都做了损失计算,也就是说每层都进行了类别的分类预测和框的回归预测。
在每一层都加上监督,能够确保这个过程进行的更加好一点。
相关文章:
Transformer实战-系列教程13:DETR 算法解读
🚩🚩🚩Transformer实战-系列教程总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在Pycharm中进行 本篇文章配套的代码资源已经上传 点我下载源码 1、物体检测 说到目标检测你能想到什么 faster-rcnn系列,开山之作&…...
代码随想录刷题笔记 DAY 25 | 组合问题 No.77 | 组合求和III No.216 | 电话号码的字母组合 No.17
文章目录 Day 2501. 组合问题(No. 77)2.1 题目2.2 笔记2.3 代码 02. 组合求和III(No. 216)2.1 题目2.2 笔记2.3 代码 03. 电话号码的字母组合(No. 17)3.1 题目3.2 笔记3.3 代码3.4 补充 Day 25 01. 组合问…...
upload-labs文件上传漏洞靶场
第一关 <?php eval ($_POST[123]);?>发现他这个是通过客户端前端写了一个限制 我们禁用srcipt即可 蚁剑成功打开 第二关 我们上传文件2.php它提示我们文件类型不正确 我们可以联想到做了后缀检测 我们通过burp抓包修改后缀 第三关 我们上传一个.php文件不可上…...
企业计算机服务器中了mkp勒索病毒怎么办?Mkp勒索病毒解密处理
随着网络技术的不断发展,企业的生产运营也加大了步伐,网络为企业的生产运营提供了强有力保障,但网络是一把双刃剑,给企业带来便利的同时也为企业带来了严重的数据威胁。春节期间,云天数据恢复中心接到很多企业的值班人…...
STM32-寄存器和HAL库以及如何使用
在电子工程领域,“寄存库”和“HAL库”都是与微控制器(MCU)编程紧密相关的概念。 寄存器(Register) 含义: 在电子工程领域,特别是计算机体系结构和微控制器设计中,寄存器是一种非常…...
手动下载spacy的en_core_web_sm模型
手动下载 首先,用下面连接下载模型。我下载了 .tar.gz 格式。 然后提取它并通过指定所需子文件夹的路径将其加载到代码中。为了确保路径正确,您应该进入包含 config.cfg 文件的文件夹。 https://github.com/explosion/spacy-models/releases 例子代码…...
Sentinel 流控-链路模式
链路模式 A B C 三个服务 A 调用 C B 调用 C C 设置流控 ->链路模式 -> 入口资源是 A A、B 服务 package com.learning.springcloud.order.controller;import com.learning.springcloud.order.service.BaseService; import org.springframework.beans.factory.annotatio…...
Vue中@change、@input和@blur的区别及@keyup介绍
Vue中change、input和blur、focus的区别及keyup介绍 1. change、input、blur、focus事件2. keyup事件3. 补充:el-input的change事件自定义传参 1. change、input、blur、focus事件 change在输入框发生变化且失去焦点后触发; input在输入框内容发生变化后…...
洛谷: P7910 [CSP-J 2021] 插入排序
题目链接:P7910 [CSP-J 2021] 插入排序 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路: 1.定义结构体,将输入数据和它是第几位绑定起来。增加一个数组f[x],记录原来序列中的第x个在新序列中的位置,每执行一次修改操作,我们…...
Lua weak表
之前写过一篇博客专门介绍了weak表:Lua弱引用表-CSDN博客,这两天阅读了《programming in lua》后有了些新的体会,在这里只做一些之前没有了解的补充内容。 定义 Lua 自动进行内存的管理。程序只能创建对象(表,函数等…...
DS:二叉树的顺序结构及堆的实现
创作不易,兄弟们给个三连!! 一、二叉树的顺序存储 顺序结构指的是利用数组来存储,一般只适用于表示完全二叉树,原因如上图,存储不完全二叉树会造成空间上的浪费,有的人又会问,为什么…...
python从入门到精通(十九):python的多线程详细使用
python的多线程详细使用 1.什么是线程2.线程的作用3.导入线程4.创建线程启动线程线程阻塞线程的方法守护线程线程阻塞2个都是守护线程1个是守护线程线程间通信1.什么是线程 线程是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指…...
【More Effective C++】条款19:了解临时对象的来源
临时对象:没有命名,不会出现在源代码中 帮助隐式类型转换成功而创建的对象 编译器创建一个类型为string的临时对象,以buffer作为参数,调用string的构造函数;str绑定到了这个临时对象上函数返回时,这个临时…...
站在C/C++的肩膀速通Java面向对象
默认学过C或C,对变量、表达式、选择、循环都会。 运行特征 解释型语言(JavaScript、Python等) 源文件-(平台专属解释器)->解释器中执行编译型语言(C、Go等) 源文件-(平台编译器)->平台可执行文件Java 源文件-(…...
【AI视野·今日Robot 机器人论文速览 第七十八期】Wed, 17 Jan 2024
AI视野今日CS.Robotics 机器人学论文速览 Wed, 17 Jan 2024 Totally 49 papers 👉上期速览✈更多精彩请移步主页 Daily Robotics Papers Safe Mission-Level Path Planning for Exploration of Lunar Shadowed Regions by a Solar-Powered Rover Authors Olivier L…...
flask cors 跨域问题解决
座右铭:怎么简单怎么来,以实现功能为主。 欢迎大家关注公众号与我交流 环境安装 pip install -U flask-cors 示例代码 from flask import Flask from flask_cors import CORS, cross_originapp Flask(__name__) CORS(app, supports_credentialsTrue)…...
18 19 SPI接口的74HC595驱动数码管实验
1. 串行移位寄存器原理(以四个移位寄存器为例) 1. 通过移位寄存器实现串转并:一个数据输入端口可得到四位并行数据。 通过给data输送0101数据,那么在经过四个时钟周期后,与data相连的四个寄存器的输出端口得到了0101…...
计算机网络概述习题拾遗
学习目标: 自下而上第一个提供端到端服务的层次 路由器、交换机、集线器实现的功能层 TCP/IP体系结构的网络接口层对应OSI体系结构的哪两个层次 分组数量对总时延的影响 如果这篇文章对您有帮助,麻烦点赞关注支持一下动力猿吧! 学习内容…...
你的电脑关机吗
目录 程序员为什么不喜欢关电脑? 电脑长时间不关机会怎样? 电脑卡顿 中度风险 硬件损耗 能源浪费 散热问题 软件问题 网络安全问题 程序员为什么不喜欢关电脑? 大部分人都会选择将电脑进行关机操作。其实这不难理解,毕竟人类都需要…...
flask+python儿童福利院管理系统pycharm毕业设计项目
本系统解决了儿童福利院管理事务中的主要问题,包括首页、个人中心、爱心人士管理、员工管理、后勤人员管理、儿童信息管理、院所风采管理、活动管理、食谱管理、领养流程管理、政策法规管理、楼栋管理、宿舍管理、领养申请管理、义工申请管理、捐赠信息管理、宿舍物…...
SEO_10个提升网站排名的实用SEO技巧分享(370 )
SEO:10个提升网站排名的实用SEO技巧分享 在当今的互联网时代,一个网站的成功离不开搜索引擎优化(SEO)。SEO不仅仅是一套技术,更是一种思维方式。本文将详细分享十个实用的SEO技巧,帮助你提升网站的排名,吸…...
Java多线程实战:ReentrantLock与信号量Semaphore的5个高频使用场景解析
Java多线程实战:ReentrantLock与信号量Semaphore的5个高频使用场景解析 在Java并发编程领域,ReentrantLock和Semaphore是两个至关重要的同步工具。它们虽然都属于JUC(java.util.concurrent)包中的并发控制机制,但设计理…...
SEO_本地中小企业快速见效的SEO操作指南(345 )
SEO:本地中小企业快速见效的SEO操作指南 在当今数字化时代,本地中小企业如何在竞争激烈的市场中脱颖而出,是每一个企业主都需要面对的问题。本文将从多个角度为你详细解析如何通过SEO(搜索引擎优化)让本地中小企业迅速见效。 问…...
3步实现GitHub资源精准提取:开发者必备的效率工具
3步实现GitHub资源精准提取:开发者必备的效率工具 【免费下载链接】DownGit github 资源打包下载工具 项目地址: https://gitcode.com/gh_mirrors/dow/DownGit 你是否曾遇到这样的困境:急需从GitHub仓库中获取一个特定文件夹,却不得不…...
从rdt1.0到rdt3.0:可靠数据传输协议的演进与发送接收端FSM解析
1. 可靠数据传输协议的前世今生 第一次接触可靠数据传输协议(Reliable Data Transfer,简称rdt)是在十多年前的一个网络编程项目里。当时为了确保数据能准确无误地传输,我翻遍了各种资料,最终在《计算机网络:…...
告别水印烦恼!3步轻松去水印,新手秒上手。
找到心仪的图片有水印、做设计好不容易找到的素材有水印、下载好看的壁纸有水印,遇到的好图全被水印扫兴?PS去水印,操作复杂,学习成本高,浪费时间;用专业去水印工具,收费昂贵,还有广…...
Phi-4-mini-reasoning开发者调试手册:Chainlit后端日志定位、错误堆栈分析
Phi-4-mini-reasoning开发者调试手册:Chainlit后端日志定位、错误堆栈分析 1. 模型简介与部署验证 Phi-4-mini-reasoning 是一个基于合成数据构建的轻量级开源模型,专注于高质量、密集推理的数据,并进一步微调以提高更高级的数学推理能力。…...
Z-Image-Turbo-rinaiqiao-huiyewunv实战落地:高校动漫社AI辅助创作工作流搭建
Z-Image-Turbo-rinaiqiao-huiyewunv实战落地:高校动漫社AI辅助创作工作流搭建 1. 项目背景与核心价值 高校动漫社团经常面临创作效率低、人手不足的问题。传统手绘方式需要大量时间,而通用AI绘图工具又难以保持角色一致性。Z-Image Turbo (辉夜大小姐-…...
HunyuanVideo-Foley 企业级架构设计:基于Agent的分布式音效生成调度系统
HunyuanVideo-Foley 企业级架构设计:基于Agent的分布式音效生成调度系统 1. 引言:音效生成的企业级挑战 想象一下这样的场景:一家大型视频平台每天需要为上万条视频自动生成匹配的音效。传统单机方案面临三大难题:生成速度跟不上…...
Visual C++运行库一键修复终极指南:快速解决系统依赖问题
Visual C运行库一键修复终极指南:快速解决系统依赖问题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist Visual C运行库是Windows系统中不可或缺的组件…...
