题目:FCOS:Fully Convolutional One-Stage Object Detection
第一作者:Zhi Tian The University of Adelaide, Australia
发表:CVPR2019
论文:https://arxiv.org/pdf/1904.01355.pdf
代码:https://github.com/tianzhi0549/FCOS
思路:Anchor-based detectors有以下几个不足:
- 检测的效果对与anchor box有关的超参数十分敏感,需要精心设计
- 对新的任务参数需要重新设计,移植性差
- 为了提高召回率而使用了大量anchor box,而大多数box会被标记为负样本,从而导致正负样本的不均衡
- 大量的anchor boxes导致训练和测试过程中大量繁杂的IoU计算
可以看出这些不足主要和anchor box有关,当然它也有效的提高了AP,那有没有一种方法在保持高AP的同时,又避免anchor box的缺点呢,一种思路是针对anchor box的缺点进行设计,比如自动设计anchor box的参数,解决不足1和2,当然也会有其他方法解决3和4,另一种思路就是像本文提出的FCOS一样,直接去掉anchor box,这样带来的好处如下:
- 可以复用其他FCN-solvable tasks比如语音分割的方法
- 极大减少了参数,避免了设计的困难
- 减少了冗余的计算
- 移植性好
网络结构:Backbone + FPN + head
参考https://www.jianshu.com/p/4dc31334eec6和源码
关键因素:
- 逐像素预测:在每个featuremap的像素上进行预测,与只考虑中心的YOLOv1相比显而易见的提高了召回率(参见论文)
- FPN: 实现多尺度的预测,anchor free不可避免的会产生一种情况,一个像素同时对应多个box,不同box对应不同大小的物体,如果简单舍弃则会导致召回率下降,引入FPN之后就可以在不同的层检测出所有的物体
- centerness:因为是逐像素预测,所以会不可避免地引入赘余的regression box,为了在NMS中去掉多余的box,引入centerness,使每个像素预测出的box尽可能中心一致