论文笔记 DETR

2023-09-20 16:45:02

detr

摘要和引言
  • 2020论文facebook
  • 不需要proposal,不需要基于anchor的先验知识(比如预训练的模型),也不需要NMS进行筛选,直接端到端不需要后处理
  • 利用transformer的全局建模能力,看成集合预测问题,不会输出很多冗余的框,直接端到端,不需要NMS,简化了训练和部署
  • NMS:非极大值抑制,抑制掉冗余的框
  • anchor:滑动窗口,需要手动设计特征并判断提取,会产生大量候选框;直到Faster RCNN出现直接使用RPN网络预测候选框,使用神经网络取代计算特征过程,直接使用神经网络输出anchor是否包含物体,anchor指在不同尺寸的特征图的每个点设置N个不同尺寸的框框。
  • 使用二分图匹配的方式替代冗余的框,解码器时使用了learned object queries,类似anchor了,并行输出检测框
  • 简单!只需支持CNN和transformer即可部署!
  • 同时尝试了分割任务,只需加一个分割头即可
  • 在这里插入图片描述
  • 图像通过CNN获取特征,然后拉直送入transformer,encoder进一步学习全局信息,每一个点与其他的点就有交互了,decoder出一系列预测框;其中transformer中还需要与object queries(限定出多少框,文中为100个框 )进行交互;最后使用二分图匹配计算loss。取决于物体数量,选出对应的独一无二的几个框后,再正常计算类别loss和bandingbox的loss。
  • 推理时前面相同,在生成一系列预测框后,卡一个输出的置信度,比如大于0.7的,被当作前景物体保留下来
  • 对大物体表现非常好,小物体上比较差,但之后deformable DETR出现,通过多尺度特征,解决了小物体问题,并解决了训练太慢的问题
相关工作
  • 第一部分讲下集合预测问题,和大家怎么解决的;第二部分讲了transformer为什么不是自回归
  • 之前两阶段的proposal,一阶段的anchor,和物体中心点;都和初始的猜测非常相关。后处理对预测结果非常重要
  • 之前有基于集合的目标函数,也有匈牙利算法二分图匹配,也有使用RNN进行编码解码,但由于没使用transformer,骨干网络输出的特征不够强,需要人工干预
详细模型
  1. 基于集合的目标函数:
    • 输出为固定的集合,输出N个框,然后进行二分图匹配,匈牙利算法是解决二分图匹配的最好算法
    • 使用scipy中的自带函数输入花费矩阵,输出最优排列,即为每个人分配最擅长的工作,最后的总花费最小,在本问题就是100个预测框与ground truth的几个框组成花费矩阵。
    • 花费就是为loss,使用函数计算分类loss和边界框loss组成花费,分类loss和边界框loss在同样的取值空间中,边界框loss没有只使用L1loss,而是加上了IOUloss,一起计算来减少框的大小对loss的影响
    • 这与proposal和anchor一个原理,不过强行一对一匹配;先算出最优匹配再算loss
      在这里插入图片描述
  2. DETR的结构
    • object queries:一个可学习的position embedding
    • FFN:全连接层
    • 在这里插入图片描述
实验
  • 与Faster RCNN的对比:
  • 在这里插入图片描述
  • encoder学到了什么?可以把物体分割的很好,可视化:
  • 在这里插入图片描述
  • 实验了transformer为3、6、9层的不同效果:
  • 在这里插入图片描述
  • deconder学到了什么?对边缘极值点进行了学习
  • 在这里插入图片描述
  • object queries学到了什么?自学了适应数据集的anchor,

在这里插入图片描述

更多推荐

Redis command timed out 处理(InsCode AI 创作助手)

问题详情:redis命令超时异常Rediscommandtimedout;nestedexceptionisio.lettuce.core.RedisCommandTimeoutException:Commandtimedoutafter3second(s)导致Redis命令超时的可能原因Redis服务器负载高:Red

【网络安全】黑客自学笔记

1️⃣前言🚀作为一个合格的网络安全工程师,应该做到攻守兼备,毕竟知己知彼,才能百战百胜。计算机各领域的知识水平决定你渗透水平的上限🚀【1】比如:你编程水平高,那你在代码审计的时候就会比别人强,写出的漏洞利用工具就会比别人的好用;【2】比如:你数据库知识水平高,那你在进行SQL注入攻击的时候,你就可以写出更多更好的S

GFS分布式存储

glusterFS简介GFS是一个分布式文件系统,只在扩展存储容量,提高性能,并且通过多个互联网络的存储节点的数据进行冗余,以确保数据的可用性和一致性GFS由三个部分组成:存储服务器客户端以及FNS/Samba存储网关组成无元数据服务器:就是保存数据的地方glusterFS特点扩展性和高性能:分布式的特性高可用性:冗余

又一个全新编程语言,诞生了!

最近,编程领域又一个黑马忽然冲进了开发者们的视野并正式开放下载。它的名字叫Mojo,相信有不少小伙伴最近也看到了。Mojo是为AI开发者所准备的编程语言,语法有点像Python。根据Mojo官网的描述,它结合了Python的易用性和C语言的高性能,解锁了AI硬件的可编程性和AI模型的可扩展性。Mojo看起来好像挺能打,

使用Linkerd实现流量管理:学习如何使用Linkerd的路由规则来实现流量的动态控制

🌷🍁博主猫头虎带您GotoNewWorld.✨🍁🦄博客首页——猫头虎的博客🎐🐳《面试题大全专栏》文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺🌊《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐🌊《100天精通Golang(基础入门篇)》学会Golang语言,畅玩云原生,走遍大

开学季哪个牌子的电容笔好?ipad2023手写笔推荐

到底是用苹果原装的电容笔,还是用平替的电容笔,这要根据自己的需要来决定,比如经常用在画画上,可以选择苹果原装笔;如果你一天里用来写东西的时间多于用来画画的时间,那你就该考虑一下,买一支更便宜的平替电容笔了。小编整理了一些很实用的电容笔,大家可以参考下哦!一、西圣电容笔官网价格:169元充电方式:独立充电仓西圣虽然低调,

经典算法-----约瑟夫问题(C语言)

目录前言故事背景约瑟夫问题环形链表解决数组解决前言今天我们来玩一个有意思的题目,也就是约瑟夫问题,这个问题出自于欧洲中世纪的一个故事,下面我们就去通过编程的方式来解决这个有趣的问题,一起来看看吧!故事背景据说著名犹太历史学家Josephus有过以下的故事:在罗马人占领乔塔帕特后,39个犹太人与Josephus及他的朋友

《cpolar内网穿透》外网SSH远程连接linux(CentOS)服务器

本次教程我们来实现如何在外公网环境下,SSH远程连接家里/公司的LinuxCentOS服务器,无需公网IP,也不需要设置路由器。视频教程[video(video-jrpesBrv-1680147672481)(type-csdn)(url-CSDN直播https://live-file.csdnimg.cn/relea

【Java和C++】什么是多态

2023年9月20日,周三上午今天写作业的时候遇到了多态,但我感觉自己多多态还是不够理解,于是又深入研究了一下。不过,我觉得我写的这篇文章还不够完整,比如说没提到什么时候适合使用多态,以后有空再写上吧。目录什么是多态Java方法重写(MethodOverriding)接口(Interface)抽象类(AbstractC

三、支持向量机算法(SVC,Support Vector Classification)(有监督学习)

支持向量机SupportVectorMachine,就是所谓的SVM,它指的是一系列的机器学习算法,根据解决问题的不同,分为SVC(分类)和SVR(回归)SVC,SupportVectorClassification,其本质也是支持向量机supportvector,只不过是用于分类classification任务SVR

【实战】Streamlit+ECharts绘制多图表可视化大屏,超级实用

实战项目背景介绍当我们提到数据可视化,常常会想到众多的工具和库,如Matplotlib、Seaborn甚至于D3.js等。但是,有一个特定的组合正在快速走红:Streamlit和ECharts。Streamlit,作为一个轻量级的Python工具,允许数据科学家和工程师轻而易举地创建交互式的web应用。而ECharts

热文推荐