导读
显式的使用loss来对齐分类和定位任务。
TOOD: Task-aligned One-stage Object Detection
论文链接:后台发送“tood”获取论文和代码链接。
1、介绍
现有的物体检测方法的2个局限性:
(1)分类和定位的独立性。目前,分类和定位一般用的是2个独立的分支,这样使得2个任务之间缺乏交互,在预测的时候就会出现不一致性。得分高的预测位置不准,位置准的预测得分不高。
(2)任务无关的样本分配。大多数的anchor free的物体检测器使用基于几何的方式来分配样本点,anchor-based物体检测器一般使用IoU的方式来分配样本点,但是对于分类最优的anchor和对于定位最优的anchor往往并不是同一个。这些常用的样本分配策略都是和任务无关的,不能对这两个任务同时做出准确的预测。
针对上面的2个问题,我们提出了任务对齐的一阶段物体检测器(Task-aligned One-stage Object Detection:TOOD)。
Task-aligned head
我们设计了一个Task-aligned head (T-head) 来增强2个任务之间的交互。概念上很简单:计算2个任务的交互特征。通过TAP(Task-Aligned Predictor )来做预测。
Task alignment learning
我们提出了Task Alignment Learning (TAL) 来显式的把两个任务的最优anchor拉近。这是通过设计一个样本分配策略和任务对齐loss来实现的。样本分配器计算每个anchor的任务对齐度,同时任务对齐loss可以逐步将分类和定位的最佳anchor统一起来。
2、方法
总的pipeline还是‘backbone-FPN-head’ 的形式,这里和ATSS一样,每个位置只使用了一个anchor。这里的anchor其实和anchor free中的anchor point是一个概念。总体结构如下图,T-head和TAL协同工作,提升性能。具体来说,T-head首先对FPN特征进行预测,然后TAL对这两个任务给出一个一致性的度量,最后T-head会自动的调整分类输出和定位输出。
2.1 Task-aligned Head
我们设计的这个任务对齐头如下图(b),目标有两个,提高2个任务的交互性,增加检测器学习对齐的能力。
对于包围框,我们用空间偏差图来调整预测:
这两个用来对齐的图是自动学习出来的:
2.2 Task Alignment Learning
2.2.1 任务对齐样本分配
anchor对齐度量
我们用分类得分和预测框和gt的IoU的高阶组合来表示这个度量:
这里α和β可以用来控制得分和IoU对这个指标的影响程度。
训练样本分配
对于每个gt,我们选择m个具有最大t值的anchor作为正样本点,其余的为负样本。另外,训练的时候还会计算一个新loss,用来对齐分类和定位。
2.2.2 Task-aligned Loss
分类目标函数
为了显式的增加对齐的anchor的得分,减少不对齐的anchor的得分,我们用t来代替正样本anchor的标签。我们发现,当α和β变换导致正样本的标签变小之后,模型无法收敛,因此,我们使用了归一化的t,这个归一化有两个性质:1)确保可以有效学习困难样本,2)保持原来的排序。
同时,我们借鉴了focal loss的思想,最后的损失函数如下。
定位损失函数
和分类类似,我们使用归一化的t来对GIoU loss进行了加权:
总的loss就是把这两个损失加起来。
3、实验
3.1 消融实验
使用T-head的效果:
样本分配策略的效果:
TOOD在anchor free和anchor based上的比较:
超参数的效果:
和其他的SOTA的比较:
任务对齐的质量分析:
首发:AI公园公众号
作者:ronghuaiyang
推荐阅读
关注图像处理,自然语言处理,机器学习等人工智能领域,请点击关注AI公园专栏。
欢迎关注微信公众号