【论文阅读笔记】TOOD: Task-aligned One-stage Object Detection

论文代码:https://github.com/fcjian/TOOD

文章目录

  • 论文小结
  • 论文简介
  • 论文方法
    • Task-aligned Head(T-Head)
      • T-Head伪代码解释
    • Task Alignment Learning(TAL)
      • Task-aligned Sample Assignment
      • Task-aligned Loss
  • 论文实验
    • 消融实验

论文小结

  本文的目标,主要是解决不同任务之间预测的不对齐问题。任务不对齐,简单来说,就是分类的最佳anchor(point)和回归的最佳anchor(point)不一定是同一个,亦或者同个grid point的分类和回归所预测的实例对象不是同一个。

  为了解决这个问题,作者从模型结构的检测头或者训练策略中的标签分配中出发,分别设计了T-HeadTAL两个能相互结合的方案。其中TAL被后续文章和实践中较多使用。

  TAL的主要思路就是不事先赋予无法改变的标签,而是结合分类的预测 s \mathcal{s} s 和回归的预测生成的IoU分数 u \mathcal{u} u来动态生成本次学习的标签。因此,TAL(Task Alignment Learning)中会有一个learning的说法。

  本文的对比实验和消融实验室未充分训练的对比,大致训练12个epoch来对比的。

论文简介

  由于分类和定位学习机制的差异,两个任务学习到的特征空间分布可能不同。当两个任务分支单独预测时,会导致一定程度的不对齐。如下图 1 1 1所示,上面行是ATSS算法预测的结果,下面行是本文TOOD算法预测的结果。图中黄色框是餐桌的label,分类任务的最佳位置是红色色块,其边框预测为红框;回归任务的最佳位置是绿色色块。从图 1 1 1可以容易看出,在原有方法训练管道得到的结果,可能会出现分类任务和定位任务的不对齐问题。

  在原先的方法(比如FCOS和ATSS)的认知中,对象的几何中心附近更容易预测对象(anchor-based在grid上,anchor-point),给予靠近中心的正样本分配更高的分数,更高的权重。这种启发式的方法取得很好的效果,但可能带来两个局限性:

  1. 分类和定位的独立性。对象实例有重叠时,分类目标和定位目标不匹配;
  2. 任务不可知标签分配。标签都是按照定位的几何中心分配的,但即使是定位问题,几何中心都不一定是最合适预测的。更何况标签的分配没有考虑分类任务的概率图(probably map)。分类和定位的最佳anchor通常是不一致的,并且依据目标的形状和特种有较大差异。因此很难对两个任务作出准确而一致的预测。

  为了解决分类任务和定位任务的不对齐问题,本文的贡献是提出了T-head和TAL两个方法。

  T-head,大致是为了增加两个任务之间的交互,以及增强检测器学习对齐的能力。总得来说,就是设计了一个新的检测头。

  TAL方法,目标是让两个任务的最佳anchor尽可能接近。其做法是设计一个简单的分配方案和任务对齐损失。样本分配通过每个anchor的任务对齐难度来收集训练的正负样本。而任务对其损失则在训练过程中逐渐统一预测分类和定位的最佳anchor。
  基本做法如下图所示,产生了cls和loc预测,再获得对齐指标,放入TAL中,进行标签分配和反向传播。

论文方法

  网络的整体设计也是按照“backbone - neck - head”结构来的。为简单和方便,TOOD在每个位置使用 1 1 1个anchor(anchor point/box)。如上图 2 2 2所示,T-Head和TAL可以协调地共同作用。原架构如下图 3 ( a ) 3(a) 3(a)所示,所提出的T-head如下图 3 ( b ) 3(b) 3(b)所示。

Task-aligned Head(T-Head)

  T-Head的目标是增加分类任务和定位任务的交互,以及增加两个任务之间的预测对齐能力。

  T-Head的架构图如上图 3 ( b ) 3(b) 3(b)所示,先通过多个卷积来堆叠任务交互特征,如公式(1)所示,然后再经过 2 2 2个TAP(Task-aligned Predictor),用于对齐分类和定位。TAP的架构图如上图 3 ( c ) 3(c) 3(c)所示。
X k i n t e r = { δ ( c o n v k ( X f p n ) ) , k = 1 ,     ∀ k ∈ { 1 , 2 , . . . , N } δ ( c o n v k ( X k − 1 i n t e r ) ) , k > 1 (1) X_k^{inter}=\begin{cases}\delta(conv_k(X^{fpn})),k=1, \ \ \ \ \forall k\in\{1,2,...,N\} \\ \delta(conv_k(X_{k-1}^{inter})),k>1\end{cases}\tag{1} Xkinter={δ(convk(Xfpn)),k=1    k{1,2,...,N}δ(convk(Xk1inter))k>1(1)

  由于TAP是一条单独的分支,任务交互特征不可避免地会在两个不同任务之间引入一定程度的特征冲突,所以作者提出来layer attention机制。通过在level级别动态计算任务特定特征,来鼓励任务分解,如公式(2)、(3),(4)。
X k t a s k = w ⋅ X k i n t e r , ∀ k ∈ { 1 , 2 , . . . , N } , (2) X_k^{task} = \mathcal{w}\cdot X_k^{inter}, \forall k\in \{1,2,...,N\}, \tag{2} Xktask=wXkinter,k{1,2,...,N},(2)
  下面公式中的 δ \delta δ是全局池化层(GAP);
w = σ ( f c 2 ( δ ( f c 1 ( x i n t e r ) ) ) ) (3) \mathcal{w} = \sigma(fc_2(\delta(fc_1(x^{inter})))\tag{3}) w=σ(fc2(δ(fc1(xinter))))(3)
  下面公式中的 δ \delta δ是ReLU非线性层;
Z t a s k = c o n v 2 ( δ ( c o n v 1 ( X t a s k ) ) ) (4) Z^{task}=conv_2(\delta(conv_1(X^{task})))\tag{4} Ztask=conv2(δ(conv1(Xtask)))(4)

  如上图 3 ( c ) 3(c) 3(c)所示,对于预测的分类分数 P ∈ R H × W × 80 P\in\mathbb{R}^{H\times W \times 80} PRH×W×80,从交互特征中,学习一个空间概率图(spatial probability map) M ∈ R H × W × 1 M\in\mathbb{R}^{H\times W \times 1} MRH×W×1来调整分类预测,完成对齐: P a l i g n = P × M (5) P^{align}=\sqrt{P\times M} \tag{5} Palign=P×M (5)

  同样的,对于预测的边框对象 B ∈ R H × W × 4 B\in\mathbb{R}^{H\times W \times 4} BRH×W×4,从交互特征中学习一个空间偏差图(spatial offset maps) O ∈ R H × W × 8 \Omicron\in\mathbb{R}^{H\times W \times 8} ORH×W×8来调整每个位置的bbox,完成对齐。 B a l i g n ( i , j , c ) = B ( i + O ( i , j , 2 × c ) , j + O ( i , j , 2 × c + 1 ) , c ) (6) B^{align}(i,j,c)=B(i+\Omicron(i,j,2\times c),j+\Omicron(i,j,2\times c+1), c)\tag6 Balign(i,j,c)=B(i+O(i,j,2×c),j+O(i,j,2×c+1),c)(6)

   O \Omicron O M M M从交互特征学习的公式如下: M = c o n v 2 ( δ ( c o n v 1 ( X i n t e r ) ) ) (7) M=conv_2(\delta(conv1(X^{inter})))\tag7 M=conv2(δ(conv1(Xinter)))(7) O = c o n v 4 ( δ ( c o n v 3 ( X i n t e r ) ) ) (8) \Omicron=conv_4(\delta(conv3(X^{inter})))\tag8 O=conv4(δ(conv3(Xinter)))(8)

T-Head伪代码解释

  依据作者的描述是能够平衡学习两个任务交互特征,实际上思路大致是在neck之后先使用统一的管道来tune特征,就像早期的cls head与reg head未解耦时的状态。然后使用一些启发性的架构,比如channel attention来“解耦”cls特征和reg特征,channel attention的权重初步由全局池化层(GAP)得到,再通过卷积对该权重进行学习(类似于AsConv),作为attention的自适应权重。在得到分类和回归的推理结果上,作者也有一些启发性的设计。比如,分类任务首先预测一个分类分数,然后再预测一个分类概率相结合;回归任务首先预测一个bbox的xywh,再预测一个offset来进行调整。

feat_0 = feat_fpn
feat_{i} = leaky_relu(bn(Conv(feat_{i-1})))			                    # use for both cls task and reg task.
feat = torch.cat(feat_{i,...,n})weight = GAP(feat)
weight_cls = sigmoid(conv2(relu(conv1(weight)))				            # 从这儿解耦分类和回归,conv1/2/3/4表示不同卷积
weight_reg = sigmoid(conv4(relu(conv3(weight)))feat_cls = channel_attention(weight_cls, feat)
feat_reg = channel_attention(weight_reg, feat)# get cls prediction
cls_sigmoid = Conv3(256 -> num_anchors * 80)[feat_cls]                  # input is feat_cls
cls_prob = Conv1(256*6 -> 64)[feat] => relu => Conv3(64 -> 1)           # input is feat
cls_scores = \sqrt(cls_sigmoid.sigmoid() * cls_prob.sigmoid())# get reg prediction
reg_dist = Conv3(256 -> num_anchors * 4)[feat_reg].exp()                # input is feat_reg
reg_bbox = dis2bbox(reg_dist)
reg_offset = Conv1(256*6 -> 64)[feat] => relu => Conv3(64 -> 8)         # input is feat
bbox_pred = deform_Conv2d(reg_bbox, reg_offset)		                    # a library from mmlab/mmcv,add reg_offset for reg_bbox map. details see the formule.

Task Alignment Learning(TAL)

  在TAL中,主要有两点创新:

  1. 动态选择最适合的anchor(在一个设计好的指标下);
  2. 它同时考虑anchor分配和权重,包括一个样本分配策略和专门为调整两个任务而设计的新Loss。

  anchor分配策略应该有如下 2 2 2个规则:(1)一个对齐良好的anchor应该同时能预测一个高的分类分数和一个精确的定位;(2)没对齐的anchor应该有交底的分数,随后被NMS抑制。

Task-aligned Sample Assignment

  设定分类分数为 s s s,预测和GT的IoU值为 u u u,设计anchor级的对齐指标如下面公式,这样能同时衡量分类和定位的预测质量: t = s α × u β (9) t=s^\alpha\times u^\beta\tag9 t=sα×uβ(9)

  对于每个实例,依据 t t t值进行排序,选择最大值的 m m m个anchors作为正样本,其他作为负样本。因此,每个训练迭代中,标签的分配都是动态赋予的

Task-aligned Loss

  分类目标上,作者使用 t t t值代替正样本anchor中的二元标签
  但作者也发现,随着 α \alpha α β \beta β的上升, t t t值标签就会变小,进而导致无法收敛。所以作者将 t t t进行正则化,标记为 t ^ \hat{t} t^,来代替正样本anchor中的二元标签。 t ^ \hat{t} t^的正则化应该遵循两项原则:(1)确保硬实例都能够高效地被学习(硬是难易样本的说法,比如Focal loss中的hard sample,此时所有的正anchor都只有很小的 t t t值标签);(2)根据预测框的精度来保持实例之间的等级。
  因此,作者采用了一个简单的实例级的正则化 t ^ \hat{t} t^方法: t ^ \hat{t} t^的最大值等于每个实例的最大IoU值。(实际上就是换了个标签分配方案,可能为了方便写论文)。此时,经过BCE(Binary Cross Entropy)的损失函数为: L c l s _ p o s = ∑ i = 1 N p o s B C E ( s i , t ^ i ) (10) L_{cls\_{pos}}=\sum_{i=1}^{N_{pos}}BCE(s_i, \hat{t}_i)\tag{10} Lcls_pos=i=1NposBCE(si,t^i)(10)

  在分类任务上,使用focal loss,分类损失如下:其中 γ \gamma γ是focal loss的超参数。 L c l s = ∑ i = 1 N p o s ∣ t ^ i − s i ∣ γ B C E ( s i , t ^ i ) + ∑ j = 1 N n e g s j γ B C E ( s j , 0 ) (11) L_{cls}=\sum_{i=1}^{N_{pos}}|\hat{t}_i-s_i|^\gamma BCE(s_i, \hat{t}_i) + \sum_{j=1}^{N_{neg}}s_j^\gamma BCE(s_j, 0)\tag{11} Lcls=i=1Npost^isiγBCE(si,t^i)+j=1NnegsjγBCE(sj,0)(11)

  在定位任务上,作者通过关注对齐良好的anchors(具有较大的 t t t值),来提高任务对齐和回归精度,同时减少边框回归过程中不对齐anchors的影响。

  基于 t ^ \hat{t} t^来为每个anchor的bbox的loss重新分配权重。使用的损失函数为GIoU Loss,回归的损失公式如下: L r e g = ∑ i = 1 N p o s t ^ i L G I o U ( b i , b i ˉ ) L_{reg}=\sum_{i=1}^{N_{pos}}\hat{t}_iL_{GIoU}(b_i, \bar{b_i}) Lreg=i=1Npost^iLGIoU(bi,biˉ)

论文实验

  COCO数据集,trainval135k为训练集,minival set为验证集。

  TOOD的backbone(ResNet-50,ResNet-101,ResNeXt-101-64x4d)都是在ImageNet上进行的预训练,检测头采用的是anchor-free的设计。本文实验中,anchor-based的组和anchor-free的性能相似。T-Head的连续卷积层数量 N = 6 N=6 N=6,Focal Loss的超参数 γ = 2 \gamma=2 γ=2

消融实验

  消融实验中,使用的backbone为ResNet-50,默认训练周期为 12 12 12个epochs(没有收敛完全)。

  下表1展示了T-head的消融实验结果,能涨AP 0.7 − 1.9 0.7-1.9 0.71.9

  TAL的消融实验如下表所示:

  Anchor-based和Anchor-free的消融实验如下:两者性能接近。

   α \alpha α β \beta β的消融实验如下表所示: α = 1.0 \alpha=1.0 α=1.0 β = 6 \beta=6 β=6的情况下,得到的性能最好。

  TOOD与其他一阶目标检测算法的对比结果如下:其中每个模型使用不同分辨率( 480 − 800 480-800 480800)训练,训练 24 24 24个epochs。

  TOOD整体结构的消融实验如下表所示:TOOD的设计 比 T-Head + ATSS 以及平行head + TAL的指标都好,表明T-head和TAL具有相辅相成的互补性。

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

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

相关文章

思维商业篇(5)—发展趋势分析

思维商业篇(5)—发展趋势分析 核心理论 巴菲特曾在《滚雪球》一书中提到他的投资之道其实非常简单,可以总结为两句话:找到足够长的雪道,找到足够湿的雪球。 而发展趋势的分析,正好可以借助巴菲特的这个滚雪球理论。 足够长的雪…

内存和管理

在 C 中,对象拷贝时编译器可能会进行一些优化,以提高程序的性能。 一种常见的优化是“返回值优化(Return Value Optimization,RVO)”和“具名返回值优化(Named Return Value Optimization,NRV…

“明月寄情,文化共融”iEnglish助力青少年用英语讲述中国故事

在全球化日益加深的今天,文化的交流与融合成为了不可阻挡的趋势。中秋节,这一承载着中华民族深厚文化底蕴与家国情怀的传统节日,正通过新的方式走向世界舞台。今年中秋,在斐济、澳大利亚、法国等多个国家的中秋文化活动中&#xf…

电脑桌面文件太多太杂?电脑管理软件一键整理,强迫症福音!

电脑桌面文件太多太杂?随着工作量的增加和信息的不断累积,许多人的电脑桌面上往往堆满了各式各样的文件和文件夹,显得杂乱无章。这种“桌面乱象”不仅影响了工作效率,还可能给心理带来不必要的压力,尤其对于那些有强迫…

【RTT-Studio】详细使用教程十六:DAC7311外部DAC使用

文章目录 一、简介二、驱动程序三、DAC设置注册四、完整代码五、测试验证 一、简介 8 位 DAC5311、10 位 DAC6311 和 12 位 DAC7311 (DACx311) 是低功耗、单通道、电压输出数模转换器 (DAC)。DACx311 在正常工作状态下具有低功耗(5V 时为 0.55mW,断电模式…

【Qt笔记】QStackedWidget控件详解

目录 引言 一、基础功能 二、属性设置 2.1 属性介绍 2.2 代码示例 2.3 代码解析 三、常用API 3.1 添加子部件 3.2 插入子部件 3.3 移除子部件 3.4 设置当前页面索引值 3.5 设置当前显示子部件 3.6 返回索引处子部件指针 3.7 返回子部件索引值 四、信号与槽 4.…

蓝牙AOA基站助力打造智慧医院管理系统

随着科技的飞速发展,智慧医院的概念逐渐深入人心。其中,蓝牙AOA(到达角)定位技术以其高精度、低功耗、低成本等优势,在智慧医院建设中扮演着重要角色。本文将深入探讨蓝牙AOA基站如何助力智慧医院的建设与发展。 一、蓝…

Linux C高级 day4

一、思维导图 二、练习 1、统计家目录下.c文件的个数 #!/bin/bashcount0 for file in ~/*.cdo((count)) done echo $count 2、定义一个稀疏数组(下标不连续),写一个函数,求该稀疏数组的和,要求稀疏数组中的数值通过参数传递到函数中。arr(…

【例题】证明极限

已知&#xff1a; ∀ ε > 0 , ∃ n > N , ∣ a n − A ∣ < ε \forall \varepsilon >0, \exist n>N,|a_n-A|<\varepsilon ∀ε>0,∃n>N,∣an​−A∣<ε 目标&#xff1a; ∀ ε > 0 , ∃ n > N 1 , ∣ a 1 . . . a n n − A ∣ < ε \…

codeforces round974 div3 分层图 树形dp

A Robin Helps 问题&#xff1a; 思路&#xff1a;模拟 代码&#xff1a; #include <bits/stdc.h> using namespace std;const int N 2e5 10;void solve() {int n, k;cin >> n >> k;vector<int> a(n 1);for(int i 1; i < n; i ) cin >&…

9.23 My_string.cpp

my_string.h #ifndef MY_STRING_H #define MY_STRING_H#include <iostream> #include <cstring>using namespace std;class My_string { private:char *ptr; //指向字符数组的指针int size; //字符串的最大容量int len; //字符串当前…

车载视频监控:安全生产与管理的新趋势

随着社会的快速发展&#xff0c;车载视频监控技术已成为现代安防领域不可或缺的一部分。车载视频监控设备是专为车载安防设计的新型视频监控设备&#xff0c;其安装已经成为社会发展的必然趋势。对于企业的安全生产和管理来说&#xff0c;车载视频监控设备起着至关重要的作用。…

wpf,工具栏上,最小化按钮的实现

工具栏上&#xff0c;最小化按钮的实现。工具栏做成的是用户控件。 用户控件的xaml <Button HorizontalAlignment"Right" Height"32" Click"MinimizeClick" /> 用户控件的cs代码 private void MinimizeClick(object sender, RoutedEven…

2024年408真题计算机网络篇

1 https://zhuanlan.zhihu.com/p/721169467。最小割可以看作是切断水流的最薄弱环节——通过切断这些关键的“水管”&#xff0c;就可以完全阻止水从源点流到汇点。 在下列二进制数字调制方法中&#xff0c;需要2个不同频率载波 的是 A. ASK B. PSK C. FSK D. DPSK 解答…

【行为树】02-基础的端口

Input and Output Ports 输入和输出端口 正如我们之前解释的那样,自定义的TreeNodes可以用于执行任意简单或复杂的软件。它们的目标是提供一个具有更高抽象层级的接口。 因此,它们在概念上与函数没有不同。 类似于函数,我们经常想要: 将参数传递给一个节点(inputs)从一…

论文Query2Label: A Simple Transformer Way to Multi-Label Classification

本文将Transformer解码器用于多标签分类&#xff0c;将label embedding作为query&#xff0c;计算与feature map的cross-attention&#xff0c;取得了SOTA结果。 论文&#xff1a;https://arxiv.org/pdf/2107.10834.pdf 代码&#xff1a;https://github.com/SlongLiu/query2lab…

洛谷-P3916 图的遍历

题目描述 给出 N 个点&#xff0c;M 条边的有向图&#xff0c;对于每个点 v&#xff0c;求A(v) 表示从点 v 出发&#xff0c;能到达编号最大的点。 思路 既然是要找到最大的点&#xff0c;那么我从最大的点开始DFS是否可以&#xff1f; 于是可以反向建图&#xff0c;然后从最…

Excel的基本应用 ___2

快速插入函数 方法一&#xff1a; 方法二&#xff1a;快捷键 Alt&#xff1a;求和 动态查看 利用函数清单选择函数 相对地址和绝对地址的转换 FnF4

寻觅义乌自闭症学校:了解寄宿制教育的选择

在义乌乃至全国范围内&#xff0c;为自闭症儿童寻找一所合适的学校&#xff0c;是许多家庭面临的重大挑战。随着特殊教育的发展&#xff0c;越来越多的寄宿制学校以其独特的优势和全面的教育体系&#xff0c;为这些特殊的孩子提供了更加专业和细致的关怀。今天&#xff0c;我们…

MySQL实战面试题(附案例答案+建表语句+模拟数据+案例深度解析),练完直接碾压面试官

知识点思维导图 案例1 建表语句与模拟数据 用户表 users CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) NOT NULL, email VARCHAR(100) NOT NULL UNIQUE, signup_date DATE NOT NULL ); INSERT INTO users (username, email, signu…