FSAF
论文提出了一个模块来解决基于anchor方法的两个限制:
- heuristic-guided feature selection
- overlap-based anchor sampling
啥意思呢?对于下面这张,根据之前的基于anchor的方法尺度分配原则,6根据各种车的尺度会分配到不同层去预测,但谁也不知到黄色的车在第二个分支预测结果好,还是在第三个分支好。并且anchor的密集采样会引入较大的计算量,效率较低。
而FSAF模块不再为层挑选实例,而是为实例挑选层。每一个实例都能被分配到任意层,为其挑选合适的层的时候不再仅仅根据box的大小,而是根据instance content(??),之后被选择的层再去负责预测这个实例。
整体框架如上图所示。
-
分类输出
首先分了两个区域,如下图所示,白色区域是有效区域(缩放因子是0.2),里面的点都是正样本,灰色区域是可忽略区域(缩放因子是0.5),这一部分的梯度不回传,如果两个实例重叠,就选择预测比较小的实例。(对于这里的ignore区域,经过知乎大佬的指点,ignore可以看作是硬截断,比如在基于anchor的方法中,我们将iou高于0.6的作为pos,若直接将低于0.6的作为neg回传梯度对于接近0.6的anchor是不合适的,所以可以讲0.5-0.6的anchor忽略掉,只将小于0.5的作为neg,fcos中的centerness就是一种软截断)。计算非灰色区域的focal loss然后再除以白色区域的像素个数进行归一化。
-
回归输出
预测白色区域各像素到gt box边界的距离,计算iou loss的平均值。
- 如何进行Online Feature Selection?
也就是为这个实例选择最合适的层。首先对于每一个实例计算每个层的损失和(包括分类损失和回归损失),然后从中选一个损失最小的层。这个最小的损失实际上就是一个下界。
选择完之后,被选择的层就进行后续的回归和预测。
这种自适应选择机制涨了1点左右。