【目标检测】TOOD:Task-aligned One-stage Object Detection

news2024/11/24 13:52:58

TOOD:Task-aligned One-stage Object Detection

论文题目:《TOOD:Task-aligned One-stage Object Detection》——任务对齐的单阶段目标检测
论文地址: https://arxiv.org/abs/2108.07755
论文代码: https://github.com/fcjian/TOOD

1、前言

目标检测存在的问题
(1)分类和定位是独立的,可能出现分类得分高的预测位置不准,位置准的分类得分不高的情况。
(2)样本/标签分配与任务无关,用于分类和定位的最佳锚点往往是不一致的,最佳定位锚点的空间位置可能不在对象的中心。
解决方法
作者提出任务对齐的单阶段目标检测TOOD来解决上述问题,TOOD包括两个部分:
1)Task-aligned Head(T-Head):增强分类和定位两个任务之间的交互作用。
2)Task Alignment Learning(TAL):包含以下两个方面
(1)样本/标签分配策略:在训练过程中,通过计算每个锚点上的任务对齐程度来收集训练样本(正或负);
(2)任务对齐的损失函数:在训练过程中,逐步统一了预测分类和定位的最佳锚点。因此,在推理时,可以保留一个分类得分最高并共同具有最精确定位的边界框。

2、TOOD的整体流程

(1)首先,T-head对FPN features的分类和定位进行预测;
(2)然后,这些预测被用于计算每个锚点上的任务对齐度量(task alignment metric)。其次,TAL根据任务对齐度量为T-Head计算出任务对齐信号(任务对齐信号度量两个预测之间的对齐程度);
(3)最后,在反向传播过程中,T-head利用TAL计算出的任务对齐信号,自动调整分类概率和定位预测。
在这里插入图片描述
注意:T-head是个即插即用的模块,没有TAL也可以正常工作

3、Task-aligned Head

T-Head有一个简单的特征提取器和两个任务对齐的预测器(TAP)。
在这里插入图片描述

3.1 特征提取器

为了增强分类和定位之间的交互作用,使用特征提取器从多个卷积层中学习任务交互特征堆栈,如图b中的蓝色部分所示。这种设计不仅促进了任务的交互,而且为两个任务提供了多尺度有效感受野的多层次特征。
特征提取器使用N个连续的经过激活函数的卷积层来计算任务交互特征:
在这里插入图片描述
在这里插入图片描述

4、Task-aligned Predictor(TAP)

在这里插入图片描述

4.1 layer attention

由于任务交互特征会在两个任务之间产生一定的特征冲突,而分类和定位这两个任务需要不同的特征,所以作者提出利用层注意机制(layer attention)来进行任务分解,解决该问题。
1)w是由跨层任务交互特征计算出来的,并且能够捕获各层之间的依赖关系:
在这里插入图片描述
在这里插入图片描述2)对每个分类任务或定位任务分别计算特定任务的特征:
在这里插入图片描述
在这里插入图片描述3)从每个Xtask中预测分类或定位的结果:
在这里插入图片描述
在这里插入图片描述

4.2 Prediction alignment

通过使用计算出的任务交互特征共同考虑两个任务来对齐这两个预测。(注意:这两个任务的对齐方法不同,需要分别执行)
4)分类预测:使用空间概率图M∈RH×W×1来调整分类预测
在这里插入图片描述
在这里插入图片描述
4)定位预测:使用空间偏移量图O∈RH×W×8来调整每个位置上的bbox进行
在这里插入图片描述
在这里插入图片描述
注意:定位预测的等式是通过双线性插值来实现的,由于B的通道维数很小,其计算开销可以忽略不计。值得注意的是,每个通道的偏移量都是独立学习的,也就是说对象的每个边界线都有自己的学习偏移量。这就使得四条边界线能进行更准确的预测,因为每个边界线都是独立从离它们最近的锚点学习的。所以,本文的方法不仅仅能够对齐分类和定位的任务,还能提升定位准确性。

4.3 alignment maps

M和O是自动从任务交互特征堆栈Xinter中学习到的,学习的方式是通过TAL学习:
在这里插入图片描述
在这里插入图片描述

5、Task Alignment Learning

5.1 样本/标签分配策略

(1)首先,使用类别分数和IoU的高次幂乘积的组合来衡量任务对齐的程度(task alignment metric): 在这里插入图片描述在这里插入图片描述 (2)然后,选取t值最大的m个锚点作为正样本,其余的锚点作为负样本。
作者做实验得出,m=13、α=1、β=6

5.2 任务对齐的损失函数

在这里插入图片描述
分类任务的损失函数
类似于Focal loss。其中,t ̂是t的标准化,t ̂的最大值等于最大的IoU值;i是正样本中第i个anchor;j是负样本中第j个anchor;γ是平衡系数,γ=2。
在这里插入图片描述
定位任务的损失函数
对齐良好(well-aligned)的anchor有较大的t值,该预测边界框通常具有高的类别分数和精确的定位,这样的边界框更有可能在NMS期间被保留。所以t也可以通过给loss加权来选择高质量的bbox。
其中,b是预测边界框;b ̂是对应的真实边界框。
在这里插入图片描述

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

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

相关文章

优秀的 Verilog/FPGA开源项目介绍(三十六)-RISC-V(新增一)

关于RISC-V的二三事risc-v官网❝https://riscv.org/RISC-V(跟我读:“risk----------------five”)是一个基于精简指令集(RISC)原则的开源指令集架构(ISA)。这里要明确两个概念:指令集…

基于VC++的3D地形绘制与纹理贴图

前言随着地理信息系统产业的发展,三维产品也在生活中处处吸引着我们的眼球。作为数字城市的核心内容,城市模型的构建成为了目前研究的热点。OpenGL是独立于操作系统和硬件环境的三维图形库,其为实现逼真的三维绘制效果和建立交互的三维场景提…

ES6 课程概述④

文章目录6-1. 对象解构什么是解构在解构中使用默认值非同名属性解构7-2. 共享符号7-3. 知名(公共、具名)符号[回顾]事件循环8-1. 事件和回调函数的缺陷8-2. 异步处理的通用模型8-3. Promise 的基本使用8-4. Promise 的串联8-5. Promise 的其他 api原型成…

通关手册 | 祝我通关成功!!!

Framework of MLLoss on training data1. large1.1 Model Bias1.2 Optimization2. smallLoss on testing data2.1 large2.1.1 overfitting2.1.2 mismatch2.2 small通关手册:祝我通关成功!!! Loss on training data 1. large 1.1…

Vue--》Vue3生命周期以及其它组合API的讲解

目录 生命周期 自定义hook函数 toRef shallowReactive与shallowRef readonly与shallReadonly toRaw与markRaw 生命周期 Vue3.0中可以继续使用Vue2.x中的生命周期钩子,但是有两个被更名:Vue2中的beforeDestroy改名为:beforeUnmount&…

【数字孪生百科】可视化图表知识科普——Pareto图(Pareto Chart)

简介Pareto图(Pareto Chart)又称帕累托图、排列图,是一种特殊类型的条形图。图中标绘的值是按照事件发生的频率排序而成,显示由于各种原因引起的缺陷数量或不一致的排列顺序。Pareto图是根据 Vilfredo Pareto 命名的,他…

Go语言设计与实现 --Goroutine

Goroutine是GMP模型中的G,是属于用户态的线程,由Go runtime管理,而不是操作系统管理。 数据结构 type g struct {goid int64 // 唯一的goroutine的IDsched gobuf // goroutine切换时,用于保存g的上下文stack stack // 栈gopc…

Android Studio调用so库中方法

一、JNI规范so库调用 在 Android Studio生成自己的so库 中已经创建了自己的so库,这是一个JNI规范的so库,可以直接将so库放到libs中,并按照上面文章中MainActivity中的调用方法使用。 1、build.gradle(app)配置 andro…

SHELL脚本学习 --- 第六次作业(正则和sed)

SHELL脚本学习 — 第六次作业 思路: 作业1: 1,正则匹配h或H即可 2,sh$匹配以sh结尾 3,使用[[:space:]]匹配空格,[^[:space:]]匹配非空格 4,^to开头,中间.匹配任意字符0次或多次&…

Java一学就会系列:介绍与第一个java程序

系列文章目录 java环境-jdk环境安装与配置(jdk1.8) 文章目录系列文章目录前言一、JAVA是什么?二、环境安装三、开发工具1. Eclipse(推荐)2. IntelliJ IDEA (收费)四、第一个Java程序总结前言 …

搭建Django项目——实现简单的API访问

1、创建Django项目 打开pycharm,新建Django项目,可以选择一个虚拟环境 建完之后目录如下: 2、创建应用,我这里命名为demo 在命令行执行 python manage.py startapp demo执行之后,会发现项目目录下多了demo文件夹…

Linux小黑板(6):软硬链接

"飞吧,去寻觅红色的流星!"一、软硬链接简介软链接:软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。软链接硬链接:硬链接(hard link,也称链接&…

美创科技深度参编,中国信通院《数据安全治理实践指南(2.0)》发布

1月5日,由中国信息通信研究院、中国通信标准化协会指导,中国通信标准化协会大数据技术标准推进委员会主办,数据安全推进计划承办的第二届数据安全治理峰会成功召开,多项数据安全研究重要成果发布。会上,美创科技参与编…

MyBatis中数组套数组的格式

数组套数组的形式写法 1.dao层 List<Regulation> queryAllRegulations(); 配置 <resultMap id"RegulationResultMap" type"com.elfsack.cs.dto.allot.Regulation"><result column"shop_code" property"shopCode" /…

ARM32平台系统crash(系统崩溃) 问题定位的一种解决方法

说明 分享一种crash问题定位的一种解决方法&#xff0c;仅供参考。 ARM32平台上通过错误使用内存&#xff0c;触发系统异常&#xff0c;系统崩溃。系统异常被挂起后&#xff0c;能在串口中看到异常调用栈打印信息和关键寄存器信息。 如下所示&#xff0c;excType表示异常类…

上传文件前后端处理【vue3 + springboot】

前端 1.处理modal框 <template><n-modalv-model:show"modalVisible"preset"card":title"title"class"w-700px"><n-space class"w-full pt-16px" :size"24" justify"end"><n-but…

python数据分析:采集分析岗位数据,看看薪资的高低都受什么因素影响呢

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 又到了学Python时刻~ 在我们学习的时候,通常会产生疑问:这个行业前景好不好呢? 今天我们就用python的数据分析这个就业方向来举例 看一下都有哪些因素影响了薪资的高低呢&#xff1f; 数据采集 模块使用: reques…

这些js原型及原型链面试题你能做对几道

一、前言 在面试过程中&#xff0c;频频被原型相关知识问住&#xff0c;每次回答都支支吾吾。后来有家非常心仪的公司&#xff0c;在二面时&#xff0c;果不其然&#xff0c;又问原型了&#xff01; 我痛下决心用了两天时间钻研了下原型&#xff0c;弄明白后发现世界都明亮了…

Spark 在 KaiwuDB 中的应用与实践

线上沙龙-技术流第 24 期营业啦01月12日&#xff08;周四&#xff09;19:30开务数据库 - B站直播间当数据库面对大量数据复杂 OLAP 查询时&#xff0c;性能出现局限性&#xff0c;无法满足用户 AP 方面的高性能要求。为此&#xff0c;KaiwuDB 推出了此项解决方案&#xff1a;借…

【NI Multisim 14.0原理图环境设置——电路图属性设置】

目录 序言 一、电路图属性设置 &#x1f34a;1.设置对象可见性 &#x1f34a;2.设置图纸颜色 &#x1f34a;3.设置图纸尺寸 &#x1f34a;4.设置图纸方向 &#x1f34a;5.设置图纸单位 &#x1f34a;6.设置图纸网格点 &#x1f34a;7.设置图纸边框 &#x1f34a;8. 设…