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

概述

目前anchor-free大热,从DenseBoxes到CornerNet、ExtremeNet,以及最近的FSAF、FoveaBox,避免了复杂的超参数设计,而且具有很好的检测效果。本文作者提出了一种全卷积的单阶段目标检测算法,类似于语义分割的做法使用像素级预测。该检测框架简单有效,而且可以方便地用于其他任务。

简介

再啰嗦一下基于anchor的检测算法的缺陷:

1、检测效果受尺度、宽高比以及anchor box的数目影响。比如RetinaNet,改变这些超参数对COCO数据集上的AP影响高达4%;

2、泛化能力差,目标形变较大时难以检测,尤其是小目标。新任务需要重新设计anchor的超参数;

3、大量冗余anchor box导致正负样本失衡;

4、IoU计算造成运算资源和内存浪费。

FCOS回归位置的相对偏移。对于图1右侧一个重叠区域的位置应该回归哪个bbox的问题,可以通过FPN解决。远离目标中心的位置产生很多低质量的预测框,作者采用center-ness分支来预测像素与对应bbox中心的偏差,将该得分用于降低低质量bbox的权重。

方法

像素级预测;利用多层次预测来提高训练中的召回率,解决训练中重叠边框造成的歧义;使用center-ness分支抑制检测到的低质量包围盒,提高性能。

一、FCOS

回归的target就是4D向量(该位置到bbox四边的距离)。如果一个位置对应多个bbox(称作模糊样本),简单地将面积最小的bbox作为它的回归目标。充分利用了前景样本进行训练。

没有训练多类分类器,而是C个二分类器。

损失函数如下:

其中,Lcls是focal loss,Lreg是IoU loss,论文中λ取1.

预测过程中pxy>0.05即认为是正样本。

二、基于FPN的多层预测

问题:

1、CNN中最后的feature map的大stride会使得召回率偏低(在基于anchor的方法中可用适当降低IoU阈值来提升召回率)——可以利用多层FPN解决,召回率甚至优于RetinaNet

2、重叠区域的位置应该回归哪个bbox的问题——FPN(重叠往往发生在不同大小的目标之间)

使用5层feature map{p3,p4,p5,p6,p7},其中p3、p4、p5是由CNN的feature map c3、c4、c5通过1*1卷积层以及横向连接生成的,p6和p7是p5、p6分别通过步长为2的卷积层生成的。

每层直接限制边界框回归的范围:如果一个位置满足max(l*, t*, r*, b*)>mi或者max(l*, t*, r*, b*)<mi-1就设为负样本。其中mi是第i个特征层需要回归的最大距离。文中设置m2、m3、m4、m5、m6、m7分别为0,64,128,256,512和无穷大。

三、Center-ness

使用了FPN以后,像素级预测效果还是不行,为什么呢?远离目标中心的位置产生了大量低质量的预测框。简单地增加了一个单层分支,用于预测一个位置的center-ness(神马东西?从名字看完全不知道这是要干嘛的啊有木有。。。),也就是该位置到它负责的目标中心的距离。

范围0-1,训练采用交叉熵损失。测试时,将centerness与类别得分相乘。再通过NMS后处理。

实验

训练细节:

backbone:ResNet-50,超参数与RetinaNet相同,使用ImageNet预训练,输入图像大小:1333*800左右

FPN的使用:

center-ness的使用:

COCO数据集上的AP对比:

将FCOS用于RPN:

总结

FCOS利用语义分割的思想,逐像素做目标检测,但是远离目标中心的位置会产生大量的低置信度bbox,为了过滤掉这些框,在类别预测的分支中添加了一个支路用于预测像素点到目标中心的距离(只是一个权值度量,不是真的距离,就是说如果该位置距离中心很远,那么它的centerness就很小,而框的最终置信分是框的score*centerness所以也会很小,这样就过滤掉了)。同时注意到语义分割做目标检测的算法都用到了多层次的思想(结合FPN),将不同大小的目标划分到不同层处理。

论文阅读 | FCOS: Fully Convolutional One-Stage Object Detection的更多相关文章

  1. 【CV论文阅读】YOLO:Unified, Real-Time Object Detection

    YOLO的一大特点就是快,在处理上可以达到完全的实时.原因在于它整个检测方法非常的简洁,使用回归的方法,直接在原图上进行目标检测与定位. 多任务检测: 网络把目标检测与定位统一到一个深度网络中,而且可 ...

  2. 【CV论文阅读】Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks

    由RCNN到FAST RCNN一个很重要的进步是实现了多任务的训练,但是仍然使用Selective Search算法来获得ROI,而FASTER RCNN就是把获得ROI的步骤使用一个深度网络RPN来 ...

  3. FCOS: Fully Convolutional One-Stage Object Detection

    论文:FCOS: Fully Convolutional One-Stage Object Detection   目录 0.简介 1.网络结构 2.框回归--直接.自由 3.Center-ness ...

  4. 目标检测论文阅读:Deformable Convolutional Networks

    https://blog.csdn.net/qq_21949357/article/details/80538255 这篇论文其实读起来还是比较难懂的,主要是细节部分很需要推敲,尤其是deformab ...

  5. 论文学习:Fully Convolutional Networks for Semantic Segmentation

    发表于2015年这篇<Fully Convolutional Networks for Semantic Segmentation>在图像语义分割领域举足轻重. 1 CNN 与 FCN 通 ...

  6. [C4W3] Convolutional Neural Networks - Object detection

    第三周 目标检测(Object detection) 目标定位(Object localization) 大家好,欢迎回来,这一周我们学习的主要内容是对象检测,它是计算机视觉领域中一个新兴的应用方向, ...

  7. 论文笔记:AdaScale: Towards real-time video object detection using adaptive scalingAdaScale

    AdaScale: Towards real-time video object detection using adaptive scaling 2019-02-18 16:14:17 Paper: ...

  8. 论文阅读笔记五十七:FCOS: Fully Convolutional One-Stage Object Detection(CVPR2019)

    论文原址:https://arxiv.org/abs/1904.01355 github: tinyurl.com/FCOSv1 摘要 本文提出了一个基于全卷积的单阶段检测网络,类似于语义分割,针对每 ...

  9. [论文阅读] MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications (MobileNet)

    论文地址:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 本文提出的模型叫Mobi ...

随机推荐

  1. 出现命令提示apt-get -f install的解决方法

    提示apt-get -f install这个信息,然后查看其他的提示信息发现时缺少了一些以依赖库. 解决办法为执行:sudo apt-get -f install命令. 该命令的含义是去补全那些缺少的 ...

  2. servlet介绍

    1.首先说Servlet API:servlet的命名:server+applet Servlet的框架是由两个Java包组成的:javax.servlet与javax.servlet.http. 在 ...

  3. myisam,innodb和memory的区别

    1.myisam,innodb和memory的区别如下: 2:InnoDB存储引擎2.1:InnoDB具有事务,回滚,崩溃修复能力和多版本并发的事务安全2.2:关于InnoDB的auto_increm ...

  4. org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions:323) | Loading XML bean definitions from class path resource [

    今天遇到一个这样的错误,这个错误是说我的spring的框架的文档没有写正确.但是反复检查,文档没有错误,原因是我使用了自己只做的user library,而且使用了 下边的System library ...

  5. 全面剖析Smarty缓存机制二[清除缓存方法]

    前段时间,写了一篇 Smaryt缓存机制的几种缓存方式 ,详细介绍了三种缓存方式:全局缓存.部分缓存.局部缓存,以及通过is_cache()判断是否存在缓存来进行缓存生成.本来这篇早该完成,由于时间关 ...

  6. OSI结构和TCP/IP模型

    TCP/IP层次模型共分为五层:应用层HTTP.传输层TCP.网络层IP.数据链路层Data-link.物理层physical. 应用层—应用层是所有用户所面向的应用程序的统称.ICP/IP协议族在这 ...

  7. Android-bindService远程服务(Aidl)-传递对象

    之前上一篇讲解到本地服务,本地服务只能在自身APP中Activity访问Service,调用Service里面到方法等操作 如果想A应用访问B应用里面的方法,属于跨进程调用,如果Android不特供这 ...

  8. touch和click优先性

    jQuery的touch事件是当用户触摸事件(页面)时触发的. jQuery的click事件是当用户点击元素时触发的. 而事件执行流程是手指点击一个元素,会经过:touchstart --> t ...

  9. Java中的多态方法

    public class Main { public void test(Object o) { System.out.println("Object"); } public vo ...

  10. [Erlang12] Mnesia分布式应用

    [Erl_Question12] Mnesia分布式应用 情景: 设计一个图书管理系统,需求: 1. 基本的增删查改功能; 2. 支持多节点备份(其中一个节点挂了进,对外接口不影响). 方案一: Er ...