前言 

本文介绍一篇CVPR2020的论文,它在paperswithcode上获得了16887星,谷歌学术上有261的引用次数。

论文主要介绍了目标检测现有的研究进展、anchor-based和anchor-free的背景和各自的方法差异,并提出了一种新的正负样本选择方案,用于消除这两者之间的差距。

注:论文讲述了很多关于anchor方面的知识,这篇文章保留了较多原论文中的内容,在介绍新方法的同时,可作为深入理解anchor的文章。

论文:Bridging the Gap Between Anchor-based and Anchor-free Detection via Adaptive Training Sample Selection

代码:https://github.com/sfzhang15/ATSS

Background


近年来,随着卷积神经网络的发展,目标检测已被基于anchor-based的检测器所主导,大致可分为one-stage方法和two-stage方法。他们都首先在图像上平铺大量预设的anchor,然后预测类别并将这些anchor的坐标细化一次或几次,最后输出这些细化的anchors作为检测结果。由于two-stage方法比one-stage方法细化锚点数倍,因此前者具有更准确的结果,而后者具有更高的计算效率。常见检测基准的最新结果仍然由Anchor-based的检测器持有。

由于 FPN和 Focal Loss的出现,最近的学术注意力已经转向Anchor-free检测器。Anchor-free检测器以两种不同的方式可以直接找到没有预设锚的目标。

一种方法是首先定位几个预定义或自学习的关键点(keypoint),然后绑定目标的空间范围。我们将这种类型的Anchor-free检测器称为keypoint-based的方法。另一种方法是使用目标的中心点或中心区域来定义正样本,然后预测从正样本到目标边界的四个距离。我们称这种Anchor-free检测器为center-based的方法。这些Anchor-free检测器能够消除那些与锚相关的超参数,并实现了与Anchor-based的检测器相似的性能,使其在泛化能力方面更具潜力。

在这两种Anchor-free检测器中,keypoint-based的方法遵循不同于Anchor-based的检测器的标准关键点估计管道。然而,center-based的检测器类似于Anchor-based的检测器,它将点视为预设样本而不是锚框。

以one-stage anchor-based检测器RetinaNet和center-based anchor-free检测器FCOS为例,它们之间主要有3个区别:

(1) 每个位置平铺的锚点。RetinaNet 在每个位置平铺多个锚框,而 FCOS 在每个位置平铺一个锚点。

(2) 正负样本的定义。RetinaNet 重新排序IoU用于选择正负样本,而 FCOS 利用空间和尺度约束来选择样本。

(3) 回归起始状态。RetinaNet 从预设的锚框回归目标边界框,而 FCOS 从锚点定位目标。

正如 FCOS论文中所报告的,Anchor-free FCOS 的性能比Anchor-based的 RetinaNet 好得多,值得研究这三个差异中的哪一个是性能差距的重要因素。

 创新思路


这篇论文通过严格排除它们之间的所有实现不一致,以公平的方式调查anchor-based和anchor-free方法之间的差异。从实验结果可以得出结论,这两种方法的本质区别在于正负训练样本的定义,导致它们之间的性能差距。如果它们在训练时选择相同的正负样本,无论是从一个框还是一个点回归,最终的表现都没有明显的差距。因此,如何选择正负训练样本值得进一步研究。

受此启发,论文提出了一种新的自适应训练样本选择 (Adaptive Training Sample Selection, ATSS),以根据目标特征自动选择正样本和负样本。它弥补了anchor-based和anchor-free检测器之间的差距。

此外,通过一系列在MS COCO数据集上的实验,可以得出结论,不需要在图像上每个位置平铺多个anchors来检测物体。SOTA的 AP 50.7% 是通过应用新引入的 ATSS 而不引入任何开销来实现的。

Contribution


这项工作的主要贡献可以概括为:

  • 表明anchor-based和anchor-free检测器之间的本质区别实际上是如何定义正负训练样本。

  • 提出自适应训练样本选择,根据目标的统计特征自动选择正负训练样本。

  • 证明在图像上的每个位置平铺多个锚点以检测对目标是无用的操作。

  • 在不引入任何额外开销的情况下,在 MS COCO 上实现SOTA性能。

Anchor-based和Anchor-free的区别分析


去除不一致性

论文使用one-stage anchor-based检测器RetinaNet和center-based anchor-free检测器FCOS作为实验对象,通过消除它们之间使用方法的不一致性,即把FCOS上的一些操作加到RetinaNet上,如GIoU loss、GroupNorm等,得到了两个基本一致的检测器--RetinaNet(#A=1)和FCOS。

在去掉这些细节优化的影响后,两者只剩下了在分类和回归两个任务上的差别----定义正负样本的方法差别和回归的是anchor box或anchor point的差别。

分类的差别


原始的正负样本选择做法:

如图1(a),RetinaNet使用IOU将来自不同level的anchor box划分为正负样本,对于每个目标,在IOU>θp的所有anchor box中,选一个最大的作为正样本,所有IOU<θn的都认为是负样本,其他的都忽略掉。

如图1(b),FCOS使用空间和尺度约束将anchor点分配到不同的level上,首先将所有在ground truth box内的anchor点作为候选点,然后基于预先对每个level设置的尺度范围来选择最终的正样本,没有选中的点就是负样本。

实验的正负样本选择做法:交换各自的方案。

如下表2所示,如果在RetinaNet(#A=1)使用空间和尺度约束的方式来代替IOU来选择正负样本,RetinaNet(#A=1)的performance可以提升到37.8%。而对于FCOS,如果使用IOU的策略在选择正负样本,那么performance会降到36.9%。这表明了正负样本的选择策略才是这两种方法的根本区别。

回归的差别


在正负样本确定之后,需要对正样本进行目标位置的回归。如图2所示,RetinaNet回归的是anchor box和ground truth的4个offset,而FCOS回归的是anchor点到4条边的距离。这表明RetinaNet的回归起点是一个框,而FCOS的回归起点是一个点。

根据上面表2结果所示,当RetinaNet和FCOS使用相同的正负样本选择策略的时候,两者并没有明显的差别,这表明回归的起点并不是两个方法的本质区别。

因此,one-stage anchor based目标检测方法和center-based anchor free的目标检测方法的本质区别在于正负样本的选取策略上。

Adaptive Training Sample Selection


背景

在训练目标检测器时,我们首先需要定义正负样本进行分类,然后使用正样本进行回归。根据前面的分析,定义正负样本是至关重要的,anchor free detection FCOS 改进了这一步。它引入了一种定义正样本和负样本的新方法,比传统的基于 IoU 的策略实现了更好的性能。

以前的样本选择策略有一些敏感的超参数,例如anchor-based检测器中的 IoU 阈值和anchor-free检测器中的尺度范围。设置这些超参数后,所有的ground-truth box都必须根据固定的规则选择它们的正样本,这适用于大多数目标,但会忽略一些外部目标。因此,这些超参数的不同设置会产生非常不同的结果。

实现代码:https://github.com/sfzhang15/ATSS

关于ATSS算法的几点说明:

  • 根据锚框和目标之间的中心距离选择候选目标。对于 RetinaNet,锚框的中心越靠近目标的中心,IoU 越大。对于 FCOS,离目标中心越近的锚点将产生更高质量的检测。因此,离目标中心越近的锚点是更好的候选者。

  • 使用均值和标准差之和作为 IoU 阈值。

  • 维护不同目标之间的公平性。RetinaNet 和 FCOS 的策略往往对更大的目标有更多的正样本,导致不同目标之间的不公平。而ATSS统计结果表明,每个目标大约有 0.2 ∗ kL 个正样本,这与其尺度、纵横比和位置是没有关系的。

  • 几乎没什么超参数。

Conclusion


使用新引入的 ATSS,SOTA检测器大幅提高到 50.7% 的 AP,而不会引入任何开销。

在公众号CV技术指南中回复关键字“0012”可获取论文

 欢迎关注公众号 CV技术指南 ,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读。

 在公众号中回复关键字 “技术总结”可获取公众号原创技术总结文章的汇总pdf。

​​

其它文章

卷积神经网络压缩方法总结

单阶段实例分割综述

经典论文系列 | 重新思考在ImageNet上的预训练

经典论文系列 | Group Normalization & BN的缺陷

经典论文系列 | 目标检测--CornerNet  & 又名 anchor boxes的缺陷

经典论文系列 | 胶囊网络:新的深度学习网络

经典论文系列 | 实例分割中的新范式-SOLO

视频目标检测与图像目标检测的区别

计算机视觉中的小样本学习综述

Siamese network综述|    姿态估计综述|    语义分割综述

视觉Transformer综述|    2021年小目标检测最新研究综述

CV算法工程师的一年工作经验与感悟

OCR开源神器PaddleOCR再升级:效果提升7%、速度增加220%

视频理解综述:动作识别、时序动作定位、视频Embedding

CVPR2021提出的一些新数据集汇总

Few-shot Learning 小白入门笔记

深度学习中的人体姿态估计概述

小目标检测常用方法总结

从CVPR 2021的论文看计算机视觉的现状

TorchShard 简介     |   Pytorch Lightning Flash 简介

ICCV2021 | MicroNet:以极低的 FLOPs 改进图像识别

ICCV2021 | 深度理解CNN

ICCV2021 | 重新思考视觉transformers的空间维度

CVPR2021 | TransCenter: transformer用于多目标跟踪算法

CVPR2021 | 继SE,CBAM后的一种新的注意力机制Coordinate Attention

CVPR2021 | 开放世界的目标检测

CVPR2021 | TimeSformer-视频理解的时空注意模型

CVPR2021 | 一个高效的金字塔切分注意力模块PSA

CVPR2021 | 特征金字塔的新方式YOLOF

CVPR2021 | 华为诺亚实验室提出Transformer in Transformer

CVPR2021 | 行人搜索中的第一个anchor-free模型

经典论文系列 | 缩小Anchor-based和Anchor-free检测之间差距的方法:自适应训练样本选择的更多相关文章

  1. 经典论文系列 | 目标检测--CornerNet & 又名 anchor boxes的缺陷

    ​ 前言: 目标检测的预测框经过了滑动窗口.selective search.RPN.anchor based等一系列生成方法的发展,到18年开始,开始流行anchor free系列,CornerNe ...

  2. 经典论文系列| 实例分割中的新范式-SOLO

    前言: 这是实例分割中的一篇经典论文,以往的实例分割模型都比较复杂,这篇论文提出了一个简单且直接的实例分割模型,如何设计这种简单直接的模型且要达到一定的精度往往会存在一些困难,论文中有很多思路或思想值 ...

  3. 读论文系列:Object Detection ECCV2016 SSD

    转载请注明作者:梦里茶 Single Shot MultiBox Detector Introduction 一句话概括:SSD就是关于类别的多尺度RPN网络 基本思路: 基础网络后接多层featur ...

  4. 读论文系列:Object Detection NIPS2015 Faster RCNN

    转载请注明作者:梦里茶 Faster RCNN在Fast RCNN上更进一步,将Region Proposal也用神经网络来做,如果说Fast RCNN的最大贡献是ROI pooling layer和 ...

  5. Memory Networks01 记忆网络经典论文

    目录 1.Memory Networks 框架 流程 损失函数 QA 问题 一些扩展 小结 2.End-To-End Memory Networks Single Layer 输入模块 算法流程 Mu ...

  6. 转载 CSS3 经典教程系列:CSS3 盒阴影(box-shadow)详解

    目标大纲 文章转载 CSS3 经典教程系列:CSS3 盒阴影(box-shadow)详解 IE中CSS-filter滤镜小知识大全 CSS实现跨浏览器兼容性的盒阴影效果

  7. July-程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大经典原创系列集锦与总结

    程序员面试.算法研究.编程艺术.红黑树.数据挖掘5大经典原创系列集锦与总结 http://blog.csdn.net/v_july_v/article/details/6543438

  8. 三白话经典算法系列 Shell排序实现

    山是包插入的精髓排序排序,这种方法,也被称为窄增量排序.因为DL.Shell至1959提出命名. 该方法的基本思想是:先将整个待排元素序列切割成若干个子序列(由相隔某个"增量"的元 ...

  9. 读论文系列:Deep transfer learning person re-identification

    读论文系列:Deep transfer learning person re-identification arxiv 2016 by Mengyue Geng, Yaowei Wang, Tao X ...

随机推荐

  1. GoLang设计模式04 - 单例模式

    单例模式恐怕是最为人熟知的一种设计模式了.它同样也是创建型模式的一种.当某个struct只允许有一个实例的时候,我们会用到这种设计模式.这个struct的唯一的实例被称为单例对象.下面是需要创建单例对 ...

  2. VMware安装IPFire防火墙镜像

    之后便可以通过WEB登录到管理页面(admin账号,密码是在上面配置的) 详细可参考:https://www.mobibrw.com/2016/4900

  3. python库--tensorflow--scope命名方式

    方法   参数 说明 .name_scope() with...: name 在其下使用Variable, 变量名(V_n)前会被加上'name/...'且相同V_n会自动添加后缀加以区分, 使用ge ...

  4. HTTP证书申请,设置应用程序服务器使用HTTPS

    HTTP证书申请,设置应用程序服务器使用HTTPS https://certs.godaddy.com/repository/ 根证书和中级证书下载地址(godaddy) ######Godaddy购 ...

  5. 215 day01_Object类、常用API

    day01[Object类.常用API] 主要内容 Object类 Date类 DateFormat类 Calendar类 System类 StringBuilder类 包装类 教学目标 -[ ] 能 ...

  6. PHP网上商城

    页面展示: 代码参考:Php实现简易购物商城系统 - 邵文 - 博客园 (cnblogs.com)

  7. minix3使用轻快入门

    minix3是一款迷你的unix作业系统,但又不在at&t代码的基础上构建.当年开发这款作业系统的作者仅仅是拿来自用,给学生上课使用的. 如果你已经安装了minix3,你还需要安装openss ...

  8. Vue3的其他属性和API函数

    customRef() 自定义Ref函数实现Ref()的相关功能 1 <script> 2 import { ref customRef} from 'vue' 3 4 function ...

  9. PHP的变量赋值

    这个标题估计很多人会不屑一顾,变量赋值?excuse me?我们学开发的第一课就会了好不好.但是,就是这样基础的东西,反而会让很多人蒙圈,比如,值和引用的关系.今天,我们就来具体讲讲. 首先,定义变量 ...

  10. 一起学习PHP的runkit扩展如何使用

    这次又为大家带来一个好玩的扩展.我们知道,在 PHP 运行的时候,也就是部署完成后,我们是不能修改常量的值,也不能修改方法体内部的实现的.也就是说,我们编码完成后,将代码上传到服务器,这时候,我们想在 ...