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 ̂是对应的真实边界框。