文章目录
论文:Probabilistic Anchor Assignment with IoU Prediction for Object Detection
代码:https://github.com/open-mmlab/mmdetection/tree/master/configs/paa
出处:ECCV2020
一、背景
使用手工特征,如 IoU 来判定一个 anchor 的正负的方法虽然简单,但却忽略了很重要的一点:交集区域可能会包括很多背景、噪声,所以有很多方法也开始研究不同的 positive selection 的方式,如 detection-specifific likelihood [42]、the statistics of anchor IoUs [40] 或 the cleanness score of anchors [16,20]。
本文的两点贡献:
1、本文提出了 probabilistic anchor assignment 方法,根据模型的学习,来自适应的将一系列 anchor 分为 positive 和 negative,即使用概率模型来给标签分配正负。
- 首先,设定一个 anchor score,来衡量 anchor 分类和定位的质量,该得分是将分类和定位 loss 函数进行了联合
- 然后,对每个 anchor 都计算对应的 anchor score,且将 anchor score 的分布建模成了高斯混合分布,该得分反应了模型如何在每个 anchor 的视角来寻找有用的信息来检测目标,作为一个正样本,期望 anchor score 越大越好,
- 最后,通过这些已知的 anchor score,使用极大似然找到 negative 和 positive 的两种分布,能够很好的区分正负样本,如图 1,有了上述分布后,就能很好的使用 anchor score 来进行正负样本的区分,也就是将 label assignment 的问题转化为了概率问题,可以直接从分布中拿到结果。
2、提出了 IoU score * classification score,作为框排序的衡量标准
由于大多数方法都有训练和测试过程不一致问题,训练时分别最小化分类和回归 loss,测试时只使用分类得分来进行 NMS,但一个框的效果,不应该只基于分类得分来评判,还应该考虑定位。作者预测了每个 anchor 的 IoU,作为 localization score,和分类得分相乘后,用最后的乘积对 anchor 排序,如图 2 所示。
二、方法
2.1 Probabilistic Anchor Assignment Algorithm
此处作者考虑 anchor assignment 策略有三点需注意:
- 第一,应该基于如下方式来衡量 anchor 的质量:与之相关的模型是如何确定该 anchor 是一个目标的可能性的
- 第二,正负样本的区分不能存在人为设置的参数(如 IoU 阈值等),需要自适应的完成样本分配
- 第三,label assignment 的过程应该被建立为一个针对某个分布的似然最大化的过程,保证 assignment 的过程是一个概率方式。
极大似然估计,通俗理解来说,就是利用已知的样本结果信息,反推最具有可能(最大概率)导致这些样本结果出现的模型参数值!
换句话说,极大似然估计提供了一种给定观察数据来评估模型参数的方法,即:“模型已定,参数未知”。
所以,作者设计了一个 anchor scoring,用于衡量 anchor 的正负
作者如何实现 anchor score,score 可以看做 anchor 对距离自己最近的 gt g g g 的预测框的质量,直观的方式是将分类得分和定位得分相乘得到,如公式 1:
- S c l s S_{cls} Scls:分类得分,可以从分类头拿到
- S l o c S_{loc} Sloc:定位得分,使用预测框的 IoU 和 gt 的 IoU 来衡量,如公式 2
- λ \lambda λ:权重
- x x x:输入图像
- f θ f_{\theta} fθ:参数为 θ \theta θ 的网络
- 该得分是依赖于模型参数的,而非 IoU 阈值、正 anchor 个数等人工给定的参数。
- 分类得分 S c l s S_{cls} Scls :直接从分类头拿到的
- 定位得分 S l o c S_{loc} Sloc :不能直接从回归头拿到(回归头输出的是偏移),而是计算每个 anchor 和其 gt 的 IoU 得到的
使用负对数形式后,得到:
为什么要使用负对数?
anchor score 越高,越有可能是正样本,anchor score 越高,则要求分类得分和定位得分都越大,换个说法,要求分类 loss 和定位 loss 都越小。所以,使用负对数能够将得分转化成 loss 的形式,最大化 anchor score ,则就是最小化 anchor score 的负对数结果。
由于 anchor assignment 的目的是将一堆 anchor 区分为正负样本,故使用高斯混合模型来对 anchor score 的分布进行建模:
- w 1 , m 1 , p 1 w_1, m_1, p_1 w1,m1,p1 和 w 2 , m 2 , p 2 w_2, m_2, p_2 w2,m2,p2 分别为两个高斯分布的权重、均值、预测结果
- 通过公式 1 得到 anchor score 后,可以使用 EM 算法来求解这个高斯混合模型的似然结果
- 通过 EM 算法得到参数后,每个 anchor 是正样本还是负样本就可以确定了,如图 3 展示了使用不同阈值对两个高斯分布进行区分的情况,表 1 左侧展示了不同分段情况下的效果,© 效果最好,还和其他两种简答的采样方法进行了对比,fixed numbers of positives (FNP) 和 fixed positive score ranges (FSR),本文方法最好,表 1 右侧展示了不同模块的效果,PAA + IoU pred + Voting 效果最好。
正样本的数量和什么有关?
PAA 中,正样本的数量是自适应的,基于模型参数的概率估计,和其他的基于手工的方法、不考虑模型参数的方法有很大的不同。且由于基于一维 GMM,所以也很简单。
故此,将 PAA 嵌入一个目标检测器的过程如下:
- P p o s P_{pos} Ppos: anchor 为正的概率,也就是图 3 中对应的纵轴的值,每个不同的 anchor score 都会对应一个概率,从 PAA 得到,其实在计算 loss 的时候,这里的概率已经是 0/1 了,因为已经能够根据概率来划分其的正负了,故计算 loss 的时候其实是没有这个概率值的
- P n e g P_{neg} Pneg: anchor 为负的概率,从 PAA 得到
- ϕ \phi ϕ:背景类别
- PAA 可以看做计算 P p o s P_{pos} Ppos 和 P n e g P_{neg} Pneg 并将它们二值化来方便优化的过程(区分为正或负),在每次训练中,先估计 P p o s P_{pos} Ppos 和 P n e g P_{neg} Pneg,然后根据参数来计算 loss 的梯度
PAA 的整体过程如下:
- 输入是所有的 gt 和 anchor
- 输出是该 anchor 的类别:正、负、忽略
3:在计算 anchor score 之前,先使用 IoU 将这些 anchor 分到 IoU 最大的 gt 上去
5-11:为了让 EM 更高效,在每层金字塔层都取了 top-k 的 anchor
12:进行 EM
16:非 top-k 的 anchor(实验用的 9),都被分为负样本
2.2 IoU prediction as Localization Quality
由于很多方法在测试过程中只使用分类得分,而忽略了定位质量,所以作者使用了和公式 1 相同的方式,由于测试的时候拿不到 gt,所以,作者在测试的时候预测了一个 IoU,单独加了一个 IoU 预测头来实现,则训练的 loss 函数又变为为:
- L I o U P L_{IoU P} LIoUP 是 IoU prediction loss,定义为真实 IoU 和预测 IoU 的二值交叉熵
- 在测试的时候,预测 IoU,然后和分类得分相乘,作者 NMS 排序的标准即可,和 FCOS/ATSS 中的类似,
2.3 Score Voting
作者还提出了一个简单高效的后处理方法——score voting,受启发于 variance voting,对每个 NMS 保留下来的 bbox b b b 进行如下操作:
- b ^ \hat{b} b^ :更新后的 bbox
- s i s_i si:公式 1 计算得到的得分
- δ t \delta_t δt:控制更新程度的超参数
虽然受启发于 variance voting,但没有使用方差来区分每个 anchor 的权重,而是使用分类和定位得分的乘积来区分不同 anchor 的权重。
三、效果
1、anchor assignment 可视化
如图 4a 所示,随着训练进行,positive 和 negative 样本的区别越来越明显,positive anchor 不是一定比 negative anchor 的 IoU 大,很多 negative anchor 在训练到 30k~50k 时,仍然有高 IoU,那些固定数量的 positive sample 方法,会把这些负样本误分为正样本,随着训练进行,positive anchor 的定位准确率会逐渐增大。
如图 4b 所示,为了对比本文方法和其他使用 scoring anchor 的方法的不同,画出了随着训练过程的进行,正样本的数量曲线图。本文的方法在每个训练过程,都选择了不同的数量,更有适应性。
2、和 SOTA 对比