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

21 篇文章 0 订阅
16 篇文章 0 订阅

一、论文

(19)FCOS: Fully Convolutional One-Stage Object Detection

https://arxiv.org/abs/1904.01355

code:  https://tinyurl.com/FCOSv1

二、论文笔记

1、背景

(1)、anchor-based 需要设置的超参数太多了,而且超参数很影响最后的结果(比如cascade Rcnn,使用不同IOU阈值的的结构级联,就能提升效果),另外预设的框很难适应不同的数据集不同物体的大小, 过多的anchor boxes 造成正负样本失衡,而且或增加计算量以及内存。

(2)、之前也有一些工作利用以FCN为基础的框架做物体检测,但是这些工作 a)、比如DenseBox为了处理不同大小的bounding box,需要使用图像金字塔,这一点不符合fcn的思想(一张图片只计算一次),b)、这些工作都是针对特殊领域的物体检测(人脸,文字),对于一般意义上的物体检测(含有很多重叠的物体)效果就不一定好了。

 

2、创新点

(1)、FCOS:提出fcos采用类似语义分割的思想,对像素进行分类,属于目标的bouding box内的每个位置(针对某一层的feature maps)的值作为正例,不属于的作为负例,然后每个位置除了要预测该位置对应bouding box的类别外,还需要预测该位置与bouding box的四个边的距离

:另外作者认为这种想法效果好的其中一个原因可能是,这样的正例(每个bbox内的位置)相比只使用具有较大的IOU值的bbox作为正例的数目要多很多,也就是有更多的位置数据具体的为最后的目标来服务。

(2)、网络结构:

在backbone后面分别连接四个卷积层,来做分类和回归,并且分类采用c个(总类别数)的二分类器

回归分支: 回归的4个值都是正的,所以为了保证回归支路的输出结果都是正,回归支路的输出会通过exp()函数再输出,exp()函数输入是负无穷到正无穷,输出大于0。

 

(3)、Loss Function:

分类使用focal loss  回归使用IOU loss

(4)、inference

inference的时候,设置一个阈值,把feature map上的分类结果大于阈值的都设为正例,然后根据该正例的t输出使用下面的公式得到最终的bbox

:这样会得到非常多的bbox

 

(5)、解决多尺度的问题 (大的strade 使得小的物体在较后面层的feature maps上消失了,造成召回率过低),以及目标重叠的问题

引入FPN结构并基于不同特征层预测不同尺度的目标框,这样就将大部分有重合的目标框剥离开来,在不同特征层分别预测,而区分哪些点在哪个特征层预测的依据是该点的(l, t, r, b)这4个值的最大值是否在预先设定好的范围内。每个特征层都预先设定好尺度范围,比如P3层只负责最大值在[0, 64]范围内的点,P4层只负责最大值在[64, 128]范围内的点,依次类推。举个例子,在Figure1的右图中,假设重合部分的那个点到球拍框的4个距离中最大值为60,到人框的4个距离中最大值为120,那么这个点在P3层时的回归目标是球拍框,在P4层时的回归目标是人框(因为我们是在每一个位置都去预测一个结果的,所以该leve的该位置的目标如果超出了范围,那么我们就把它设为负例),而在P5、P6、P7层时是负样本点。当然,这种区分主要也是基于大部分有重合的目标框尺度差别较大,假如重合目标框大小接近且类别不同,那还是比较棘手的。对于那些仍旧无法剥离的目标框,还是沿用原来的策略:训练目标基于重合目标框中面积最小的那个框进行计算。

原文:https://blog.csdn.net/u014380165/article/details/90962991

(该思路主要还是解决物体重叠的问题)

 

(6)、Center-ness for FCOS

新定义了一种指标,作为学习的目标,就是评价该位置属于目标的什么位置,用来抑制最终的输出bboxs,具体就是是使用这个输出分数乘以输出的类别分数,然后再使用NMS

这里的意思就是针对每个bbox ,尽量使用该bbox 对应得中间位置的激活值来负责预测。最终选取那些中间的激活值预测出来的结果,而抑制掉边缘的激活值预测的结果

值为1的话就是正中间,0的话就是角落,

 

3、细节

(1)、YOLOv1因为只用图像中间区域对应的激活值来预测框的结果,因此召回率很低

 

4、实验

(1)、多尺度的方法,确实可以减少模糊框的产生

(2)、作者实验的时候使用真值计算center-ness 发现相比模型来预测这部分,提升很大,说明目前的center-ness分支的设计还有很大的空间,甚至可以单独训练一个网络来做这件事(留到将来来做),这样的话,只要是使用NMS后处理的检测器都会得到受益

(3)、经过一些调优效果好于RetinaNet,甚至也超过了一点CornerNet,但是CornerNet的backbone net是Hourglass-104更加的复杂(时间/空间)

(4)、把两阶段的检测器的第一阶段的任务(RPNs with FPN)换成FCOS来实现(依然是两阶段的检测器),效果也很好

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值