目标检测论文之FCOS
论文 FCOS: Fully Convolutional One-Stage Object Detection
及GitHub源码地址
FCOS做目标检测,模仿语意分割,对每个像素进行预测。避免了和anchor(proposal)相关的复杂计算和超参数,只需要一个NMS的后处理;最优结果:backbone用ResNeXt-64x4d-101,AP=44.7%.
1、Prior
- feature map 中的像素,映射回原图,s为该feature map的total stride。
adding 是为了使其接近感受野中心。
(这里是为什么,还没明白。。。待后续补充。) - 正负样本:
该像素落入groun-truth(以下简称gt)的bbox中,即为positive;并且类别c为该gt的类别。否则为negative,类别c=0。 - bounding box (l,t,r,b)
bounding box是一个四维向量,分别为当前像素距离gt box四个边的距离。
为gt box的坐标。
2、Output & Loss
2.1 classification
是C个二分类,对于输出>0.05的为positive。因为这些输出都是>0的正数,所以用将输出结果转为大于0的数。为FPN的level 的参数。
2.2 center-ness
- 由于产生了很多low quality的box(是由离目标中心点较远的像素产生的),所以为了抑制这些low quality的box,引入了center-ness。
- Loss为BCE(Binary Cross Entropy)
- center-ness的结果与classification相乘,用来降低low quality的box的权重。
- low quality box如下图所示:
2.3 bbox
bbox是一个4D的向量。同样用将输出结果转为大于0的数。
3、Head
4个输出channel=256的conv。具体见下图的网络结构。
4、Network
4.1 Backbone
4.2 FPN
- gt box有重叠(over-lap)的情况,通过FPN来解决。
- 不同尺寸的box用FPN的不同level去预测。选择方法如下:
对于的,认为negative。其中为FPN level 的最大回归距离。对于分别为。 - 因为一般有重叠的box的尺寸大多数是不一样的,所以可以通过这种方法将有重叠的box分配到不同level进行计算。
- 如果经过这种处理后,仍然有重叠的box,则直接选取面积最小的box作为回归目标。
5、post-process
同RetinaNet的后处理。只有NMS。
6、Training
- input:(800,<1333)
- optimizer:SGD,weiht_decay=0.0001,momentum=0.9
- lr:0.01,一共90k iteration,在60k和80k iteration时,学习率下降为原来的十分之一。
- batch_size=16