摘要:
提出问题:
单阶段目标检测通常是通过优化两个子任务来实现的:目标分类和定位,使用具有两个平行分支的头部,这可能会导致两个任务之间的预测存在一定程度的空间错位(spatial misalignment)。
解决方案:
任务对齐的单阶段对象检测(TOOD),以基于可学习的方式明确地对齐两个任务。
TOOD:
Task-aligned Head (T-Head)
在学习任务交互式和特定任务的功能之间提供了更好的平衡,并且通过任务对齐的预测器(task-aligned predictor)更加灵活地学习对齐。
Task Alignment Learning (TAL)
在训练过程中,通过设计的样本分配方案(sample assignment scheme)和任务对齐的损失(task-aligned loss),明确地找到更接近(甚至统一)两个任务的最佳锚点。
实验结果:
TOOD achieves a51.1 APatsingle-model single-scale testing
贡献:
TOOD可以更好地对齐目标分类和定位两个任务。
T-head
增强分类和定位之间的交互作用,同时保持它们的特征,并进一步对齐这两个任务的预测;
TAL
为所提出的预测器提供学习信号;
1. 引言
目标检测主要的两个子任务:
分类任务:学习专注于物体的关键或显著部分的区别性特征。
定位任务:精确地用边界定位整个物体。
目前两个子任务存在的问题(作者认为):
由于分类和定位的学习机制不同,两个任务的学习特征的空间分布可能会不同,当使用两个独立的分支进行预测时,会导致一定程度的错位。
目前单阶段目标检测器的重点(作者认为存在问题)
试图通过关注目标的中心来预测两个独立任务的一致输出。这些工作认为物体中心的锚(即无锚检测器的锚点,或基于锚的检测器的锚盒)可能对分类和定位给出更准确的预测。
FCOS、ATSS
使用中心度分支,增强物体中心附近的锚预测的分类得分,并为相应锚的定位损失分配更大的权重。
FoveaBox
将放置在物体的一个预定义的中心区域内的锚视为正样本。
目前单阶段目标检测器的局限(作者认为)
分类和定位独立开了(个人认为以后的方向更应该趋向于分开两个任务,独立预测)
最近的一级检测器通过并行使用两个独立的分支(即heads)来独立地执行目标分类和定位。
问题:这种不同的双分支设计可能会导致两个任务之间缺乏交互,导致执行任务时预测不一致。
举例:如图1中的“Result”列所示,ATSS检测器识别一个“餐桌”的对象(用红色斑块显示的锚表示),但更准确地定位另一个“披萨”的对象(红色边界框)。
不可知任务的样本分配
大多数无锚检测器:使用基于几何的分配方案来选择对象中心附近的锚点来进行分类和定位。
大多数基于锚的检测器:通常通过计算锚盒和GT之间的IoUs来分配锚盒。
问题:用于分类和定位的最佳锚点往往是不一致的,并且可能根据物体的形状和特征而有很大的差异。因此,在非最大抑制(NMS)期间,一个精确的边界框可能会被一个较不精确的边界框所抑制。
举例:
如图1中ATSS的“Score”和“IoU”分布所示,广泛使用的样本分配方案是任务不可知论性的,因此可能很难对这两个任务做出准确而一致的预测;如图1中“Result”列,还说明了最佳定位锚(绿色斑块)的空间位置可能不在对象的中心,并且它与最佳分类锚(红色斑块)不能很好地对齐。
ATSS (top row)
TOOD (bottom row)
yellow boxes:GT
white arrow: the main direction of the best anchor away from the center of an object
red patch:the location of the best anchor for classification
green patch:the location of the best anchor for localization
red box: an object bounding box predicted from the anchor in the red patch
green box: an object bounding box predicted from the anchor in the green patch
(if they coincide, we only show the red patches and boxes).
目前单阶段目标检测器的局限对应的解决方案(作者提出)
任务对齐的单阶段对象检测(TOOD):通过设计一种新的头部结构(new head structure)和面向对齐的学习方法(alignment-oriented learning approach),更准确地对齐两个任务。
Task-aligned head:增强这两个任务之间的交互作用。
它计算任务交互式特征(task-interactive features),并通过一种新的任务对齐预测器(TAP)进行预测。然后,它根据任务对齐学习(task alignment learning,TAL)提供的学习信号(learning signals),对齐两个预测的空间分布。
Task alignment learning
TAL可以明确地拉近两个任务的最优锚点,进一步克服错位问题。
包括以下两个方面:
样本分配方案
通过计算每个锚点上的任务对齐程度来收集训练样本(即正或负)。
任务对齐的损失
在训练过程中,逐步统一了预测分类和定位的最佳锚点。因此,在推理时,可以保留一个分类得分最高并共同具有最精确定位的边界框。
2. 相关工作(略)
单阶段检测器
训练样本分配
3. 任务对齐的单阶段目标检测
回顾
如图2所示,T-head和TAL可以协同改进两个任务的对齐方式。具体来说,步骤如下:
首先,T-head对FPN features的分类和定位进行预测。然后,TAL基于一种新的任务对齐度量计算任务对齐信号,它度量两个预测之间的对齐程度。最后,在反向传播过程中,T-head利用从TAL计算出的学习信号,自动调整其分类的概率和定位的预测。
TOOD的整体学习机制。步骤如下:
由T-head对FPN features做出的预测。这些预测被用于计算每个锚点上的任务对齐度量(task alignment metric),在此基础上,TAL为T-head产生学习信号。T-head相应地调整分类和定位的分布。
3.1 Task-aligned Head
作用
增加了这两个任务之间的交互作用。提高了检测器学习对齐的能力。
组成
一个简单的特征提取器。两个任务对齐的预测器(TAP)。
特征提取器
为了增强分类和定位之间的交互作用,使用特征提取器从多个卷积层中学习任务交互特征堆栈,如图3(b)中的蓝色部分所示。这种设计不仅促进了任务的交互,而且为两个任务提供了多尺度有效感受野的多层次特征。
特征提取器使用N个连续的经过激活函数的卷积层来计算任务交互特征:
计算出的任务交互特征将被输入两个TAP,用于对齐分类和定位。.使用head的单个分支从FPN features(单个FPN feature)中提取出丰富的多尺度特征。
Xfpn∈RH×W×C:FPN features(某一个,如p3)。convk:第k个卷积层。δ:relu激活函数。N:6
Task-aligned Predictor(TAP)
作用:我们对计算出的任务交互特征进行对象分类和定位,其中这两个任务可以很好地感知彼此的状态。
单分支设计的缺点及解决方案:
缺点
任务交互特征不可避免地会在两个不同任务之间引入一定程度的特征冲突。直观地看,对象分类和定位的任务有不同的目标,因此专注于不同类型的特征(例如,不同的层次或感受野)。
解决方案
通过在层级别上动态计算特定任务的特征,提出一种层注意机制来促进任务分解。
步骤:
w是由跨层的任务交互特征计算出来的,并且能够捕获各层之间的依赖关系:
fc1、fc2:全连接层σ:sigmoid激活函数xinter:是通过对Xinter应用平均池化得到的,Xinter是Xkinterconcat到的特征。如图3©所示,对每个分类或定位的任务分别计算特定任务的特征:
wk:学习到的层注意力w∈RN的第k个元素。最后,从每个Xtask中预测分类或定位的结果:
Xtask:Xtaskconcat得到的features。conv1:1×1卷积层,用于降维。Ztask:使用sigmoid函数将Ztask转换为密集的分类分数P∈RH×W×80,或使用distance-to-bbox将Ztask转换为物体边界框B∈RH×W×4。
Prediction alignment
在预测步骤中,通过调整P和B这两个预测的空间分布,进一步明确地对齐这两个任务。
以往的做法:使用中心度分支或IoU分支,只能根据分类特征或定位特征来调整分类预测。
作者的做法:通过使用计算出的任务交互特征共同考虑两个任务来对齐这两个预测。(值得注意的是,作者在这两个任务上分别执行对齐方法。)
分类预测:
如图3©所示,使用空间概率图M∈RH×W×1来调整分类预测:
M:从交互特征计算出来的,允许它在每个空间位置学习两个任务之间的一定程度的一致性。
定位预测:
同时,为了对定位预测进行对齐,进一步从交互特征中学习O∈RH×W×8,用于调整每个位置的预测边界框。具体来说,学习到的空间偏移量使最对齐的锚点能够识别其周围的最佳边界预测:
索引(i,j,c)表示tensor中第c个通道处的(i,j)空间位置。
等式(6)是通过双线性插值来实现的,由于B的通道维数很小,其计算开销可以忽略不计。值得注意的是,每个通道的偏移量都是独立学习的,这意味着对象的每个边界都有自己的学习偏移量。这允许对四个边界进行更准确的预测,因为每个边界都可以分别从其附近最精确的锚点学习。
alignment maps M、O
对齐映射M和O自动从交互特征堆栈中学习:
conv1、conv3:1×1卷积层,用于降低维度。M、O:通过使用所提出的任务对齐学习(TAL)来进行学习。
3.2 Task Alignment Learning
任务对齐学习(TAL)可以进一步指导T-head做出任务对齐的预测。TAL与以往的方法有两个方面的不同。
首先,从任务对齐的角度来看,它基于设计的度量动态地选择高质量的锚点。其次,它同时考虑锚定分配和权重。
TAL组成:
一个样本分配策略专门为调整两个任务而设计的新损失。
3.2.1 Task-aligned Sample Assignment
应对NMS,训练实例的锚分配应该满足以下规则:
对齐良好的锚应该能够通过精确定位联合预测高分类分数;一个错位的锚应该有较低的分类分数,随后被抑制。
作者的做法:
通过这两个目标,设计了一个新的锚对齐度量来明确地度量锚级别上的任务对齐程度。对齐度量被集成到样本分配和损失函数中,以动态地细化每个锚点上的预测。
Anchor alignment metric
设计了以下度量标准来计算每个实例的锚定级别对齐:
s:classification score
u:IoU value
α=1、 β=6:are used to control the impact of the two tasks in the anchor alignment metric
t:plays a critical role in the joint optimization of the two tasks towards the goal of task-alignment
它促进网络从联合优化的角度动态地关注高质量(即任务对齐)锚。
Training sample assignment
为了改进两个任务的对齐,论文关注于任务对齐的锚点,并采用一个简单的分配规则来选择训练样本:
对于每个实例,选择t值最大的m(作者说他做了实验,m具有鲁棒性,m=13最好)个锚点作为正样本,而使用其余的锚点作为负样本。
3.2.2 Task-aligned Loss
Classification objective
方案1(弃用)
为了明确地增加对齐锚的分类分数,同时,减少不对齐锚的分数(即,有一个小的t),在训练期间使用t来替换正锚的binary标签。
缺点:随着α和β的增加,当正锚点的标签(即t)变小时,网络不能收敛。
方案2(使用)
使用一个标准化的t,即tˆ,来替换正锚点的binary标签,其中tˆ由以下两个属性标准化:
确保硬实例(hard instances,所有相应的正锚通常有一个小的t)的有效学习;根据预测的边界框的精度来保持实例之间的排名。
作者采用的想法:采用简单的实例级归一化来调整tˆ的大小(tˆ的最大值等于每个实例内的最大IoU值(u)。)
在分类任务的正锚点上计算出的二叉交叉熵(BCE)可以重写为:
i:表示对应于一个实例的Npos正锚中的第i个锚。采用焦点损失进行分类,以减轻训练过程中负样本和正样本之间的不平衡。分类任务的最终损失函数定义如下:
j:表示来自Nneg负锚的第j个锚。γ:为focal loss参数,2。
Localization objective
一个对齐良好的锚(即大t)预测的边界框通常具有大的分类分数和精确的定位,这样的边界框更有可能在NMS期间被保留。与分类目标类似,基于tˆ对每个锚点计算的边界框回归损失进行重新加权,一个GIoU损失(LGIoU)可以重新表述如下:
b:预测的边界框。b:相应的GT框。
如果觉得《论文翻译 | TOOD:《TOOD: Task-aligned One-stage Object Detection》详细解读》对你有帮助,请点赞、收藏,并留下你的观点哦!