使用transformers进行端到端的目标检测

news2024/10/7 4:35:30

目录

目标检测的旧方法

使用transformers进行端到端的目标检测

抛去了目标检测旧的方法

网络架构

Transformer encoder

Transformers and Parallel Decoding

注意力起到的作用

使用Hungarian algorithm算法完成匹配

在使用transformers的端到端目标检测中,匈牙利算法被应用于处理目标检测的预测结果和真实标签之间的匹配问题。该算法帮助确定预测框与真实框之间的最佳匹配,并将它们关联起来

代码实现


目标检测的旧方法

(1)、fast-rcnn系列,各种proposal方法

(2)、YOLO系列,都是基于anchor这种方式

(3)、NMS那也一定用的上,输出结果肯定要过滤一下

使用transformers进行端到端的目标检测

抛去了目标检测旧的方法

“Our approach streamlines the detection pipeline, effectively removing the need for many hand-designed components like a non-maximum suppression procedure or anchor generation that explicitly encode our prior knowledge about the task.” (Carion 等, 2020, p. 1)

网络架构

“The overall DETR architecture is surprisingly simple and depicted in Figure 2. It contains three main components, which we describe below: a CNN backbone to extract a compact feature representation, an encoder-decoder transformer, and a simple feed forward network (FFN) that makes the final detection prediction.” (Carion 等, 2020, p. 6)

Transformer encoder

“First, a 1x1 convolution reduces the channel dimension of the high-level activation map f from C to a smaller dimension d. creating a new feature map z0 ∈ Rd×H×W . The encoder expects a sequence as input, hence we collapse the spatial dimensions of z0 into one dimension, resulting in a d×HW feature map. Each encoder layer has a standard architecture and consists of a multi-head self-attention module and a feed forward network (FFN). Since the transformer architecture is permutation-invariant, we supplement it with fixed positional encodings [31,3] that are added to the input of each attention layer. We defer to the supplementary material the detailed definition of the architecture, which follows the one described in [47].” (Carion 等, 2020, p. 6)

首先降低通道数,将得到的三维数据变成一维数据,变成序列数据,然后输入到编码器中

也就是说Encoder完成的任务是得到各个目标的注意力结果(只关注自己需要关注的部分),准备好特征,等待解码器来选

Transformers and Parallel Decoding

“We also combine transformers and parallel decoding for their suitable trade-off between computational cost and the ability to perform the global computations required for set prediction” (Carion 等, 2020, p. 4) 🔤我们还将变压器和并行解码结合起来,以便在计算成本和执行集合预测所需的全局计算能力之间进行适当的权衡🔤

object queries是核心,让它学会如何从原始特征中找到物体的位置

注意力起到的作用

即使目标物体之间遮挡很严重,照样可以学习(注意颜色)

所以使用注意力机制可以很好地解决目标重叠问题

使用Hungarian algorithm算法完成匹配

匈牙利算法(Hungarian algorithm),也被称为Kuhn-Munkres算法,是一种用于解决最佳分配问题的优化算法。它被广泛应用于任务分配、资源分配、最大化利润等问题。

算法的主要目标是在一个二维矩阵中找到一组元素,使得每一行和每一列中的元素都只能在选定的组合中出现一次,并且这组元素的和达到最大或最小。

以下是匈牙利算法的详细步骤:

1. 创建原始二维矩阵,其中包含待分配任务/资源的成本或收益。

2. 对于二维矩阵的每一行,找到最小值,并在每一行中将该最小值减去。

3. 对于二维矩阵的每一列,找到最小值,并在每一列中将该最小值减去。

4. 遍历二维矩阵中的每个零元素,将每个零元素的行和列标记为“已访问”。

5. 如果找到一组已访问的行和列,使得它们的零元素形成一个完美匹配(即每一行和每一列只有一个标记的零元素),则此时已找到最佳的分配。如果找不到,将进行下一步。

6. 标记未访问的行。

7. 将已访问的列中的零元素关联到已标记的行,并尝试通过调整标记来形成更多的完美匹配。

8. 重复步骤5-7,直到找到最佳的分配。

通过执行以上步骤,匈牙利算法能够找到最佳任务分配或资源分配,使得成本最小化或收益最大化

在使用transformers的端到端目标检测中,匈牙利算法被应用于处理目标检测的预测结果和真实标签之间的匹配问题。该算法帮助确定预测框与真实框之间的最佳匹配,并将它们关联起来

1. 首先,通过目标检测网络对输入图像进行前向传播,得到预测框的边界框坐标和类别概率。

2. 接下来,我们获取真实标签中的边界框信息和类别。

3. 创建一个二维矩阵,其中的行表示预测框,列表示真实框,矩阵的每个元素表示两个框之间的匹配得分。匹配得分可以根据预测框与真实框之间的IoU(交并比)计算得到。

4. 对于矩阵的每一行,使用匈牙利算法找到与该行对应的最佳匹配,即在每一行找到与当前预测框具有最大IoU的真实框,并将其匹配得分记录下来。

5. 接着,在矩阵的每一列中,找到与该列对应的最佳匹配,即在每一列找到与当前真实框具有最大IoU的预测框,并将其匹配得分记录下来。

6. 然后,根据前面找到的最佳匹配,使用最小权匹配算法将矩阵中的其余元素设置为负无穷。这样可以确保每个预测框和真实框都只被匹配一次。

7. 最后,根据匈牙利算法得到的最佳匹配,将预测框和真实框进行关联,形成最终的目标检测结果。匹配得分较高的预测框和真实框之间建立关联,从而得到目标检测中的最佳匹配。

通过使用匈牙利算法,我们可以在端到端的目标检测中得到最佳的预测框与真实框的匹配,提高检测算法的准确性和鲁棒性。这种匹配方式可以将预测框与真实框进行关联,进而进行目标的检测和识别

代码实现

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

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

相关文章

正确理解redux Toolkits中createSlice的action.payload

使用redux Toolkits中的createSlice编写extraReducers经常看到使用action.payload来更新state状态值: 那么action.payload指的到底是什么? 让我们看看action的定义部分: 注意: action.payload不是上面ajax请求的返回内容&#x…

C#求100-999之间的水仙花数,你知道多少个?让我们一起来探索!

目录 背景: 扩展: 水仙花数例子: 效果展示:​ 总结: 背景: 水仙花数(Narcissistic number)也被称为超完全数字不变数(pluperfect digital invariant, PPDI)、自恋数、自幂数、阿姆斯壮数或阿姆斯特朗数(Armstrong…

335. 路径交叉-数学归纳法(力扣目前c语言)

335. 路径交叉-数学归纳法 给你一个整数数组 distance 。 从 X-Y 平面上的点 (0,0) 开始,先向北移动 distance[0] 米,然后向西移动 distance[1] 米,向南移动 distance[2] 米,向东移动 distance[3] 米,持续移动。也就…

移动端H5封装一个 ScrollList 横向滚动列表组件,实现向左滑动

效果&#xff1a; 1.封装组件&#xff1a; <template><div class"scroll-list"><divclass"scroll-list-content":style"{ background, color, fontSize: size }"ref"scrollListContent"><div class"scroll…

子序列问题集合

子序列问题 最长公共子序列&#xff1a;最长上升子序列&#xff08;要输出序列&#xff0c;和最大长度&#xff09;1.dp2.贪心二分 导弹拦截 &#xff08;最长上升/下降子序列长度&#xff09; 最长公共子序列&#xff1a; class Solution { public://dfs(i,j)代表s串i前字符和…

C语言自定义类型详解(1)结构体知识汇总

本篇概要 本篇主要讲述C语言结构体的相关知识&#xff0c;包括结构体的基本声明&#xff0c;结构体的匿名结构&#xff0c;结构体的自引用&#xff0c;结构体变量的定义和初始化以及结构体的内存对齐等相关知识。 文章目录 本篇概要1.结构体1.1结构体的基本声明1.2结构体的特殊…

应用程序转换工具Unite mac中文版软件特点

Unite mac是一款Mac平台上的应用程序转换工具&#xff0c;它可以将任何网站或Web应用程序转换成本地应用程序&#xff0c;以便更方便地访问和使用。 Unite mac软件特点 网站转应用程序&#xff1a;该软件可以将任何网站或Web应用程序转换成本地应用程序&#xff0c;方便用户更…

AI创作工具-AI创作工具技术解读

创作是广告、文章、小说、社交媒体内容等各个领域的关键&#xff0c;但它通常需要创作者花费大量时间和精力&#xff0c;思考、编写和编辑内容。有时候&#xff0c;创作者可能面临写作灵感枯竭、时间紧迫或需要大量内容的情况。 添加图片注释&#xff0c;不超过 140 字&#xf…

Java集合--Collection、Map、List、Set、Iterator、Collections工具类

文章目录 一、Java集合框架概述二、Collection接口方法2.1、Collection子接口一&#xff1a;List2.1.1、ArrayLIst的源码分析2.1.2、LinkedList的源码分析2.1.3、List接口中的常用方法 2.2、Collection子接口二&#xff1a;Set2.2.1、Set接口的无序性2.2.2、添加元素的过程&…

Leetcode---363周赛

题目列表 2859. 计算 K 置位下标对应元素的和 2860. 让所有学生保持开心的分组方法数 2861. 最大合金数 2862. 完全子集的最大元素和 一、计算k置为下标对应元素的和 简单题&#xff0c;直接暴力模拟&#xff0c;代码如下 class Solution { public:int sumIndicesWithKS…

从零开始学习CTF,看完不信你学不会!

一、CTF简介 简介 中文一般译作夺旗赛&#xff08;对大部分新手也可以叫签到赛&#xff09;&#xff0c;在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式 CTF起源于1996年DEFCON全球黑客大会&#xff0c;以代替之前黑客们通过互相发起真实攻击进行技术…

Linux——文件系统

✅<1>主页&#xff1a;&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;Linux——文件系统 ☂️<3>开发环境&#xff1a;Centos7 &#x1f4ac;<4>前言&#xff1a;上期我们了解了文件在内存中得组织方式&#xff0c;那么文件在磁盘中…

ElasticSerach+MongoDB:实现文章检索历史功能

实现目标&#xff1a; 展示用户的搜索记录10条&#xff0c;按照搜索关键词的时间倒序可以删除搜索记录保存历史记录&#xff0c;保存10条&#xff0c;多余的则删除最久的历史记录 数据库的选择&#xff1a; 用户的搜索记录&#xff0c;需要给每一个用户都保存一份&#xff0c;数…

第3讲:vue路由安装配置,带参路由,子路由配置及应用

路由的安装与基本使用 vue-router是Vue官方的路由插件,它和Vue是深度集成,适用于构建单页面应用 vue-router的安装 //vue2路由配置npm install vue-router@3.0.2 或 cnpm install vue-router@3.0.2在具体应用的开发中我们一般会在src目录下新建一个名为router的目录,并在r…

加速乐源码(golang版本)

一、分析 分析过程网上有很多,这里只说个大概,主要是提供golang源码 请求网站,发现前两次请求都会返回521,第三次请求成功,说明前两次请求肯定是干了什么事情;使用接口请求工具模拟请求分析该过程 使用postman工具请求 a. 第一次请求会在响应头返回jsluid,返回内容中拼接…

滚动轴承 调心球轴承 外形尺寸

声明 本文是学习GB-T 281-2013 滚动轴承 调心球轴承 外形尺寸. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了符合 GB/T 273.3—1999 的调心球轴承及带紧定套的调心球轴承(以下简称轴承)的 外形尺寸。 本标准适用于调心球轴承…

【数字IC/FPGA】基于握手的数据广播

简介 本文介绍了一种基于握手协议的数据广播方式。事实上,该场景可以简化为模块的一对多握手,并且下游的各个模块可以独立的完成握手(与之相对的是下游模块一起完成握手,相比之下,下游各个模块可以独立完成握手显然更加普适、灵活)。 下图展示了模块一对多握手的示意图:…

阿里云服务器经济型e实例详细介绍_e系列性能价格表

阿里云服务器ECS推出经济型e系列&#xff0c;经济型e实例是阿里云面向个人开发者、学生、小微企业&#xff0c;在中小型网站建设、开发测试、轻量级应用等场景推出的全新入门级云服务器&#xff0c;CPU采用Intel Xeon Platinum架构处理器&#xff0c;支持1:1、1:2、1:4多种处理…

GLTF编辑器如何合并相同材质的Mesh

1、什么是模型材质合批 模型材质合批是一种技术手段&#xff0c;主要用于优化渲染性能和提高图形应用程序的帧率。它通过将多个模型的材质进行合并&#xff0c;从而减少渲染时的绘制调用次数。 在计算机图形学中&#xff0c;每个模型都有一个或多个材质&#xff0c;这些材质定义…

【教程】视频汇聚/视频监控管理平台EasyCVR录像存储功能如何优化?具体步骤是什么?

视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同&#xff0c;支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。视频监控系统EasyCVR拓展性强&#xff0c;视频能力丰富&#xff0c;具体可实现视频监控直播、视频轮播、视频录像、云存储、…