论文 FCOS: Fully Convolutional One-Stage Object Detection
及GitHub源码地址
FCOS做目标检测,模仿语意分割,对每个像素进行预测。避免了和anchor(proposal)相关的复杂计算和超参数,只需要一个NMS的后处理;最优结果:backbone用ResNeXt-64x4d-101,AP=44.7%.
1、Prior
- feature map
F
i
F_i
Fi中的像素
(
x
,
y
)
(x,y)
(x,y),映射回原图
(
s
x
+
⌊
s
2
⌋
,
s
y
+
⌊
s
2
⌋
)
(sx+\lfloor\frac{s}2\rfloor,sy+\lfloor\frac{s}2\rfloor)
(sx+⌊2s⌋,sy+⌊2s⌋),s为该feature map的total stride。
adding ⌊ s 2 ⌋ \lfloor\frac{s}2\rfloor ⌊2s⌋是为了使其接近感受野中心。 - 正负样本:
该像素落入groun-truth(以下简称gt)的bbox中,即为positive;并且类别c为该gt的类别。否则为negative,类别c=0。 - bounding box (l,t,r,b)
bounding box是一个四维向量 ( l , t , r , b ) (l,t,r,b) (l,t,r,b),分别为当前像素距离gt box四个边的距离。
l = x − x 0 t = y − y 0 r = x 1 − x b = y 1 − y l=x-x_0\quad t=y-y_0\\r=x_1-x\quad b=y_1-y l=x−x0t=y−y0r=x1−xb=y1−y
( x 0 , y 0 , x 1 , y 1 ) (x_0,y_0,x_1,y_1) (x0,y0,x1,y1)为gt box的坐标。
2、Output & Loss
2.1 classification
是C个二分类,对于输出>0.05的为positive。因为这些输出都是>0的正数,所以用 e x p ( s i x ) exp(s_ix) exp(six)将输出结果转为大于0的数。 s i s_i si为FPN的level i i i的参数。
2.2 center-ness
- 由于产生了很多low quality的box(是由离目标中心点较远的像素产生的),所以为了抑制这些low quality的box,引入了center-ness。 c e n t e r n e s s = m i n ( l , r ) m a x ( l , r ) × m i n ( t , b ) m a x ( t , b ) centerness=\sqrt{\frac{min(l,r)}{max(l,r)}\times\frac{min(t,b)}{max(t,b)}} centerness=max(l,r)min(l,r)×max(t,b)min(t,b)
- Loss为BCE(Binary Cross Entropy)
- center-ness的结果与classification相乘,用来降低low quality的box的权重。
- low quality box如下图所示:
2.3 bbox
bbox是一个4D的向量 ( l , t , r , b ) (l,t,r,b) (l,t,r,b)。同样用 e x p ( s i x ) exp(s_ix) exp(six)将输出结果转为大于0的数。
3、Head
4个输出channel=256的conv。具体见下图的网络结构。
4、Network
4.1 Backbone
4.2 FPN
- gt box有重叠(over-lap)的情况,通过FPN来解决。
- 不同尺寸的box用FPN的不同level去预测。选择方法如下:
对于 m a x ( l , r , t , b ) > m i o r m i n ( l , r , t , b ) < m i − 1 max(l,r,t,b)>m_i or min(l,r,t,b)<m_{i-1} max(l,r,t,b)>miormin(l,r,t,b)<mi−1的,认为negative。其中 m i m_i mi为FPN level i i i的最大回归距离。对于 m 2 , m 3 , m 4 , m 5 , m 6 , m 7 m_2,m_3,m_4,m_5,m_6,m_7 m2,m3,m4,m5,m6,m7分别为 0 , 64 , 128 , 256 , 512 , ∞ 0,64,128,256,512,\infty 0,64,128,256,512,∞。 - 因为一般有重叠的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