代码编织梦想

在这里插入图片描述
论文链接https://arxiv.org/pdf/2011.12450.pdf.
arxiv 2020

1 Background

目标检测的目的是对一组目标定位,并在图像中识别它们的类别。密集检测一直是检测上的基础。在经典的计算机视觉中,滑动窗口的方法已经引导检测数十年。现代主流的one-stage检测器都是在一个密集特征图上预定义marks,比如anchor box(如下图a)或者参考点。虽然two-stages工作在一个稀疏的proposal boxes上,但是他们的proposal的生成算法仍然是建立在密集候选上(如图b)。
在这里插入图片描述
在这里插入图片描述
这些成熟的方法是在概念上清晰的并且有一个鲁棒性的性能和快的训练和推断时间。除了这些成功的方面之外,它们也会受到一些限制:(1)这些方法通常会产生冗余与近似重复的结果。(2)训练中的多对一的label分配问题使得网络对分配规则很敏感。(3)最终的性能很大程度上会受大小、长宽比率、anchor的数量、参考点的密度和proposal生成算法等的影响。

近来,DETR提出将目标检测重新定义为直接稀疏集合预测问题,它的输入仅仅100个学习的目标队列,最后的输出没有任何人工设计的后处理过程。虽然它是一个简单而且有效的工作,但是DETR仍然要求每个目标队列和全局图像上下文环境进行交互。这个密集的性能不仅降低了训练收敛速度,而且还阻塞了它建立一个彻底稀疏的管道用于对象检测

本文认为稀疏性应该包含两方面:
(1)sparse boxes:. Sparse boxes mean that a small number of starting boxes (e.g. 100) is enough to predict all objects in an image
(2) sparse features: sparse features indicate the feature of each box does not need to interactively interact with all other features over the full image
DETR没有绝对稀疏,因为它的每个目标队列必须和整张图像上的密集特征进行交互。

本文作者提出的 Sparse R-CNN,没有枚举所有图像网格网格上的目标位置候选框,也没有与全局图像特征进行目标 queries进行交互。
在这里插入图片描述
可学习的 proposal boxes是对图像上潜在的目标位置的统计,然而4维的坐标仅仅是对目标的一个粗略的表示,它缺少很多有用的细节比如pose和shape。本文剔除一个proposal feature的概念,它是一个高维的隐式向量。与粗略的bound ing box比较,proposal feature会编码出丰富的实例特征。而且proposal feature会维它独特的目标检测中头生成特定的参数。

2 Motivation

  • 目标检测领域中主流的两大类方法:(1)第一大类是从非Deep时代就被广泛应用的dense detector,例如DPM,YOLO,RetinaNet,FCOS。在dense detector中,大量的object candidates例如sliding-windows,anchor-boxes, reference-points等被提前预设在图像网格或者特征图网格上,然后直接预测这些candidates到gt的scaling/offest和物体类别。(2)第二大类是dense-to-sparse detector,例如R-CNN家族。这类方法的特点是对一组sparse的candidates预测回归和分类,而这组sparse的candidates来自于dense detector
    这两类框架推动了整个领域的学术研究和工业应用。目标检测领域看似已经饱和,然而dense属性的一些固有局限总让人难以满意:

    • NMS 后处理
    • many-to-one 正负样本分配
    • prior candidates的设计
      所以,一个很自然的思考方向就是:能不能设计一种彻底的sparse框架?最近,DETR给出了一种sparse的设计方案。(原文中:Despite the dense convention is widely recognized among object detectors, a natural question to ask is: Is it possible to design a sparse detector?)
      DETR:andidates是一组sparse的learnable object queries,正负样本分配是one-to-one的optimal bipartite matching,无需nms直接输出最终的检测结果,然而,DETR中每个object query都和全局的特征图做attention交互,这本质上也是dense
      而作者认为,sparse的检测框架应该体现在两个方面:sparse candidates和sparse feature interaction。基于此,本文提出了Sparse R-CNN。

Sparse R-CNN抛弃了anchor boxes或者reference point等dense概念,直接从a sparse set of learnable proposals出发,没有NMS后处理,整个网络异常干净和简洁,可以看做是一个全新的检测范式
在这里插入图片描述

3 Related Work

  • Dense method:滑动窗口在目标检测方面已经流行了很多年。受经典特征提取的技术的限制,数十年来性能已经趋于平衡,应用场景也受到限制。深度卷积神经网络的发展发展出了通用的目标检测方法在性能上实现了明显的提升。one-stage:直接预测anchor box的类别和位置,eg,OverFeat、YOLO、SSD、RetinaNet
  • Dense-to-sparse method:即two-stage detector:在第一阶段, region proposal algorithm起着很重要的作用,eg:Selective Search in R-CNN、Region Proposal Networks (RPN)in Faster R-CNN. 但是也需要NMS等后处理操作
    DETR也可以看做是一个dense-to-sparse的方法
  • Sparse method:可以不用去费力设计 dense candidates,但是性能落后上述方法。eg,G-CNN,性能不是很好。Sparse R-CNN 使用可学习的proposals实现了很好的性能。

4 Advantages/Contributions

沿着目标检测领域中Dense和Dense-to-Sparse的框架,Sparse R-CNN建立了一种彻底的Sparse框架, 脱离anchor box,reference point,Region Proposal Network(RPN)等概念,无需Non-Maximum Suppression(NMS)后处理, 在标准的COCO benchmark上使用ResNet-50 FPN单模型在标准3x training schedule达到了44.5 AP和 22 FPS。

5 Method

5.1.Pipeline

在这里插入图片描述
Sparse R-CNN是一个简单的、统一的网络,它由一个主干网络、一个动态实例交互头和两个特定任务的预测层组成。总共有三个输入:图像、一组proposal和proposal features。后边两个参数是可学习的,可以和网络中其它的参数共同优化。

5.2.Module

  • Backbone:基于ResNet结构的FPN结构是被用来作为主干网络来从输入图像产生多尺度特征图。
  • Learnable proposal box:固定数量的可学习的proposal boxes(N*4)代替RPN中的预测被当作region proposals。proposal boxes是用一个4维参数来分别表示中心点的坐标、宽度和高度,范围是0-1。 proposals boxes的参数将在训练期间使用反向传播速度来进行更新
  • Learnable proposal feature:虽然4-dbbox用简短和明确的表达来描述对象,但是它仅仅提供了一个目标粗糙的定位,许多细节的信息都已经丢失了,比如目标姿态和形状。本文提出一个 proposal feature,它是一个高维度的隐式向量,期望她被编码成丰富的实例特征。proposal features的数量和boxes是一样的。
  • Sparse R-CNN:Sparse R-CNN的object candidates是一组可学习的参数,N*4,N代表object candidates的个数,一般为100~300,4代表物体框的四个边界。

这组参数和整个网络中的其他参数一起被训练优化。That’s it,完全没有dense detector中成千上万的枚举。

这组sparse的object candidates作为proposal boxes用以提取Region of Interest(RoI),预测回归和分类。
在这里插入图片描述
Sparse R-CNN的两个显著特点就是sparse object candidates和sparse feature interaction,既没有dense的成千上万的candidates,也没有dense的global feature interaction。

Sparse R-CNN可以看作是目标检测框架从dense到dense-to-sparse到sparse的一个方向拓展。

  • Architecture Design:Sparse R-CNN的网络设计原型是R-CNN家族。

  • Backbone是基于ResNet的FPN。

  • Head是一组iterative的Dynamic Instance Interactive Head,上一个head的output features和output boxes作为下一个head的proposal features和proposal boxes。Proposal features在与RoI features交互之前做self-attention。

  • 训练的损失函数是基于optimal bipartite matching的set prediction loss。

  • Set prediction loss:bipartite matching loss在这里插入图片描述

    • ς c l s \varsigma _{cls} ςcls是预测的类别和GTlabel的focal loss
    • ς L 1 \varsigma _{L1} ςL1 ς g i o u \varsigma _{giou} ςgiou分别是L1 Loss和IOU Loss
    • λ c l s \lambda_{cls} λcls λ L 1 \lambda_{L1} λL1 λ g i o u \lambda_{giou} λgiou分别为2,5,2

6 Experiments

默认情况下, proposal boxes=100, proposal features=100, iteration=6

6.1.Dataset

  • COCO
    • train: train2017 split (∼118k images)
    • evaluate: val2017 (5k images)

6.2.Main Result

在这里插入图片描述
Sparse R-CNN比Faster R-CNN性能要好很多。DETR和Deformable DETR 一般会采用强大的特征提取方法。 Sparse R-CNN仅仅使用最简单的FPN提取方法也能展现出更好的性能。与DETR相比,Sparse R-CNN在小物体上的效果更好。
在这里插入图片描述

SparseR-CNN的训练收敛速度比DETR快10倍。与 Deformable DETR相比, Sparse R-CNN展示出更好的精度 (44.5 AP vs. 43.8 AP),更短的运行时间(22 FPS vs. 19 FPS),更短的 training schedule (36 epochs vs. 50 epochs)。

6.3.Module Analysis

  • Learnable proposal box
    在这里插入图片描述在这里插入图片描述
    用learnable proposal boxes来替换Faster R-CNN中的RPN,性能从40.2AP下降到18.5AP。
  • Iterative architecture
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • Dynamic head
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • Initialization of proposal boxes: the initialization of proposal boxes plays a key role in Sparse R-CNN
    - Center:表示所有的 proposal boxes开始的时候都处于图像的中心,H和W都设置为图像大小的0.1
    - Image:表示所有的proposal boxes都被初始化为图像的大小
    - Grid:表示 proposal boxes被初始化为图像中常用的网格(G-CNN中的initial boxes)
    - Random:表示boxes的中心、H、W都使用高斯分布来进行随机初始化
    在这里插入图片描述
    Sparse R-CNN的性能相对于 proposal boxes来说是比较鲁棒的。
  • Number of proposals:proposals的数量对于sparse detectors和 dense detectors来说都是有很大的影响
    在这里插入图片描述
    100到500性能会逐渐提升,但是500 proposals会需要更长的训练时间,因此本实验中使用的都是100和300。
  • Number of stages in iterative architecture
    在这里插入图片描述
    随着stage的增加,性能逐渐变好,当stage=6的时候性能达到饱和。实验中stage设置为6。
  • Dynamic head vs. Multi-head Attention
    在这里插入图片描述
  • Proposal feature vs. Object query
    在这里插入图片描述

6.4.The Proposal Boxes Behavior

在这里插入图片描述

7 Conclusions

  • R-CNN和Fast R-CNN出现后的一段时期内,目标检测领域的一个重要研究方向是提出更高效的region proposal generator。

  • Faster R-CNN和RPN作为其中的佼佼者展现出广泛而持续的影响力。

  • Sparse R-CNN首次展示了简单的一组可学习的参数作为proposal boxes即可达到comparable的性能。

  • 作者希望这项工作能够带给大家一些关于end-to-end object detection的启发。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/yuansiming0920/article/details/111088824

ndarray数组创建方法和转换-爱代码爱编程

ndarray数组创建方法 1、根据python中列表、元组中创建2、使用NumPy中函数创建ndarray数组3、使用NumPy中其他函数创建ndarray数组4、ndarray数组变换 1、根据python中列表、元组中创建 x = np.array(list\tuple) 例如:x = np.array([1,2,4,6])

零基础学习python 你该怎么做-爱代码爱编程

本人文科生,回顾自己近 2 年的Python 自学经历,有一些学习心得和避坑经验分享给大家,让大家在学习 Python 的过程中少走一些弯路!减少遇到不必要的学习困难! 首先,最开始最大的困难应该就是对编程的抵触与恐惧心理,总觉着编程似天书,一堆奇怪的符号组成的文件,这种心理会伴随很长时间,需要努力的去接受并克服它。 作为过来人建议从最最基础的命令开始

Python学习之路(一)-爱代码爱编程

Python的安装与卸载 一、安装 1.首先进入Pyton官网(https://www.python.org),按照图中箭头所指的链接点击 2.当前最新版本是3.9.1,我这里选择的是3.8.6,如果是64位操作系统可以选择64位的版本,32位的就选择32位版本的Python,可以根据需求选择适当的版本。 3.下载完安装,勾选前面的复选框是在系统中创

利用ECMWF的api批量下载数据,及下载效率问题(已解决)-爱代码爱编程

利用ECMWF的api批量下载气象数据,及下载效率问题(已解决) 最近在下载数据,遇到并解决了一些问题,比如如何利用api批量下载数据,以及关于下载的速度等等。 以S2S数据为例进行说明。 下载S2S数据的两种方式 s2s数据下载ecmwf网址:https://apps.ecmwf.int/datasets/data/s2s/levtype=sfc/

Python垃圾回收机制-爱代码爱编程

python中的垃圾回收机制及原理 序言:   不同于C/C++,像Python这样的语言是不需要程序员写代码来管理内存的,它的GC(Garbage Collection)机制 实现了自动内存管理。GC做的事情就是解放程序员的双手,找出内存中不用的资源并释放这块内存。 下面我们来看看Python的GC是怎么做的:   Python自带的解释器CPyth

你们都是如何学 Python 高薪就业的?赶紧学习吧!-爱代码爱编程

本文主要分为 3 个部分: 1.Python思维导图,掌握Python基础2.Python学习资料,整理优质学习网站3.Python书籍资料,从入门到精通一.Python思维导图 1.基础知识图包括了基本规则、python语言特点、计算机语言、如何运行Python、变量赋值五个方面,辅助你快速掌握Python编程的基底知识 面对对象编程是一个非常重要的

云计算的初步-爱代码爱编程

1.4.2平台即服务PaaS: PaaS:是把应用服务的运行和开发环境作为一种服务提供的商业模式。 PaaS的关键技术: 1>分布式的并行计算:为了充分利用广泛部署的普通技术资源实现大规模运算和应用的目的,实现真正将传统运算转化为并行计算,为客户提供并行服务。 2>大文件分布式存储:为了解决海量数据存储在廉价的不可信结点集群构架上数据安全性及

3个独一无二的机器学习Python库-爱代码爱编程

Python有大量广泛应用于数据科学的软件包,其中部分工具旨在实现机器学习算法。我将介绍一些新的软件包,您以前可能从未听说过这些工具,或者用得很少。这些库使机器学习算法的选择变得更快和更容易。如果您想了解更多重要的机器学习Python库,请继续阅读,它们并不是scikit-learn,TensorFlow。我们将讨论PyCaret,pickle和Imbal

Kibana:在 Kibana 中的四种表格制作方式-爱代码爱编程

在 Kibana 的可视化中,我们经常会绘制表格。我总结了一下,有如下的四种方法: 在 Discover 界面中制作使用 table 可视化进行制作使用 TSVB  来制作使用 Lens 进行制作在这几种方式中,几种制作最后的结果是不一样的。我们在实际的使用中,需要根据自己的需求来分别进行选择。   准备数据 在今天的实验中,我将使用 Kibana

小白必读!十大被低估的Python自带库!-爱代码爱编程

大家在学习python的过程中,都会了解到python的一个强大的功能在于各种强大的第三方库函数,大家只需要通过pip install 即可安装我们需要的库函数。   大家往往只是关注自己安装的python库,却忽略了python自带的库函数,或者是python自带的库,今天小编就为大家介绍一下,十大被低估的python自带库或者是python自带的函

大数据技术的概述(1)-爱代码爱编程

1.1大数据技术的产生 1.1.1数据基础知识: 信息系统的表达上,可以把数据放在输入端,信息放在输出端。 从信息的角度看数据可以从数据的输入和输出的位置得到理解。 1)人们掌握数据资源的目的是为了提炼加工数据为有用的资源,称为信息; 2)在信息的基础上提炼和总结成具有普遍指导意义 的内容,包括共性规律,理论,模型模式方式等称为知识; 3)运用知识,结合

Python的pandas.ExcelWriter输出excel时xlsxwriter引擎设置格式_筛选_高亮-爱代码爱编程

日常工作中,希望输出的excel带一些格式,当表单数据量较大时,用python可以解决大量手动工作量:pd.to_excel时设置好了保存即可。 下边代码包含了设置日期、边框、对齐、高亮、背景色、字体色,字号、字体、筛选等。 import numpy as np import pandas as pd import sys, os def demo()