DETR:End-to-End Object Detection with Transformers
代码:https://github.com/HuKai97/detr-annotations
论文:https://arxiv.org/pdf/2005.12872.pdf
参考视频:DETR 论文精读【论文精读】_哔哩哔哩_bilibili
团队:Meta AI
摘要
DETR 做目标检测任务既不需要proposal,也不需要anchor,直接用Transformer全局预测能力把目标检测看成一个集合预测的问题,不需要用nms作后处理
对于一张图片,固定预测一定数量的物体(原作是100个,在代码中可更改),模型根据这些物体对象与图片中全局上下文的关系直接并行输出预测集, 也就是 Transformer 一次性解码出图片中所有物体的预测结果,这种并行特性使得 DETR 非常高效。
背景
相关工作
目标检测
现在大部分的目标检测都是根据已有的初始预测去做一些猜测
twostage:初始猜测是proposal
singlestage:初始猜测是anchor
后处理:
猜想:1)set based loss 2)recurrent detector
贡献
1)把目标检测做成端到端的框架,删除依赖于人的先验的部分,比如最大值抑制和生成anchor
2)提出新的目标函数,通过二分图匹配的方式强制模型输出独一无二的预测
3)用了Transformer Encoder和Decoder的架构,解码器的时候有另外一个输入:learn object queries,和全局图像信息结合在一起,通过不停做注意力操作让模型直接输出预测框
方法
DETR模型结构
step1:
先用卷积神经网络来抽取特征
step2:
拿到特征之后拉直送到Transformer encoder-decoder里面
step3:
encoder继续学习全局信息(非常有利于去移除冗余的框),为decoder的出预测框进行铺垫
step4:
decoder中进行object query,但是这里的object query有多少个就决定了它后面会有多少个框
但是六层decoder中第一层可以不做自注意力
六个decoder中都加了ffn(trick)
step5:
训练的时候通过二分图匹配的方法去算最后的loss,匹配上ground truth之后才会去算一个分类的loss和bounding box的loss;剩下的框被视作背景类;
推理的时候不用loss,直接用罚值去卡一下置信度
*2048~256是通过1x1卷积实现的
*这里拉直是指把HXW(25*24~850)
*object embedding 是 learnable positional embedding
*cross attention:850*256喝100*256反复做自注意力操作
*拿到100*256之后就进行预测了,也就是检测头,不过检测头是标准MLP,做两个预测,一个类别预测一个出框预测
基于集合的目标函数
先生成一百个框
如何知道哪个框对应预测框?-二分图匹配 e.g匈牙利算法/linear sum assignment去解决
最后的公式↓ 分类loss+出框loss;先去算最优匹配,再在最优匹配上面算loss
结果
在大目标检测上效果好,小目标检测效果不是很好
改进:deformable DETR,引入多尺度特征,解决DETR训练太慢的问题
transformer编码器
自注意力可视化
transformer解码器
对于头和尾巴等边缘极值点decoder能处理好,并且处理遮挡问题
Object Query可视化
相关文章:
DETR:End-to-End Object Detection with Transformers
代码:https://github.com/HuKai97/detr-annotations 论文:https://arxiv.org/pdf/2005.12872.pdf 参考视频:DETR 论文精读【论文精读】_哔哩哔哩_bilibili 团队:Meta AI 摘要 DETR 做目标检测任务既不需要proposal࿰…...
如何从第一性原则的原理分解数学问题
如何从第一性原则的原理分解数学问题 摘要:牛津大学入学考试题目展示了所有优秀数学家都使用的系统的第一原则推理,而GPT4仍然在这方面有困难 作者:Keith McNulty 我们中的许多人都熟悉直角三角形的边的规则。根据毕达哥拉斯定理,…...
实现strstr函数
一个字符串有没有在另一个字符串出现过 char* my_strstr(char* arr1, char* arr2) {char* cp;char* a1;char* a2;cp arr1;while (*cp){a1 cp;a2 arr2;while (*a1 *a2){a1;a2;}if (*a2 \0){return cp;}cp;}return NULL; } int main() {char arr1[] "abbbcdefgi"…...
C语言练习题解析(2)
💓博客主页:江池俊的博客⏩收录专栏:C语言刷题专栏👉专栏推荐:✅C语言初阶之路 ✅C语言进阶之路💻代码仓库:江池俊的代码仓库🎉欢迎大家点赞👍评论📝收藏⭐ 文…...
Element UI 表单验证规则动态失效问题
Element 版本:v2.15.3 问题背景 如下代码所示:有一个上传文件的 input 组件,在更新的时候,如果不上传文件表示不更新,如果要更新则点击 「重新上传」按钮将上传组件显示出来 <el-form ref"form" :mode…...
多线程并发篇
目录 1、线程生命周期 2、线程创建方式 3、Callable 与 Future 4、如何停止一个正在运行的线程 5、notify() 和 notifyAll() 的区别 6、sleep() 和 wait() 的区别 7、start() 和 run() 的区别 8、interrupted 和 isInterruptedd 的区别 9、CyclicBarrier 和 Count…...
pycharm-2023.1 closing project window stuck
pycharm-2023.1 closing project window stuck 问题描述 pycharm 切换项目/重启,一直卡在 closing project 原因分析 PyCharm 2023.1 issue - closing project window stuck (PyPIPackageUtil.lambda$parsePyPIListFromWeb) 解决方案 升级 pycharm 到 2023.3py…...
tkinter编写的打开csdn程序
目录 鬼畜tkinter简介程序代码解析现成总结鬼畜 看看你每次打开CSDN: 1.开机 2.打开浏览器 3.打开CSDN 4.等待 5.完成 我: 1.开机 2.点击%%%按钮 3.等待 4.完成 简单了不知道多少倍 上面的纯属鬼畜,下面正文!!! tkinter tkinter是一个用于创建图形用户界面(GUI)的Py…...
Vue3.2组件如何封装,以弹窗组件的封装为例
以前一直想,每次封装一个弹窗组件的时候,一直特别复杂,父传子,子传父,各种来回绕,来回修改。 一直想如何才能更加简化,但是一直没时间,今天终于抽时间出来封装了一下 本次封装简化…...
Vue知识系列(5)每天10个小知识点
目录 系列文章目录Vue知识系列(1)每天10个小知识点Vue知识系列(2)每天10个小知识点Vue知识系列(3)每天10个小知识点Vue知识系列(4)每天10个小知识点 知识点41.vue常用基本指令有哪些…...
Java基础题08——数组(查找下标所对应的值)
给定一个整数数组,输入一个值 n ,输出 n *在数组中的下标 **(*如果不存在输出 -1 ) 如:int[] arr {3, 2, 1, 4, 5}; 1 输入: 3 输出: 0 2. 输入: 6 输出: -1 int[] arr new int[]{3, 2, 1, 4,…...
LinkedList 源码分析
LinkedList 是一个基于双向链表实现的集合类。 LinkedList 插入和删除元素的时间复杂度 头部插入/删除:只需要修改头结点的指针即可完成插入/删除操作,因此时间复杂度为 O(1)。尾部插入/删除:只需要修改尾结点的指针即可完成插入/删除操作…...
跑步锻炼(蓝桥杯)
跑步锻练 题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 小蓝每天都锻炼身体。 正常情况下,小蓝每天跑 1 千米。如果某天是周一或者月初(1 日),为了激励自己&#x…...
【SLAM】视觉SLAM简介
【SLAM】视觉SLAM简介 task04 主要了解了SLAM的主流框架,清楚VSALM中间接法与直接法的主要区别在什么地方,其各自的优势是什么,了解前端与后端的关系是什么 1.什么是SLAM 2.VSALM中间接法与直接法的主要区别在什么地方,其各自的…...
Visual Studio2019报错
1- Visual Studio2019报错 错误 MSB8036 找不到 Windows SDK 版本 10.0.19041.0的解决方法 小伙伴们在更新到Visual Studio2019后编译项目时可能遇到过这个错误:“ 错误 MSB8036 找不到 Windows SDK 版本 10.0.19041.0的解决方法”,但是我们明明安装了该…...
ffplay源码解析-PacketQueue队列
包队列架构位置 对应结构体源码 MyAVPacketList typedef struct MyAVPacketList {AVPacket pkt; //解封装后的数据struct MyAVPacketList *next; //下一个节点int serial; //播放序列 } MyAVPacketList;PacketQueue typedef struct PacketQueue {MyAVPacketList …...
Flowable主要API介绍
1. ProcessEngine 负责与各个服务进行交互和管理流程的整个生命周期。 方法描述getName()close()startExecutors()启动所有流程引擎中的执行器。执行器用于处理流程实例的执行,在引擎启动时,执行器会自动运行并处理待办任务和定时任务。getRepositorySe…...
TensorFlow与pytorch特定版本虚拟环境的安装
TensorFlow与Python的版本对应,注意,一定要选择对应的版本,否则会让你非常痛苦,折腾很久搞不清楚原因。 建议使用国内镜像源安装 没有GPU后缀的就表示是CPU版本的,不加版本就是最新 pip install tensorflow -i https:…...
【SpringMVC】拦截器JSR303的使用
【SpringMVC】拦截器&JSR303的使用 1.1 什么是JSR3031.2 为什么使用JSR3031.3 常用注解1.4 Validated与Valid区别1.5 JSR快速入门1.5.2 配置校验规则# 1.5.3 入门案例二、拦截器2.1 什么是拦截器2.2 拦截器与过滤器2.3 应用场景2.4 拦截器快速入门2.5.拦截器链2.6登录案列权…...
Java - LambdaQueryWrapper 的常用方法
1、查看项目中是否导入mybatisPlus的jar包 2、servie 层和实现类要集成mybatisPlus service 继承IService<> 实现类中要继承IService的实现类ServiceImpl<mapper,实体类> 3、如果想要mapper中的一些方法,mapper 要继承BaseMapper<实体类> 4、在实…...
Selenium常见问题解析
1、元素定位失败: 在使用Selenium自动化测试时,最常见的问题之一是无法正确地定位元素,这可能导致后续操作失败。解决方法包括使用不同的定位方式(如xpath、CSS selector、id等),等待页面加载完全后再进行…...
【npm】npm私有库的使用-绑定
注册npm账户 输入基本信息 验证 收一次性验证码 登录 本地绑定 全局绑定了其他的私有库 若要在专门发包的项目中,发包到自己的私有库,需要在项目文件夹中创建一个.npmrc文件 创建文件 可以直接在项目目录下输入touch .npmrc创建文件 文件内容 regi…...
spring seccurity OAuth 2.0授权服务器工作流程
一、客户端配置:在configure(ClientDetailsServiceConfigurer clients)方法中,配置了一个客户端,包括客户端标识符、客户端秘密、授权类型、授权范围和令牌有效期等信息。这个客户端表示某个应用程序或服务,它将向授权服务器请求访…...
【Tensorflow 2.12 电影推荐系统之排序模型】
Tensorflow 2.12 电影推荐系统之排序模型 学习笔记导入相关模块准备数据加载数据数据预处理获取词汇表构建模型定义评分排序模型定义损失函数以及模型评估指标定义完整的评分排序模型训练和评估创建排序模型实例缓存数据训练评估预测导出和加载模型结尾学习笔记 Tensorflow 2.1…...
ROS2-IRON Ubuntu-22.0 源码下载失败解决方法 vcs import --input
ROS2 一.ROS2 IRON环境搭建1.设置系统字符集为UTF-82.将RO2 apt 库添加到系统中3.添加ROS2 GPG key4.添加ROS 2 的软件源安装开发工具 二.下载ROS2sh源代码编译 一.ROS2 IRON环境搭建 虚拟机系统:Ubuntu22.04 虚拟机:VMware-player-full-16.2.5-2090451…...
百度SEO优化技巧大揭秘(百度SEO优化策略,提升网站排名)
百度SEO优化策略介绍 作为全球最大的中文搜索引擎,百度的优化是各大网站的重中之重。首先,网站内容是关键,要确保内容原创、有价值、符合用户需求。其次,合理设置页面标题、关键词、描述等元素。还要注意网站结构,合理…...
JavaScript:二进制数组【笔记】
二进制数组【ArrayBuffer对象、Type的Array视图和DataView视图】JavaScript操作二进制数据的一个接口。 这些接口原本是和WebGL有关【WebGL是浏览器与显卡之间的通信接口】,为了满足JavaScript与显卡之间大量、实时数据交换,那么JavaScript和显卡之间的…...
华为云认证考试包含哪些内容?
华为云计算认证考试包含哪些内容?华为云计算认证涵盖了hcia、HCIP、HCIE三个级别的认证。HCIA云计算方向只要考一门笔试,考试覆盖基础通识知识、虚拟化FusionCompute、桌面云FusionAccess、云计算发展趋势共四大模块知识点,包括云计算概述、服…...
进程程序替换
✅<1>主页::我的代码爱吃辣 📃<2>知识讲解:Linux——进程替换 ☂️<3>开发环境:Centos7 💬<4>前言:我们创建子进程的目的是什么?想让子进程帮我们执行特定的…...
理解HTTPS/TLS/SSL(二)可视化TLS握手过程并解密加密数据
文章目录 WireShark抓包TLS握手过程Client HelloServer HelloEncryped Extenstions, Certificate, Certificate VerifyChange Ciper Spec, FinshedTLS 1.2和TLS 1.3的区别能不能在进一步? 解密WireShark中抓到的TLS包参考资料 上一篇文章已经在本地使用了生成自签名…...
mip手机网站模板/新闻发稿平台有哪些?
前段时间,进行USB拷贝方面的测试,积累了几个测试脚本,也可以进行磁盘间的拷贝,放在这里备份。 主要实现功能: 从一个存储设备拷贝数据到另一个位置,并比较两次拷贝的数据是否一致,并判断系统是…...
重庆网站建设 狐灵/软文营销的优势
#开始学习HTML,关于几种简单的标签(上) ##1.标签的意义和用途 标签的用途:我们学习网页制作时,常常会听到一个词,语义化。那么什么叫做语义化呢,说的通俗点就是:明白每个标签的用途&…...
徐州金网网站建设/中国营销传播网官网
自建数据集实现车标识别 使用YOLOv5 YOLOv3算法训练的模型 支持奔驰 宝马 奥迪 别克 丰田等常见车标 效果还是不错的,同时使用pyqt开发的简易可视化界面...
阅读网站怎样做/网络销售平台有哪些软件
前言 一名DBA的经历,做自己想做的,永不放弃,感谢生命中的贵人,我的师傅带我入行,感谢CSDN平台,让我分享更多DBA的干货 文章目录前言一、为什么要转行?1.DBA行业有哪些优势2.我转行的原因3.DBA我…...
成都网站建制作/重庆seo代理计费
当需要查询的条目数太多,一页显示不全,需要分页提交sql请求 语法: SELECT 查询列表 FROM 表 LIMIT offset,size;offset代表的是起始的条目索引,也可以省略,默认从0开始 size代表的是显示的条目数 案例:查询…...
网站怎么做自动回复的客服/市场调研报告word模板
Java 8 C# 6 Swift 变量 类型 变量名; 类型 变量名; var 变量名 : 类型; 变量(类型推断) N/A var 变量名初值; var 变量名初值; 常量 final 类型 常量名初值; readonly 类型 常量名初值; let 常量名 : 类型 初值; 基本类型 int short long byte doub…...