AI | FCOS:机器视觉中超越anchor-based完全anchor-free的目标检测器

AI | FCOS:机器视觉中超越anchor-based完全anchor-free的目标检测器

编者按

在计算机视觉、目标检测领域,Anchor-Free旨在不产生anchor,也不利用预测框和真实框的IOU进行优化,而是使用一种segmentation-like的方式直接预测真实框,这当中有什么困难?如何解决呢?

文章作者:TeddyZhang
责任编辑:TeddyZhang
文章发表于微信公众号【运筹OR帷幄】:AI | FCOS:机器视觉中超越anchor-based完全anchor-free的目标检测器
欢迎原链接转发,转载请私信@运筹OR帷幄获取信息,盗版必究。
敬请关注和扩散本专栏及同名公众号,会邀请全球知名学者发布运筹学、人工智能中优化理论等相关干货、知乎Live及行业动态:『运筹OR帷幄』大数据人工智能时代的运筹学

今天介绍一篇已开源的Anchor-Free的目标检测算法,读完这篇文章真的启发很大,并且解决了自己之前很多疑惑,在进入正题之前,作者分析了Anchor-Based的缺点:


1、其检测性能对于anchor的大小,数量,长宽比都非常敏感,通过改变这些超参数Retinanet在COCO benchmark上面提升了4%的AP。

2、这些固定的anchor极大地损害了检测器的普适性,导致对于不同任务,其anchor都必须重新设置大小和长宽比。

3、为了去匹配真实框,需要生成大量的anchor,(FPN需要180K)但是大部分的anchor在训练时标记为negative,所以就造成了样本间的不平衡(没有充分利用fore-ground)

4、在训练中,需要计算所有anchor与真实框的IOU,这样就会消耗大量内存和时间


而且FCNs的网络在密集检测例如语义分割任务都有很好的效果,那我们能不能用语义分割的思想逐像素点的来解决检测问题呢?参考semantic segmentation~

论文地址:

arxiv.org/abs/1904.0135

代码地址:

github.com/tianzhi0549/

其实这个想法笔者也有过,但是这种方式会存在一个问题,就是真实标签的区域交叠问题,如果那个分割区域交叠了,那么交叠区域到底算是那个问题的呢?

比如上图的人和网球拍,还有一种如果人拿着苹果,这就完全重叠了!作者在这篇论文给出了解决方案!


1算法总览

可以看到,这个算法也是用了FPN的结构,可以为什么最后两层没有进行上采样呢?这个思路在我之前解读过PyramidBox中有说道,FPN结构在高层的语义特征进行融合效果并不好,所以构建FPN没有必要使用所有的卷积层。但为了尺度的多样性,在其后面加入了P6/P7.这个检测框架的优点:

  1. 检测问题可以被统一到其他FCN-solvable的问题,如语义分割,可以简单地重用其他任务的idea.
  2. 由于anchor-free,所以不需要像anchor-based去大量的调整参数,使训练也更为简单。并且由于不用计算IOU,所以节省了大量算力和内存。
  3. 性能更优,但更为简单地anchor-based检测器,we encourage the community to rethink the necessity of anchor boxes in object detection
  4. 提出了一些关于交叠区域的解决方法和思考


2网络输出与损失函数

首先我们确定正负样本,如果一个location(x, y)落到了任何一个GT box中,那么它就为正样本,并标签为类别

用于分类问题,我们还可以得到一个4D的向量

,也就是这个点到左、上、右、下边的距离。具体公式如下:

如果这个点落在了两个真实框的交叠区域,那么我们就取最小的那个当做回归目标。在后面介绍的利用FPN进行多尺度预测会极大地减少这种情况的发生。如果不可避免的发生了,那么我们就简单的利用这个策略!

因此根据我们训练目标,最后一层的网络输出为一个80D的向量

用于分类层,4D的向量也就是(l, t, r, b),用于回归层。跟RetinaNet一样,我们使用4个卷积层的backbone用于分类和回归,接着由于回归目标(l, t, r, b)都是正的,作者使用exp()将其映射到范围(0,正无穷),应该是为了增加回归框的辨识度吧!

损失函数分为三个分支,centerness后面再说,对于分类层使用的为focal loss用于平衡样本,而回归层使用IOU loss,那么为什么不使用L2损失呢?可以看我解读的UnitBox:

TeddyZhang:目标检测:再读DenseBox与YOLO(Anchor Free的起源)(2015)

最终的损失函数为:


3重叠区域的问题

这种重叠区域我们不可避免,作者发现大部分的重叠区域的GT box之间的尺度变化非常大,如一个人和一个苹果,很容易就会形成包含关系,而基于FPN的多尺度检测可以很好地减少这种情况的出现,通过网络结构可以看出,我们在

进行检测的,又由于众所周知的知识,神经网络的底层更多的是细节特征,且对小目标检测有利,高层更多的是语义特征,用于检测大目标。

所以作者为了减少尺度差异大的物体重叠,引入参数

为特征层 i 的最大距离,如果一个location(x, y)满足

或者

,那么我们在这个特征层就将其视为负样本,不在进行回归。其中

分别设置为0,64,128,256,512和正无穷,正好可以形成5个区间,在5个层上进行限制尺寸以减少重叠区域!

那么如果在一个层中出现重叠区域呢?我们就直接简单的使用最小区域作为回归目标!总结如下两句话:

  1. 如果大尺度和小尺度的重叠,比如人和手中的苹果,作者使用了FPN结构来在每一层加以限定,因为这两者之间的尺度相差较大,文章中共有5个区间来限定[0,64][64,128]等等
  2. 如果一个像素点在同一层落到了多个GT区域,这样也会ambiguous。这是作者简单的会使用最小区域来作为回归目标


4Center-ness

作者在使用了多尺度检测后发现仍然和anchor-based的检测器有很大差距,然后发现FCOS存在大量的低质量的检测框。这是由于我们把中心点的区域扩大到整个物体的边框,经过模型优化后可能有很多中心离GT box中心很远的预测框,为了增加更强的约束,作者提出了Center-ness的方法来解决这个问题,使用BCE loss对center-cess进行优化!

我们可以看出,当loss越小时,centerness就越接近1,也就是说回归框的中心越接近真实框!那么为什么要使用这么大的区域呢?

作者解释,从anchor-based角度,我们通过两个IOU阈值将标定的anchor分为negative、ignored和positive三种,这样不能充分的利用正样本。而在FCOS中,只要没有location没有落在GT Box区域,那么就是负样本,反之为正样本。增大区域为了获得更多的正样本以更好地用于回归器中。


5实验性能分析

首先分析FPN结构

可以看出哪些交叠区域,也就是ambiguous sample大大减少了,因此,其AP也上升了很多!将近一倍!

接着分析Center-ness结构

我们可以看到较大物体的AP显著提高,这就是由于较大物体的中心偏离比较严重,总体AP提高了有3点

然后分析其样例总数和内存占用

可以看到,样例总数减少了9倍,内存占用减少了2倍。

与其他模型的比较

可以看出,anchor-free的策略对小目标检测还有很有效的!通过读完这篇文章,如何将segmentation的方法用于detection, 以及存在的问题,相信你的心中也会解惑不少吧!这个方向还是有很多问题值得去探讨,去研究的!COME ON!


相关文章推荐

FPN又叫特征金字塔网络,图像金字塔的概念在传统算法中非常常见,如SIFT特征,可以使网络适应不同尺度的图片。那么怎么在卷积网络中如何去构建金字塔模型的?

【AI】目标检测第三话:R-FCN和FPN》。

其他

【AI】突发!腾讯AI Lab主任张潼离职,或将返回学界

【AI】精妙的Pytorch训练可视化工具tensorboardX

板块招聘信息

AI板块副主编招聘要求:

1.计算机视觉、语音识别、自然语言处理方向硕士毕业或博士在读,及以上学历也可。

2.有文字编辑经验,博客或知乎专栏写作经历,善于沟通与协调

3.有时间,有责任心,保证每周工作 2-3个小时。

温馨提示

可以在 本公众号后台 回复关键词:“ AI ”获取大量由我平台编辑精心整理的AI资料,如果觉得有用, 请勿吝啬你的留言和赞哦!~


扫二维码关注『运筹OR帷幄』公众号:

点击查看『运筹OR帷幄』志愿者招募介绍及加入方式

发布于 2019-05-03

文章被以下专栏收录