通过Anchor引导实现区域提议.

anchor-based的目标检测方法需要预设anchoranchor设置的好坏对结果影响很大,因为anchor本身不会改变,所有的预测值都是基于anchor进行回归;一旦anchor设置不太好,那么效果肯定影响很大。

不管是one stage还是two-stage,都是基于语义信息来预测的,在bbox内部的区域激活值较大,这种语义信息正好可以指导anchor的生成。本文通过图像特征来指导 anchor 的生成。通过预测 anchor 的位置和形状,来生成稀疏而且形状任意的动态anchor

作者采用了一种可以直接插入当前anchor-based网络中进行anchor动态调整的做法,而不是替换掉原始网络结构。以retinanet为例,在预测xywh的同时,新增两条预测分支,一条分支是loc (batch,anchor_num * 1,h,w),用于区分前后景,目标是预测哪些区域应该作为中心点来生成 anchor,是二分类问题;另一条分支是shape (batch,anchor_num * 2,h,w), 用于预测anchor的形状。

一旦训练完成,学习到的anchor会和语义特征紧密联系:

Guided Anchoring的测试流程为:

anchor的定位模块loc_preds是个二分类问题,希望学习出前景区域,采用focal loss进行训练。这个分支的设定和大部分anchor-free的做法一致:

anchor的形状预测模块loc_shape的目标是给定 anchor 中心点,预测最佳的长和宽,这是一个回归问题。

\[\mathcal{L}_{\text {shape }}=\mathcal{L}_1\left(1-\min \left(\frac{w}{w_g}, \frac{w_g}{w}\right)\right)+\mathcal{L}_1\left(1-\min \left(\frac{h}{h_g}, \frac{h_g}{h}\right)\right)\]