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

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

论文小结

  本文的目标,主要是解决不同任务之间预测的不对齐问题。任务不对齐,简单来说,就是分类的最佳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=wX

### TOOD: Task-aligned One-stage Object Detection #### 研究背景与动机 传统的单阶段目标检测模型通过两个并行分支分别处理分类和定位任务,这可能导致两者之间出现空间错位现象。为了克服这一挑战,TOOD引入了任务对齐机制,旨在使这两个核心组件更加协调一致地运作[^1]。 #### 方法概述 TOOD的核心创新在于其独特的结构设计: - **Task-aligned Head (T-Head)** 这一部分负责接收来自FPN(Feature Pyramid Network)的多尺度特征图作为输入,并执行初步的对象类别预测以及边界框回归操作。不同于以往的设计思路,T-Head不仅关注于提取通用特征表示,还特别强调如何有效地融合不同层次上的语义信息以促进后续的任务间协作[^3]。 - **Task Alignment Learning (TAL)** TAL模块则专注于构建起连接上述两者的桥梁。具体而言,在训练过程中动态评估当前候选区域对于两类任务的重要性程度,并据此调整权重参数;而在推理阶段,则依据预定义准则重新校准最终输出结果中的置信度得分及坐标偏移量估计值。这样的安排有助于缩小乃至消除原本存在的性能差距[^5]。 #### 技术细节 以下是关于T-Head的具体实现方式及其内部逻辑描述: ```python class T_Head(nn.Module): def __init__(self, num_classes=80): super().__init__() self.cls_convs = nn.Sequential( ConvModule(...), ... ) self.reg_convs = nn.Sequential( ConvModule(...), ... ) def forward(self, feats): cls_feat = self.cls_convs(feats) reg_feat = self.reg_convs(feats) return cls_feat, reg_feat ``` 此代码片段展示了简化版的`T_Head`类定义,其中包含了用于生成分类特征(`cls_feat`)和回归特征(`reg_feat`)的卷积层序列。值得注意的是,尽管这里展示了一个较为抽象化的版本,实际应用中可能还会涉及到更多复杂的配置选项和技术手段来提升整体表现力[^2]。 至于TAL部分的工作原理可以概括为以下几个方面: 1. 定义一套衡量标准用来量化各个样本点处分类质量同定位精度间的关联关系; 2. 基于此建立相应的损失函数表达式以便指导网络朝着期望方向进化; 3. 利用反向传播算法更新整个系统的可调参变量直至收敛为止。 #### 应用前景 得益于更优的任务一致性保障措施,TOOD能够在保持较高运算速度的同时显著提高识别准确性,因此非常适合应用于诸如自动驾驶汽车环境感知、无人机航拍图像分析等领域当中。此外,随着硬件设施不断进步及相关理论研究持续深入,预计未来还将涌现出更多依赖此类先进技术支撑的新颖解决方案[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值