乐趣区

关于算法:PSS你距离NMSfree提点只有两个卷积层-2021论文

  论文提出了简略高效的 PSS 分支,仅需在原网络的根底上增加两个卷积层就能去掉 NMS 后处理,还能晋升模型的准确率,而 stop-grad 的训练方法也挺有意思的,值得一看

起源:晓飞的算法工程笔记 公众号

论文: Object Detection Made Simpler by Eliminating Heuristic NMS

  • 论文地址:https://arxiv.org/abs/2101.11782
  • 论文代码:https://github.com/txdet/FCOSPss

Introduction


  以后支流的指标检测算法训练时大都一个 GT 对应多个正样本,使得推理时也会多个输入对应一个指标,不得不对后果进行 NMS 过滤。而论文的指标是设计一个简略的高性能全卷积网络,在不应用 NMS 状况下,可能进行齐全的端到端训练。论文提出的办法非常简略,外围在于增加一个正样本抉择分支 (positive sample selector, PSS)。
  论文的次要奉献如下:

  • 检测流程在去掉 NMS 后变得更加简略,从 FCOS 到 FCOS$_{PSS}$ 的批改能植入到其余的 FCN 解决方案中。
  • 试验证实能够通过引入简略的 PSS 分支来代替 NMS,植入 FCOS 仅需减少大量的计算量。
  • PSS 分支非常灵便,实质上相当于可学习的 NMS,因为退出 PSS 分支没有影响到原有构造,可间接去掉 PSS 分支间接应用 NMS。
  • 在 COCO 上,失去与 FCOS、ATSS 以及最近的 NMS-free 办法相当或更好的后果。
  • 提出的 PSS 分支可利用于其余 anchor-based 检测器中,在每个地位一个 anchor box 的设定下,仅通过 PSS 分支的动静训练样本抉择也能达到不错的后果。
  • 同样的想法也可用于其余指标辨认工作中,如去掉实例宰割中的 NMS 操作。

Our Method


  FCOS$_{PSS}$ 的整体构造如图 1 所示,仅在 FCOS 的根底上增加了蕴含两个卷积层的 SPP 分支。

Overall Training Objective

  残缺的训练损失函数为:

  $\mathcal{L}_{fcos}$ 为原版 FCOS 的损失项,蕴含分类损失、回归损失和 center-ness 损失。此外,还有 PSS 分支损失和 ranking 损失。在训练时 $\lambda_2$ 设置为 0.25,因为 ranking 损失对准确率只有些许晋升。

  • PSS 损失

      PSS 分支是 NMS-free 的要害,如图 1 所示,该分支的特色图输入为 $\mathbb{R}^{H\times W\times 1}$。定义 $\sigma(pss)$ 为特色图上的一个点,仅当该点为正样本时才设为 1,所以能够把 PSS 分支当作二分类退出训练。但为了借用 FCOS 多分类的劣势,论文将其与分类特色、center-ness 特色进行交融:

  用下面的分数计算 focal loss,与本来的 FCOS 分类的区别是,这里每个 GT 有且仅有一个正样本。

  • Ranking 损失

      论文通过试验发现,在训练时退出 ranking 损失能晋升性能,ranking 损失的定义为:

  $\gamma$ 代表正负样本间的间隔,默认设置为 0.5。$n_{+}$ 和 $n_{-}$ 为正负样本数量,$\hat{P}_{i_{+}}(c_{i_{+}})$ 为正样本 $i_{+}$ 对应类别 $c_{i_{+}}$ 的分类分数,$\hat{P}_{i_{-}}(c_{i_{-}})$ 为负样本 $i_{-}$ 对应类别 $c_{i_{-}}$ 的分类分数。在试验中,取 top 100 负样本分数进行计算。

One-to-many Label Assignment

  一个 GT 抉择多个 anchor 作为正样本进行训练是以后指标检测宽泛采纳的一种做法,这样的做法可能极大地简化标注要求,同时也可能兼容数据加强。即便标注地位有些许偏差,也不会扭转抉择的正样本。另外,多个正样本可能提供更丰盛的特色,帮忙训练更弱小的分类器,比方尺寸不变性、平移不变性。因而,对于原生的 FCOS 分支的训练仍然采纳一对多的形式。

One-to-one Label Assignment

  一对一的训练形式须要每次为 GT 抉择最佳正样本,抉择的时候须要思考分类匹配水平和定位匹配水平,这里,先定义一个匹配分数 $Q_{i,j}$:

  $i$ 为预测框编号,$j$ 为 GT 编号,超参数 $\alpha$ 用来调整分类和定位间的比值。$\Omega_j$ 示意 GT $j$ 的候选正样本,采纳 FCOS 的规定,在 GT 的核心区域的点对应的 anchor 均为候选正样本。最初,对所有的 GT 及其正样本采纳二分图匹配,通过匈牙利算法抉择最大化 $\sum_{j}Q_{i,j}$ 的匹配计划。

Conflict in the Two Classification Loss Terms

  在论文提出的计划中,损失项 $\mathcal{L}_{fcos}$ 采纳一对多的匹配计划,而损失项 $\mathcal{L}_{pss}$ 采纳一对一的匹配计划,这意味着有局部 anchor 可能会被同时划分为正样本和负样本,导致模型难以收敛。为此,论文提出了 stop-grad 的概念,即阻止 PSS 分支的梯度回传到 FCOS 中。

Stop Gradient

  stop-gradient 操作在训练的时候将其中一部分网络设置为常数,定义 $\theta=\{\theta_{fcos},\theta_{pss}\}$ 为网络须要优化的参数,训练的指标是求解:

  将上述求解分成两个步骤:

  即在一轮迭代中,交替优化参数 $\theta_{fcos}$ 和 $\theta_{pss}$。比方在求解公式 5 时,$\theta_{pss}$ 的梯度置为零,按作者的说法,这块间接用 pytorch 的 detach() 进行拆散。另外一种办法是间接离开训练,当求解公式 5 时,设置 $\theta_{pss}=0$ 直到收敛,等同于本来的 FCOS 训练。而在训练 PSS 分支时,解冻 FCOS 参数直到收敛。论文通过试验发现离开训练能够极大地缩短训练工夫,但性能稍差些。

Experiment


  从论文的试验来看,PSS 分支 +stop grad 的成果还是不错的。论文还有很大比照试验,有趣味的能够去看看。

Conclusion


  论文提出了简略高效的 PSS 分支,仅需在原网络的根底上增加蕴含两个卷积层就能去掉 NMS 后处理,还能晋升模型的准确率,而 stop-grad 的训练方法也挺有意思的,值得一看。



如果本文对你有帮忙,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

退出移动版