paper:https://arxiv.org/pdf/1904.01355.pdf
code:https://github.com/tianzhi0549/FCOS
我的复现:https://github.com/panchengl/pcldetection
当年经典的SOTA算法,现在似乎有点精度落后(但依旧很高),但是近期paper团队有重新对fcosnet做了实验进行改进,精度直接冲到SOTA了(我记得coco-ap达到0.49了),改动在哪忘了,先讨论原版的文章结构,有时间再写新的paper的操作。
首先本文是一篇anchor-free的文章,但是很多人认为fcosnet不算一个真正的anchor-free算法,区别于cornernet、centernet等,但是本文思路依旧很清晰,首先总结anchor-based算法4点不足:
1、基于anchors的模型对anchors的大小、长宽比和数量很敏感,不同的超参数设置差异很大(github第一的efficientdet就是如此,anchors的超参数设置影响非常大)
2、即使anchors设计好,固定的anchors也难以适应所有的形状目标,检测器很难适应,泛化性能不好
3、为了高的召回率,模型会覆盖密集的anchor,但大都是negative example,导致样本不平衡
4、anchors数量太多了,比如retinanet号称达到了anchors数量的极限,带来了复杂的计算量。
然后paper提到了FCN,FCN在语义分割、关键点估计、深度估计等各个方面,但唯独目标检测没有使用,主要是由于存在anchor,那如果抛弃anchor,将FCN应用于目标检测,将这些任务都统一使用FCN来做,即以像素点来做,结果也是可以的。
使用fcosnet以后,具有如下优点:
1、检测器没有anchors了,无需严谨的设计参数,且检测器泛化简单,并极大地减少了计算量
2、没有复杂的计算量以后,加快了训练和推理的速度,one-stage的典型。
3、精度很高,甚至基于fcosnet的简单修改,可以应用于其他任务。