作者 | ronghuaiyang

来源 | AI公园

导读:这是众多Anchor Free中比较有影响力的一篇文章,不光是效果好,而且思路清楚,简单,不需要任何trick,并将众多的视觉任务统一到了一个框架中,值得一看。

介绍

基于anchor的物体检测器的缺点,这个基本上每篇anchor free的文章都会列一遍。

  1. 检测性能依赖于anchor的尺寸,比例,数量,这些都需要非常精细的设计。

  2. 一旦anchor设计好了,尺寸,比例就固定了,在物体的尺寸和比例多样性非常大的时候会有困难,特别是小物体。预设的anchor的泛化能力也有限,对于新的任务,需要重新去设计anchor。

  3. 为了有高recall,需要设计非常密集的anchor,FPN中的anchor数量就超过了160k,而且大部分都是负样本,正负样本非常的不均衡。

  4. 在计算的时候需要计算IOU,非常的复杂。

现在的各种计算机视觉的任务,比如分割,深度预测,关键点加测,计数等等,都是全卷积的结构,就物体检测是个例外。那么,很自然的就有了一个问题:我们能不能把物体检测也变成类似分割那样的逐像素的预测问题呢?这样的话,这些视觉相关的任务就都统一成了一个架构了,所以说,这篇文章就是干了这么个事情。

之前也有过类似的尝试,直接再feature map的每个空间位置上回归出一个4D Vector,外加一个类别,不过这些方法在文本检测中用的较多,因为当物体间的包围框重叠比较多的时候,某一个点就不知道去回归哪一个了。如图1:

图1:左边是FCOS预测的4个向量,右边是当特征图的某个位置同时位于两个物体内部的时候,这个位置就不知道去回归哪个物体了。

我们仔细的研究了这个问题,发现使用全卷积的方案是可以很大程度上解决的,后面我们具体去看。我们的新框架的优点如下:

  • 将物体检测和其他视觉任务的框架进行了统一

  • 检测不需要建议区域,也不需要anchor了。

  • 由于不需要anchor了,所以也没有了IOU之类的复杂计算了,训练更快了,所需要的的内存也更少了。

  • 我们得到了STOA的结果,而且FCOS也可以用到二阶段的检测方案中,而且效果比基于anchor的方案更好。我们觉得可以重新考虑下anchor在物体检测中的必要性。

  • 可以非常方便的将检测框架扩展到分割,关键点检测等其他视觉任务上。

方法

全卷积一阶段物体检测

我们把第i层的特征图记做Fi,它相对于输入图像的stride为s,输入图像的groundtruth bbox记为{Bi},Bi=(x0,y0,x1,y1,c),其中(x0,y0)和(x1,y1)分别为左上角和右下角的坐标,c为物体的类别。对于Fi的每个位置(x,y),我们可以映射会输入图像中,映射成一个范围(s/2+xs, s/2+ys),对于基于anchor的物体检测方法,我们把这个位置作为anchor box的中心点,然后去回归目标box相对于这些anchor box的偏差。而我们这里直接在这个位置上回归目标box,换句话说,我们在训练中是把这些位置当成是样本,而不是anchor box,这个和分割是一样。

如果位置(x,y)落入到某个groundtruth box中,而且类别也和groundtruth box的类别一样,那它就是正样本,否则就是负样本,而且c=0(背景)。除了类别标签之外,我们在这个位置上还会回归一个4D的向量,t=(l,t,r,b),其中,l,t,r,b分别是这个位置点到bbox的4个边的距离,如图1(左)所示。如果这个位置同时落入到好几个bbox中,那这种就认为是模糊样本。我们简单的选择一个面积最小的bbox作为它回归的目标。下面,我们会展示一个多level的预测方法,这种模糊样本的数量会大大的减少,这样几乎不会影响检测的性能。这样,如果位置(x,y)和一个bbox Bi相关联起来,那么在训练的时候,我们的回归目标可以这样来表示:

这里值得注意的是,FCOS可以利用任意多的前景样本来训练这个回归,而基于anchor的方法只选取哪些和groundtruth box的IOU大于一定阈值的anchor作为正样本进行训练。我们认为这也许是FCOS效果比anchor based的模型好的原因之一。

网络的输出 对于coco的数据集,有80个类,我们需要输出一个80维的分类向量和一个4维的t=(l,t,r,b),分类的时候,我们没有用多分类的方法,而是训练了C个二分类器,参考了RetinaNet,我们主干feature map后面对于分类和回归分别加了4个卷积层,作为两个不同分支。由于回归的目标值永远是正的,我们用exp(x)将输出映射到(0, ∞)。值得注意的是,FCOS的输出要比基于anchor的方法(使用9个anchor)小了9倍。

损失函数 定义如下:

其中Lcls是focal loss,Lreg是UnitBox中使用的IOU loss,Npos表示正样本的数量,λ用来做loss之间的平衡,文中用的值是1。

推理 推理的时候很直接,我们可以每个位置的类别预测pxy和每个位置的回归预测txy,我们选择p>0.05的作为正样本,将其回归值转化为bbox的预测。

使用FPN进行多level的预测

这里我们解决了FCOS的两个问题:

  • 在最后的特征图中,大的stride,比如16,对于anchor based检测器,这样会导致较低的best possible recall(BPR),但是对于FCOS,大的stride不会降低BPR,而且,使用了multi-level FPN来预测的话,还可以进一步提升BPR。

  • 重叠的物体会导致模糊匹配,这也可以通过multi-level FPN来很好的解决。

我们用FPN在不同的level上检测不同尺寸的物体,具体结构如图2,

和基于anchor的方法通过在不同的level上设置不同尺寸的anchor的方式,将不同尺寸的物体分配到不同level的特征图上去检测。我们这里更加直接一点,直接对每个level限制物体尺寸的范围。具体来说,我们首先在每个位置上都计算出目标的l,t,r,b,如果max(l,t,r,b) > mi,或者max(l, t, r, b) < mi-1的话,就将这个位置设置为负样本。这里mi是在第i个level上需要去回归的最大距离。这里,我们将m2,m3,m4,m5,m6,m7设置为0,64,128,256,512和∞。这样一来,不同尺寸的物体就被分配到了不同的level的特征图上去进行检测了,由于大部分overlap的都是不一样的尺寸,所以不会出现模糊匹配的问题。如果还是有某个位置匹配到多个groundtruth的情况,那么我们就匹配面积最小的那个。

最后,我们对于不同level的特征图,共享同一个检测头,如图2,但是,由于不同的level回归的是不同的尺寸,共享同一个检测头貌似不是很合理,所以我们又做了点修改,将exp(x)修改为exp(six),加入了一个可训练的尺度参数si,自动的调整exp的输出大小,这个改动对检测性能有小的提升。

FCOS的Center-ness

我们发现,在训练的时候,会出现大量的距离物体中心点很远的低质量的预测框。这会降低模型的性能。我们用了一个简单有效的方法来抑制这种低质量的预测框。我们加了一个分支来预测位置的center-ness,这个center-ness描述了负责检测这个物体的位置到这个物体的中心的归一化的距离,计算方式如下:

用sqrt来减慢center-ness的衰减,center-ness的范围是0~1,用二分类交叉熵来训练。测试的时候,通过它乘上类别得分来对检测出的bbox进行排序,这样,远离中心的那些预测框的分数会减小,这样做nms的时候,就可以去过滤掉这些检测框,显著提升检测性能。

还有种center-ness的替代方案,就是只使用中心区域作为groundtruth,但是这样需要一个超参数,将这两种方式结合起来,可以得到更好的结果。

实验


消融实验

  • 使用FPN进行Multi-level的预测

对于BRP的效果:

对模糊样本的影响:

  • 是否使用Center-ness

使用了Center-ness前后的效果:

anchor base的检测器RetinaNet使用了2个阈值来进行正负样本的选择,如果同时使用center-ness和阈值的话,还能提升性能,下面给出了一些额外的优化方法及其效果:

  • 和anchor based的检测器的比较

和RetinaNet的比较见上面的图3。

和其他的检测器的比较

扩展到RPN上

用FCOS来代替FPN中的RPN网络的效果:

更多精彩推荐
  • 自拍卡通化,拯救动画师,StyleGAN再次玩出新花样

  • 秋天的第一杯奶茶该买哪家?Python 爬取美团网红奶茶店告诉你

  • Azure Arc 正式商用、Power Platform+GitHub 世纪牵手,一文看懂 Ignite 2020

  • 起底 ARM:留给中国队的时间不多了

FCOS:全卷积一阶段Anchor Free物体检测器,多种视觉任务的统一框架相关推荐

  1. NeurIPS 2022 | FCOS-LiDAR:全卷积单阶段3D目标检测(沈春华团队)

    编辑 | CVer 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心[3D目标检测]技术交流群 后台回复[3D检测综述]获取最新基于点云 ...

  2. FCOS:全卷积一阶段目标检测论文精讲

    <FCOS: Fully Convolutional One-Stage Object Detection>论文精讲 一.背景 1,提出问题 2,解决办法 3,FCOS优势总结 二.相关工 ...

  3. 全卷积目标检测:FCOS

    全卷积目标检测:FCOS FCOS: Fully Convolutional One-Stage Object Detection 原文链接:https://arxiv.org/abs/1904.01 ...

  4. 论文理解 R-FCN:基于区域的全卷积网络来检测物体

    本文转载自: http://blog.csdn.net/shadow_guo/article/details/51767036 原文标题为"R-FCN: Object Detection v ...

  5. 3D点云初探:基于全卷积神经网络实现3D物体识别

    基于全卷积神经网络实现3D物体识别 一.从2D图像识别到3D物体识别 二.ModelNet10:3D CAD数据集 1.存储格式 2.读取方法 3.点云可视化 可视化工具 plt可视化 4.数据集定义 ...

  6. 【论文解读】OneNet:一阶段的端到端物体检测器,无需NMS

    导读 将分类损失引入到正样本的匹配过程中,每个gt只匹配一个正样本,简单的两个改动,消除了冗余的预测框,去掉了NMS. 论文:https://arxiv.org/abs/2012.05780 代码:h ...

  7. 7 Papers Radios | NeurIPS 2020最佳论文;全卷积网络实现E2E目标检测

    机器之心 & ArXiv Weekly Radiostation 参与:杜伟.楚航.罗若天 本周的重要研究包括 NeurIPS 2020最佳论文以及抛弃 Transformer 使用全卷积网络 ...

  8. 【论文解读】TOOD:任务对齐的一阶段物体检测器

    导读 显式的使用loss来对齐分类和定位任务. TOOD: Task-aligned One-stage Object Detection 论文链接:后台发送"tood"获取论文和 ...

  9. 无NMS SOTA!DATE:端到端全卷积目标检测的双重分配

    作者 | 小书童 编辑 | 集智书童 点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心[目标检测]技术交流群 后台回复[2D检测综述]获 ...

最新文章

  1. python实操培训_python实训day1
  2. 一封建议信,不知道这样写可以吗?
  3. Java 多线程编程之 interruptException
  4. [NOIP 2015]运输计划-[树上差分+二分答案]-解题报告
  5. HTML之CSS画三角形原理,纯CSS写三角形样式集合(原理解析)
  6. docker中创建Jmeter及在外部使用JMeter-Server控制
  7. 贷款审批到底会考核哪些内容?
  8. [导入]创建一个ASP通用分页类代码部分
  9. 官司缠身!马斯克和特斯拉目前面临数十起诉讼和调查
  10. Veeam FAQ系列转载(三)
  11. 苹果首席设计官将离职;华为将从世界范围招揽天才少年;新版 Edge 更新 | 极客头条...
  12. Java使用XFire调用WebService接口
  13. Web Deploy 发布网站错误 检查授权和委派设置
  14. HDU 1512 Monkey King(左偏树模板题)
  15. EditPlus 3 网页中文乱码问题
  16. telnet命令用法举例
  17. 联想Y9000P-2022款踩坑指南 加装固态和内存 win10系统安装
  18. select ajax加载数据,ajax 执行成功后返回j页面加载 joson 数据(加载select数据)
  19. Julia:报错 no method matching increment_deriv!(::Float64, ::Float64)
  20. 怎么从视频中提取音频文件?

热门文章

  1. Spring Cloud入门教程 - Zuul实现API网关和请求过滤
  2. linux发行版的用户交互
  3. weblogic线程阻塞性能调优(图解)
  4. ArcEngine的ToolbarControl解析
  5. C++ 经常使用类 string类
  6. Linux中源码包的管理
  7. java参数传递:值传递还是引用传递
  8. MYSQL忘记登录密码
  9. 如何将本地项目上传到自己的GitHub上
  10. 韦东山网课https://edu.csdn.net/course/play/207/1117