《Sparse R-CNN:End-to-End Object Detection with Learnable Proposals》论文笔记

参考代码:SparseR-CNN

1. 概述

介绍:这篇文章在目标检测领域中提出了一种新颖的检测问题思路,摒弃掉RetinaNet或是Faster-RCNN中那种预先定义密集目标检测解空间的方式,直接在输入端定义 N N N个可学习的proposal box和proposal feature(后期用于对于每个box的动态预测)用以实现目标检测任务。有点类似DETR中直接输出固定数量的检测结果,去除掉了引入anchor或是pixel-wise预测的稠密解空间假设,使得整体目标检测网络结构简化。只不过文章的算法是假设有 N N N个先验目标(proposal box),并通过学习的方式去学习这些参数,而且这些proposal box在预测的时候是不能预先进行排除的,需要将这些proposal box都送入到后面的dynamic head中的到最后的box regression和classification。因而这个 N N N的先验在实际场景下设置显得很关键,而且这 N N N个先验都需要去跑一遍dynamic head,没有办法在前期进行筛选。

这里按照proposal的生成进行划分,文章将检测算法的大致分类划分为如下3种:
《Sparse R-CNN:End-to-End Object Detection with Learnable Proposals》论文笔记_第1张图片
图(a)代表是的RetinaNet为代表的逐像素预测,图(b)代表的是先通过RPN筛选proposal之后再进行预测。图(c)直接假设需要预测框的数量并直接通过学习的当时得到proposal。文章对proposal box和dynamic head所需的proposal feature都是通过学习的方式得到的,那么其训练的难易程度(收敛性)见下图的比较:
《Sparse R-CNN:End-to-End Object Detection with Learnable Proposals》论文笔记_第2张图片

2. 方法设计

2.1 网络结构

文章的整体的网络结构与Faster RCNN系列算法近似,前期特征提取使用的是FPN,只是在RPN部分使用了参数化学习的proposal box,并且在检测部分使用了proposal feature,对应的预测部分其结构见下图所示:
《Sparse R-CNN:End-to-End Object Detection with Learnable Proposals》论文笔记_第3张图片
对于文章的代码实现可以参考:

# ./projects/SparseRCNN/sparsercnn/detector.py#L35
class SparseRCNN(nn.Module):
    ...

2.2 proposal box与proposal feature

在这篇文章的定义中proposal box ∈ R N ∗ 4 \in R^{N*4} RN4与proposal feature ∈ R N ∗ 256 \in R^{N*256} RN256是一一对应的,其作用分别为:

  • 1)proposal box:作用是类似于RPN网络得到proposal box(只不过这里是通过学习的形式);
  • 2)proposal feature:维度增加能够编码的信息也增加,其作用是给每个proposal box产生的特征(也就是使用proposal box在backbone feature上进行RoIAlign)添加更多box回归特性,用于生成特异性特征的,类似与SOLO中的动态卷积;

这里对于动态卷积参数的使用与动态特征的生成参考下面的伪代码:
《Sparse R-CNN:End-to-End Object Detection with Learnable Proposals》论文笔记_第4张图片
对于上面提到的proposal box可学习参数的初始化,文章提出了4中初始化的方式,其的性能结果不同见下表所示:
《Sparse R-CNN:End-to-End Object Detection with Learnable Proposals》论文笔记_第5张图片

2.3 优化策略

这里使用到的优化策略是使用迭代和non-local attention特征优化的形式:

  • 1)对于迭代:类似于Cascade RCNN的思想通过级联优化的形式得到fine的检测结果;
  • 2)对于non-local:这里就是使用attention的操作去优化特征表达,从而优化检测结果;

迭代次数上的消融实验结果:
《Sparse R-CNN:End-to-End Object Detection with Learnable Proposals》论文笔记_第6张图片

对于迭代优化和上一节(2.2节)的dynamic head作用见下表:
《Sparse R-CNN:End-to-End Object Detection with Learnable Proposals》论文笔记_第7张图片

2.4 损失函数

L = λ c l s ⋅ L c l s + λ L 1 ⋅ L L 1 + λ g i o u ⋅ L g i o u L=\lambda_{cls}\cdot L_{cls}+\lambda_{L_1}\cdot L_{L_1}+\lambda_{giou}\cdot L_{giou} L=λclsLcls+λL1LL1+λgiouLgiou
其中, λ c l s = 2 , λ L 1 = 5 , λ g i o u = 2 \lambda_{cls}=2,\lambda_{L1}=5,\lambda_{giou}=2 λcls=2,λL1=5,λgiou=2 L 1 L_1 L1代表的是对于中心点坐标和宽高四个维度上使用 L 1 L_1 L1 loss。

3. 实验结果

COCO-2017 val:
《Sparse R-CNN:End-to-End Object Detection with Learnable Proposals》论文笔记_第8张图片
COCO-2017 test:
《Sparse R-CNN:End-to-End Object Detection with Learnable Proposals》论文笔记_第9张图片

你可能感兴趣的:(#,General,Object,Detection,深度学习,计算机视觉,人工智能)