目标检测anchor-free经典算法FCOS解读
论文名称:FCOS: Fully Convolutional One-Stage Object Detection
论文地址:https://arxiv.org/abs/1904.01355
目前基于深度学习的目标检测如果以有无anchor来分,主要分为anchor-based以及anchor-free两类。
FCOS就是anchor-free类算法中一个非常经典的算法。
一、 主要思想
文章上来首先介绍了anchor-based类算法所存在的一些固有的不足:
- anchor-based类算法的检测性能受到框的尺度、宽高比以及数量的影响比较大,例如使用RetinaNet通过精细的调整这些超参数在COCO上可以得到4%AP的提升。
- 在不同的检测任务中,由于数据集的不同,这些与anchor相关的超参数均需要重新设计,普适性较差。
- 为了尽可能精确的匹配图像中的物体,需要成千上万预设的anchor,导致正负样本的极度不均衡。
- 训练过程中,对于box的匹配需要计算所有的IOU值,计算复杂度较高。
针对以上提到的anchor-based算法的一些问题,anchor-free系列算法不使用预设的anchor来完成目标检测。其中cornernet系列的算法(cornernet,centernet,extremenet)使用关键点检测的方案完成目标检测,但是这种方法需要较为复杂的后处理;DenseBox算法在通用的目标检测中适应性不好。本文的FCOS算法使用语义分割的思想,逐像素点来完成目标检测。
二、 方法详解
FCOS算法的网络架构如下图所示,使用FPN实现多层特征图的融合。
最终每个检测头依旧包含类别分类以及边界框回归分支。其中分类分支包含CenterNess的分支主要用来解决大量低质量预测框的问题,具体的原因以及操作方式,下边再说。
- 「正负样本的确定」
如果一个像素点落入了GT中,那么其就是正样本,其类别为此GT的类别。否则就是负样本。「(这里就可以看出,对于一个GT会有大量预测框的中心点远离GT中心点的低质量预测框,这也就是centerness需要解决的问题)」
针对一个落入GT中的像素点(x, y),其回归分支的预测值是什么呢?
正如公式所示,其回归分支的预测值,就是回归(x, y)与GT的左、上、右、下的距离。这里为了保证回归目标的非负,依然使用指数函数exp()进行处理。
在匹配的过程中,会遇到如下图所示的一种情况,就是一个像素点同时落在多个GT中该如何处理呢?
「大部分重叠都是发生在目标大小差别比较大」的情况,FCOS通过限定对于不同尺度特征图的检测框的大小来避免这种重复区域的出现。
从FCOS网络结构图中,我么们可以看出FCOS使用 这几个特征层来进行预测,因此为了解决目标大小差别较大的情况下重叠区域的出现。根据下边的公式,如果某个像素点满足如下的条件,那么这个像素点在第i层特征层中就会被作认为是负样本,不参与回归计算。
其中,作为第i层特征图的最大检测尺寸。
「如果在同一层中依然出现重叠的区域怎么办呢?这是FCOS简单的会使用最小区域来作为回归目标。」
- 「CenterNess」
上文提到预测结果会出现很多的低质量预测框(其中心点离GT的中心点较远),因此为解决这个问题,使用centerness,其公式如下:
从公式可以看出,当预测的框,离中心点越近时,centerness趋近于1,越远趋近于0。因此centerness使用bce损失来进行优化。
三、算法结果
?
原文首发于「小哲AI」公众号,公众号主要分享人工智能前沿算法解读,AI项目代码解析,以及编程、互联网求职等技术资料文章,偶尔也会分享个人读书笔记、工作学习心得,欢迎关注,一起学习。
?
本文暂时没有评论,来添加一个吧(●'◡'●)