Sparse R-CNN阅读笔记

date
Oct 6, 2021
Last edited time
Mar 27, 2023 09:03 AM
status
Published
slug
Sparse_R-CNN阅读笔记
tags
DL
CV
summary
这个是我参加MAC实验室考核的时候报告的小结, 整理了一下发布出来
type
Post
Field
Plat

Background and motivation

  • 当前阶段的目标检测方式
    • 现阶段的目标检测方式(包括一阶段和二阶段方法)都依赖于密集的目标候选框.
    • 当前方式的限制
        1. 后处理—非极大值抑制 NMS
        1. 需要对密集的检测框进行正负样本标定 many-to-one label assignment problem
        1. 依赖anchor box 的预设值, 和 proposal generate algorithm
  • 检测方式的分类
    • Dense method
      • 一阶段的检测模型, YOLO, SSD, OverFeat
        每一个密集定义的anchor box都被分类以及回归. 需要非极大值抑制
    • Dense-to-Sparse method
      • 一些二阶段的检测模型 R-CNN, faster R-CNN
        从密集的region canditates 选择出部分进行分类和回归.
        DETR 是最近提出的检测方式, 使用了匈牙利算法()直接输出结果, 而无需NMS. 但是: DETR 需要 所以作者认为这也是一种 Dense-to-sparse 方式
    • Sparce method
      • 现有的方法, 比如G-CNN. 但是表现效果不是很好.
  • 目的
    • the central idea of Sparse R-CNN framwork is to replace huundreds of thousands candidates from Region Proposal Networks with a small set of proposal boxes.
      所以这篇文章目的在于提出一个完全稀疏的目标检测方式, 同时解决上述当前方式的一些限制.

Method

  • Sparse R-CNN的组成
    • notion image
      1. backbone network
      1. dynamic instance interactive head
      1. two task-specific prediction layer
  • 关键技术
      1. 使用 Learnable proposal box
        1. 使用 N 个固定数量的 proposal box (四维向量)来作为可以学习的参数, 可以看作是训练集中潜在物体位置的统计数据, 是非常粗糙的估计. 同时这与输入的图像无关
          这篇文章使用了 proposal box 来替代 R-CNN 中的 selective search 和 faster R-CNN 中的 Region proposal Network.
      1. 使用 Learnable proposal feature
        1. 是一个高维的向量(256维), 与 proposal box一一对应, 同时也是可以学习的参数. 因为proposal box 只能提供一个粗略的物体定位, 而没有细节信息. 同时, 不需要像 DETR 里的空间位置编码
      1. Dynamic instance interactive head
        1. notion image
          对于给定的N个proposal box 进行 RoIAlign (如 faster R-CNN 里的RoIPooling)操作后, 得到 RoI features. 然后, 对N个 RoI features 和 Proposal features 实现交互, 最后得到输出的分类和 新的box
          这个模块的 proposal feature 可以看作是一种 attention 机制的实现,
      1. iteration structure
        1. notion image
          使用了迭代的结构来提上性能. 将新生成的 object box 和 object features 作为下一步输入的 proposal box 和 proposal features.
      1. set prediction loss
        1. Sparse R-CNN 使用了 set prediction loss. 绕过了多对一匹配问题, 引入了基于集合的一对一匹配.

Result

Sparse R-CNN 展示出了与成熟检测器基线相同的准确性, 运行时间, 和训练收敛性能. 数据集: COCO数据集 Backbone: ResNet-50 FPN Training Epochs: 3x schedule 效果: 44.5AP 22fps
notion image

Refference

【源头活水】Sparse R-CNN:简化版fast rcnn
"问渠那得清如许,为有源头活水来",通过前沿领域知识的学习,从其他研究领域得到启发,对研究问题的本质有更清晰的认识和理解,是自我提高的不竭源泉。为此,我们特别精选论文阅读笔记,开辟"源头活水"专栏,帮助你广泛而深入的阅读科研文献,敬请关注。 作者:知乎-深度眸 地址:https://www.zhihu.com/people/huanghaian 论文名称: Sparse R-CNN: End-to-End Object Detection with Learnable Proposals 论文地址: https://msc.berkeley.edu/research/autonomous-vehicle/sparse_rcnn.pdf 开源代码: https://github.com/PeizeSun/SparseR-CNN 原作者解读: https://zhuanlan.zhihu.com/p/310058362 知乎问答: https://www.zhihu.com/question/431890092/answer/1593944329 ss区域提取算法加上fast rcnn算法,是faster rcnn算法的前身,由于其巨大计算量以及无法端到端训练,故而提出区域提取网络RPN加上fast rcnn的faster rcnn算法。但是你是否想过去掉RPN,仅仅在fast rcnn算法基础上额外引入点新技术就可以实现更简洁、更高精度的替代算法?本文借鉴了最新提出的detr算法核心思想,从而实现了上述想法。 Sparse R-CNN极其简单,不需要设置烦人的密集anchor,不需要RPN、不需要复杂后处理和nms,不需要小心的平衡RPN和fast rcnn训练过程,也没有难调的超参,和detr一样完美。如果说detr最大的缺点是收敛速度慢,推理内存占用多,那么Sparse R-CNN是不存在上述缺点的。 Sparse R-CNN之所以如此简洁高效,我觉得离不开前人relation network和detr的贡献,具体来说其创新点包括: 不需要RPN,该组件由可学习的proposal boxes代替 不需要复杂后处理和nms,因为其参考detr里面的点集预测做法 不需要设置anchor,是因为已经没有RPN模块了,自然不需要设置Anchor proposal boxes提供的仅仅是粗糙的roi信息,不足以表征物体属性例如姿态和形状等等,故额外引入了可学习的proposal feature,作用类似于detr里面的object query 为了更好的提取每个bbox实例的特征,对roi特征和proposal feature引入了交叉注意力模块(论文中叫做可交互模块) 引入了类似cascade rcnn的级联refine思想,提高整体性能 对上述做法的思想不了解的,不用着急,后面会一一详述,在阅读本文前最好先阅读下relation network和detr论文。 由于文章写的比较快,如果有不对的地方,请见谅! 01 前置基础 为了方便后续理解,这里先简要描述下前置算法。 其简要流程为: 1.
CVPR2021: Sparse R-CNN
本文主要介绍一下我们最近的一篇工作: Sparse R-CNN: End-to-End Object Detection with Learnable Proposals 沿着目标检测领域中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。 我们先简单回顾一下目标检测领域中主流的两大类方法。 第一大类是从非Deep时代就被广泛应用的dense detector,例如DPM,YOLO,RetinaNet,FCOS。在dense detector中, 大量的object candidates例如sliding-windows,anchor-boxes, reference-points等被提前预设在图像网格或者特征图网格上,然后直接预测这些candidates到gt的scaling/offest和物体类别。 第二大类是dense-to-sparse detector,例如,R-CNN家族。这类方法的特点是对一组sparse的candidates预测回归和分类,而这组sparse的candidates来自于dense detector。 这两类框架推动了整个领域的学术研究和工业应用。目标检测领域看似已经饱和,然而dense属性的一些固有局限总让人难以满意: 所以,一个很自然的思考方向就是:能不能设计一种彻底的sparse框架?最近,DETR给出了一种sparse的设计方案。 candidates是一组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后处理,整个网络异常干净和简洁,可以看做是一个全新的检测范式。 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),预测回归和分类。 这组学习到的proposal boxes可以理解为图像中可能出现物体的位置的统计值,这样coarse的表征提取出来的RoI feature显然不足以精确定位和分类物体。于是,我们引入一种特征层面的candidates,proposal features,这也是一组可学习的参数,N*d,N代表object candidates的个数,与proposal boxes一一对应,d代表feature的维度,一般为256。这组proposal features与proposal boxes提取出来的RoI feature做一对一的交互,从而使得RoI feature的特征更有利于定位和分类物体。相比于原始的2-fc Head,我们的设计称为Dynamic Instance Interactive Head.
CVPR2021: Sparse R-CNN
个人笔记 | 大道至简的 Sparse R-CNN
1.Motivation 过去的目标检测都严重依赖设置密集的目标候选框(如Faster R-CNN),比如对特征图(H*W)每个像素设置k个anchor boxes,这样就会有成千上万个acnhors(H*W*k ),这样过于低效。因此作者提出一种稀疏的anchor设置方法, 设置N个可学习的object proposals,用于检测头的分类和位置检测。 Sparse RCNN避免了人工设置候选框的大量超参数以及多对一的正负样本分配。更重要的是,最终的预测结果可以直接输出而不需要NMS(非极大抑制) 。 2.Methods 文章主要使用以下几个技术或方法: Learnable proposal box 可学习建议框,网络设置固定数量的方框作为学习参数。 Learnable proposal feature 可学习建议特征向量,与建议框一一绑定,补充高层抽象特征信息。 Dynamic instance interactive head 动态实体交互检测头,建议框、RoI、特征向量三者绑定,每个RoI单独检测,不存在正负样本均衡问题,也不需要NMS操作。 3.Performance Sparse RCNN在COCO数据集上是实现44.5AP,同时能够达到22FPS(ResNet-50 FPN)的速度。 Dense method and sparse method. Sparse R-CNN Learnable proposal box and Learnable proposal feature Dynamic instance interactive head 过去的目标检测多是设置密集的候选框。对于一阶段检测器,比如说YOLO,SSD,RetinaNet检测头从 成千上万个铺在图像空间中的密集anchor boxes中直接预测出分类和位置,其 候选框的设置存在大量的超参数(每个位置的anchor个数,anchor的大小,anchor的长宽比等)。最近流行起来的anchor-free,通过关键点或者中心点的形式代替手工设计的anchor boxes,使得整个pipeline更加简单。对于二阶段的检测器,比如Faster RCNN,通过两步先从 预设密集的anchor boxes分类出前景和背景区域 ,从而得到稀疏的region proposals,然后再投入后面的网络进行更精细的分类和位置回归。 无论是一阶段还是二阶段,模型中都设置了密集的候选框,这对检测网络是一个很大的负担。除此之外由于密集检测,这些网络还需要添加NMS(非极大抑制)来消除冗余的检测框。最近,将transformer迁移到计算机视觉任务的DETR网络受到了广泛的关注,其使用一系列的稀疏object queries来和全局图像特征交互,这本质上也是一种dense-to-sparse的形式。 Sparse RCNN使用设置一系列固定数量的可学习proposal,来实现完全的稀疏化。 这不仅仅是候选框的稀疏化,同时也有特征间交互的稀疏化 。 2.
个人笔记 | 大道至简的 Sparse R-CNN
 

© Lazurite 2021 - 2024