《Sparse R-CNN:End-to-End Object Detection with Learnable Proposals》论文笔记
Posted m_buddy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《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种:
图(a)代表是的RetinaNet为代表的逐像素预测,图(b)代表的是先通过RPN筛选proposal之后再进行预测。图(c)直接假设需要预测框的数量并直接通过学习的当时得到proposal。文章对proposal box和dynamic head所需的proposal feature都是通过学习的方式得到的,那么其训练的难易程度(收敛性)见下图的比较:
2. 方法设计
2.1 网络结构
文章的整体的网络结构与Faster RCNN系列算法近似,前期特征提取使用的是FPN,只是在RPN部分使用了参数化学习的proposal box,并且在检测部分使用了proposal feature,对应的预测部分其结构见下图所示:
对于文章的代码实现可以参考:
# ./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 ∈RN∗4与proposal feature ∈ R N ∗ 256 \\in R^N*256 ∈RN∗256是一一对应的,其作用分别为:
- 1)proposal box:作用是类似于RPN网络得到proposal box(只不过这里是通过学习的形式);
- 2)proposal feature:维度增加能够编码的信息也增加,其作用是给每个proposal box产生的特征(也就是使用proposal box在backbone feature上进行RoIAlign)添加更多box回归特性,用于生成特异性特征的,类似与SOLO中的动态卷积;
这里对于动态卷积参数的使用与动态特征的生成参考下面的伪代码:
对于上面提到的proposal box可学习参数的初始化,文章提出了4中初始化的方式,其的性能结果不同见下表所示:
2.3 优化策略
这里使用到的优化策略是使用迭代和non-local attention特征优化的形式:
- 1)对于迭代:类似于Cascade RCNN的思想通过级联优化的形式得到fine的检测结果;
- 2)对于non-local:这里就是使用attention的操作去优化特征表达,从而优化检测结果;
迭代次数上的消融实验结果:
对于迭代优化和上一节(2.2节)的dynamic head作用见下表:
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=λcls⋅Lcls+λL1⋅LL1+λgiou⋅Lgiou
其中,
λ
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:
COCO-2017 test:
以上是关于《Sparse R-CNN:End-to-End Object Detection with Learnable Proposals》论文笔记的主要内容,如果未能解决你的问题,请参考以下文章
Sparse R-CNN 随机初始化的坐标是如何反向传播训练的