论文阅读:FCOS: Fully Convolutional One-Stage Object Detection

FCOS: Fully Convolutional One-Stage Object

文章
  对基于anchor的one-stage detector来说,其实有多少种anchor(比如常用9种),就意味着要训练几个detector,于是ground truth就会被分给不同的detector用于训练,我认为这样会导致两个问题:1.对于某些anchor,与之匹配的ground truth会比较少,也就导致用于训练的样本会少,效果不好;2.即使anchor设置的好,能够让ground truth比较均匀地分配,每种anchor能用的训练样本还是只占总样本数的1/9。虽然进行data augmentation可以一定程度缓解这个问题,但没有从根本上提高训练样本的使用率。另外就是yolo中一个训练样本只会让一个anchor拿来训练,这也是对训练样本的浪费,ssd中一个训练样本会分给多个anchor。

  其实最初使用anchor的目的是为了多尺度(在Faster R-CNN和SSD中都有说到),但后来又有了专门处理多尺度的FPN,不过anchor机制还是被保留了下来。本文的话我觉得就是觉得有了FPN后,anchor其实就没啥用了,于是去掉了不同形状的anchor。但是并不是像yolo v1里面那样直接对bounding box的绝对位置和形状进行预测(这样太不稳定了),因此还是保留了anchor的中心点作为reference location对bbox的两个角点(4个边)进行回归,也就是对于HxWxC的feature map,输出为HxWx4,将4个通道里面的值与每个位置对应到原图的坐标值进行计算就可以得到预测的bbox(基于anchor的输出会是HxWx4xK,K为anchor个数)。由于没有了anchor,因此当不使用FPN时,所有的样本都拿来训练同一个detector,本文在使用FPN的时候由于不同level共享detection head,因此虽然不同样本会在不同的level进行训练,但其实还是训练的同一个detector。

  本文设置正样本的策略是,将HxW的feature map映射回原图中得到HxW个点,如果某个点落在一个ground truth里面的话,就是正样本。和yolo一样,FCOS只会对正样本进行bounding box regression。乍一看的话,这种正样本确定策略的问题是:1.如果物体比较小,就很可能不包含任何点;2.一个点落在多个物体之中怎么办。文章的应对办法是FPN,显然高分辨率的feature map对应的点会更加密集,会也更容易落在物体里面,本文点的最小间隔是8 pixels(因为使用的最大的feature map的stride是8),这样的话长或宽小于8个物体就可能不包含点,这一情况文章没有说明如何处理,但似乎对性能没有影响。对于第二点的话,如果一个点落在多个ground truth中,会选择符合该点所在level对应的尺寸的ground truth作为回归的target。

  本文还有一个点就是预测了一个centerness,也是作为和yolo中的objectness类似的score,用于NMS的,暂时就不细说了。模型的架构如下:

to be continued…

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值