论文:FreeAnchor: Learning to Match Anchors for Visual Object Detection
代码:https://github.com/zhangxiaosong18/FreeAnchor
出处:NIPS2019
贡献点:
Anchor-based 方法的 label assignment,一般使用 IoU 来实现,大于某个阈值的 anchor 为正样本,小于某个阈值的 anchor 为负样本,每个 anchor 的 assignment 是独立的,但手工选取的参数肯定不是最优的。
原因有两点:
本文提出了一种基于学习策略的 label assignment 方法,从 3 个方面来分析:
基于上述分析,作者将 object-anchor 的匹配问题,构造成了一个最大似然估计 maximum likelihood estimation(MLE)过程,即从一些列 anchor 中选择优质的 anchor 并分配给每个 gt。
MLE 的过程,就是最大化一个似然估计,保证每个 gt 至少有一个 anchor 是同时具有高分类得分和定位得分的。其他很多分类误差大或定位误差大的 anchor 被分为 background。在训练过程中,似然估计也就变成了 loss 函数。
检测器的工作过程如下:
上面的 2 式,其实就从 MLE 的角度,同时考虑的分类和回归,但一般的方法也就缺乏了一点:如何优化 matching matrix C i j C_{ij} Cij,因为一般都是直接使用 IoU 来决定该 matrix 的值。
所以,本文中网络学习的是什么,就是这个 matrix C i j C_{ij} Cij
为了实现最优的 object-anchor 的配对,作者通过引入 detection customized likelihood 扩展了 CNN-based 检测器的结构。该结构能够在同时保证 recall 和 precision 的同时,适配 NMS。
如何实现:
首先,使用 IoU,选出 anchor 集合中的 top-n anchors(也就是缩小了 anchor 的可选择范围,但还是可以选择的,而非直接指定确定的 anchor 来匹配某个 gt)
接着,通过最大化 detection customized likelihood 来让网络学习最优的 gt-anchor 匹配
其次,为了优化 recall 效果,对每个真值,都至少需要一个 anchor,且该 anchor 对应的分类和回归结果是和该 gt 的真值很相近的(也就是该 anchor 很优质),则该目标函数可以写为:
再次,为了优化 precision 效果,分类器要能够把定位差的 anchor 分配到 background 类上去,则该目标函数如下所示,其中, P { a j ∈ A _ } = 1 − max i P { a j → b i } P\{a_j \in A\_\}=1-\text{max}_iP\{a_j \to b_i\} P{aj∈A_}=1−maxiP{aj→bi} ,表示 a i a_i ai 没有和任何 gt 匹配上的概率, P { a j → b i } P\{a_j \to b_i\} P{aj→bi} 表示 anchor a j a_j aj 能够正确预测目标 b i b_i bi 的概率:
然后,为了更好的适配 NMS 过程, P { a j → b i } P\{a_j \to b_i\} P{aj→bi} 需要满足如下三个特性,分段函数如图 2 所示:
最后,detection customized likelihood 定义如下,通过优化这个似然函数,可以同时最小化 recall 和 precision 的概率,实现在训练过程中无需手动匹配 gt-anchor:
为了实现 learning-to-match 的方法,公式 5 可以被转换成 detection customized loss function ,公式如下:
训练早期,由于所有参数都是随机初始化而来,所以所有 anchor 的置信度都比较低,而得分较高的 anchor 越有利于模型的训练,所以,作者使用了 Mean-max 函数,来选择 anchor。如图 3 所示,Mean-max 函数是近似 mean 函数的,也就是说,几乎所有的 anchor 都会用于训练。:
Mean-max 其实可以看做先 mean,最后 max 的情况。刚开始所有的 anchor 其实都不太准,所以取平均,随着训练的进行,一些 anchor 的置信度会逐步增加,最后肯定会有一个最大的 anchor 作为最终的选择。即随着训练,从 mean 过渡到 max,然后会给每个 gt 选择一个最优的 anchor。
使用 Mean-max 函数代替公式 6 中的 max 函数,并添加平衡因子和使用 Focal loss。
FreeAnchor 检测器最终的 detection customized loss 函数公式如下:
总体过程如下所述:
FreeAnchor 是以 RetinaNet 为基础检测器来进行相关实验的,使用上面公式 7 中的 loss 函数来代替 RetinaNet 的 loss 函数。
1、Learning-to-match 效果可视化
如图 4 所示,手工选择的方法有两个问题:细长目标的中心问题和多个目标聚集问题。
FreeAnchor 能够较好的解决这两个问题:
2、和 NMS 的适配
本文使用 NMS Recall (KaTeX parse error: Undefined control sequence: \tao at position 5: NR_{\̲t̲a̲o̲}) 来作为衡量指标,衡量使用不同 IoU 阈值 KaTeX parse error: Undefined control sequence: \tao at position 1: \̲t̲a̲o̲ 的 NMS 前后的 recall 指标。
KaTeX parse error: Undefined control sequence: \tao at position 1: \̲t̲a̲o̲ 从 0.05 增大到 0.9,interval=0.05,FreeAnchor 一直比 RetinaNet 的效果好。
和 RetinaNet 对比,提升了约 3% AP