当前位置: 首页 > news >正文

无锚框原理 TOOD:Task-aligned One-stage Object Detection

无锚框原理 TOOD:Task-aligned One-stage Object Detection

  • 一 摘要
  • 二 引言
    • TOOD设计
  • 三 具体设计
    • Task-aligned Head
      • 任务对齐的预测器 TAP
      • 预测对齐
    • TAL 任务对齐学习
      • Task-aligned Sample Assignment
      • 多任务损失

一 摘要

一阶段目标检测通常通过优化两个子任务来实现:对象分类和定位,使用具有两个平行分支的头部,这可能导致两个任务之间预测的空间对齐程度不一致。
提出了一种“任务对齐一阶段目标检测”方法,以学习方式明确地对齐这两个任务。首先设计了一种新颖的任务对齐头(T-head),它在学习任务交互和任务特定特征之间提供了更好的平衡,也更灵活地通过任务对齐预测器学习对齐。
其次,我们提出了任务对齐学习(TAL),通过设计的样本分配方案和任务对齐损失,在训练过程中明确地拉近(甚至统一)两个任务的最优锚点。具有更少的参数和FLOPs

二 引言

目标检测在从自然图像中定位和识别感兴趣的物体,是计算机视觉中一项基础而具有挑战性的任务。通常采用多任务学习的方式来进行问题建模,通过同时优化目标分类和定位。分类任务旨在学习着重于物体关键或显著部分的区分特征,而定位任务则在准确地定位整个物体及其边界,由于分类和定位的学习机制不同,通过两个独立分支进行预测时,所学习到的特征的空间分布可能不同,导致一定程度的错位。

一阶段物体检测器通过专注于物体中心,试图预测两个单独任务的一致输出结果,他们假设物体中心的锚点更有可能为分类和定位提供更准确的预测。

例:FCOS和ATSS都使用了一个中心度分支来增强从靠近物体中心的锚点预测的分类分数,并为相应锚点的定位损失分配更大的权重。此外,FoveaBox将物体内预定义的中心区域中的锚点视为正样本。

但是 :有缺陷

  • 分类和定位的独立性。最近的一阶段检测器通过使用两个独立的分支(也就是头部)并行进行对象分类和定位。这样的两分支设计可能导致两个任务之间缺乏交互,从而在执行他们时导致预测不一致。
  • 无任务特异性的样本分配。大多数无锚点检测器使用基于几何的分配方案,为了分类和定位都会选择靠近对象中心的锚点,而基于锚点的检测器通常通过计算锚框和真值之间的IOU来分配锚框。然而,用于分类和定位的最佳锚点往往不一致,并且可能根据对象的形状和特征而有很大的变化。广泛使用的样本分配方案是无任务特异性的,因此很难对这两个任务进行准确而一致的预测。在非极大值抑制期间,一个精确的边界框可能会被一个不太准确的边界框所抑制。

TOOD设计

  • 任务对齐头部。与传统的单阶段目标检测中使用两个并行的分支分别实现分类和定位不同,我们设计了一个任务对齐头部(T-head)来增强两个任务之间的交互,这使得这两个任务能跟协作的工作,从而使他们的预测更加准确对齐。他通过计算任务交互特征,并通过一种新颖的任务对齐预测器(TAP)进行预测 ,然后根据任务对齐学习提供的学习信号,它根据这两个预测的空间分布进行对齐。
  • 任务对齐学习。为了进一步克服不对齐问题,我们提出了任务对齐学习(TAL),来明确地拉近两个任务的最优锚点,他通过设计样本分配方案和任务对齐损失来完成。样本分配通过计算每个锚点的任务对齐程度来收集训练样本(即正负样本),而任务对齐损失在训练过程中逐渐统一用于预测分类和定位的最佳锚点。因此在推理阶段,可以保留具有高分类分数并共同具有精确定位的边界框

三 具体设计

T-head和TAL可以协同工作,改进两个任务的对齐。具体而言,T-head首先对FPN特征进行分类和定位预测,然后TAL根据一个新的任务对齐度量计算任务对齐信号。该度量衡量了两个预测之间的对齐程度。最后,在方向传播过程中,T-head根据从TAL计算得到的学习信号自动调整其分类概率和定位预测。请添加图片描述

Task-aligned Head

设计一个高效的头部结构,以改进一阶检测器中头部的传统设计。在这项工作中,我们通过考虑两个方面来实现这一步目标:

  • 增加两个任务之间的交互
  • 增强检测器学习对齐的能力
    TAP包括一个简单的特征提取器和两个任务对齐预测器
    请添加图片描述
    请添加图片描述
    为了增强分类和定位之间的交互,我们使用一个特征提取器从多个卷积层中学习一个堆叠的任务交互特征,如上图蓝色部分。这个设计不仅有助于任务之间的交互,还为这两个任务提供了多层次的特征和多尺度的有效感受野。
    请添加图片描述

任务对齐的预测器 TAP

我们在计算的任务交互特征上同时进行目标分类和定位,这两个任务能够很好地感知彼此的状态。然而,由于单分支的设计,任务交互特征不可避免地会在两个不同任务之间引入一定程度的特征冲突,在这种也有所讨论,直观上,目标分类和定位的目标不同,因此关注不同类型的特征(如:不同的层次或感受野)。因此,我们提出了一种层级注意力机制,通过在层级上动态计算这些任务特定的特征,鼓励任务的分解。请添加图片描述
请添加图片描述

预测对齐

在预测步骤中,我们进一步通过调整两个预测的空间分布P和B明确地对齐这两个任务。与以往的研究不同,以往的研究使用一个中心性的分支或一个IOU分支,这些方法只能基于分类特征或定位特征之一来调整分类预测,我们通过考虑使用计算出的任务交互特征来同时对齐这两个预测任务,值得注意的是,我们在这两个任务上分别执行对齐方法。
请添加图片描述
请添加图片描述
请添加图片描述
偏移量独立地学习到每个通道,意味着物体的每个边界都有自己独立学习的偏移量。这使得四个边界能够更准确地预测,因为,每个边界都可以从其附近最精确的锚点中单独学习,因此,我们的方法不仅可以对齐两个任务,还可以通过每个边界识别一个精确的锚点来提高定位的精度。
请添加图片描述
请添加图片描述
其中Conv1和Conv3是用于将维的两个1X1卷积层,M和O的学习是通过使用提出的任务对齐学习(TAL)来完成的

TAL 任务对齐学习

我们进一步引入了任务对齐学习,用于指导我们的T-head生成任务对齐的预测。TAL与之前的方法在两个方面有所不同,首先,从任务对齐的角度来看,它根据设计的度量标准动态选择高质量的锚点。其次,他同时考虑了锚点分配和权重分配,它包括一种样本分配策略和专门用于对齐两个任务的新损失函数。

Task-aligned Sample Assignment

为了应对NMS,一个训练实例的锚点分配应该满足以下规则:

  • 一个良好对齐的锚点应能够同时预测出高精度的分类分数和精确的定位
  • 一个未对齐的锚点应该具有较低的分类分数,并会随后被抑制。
    基于这两个目标,我们设计了一种新的锚点对齐度量方法,用于显式地测量锚点级别的任务对齐程度。该对齐度量方法被集成到样本分配和损失函数中,以动态地改进每个锚点的预测结果。

锚点对齐度量
考虑到一个分类得分和预测边界框与真实边界框之间的重叠联合(IOU)指示了两个任务的预测质量,我们使用分类得分和IOU的高阶组合来衡量任务对齐的程度。具体地,我们设计了一下度量方式来计算每个实例的锚点级别对齐度:
请添加图片描述
其中s和u分别表示分类得分和IOU值,α和β用于控制锚点对齐指标中两个任务的影响。值得注意的是,t在两个任务的联合优化中扮演了关键角色,以实现任务对齐的目标。它鼓励网络从联合优化的角度动态关注高质量的锚点。
训练样本分配
训练样本的分配对于目标检测器的训练至关重要,为了改善两个任务的对齐,我们关注任务对齐的锚点,并采取一个简单的分配规则来选择训练样本:对于每个实例,我们选择具有最大t值的m个锚点作为正样本,而将剩余的锚点作为负样本。同样,训练是通过计算机专门设计用于任务分类和定位对齐的新损失函数来进行的。

多任务损失

分类目标为了明确增加对齐锚点的分类分数,同时减少对齐不良的锚点的分数(即具有较小的t),我们在训练过程中使用t代替正锚点的二进制标签。然而,我们发现当正锚点的标签(即t)随着α和β的增加而变小时,网络无法收敛,因此,我们使用归一化的t,即^t 来代替正锚点的二进制标签,其中, 它通过一下两个属性进行归一化:

  • 确保对困难实例进行有效学习(通常具有所有对应正锚点的较小t)
  • 根据预测边界框的精确度保持实例之间的排序关系
    因此,我们采用简单的实例级归一化来调整t的尺度:在每个实例中,t的最大值等于最大的IOU值(u),然后,对于分类任务,在正锚点上计算的二元交叉熵(BCE)可以重新表达为:
    请添加图片描述
    其中,i表示第i个锚点,来自于与一个实例相对应的的N个正锚点,我们使用焦点损失来进行分类,以减轻训练过程中负样本和正样本之间的不平衡问题。对于正锚点计算的焦点损失可以通过公式10进行重新表述,分类任务的最终损失函数定义为:
    请添加图片描述
    本地化目标 通常情况下,由良好对齐的锚框(即具有较大的t值)预测的边界框不仅具有较大的分类得分和准确的定位,而且这样的边界框在非极大值抑制过程中更有可能保留下来,此外,可以通过加权更谨慎的处理损失来应用t值从而选择高质量的边界框,以改善训练。从高质量的边界框中学习对模型的性能是有益的,而低质量的边界框往往通过产生大量不太有信息且冗余的信号来更新模型,对训练产生负面影响,在我们的情况下,我们应用t值来衡量边界框的质量,因此,我们通过关注良好对齐的锚框(且具有较大的t值)来改善任务对齐和回归精度,同时减少边界框回归中不良对齐的锚框(具有较小的t值)的影响,与分类目标类似,基于^t的重加权每个锚框的边界框回归损失,而GIOU损失可以重新定义为:
    请添加图片描述
    请添加图片描述

相关文章:

无锚框原理 TOOD:Task-aligned One-stage Object Detection

无锚框原理 TOOD:Task-aligned One-stage Object Detection 一 摘要二 引言TOOD设计 三 具体设计Task-aligned Head任务对齐的预测器 TAP预测对齐 TAL 任务对齐学习Task-aligned Sample Assignment多任务损失 一 摘要 一阶段目标检测通常通过优化两个子任务来实现&…...

配置Picgo图床之COS、OSS、Github图床

简介 PicGo是一款开源的图片上传和管理工具,它提供了简单易用的界面和丰富的功能,方便用户上传、管理和分享图片。 以下是PicGo的一些主要特点和功能: 图片上传:PicGo支持将本地图片快速上传到云存储服务,如七牛云、…...

【LangChain】Prompts之自定义提示模板

LangChain学习文档 【LangChain】向量存储(Vector stores)【LangChain】向量存储之FAISS【LangChain】Prompts之Prompt templates【LangChain】Prompts之自定义提示模板 概要 假设我们希望LLM生成给定函数名称的英语解释。为了实现此任务,我们将创建一个自定义提示…...

EFLFK——ELK日志分析系统+kafka+filebeat架构(3)

zookeeperkafka分布式消息队列集群的部署 紧接上期,在ELFK的基础上,添加kafka做数据缓冲 附kafka消息队列 nginx服务器配置filebeat收集日志:192.168.116.40,修改配置将采集到的日志转发给kafka; kafka集群&#xff…...

支付总架构解析

一、支付全局分层 一笔支付以用户为起点,经过众多支付参与者之后,到达央行的清算账户,完成最终的资金清算。那么我们研究支付宏观,可以站在央行清算账户位置,俯视整个支付金字塔,如图1所示: 图…...

【HCIP】OSPF综合实验

题目: 配置: R1 //ip分配 [r1]int g0/0/0 [r1-GigabitEthernet0/0/0]ip add 172.16.0.1 27 [r1-GigabitEthernet0/0/0]q [r1]int lo [r1]int LoopBack 0 [r1-LoopBack0]ip add 172.16.1.1 24//配置缺省 [r1]ip route-static 0.0.0.0 0 172.16.0.3 //启动…...

PyTorch深度学习实战(10)——过拟合及其解决方法

PyTorch深度学习实战(10)——过拟合及其解决方法 0. 前言1. 过拟合基本概念2. 添加 Dropout 解决过拟合3. 使用正则化解决过拟合3.1 L1 正则化3.2 L2 正则化 4. 学习率衰减小结系列链接 0. 前言 过拟合 (Overfitting) 是指在机器学习中,模型…...

【工作记录】week7

day3 1.本地切换分支 本地切换分支时,可以直接用 vscode 集成的工具 点击后直接选择即可: 其中红框中为本地分支,蓝框中则是远程分支! 当在本地切换到一个本地不存在的远程分支时,会在本地创建一个同名的分支&…...

安防监控视频融合EasyCVR平台接入RTSP流后设备显示离线是什么原因?

安防监控视频EasyCVR视频汇聚融合平台基于云边端智能协同架构,具有强大的数据接入、处理及分发能力,平台支持海量视频汇聚管理、全网分发、按需调阅、鉴权播放、智能分析等视频能力与服务。平台开放度高、兼容性强、可支持灵活拓展与第三方集成&#xff…...

MongoDB:Linux环境全套安装指南

😊 作者: 一恍过去 💖 主页: https://blog.csdn.net/zhuocailing3390 🎊 社区: Java技术栈交流 🎉 主题: MongoDB:Linux环境全套安装指南 ⏱️ 创作时间&#xff1a…...

PostgreSql 启停

一、启动 直接运行 postgres 进程启动。使用 pg_ctl 命令启动。(pg_ctl 命令实际也是封装的 postgres 进程) 示例: pg_ctl -D /data/pg13/data start 或 postgres -D /data/pg13/data &二、停止 使用 pg_ctl 命令停止,优先…...

中介者模式(C++)

定义 用一个中介对象来封装(封装变化)一系列的对象交互。中介者使各对象不需要显式的相互引用(编译时依赖->运行时依赖),从而使其耦合松散(管理变化),而且可以独立地改变它们之间的交互。 应用场景 在软件构建过程中,经常会出现多个对象…...

LeetCode热题 100整理

53. 最大子数组和 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。 示例 1: 输入:nums [-2,1,-3,4,-1,2,1,-5,4] 输…...

SDE与ODE

看这篇文章不错https://spaces.ac.cn/archives/9209 然后在结合https://www.bilibili.com/video/BV1814y1n7Eh/?spm_id_from333.788&vd_sourceeb433c8780bdd700f49c6fc8e3bd0911这个B站的视频...

AWK实战案例——筛选给定时间范围内的日志

时间戳与当地时间 概念: 1.时间戳: 时间戳是指格林威治时间自1970年1月1日(00:00:00 GMT)至当前时间的总秒数。它也被称为Unix时间戳(Unix Timestamp)。通俗的讲,时间戳是一份能够表示一份数据…...

摄影入门基础笔记

1.认识相机,传感器和镜头 微单相机和单反相机 运动相机、卡片机 微单和单反的区别? 微单的光学结构少了反光板的结构以及棱镜的结构 DSLR [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PCSYr2Ob-1691407493645)(https:/…...

如何在业务中体现TCC事务模型?

在分布式系统设计中,随着微服务的流行,通常一个业务操作被拆分为多个子任务,比如电商系统的下单和支付操作,就涉及到了创建和更新订单、扣减账户余额、扣减库存、发送物流消息等,那么在复杂业务开发中,如何…...

TouchGFX字库外置的另一种处理方式

最近有个带UI的项目,采用STM32F429做主控方案,对比touchgfx、lvgl和emwin,发现TouchGFX性能最好,并且界面设计工具也很好用,于是选择此图形引擎。 最开始是熟悉UI设计工具,需要一个表格控件,无…...

jvm的垃圾回收算法有哪些

jvm的垃圾回收算法有标记-清除、复制、标记-整理、分代回收算法,它们分别有不同的实现: 一、标记-清除算法 利用可达性分析算法分析之后,将未被标记的对象[即不可达对象]清除,以便回收它们所占用的内存。 缺点: 1、需…...

untiy 连接两个UI或一段固定一段跟随鼠标移动的线段

注意,仅适用于UI,且Canvas必须是Camera模式,不能用在3D物体上,3D物体请使用LineRenender 先创建一个图片,将锚点固定在左边 然后在脚本中添加如下内容 public RectTransform startObj;//起点物体public RectTransfor…...

如何成为顶级开源项目的贡献者

概述 对于程序员来讲,成为顶级开源项目的贡献者是一件有意义的事,当然,这也绝非易事。如果你正从事人工智能有关的工作,那么你一定了解诸如Google Tensorflow,Facebook Pytorch这样的开源项目。下面我们就说一说如何成…...

Threads and QObjects

QThread inherits QObject. It emits signals to indicate that the thread started or finished executing, and provides a few slots as well. QThread 派生于 QObject。QThread 会发射信号通知线程启动或终止执行任务,并且也会提供槽函数使用。 More interest…...

Tcp是怎样进行可靠准确的传输数据包的?

概述 很多时候,我们都在说Tcp协议,Tcp协议解决了什么问题,在实际工作中有什么具体的意义,想到了这些我想你的技术会更有所提升,Tcp协议是程序员编程中的最重要的一块基石,Tcp是怎样进行可靠准确的传输数据…...

[SWPUCTF 2022 新生赛]numgame

这道题有点东西网页一段计算框,只有加和减数字,但是永远到大不了20,页面也没啥特别的,准备看源码,但是打不开,我以为是环境坏掉了,看wp别人也这样,只不过大佬的开发者工具可以打开&a…...

java异常机制分析

java异常机制分析 本文实例分析了java的异常机制,分享给大家供大家参考。相信有助于大家提高大家Java程序异常处理能力。具体分析如下: 众所周知,java中的异常(Exception)机制很重要,程序难免会出错,异常机制可以捕获…...

浅谈Python中的内存管理 程序的内存布局

Python中的内存管理 Python 的内存管理是通过私有堆空间来实现的。这个私有堆内存中存储了所有 Python 对象和数据结构。Python 的解释器自身则拥有对堆空间的访问权,程序员不能直接访问这个私有堆,但可以通过解释器的 API 来进行某些操作。 以下是 Py…...

(具体解决方案)训练GAN深度学习的时候出现生成器loss一直上升但判别器loss趋于0

今天小陶在训练CGAN的时候出现了绷不住的情况,那就是G_loss(生成器的loss值)一路狂飙,一直上升到了6才逐渐平稳。而D_loss(判别器的loss值)却越来越小,具体的情况就看下面的图片吧。其实这在GAN…...

Redis 安装以及配置隧道连接

目录 1.CentOS 1. 安装Redis 2. Redis 启动和停⽌ 3. 操作Redis 2.Ubuntu 1. 安装Redis 2. Redis 启动/停⽌ 3. 操作 Redis 3.开启隧道 3.1 Xshell 配置隧道 3.2 windTerm 配置隧道 3.3 FinalShell配置隧道 4.可视化客户端连接 Another Redis Desktop Manager 1.Cen…...

FFmpeg 使用总结

FFmpeg 简介 FFmpeg的名称来自MPEG视频编码标准,前面的“FF”代表“Fast Forward”,FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。可以轻易地实现多种视频格式之间的相互转换。包括如下几个部分&#xf…...

出现Error: Cannot find module ‘compression-webpack-plugin‘错误

错误: 解决:npm install --save-dev compression-webpack-plugin1.1.12 版本问题...