DeFRCN论文学习(复现)

DeFRCN: Decoupled Faster R-CNN for Few-Shot Object Detection

目录

  • DeFRCN: Decoupled Faster R-CNN for Few-Shot Object Detection
    • 关键词
      • 涉及领域
      • 前人架构
    • 模型框架
      • 总体框架
      • 详细框架
    • 解决的问题:
      • 多任务问题
      • backbone问题
    • 创新性结构
      • 1、Gradient Decoupled Layer(GDL)
      • 2、 Prototypical Calibration Block(PCB)

关键词

涉及领域

Object Detection; Few-show;

前人架构

Faster RCNN

模型框架

总体框架

DeFRCN论文学习(复现)_第1张图片

详细框架

DeFRCN论文学习(复现)_第2张图片

解决的问题:

多任务问题

Faster R-CNN的三个模块构成了一个统一的多任务学习(MTL)框架,但这些子网络的优化目标之间存在一定的不一致性。具体来说,利用从参数共享的主干中提取的特征图,RPN的目标是生成与类无关的区域建议,告诉网络看哪里,而RCNN目标执行基于区域的检测类别,以确定要看什么。此外,分类头需要平移不变特征,而定位头则需要平移协变特征。尽管多任务学习通常有助于提高目标检测的端到端性能,如faster R-CNN[39]所示,但也可能导致单个任务出现次优的解决方案,以平衡它们的目标不匹配问题[8,53]。

backbone问题

根据[39]中的论点,共享主干的最终目标是提取尽可能适合于所有下游任务的一般特征。事实上,从图中梯度流动的角度来看,RPN和RCNN通过共享的骨干网相互交换优化信息。然而,由于RPN和RCNN之间的潜在矛盾,我们注意到当前的架构可能会导致整个框架的小样本检测能力降低。此外,小样本检测阶段检测器 F n o v e l F_{novel} Fnovel的共享主干通常来自基础训练阶段时的基础检测器 F b a s e F_{base} Fbase的微调。在这两阶段跨域过程中,RPN可能会出现前景-背景混淆问题,这意味着基础训练阶段的背景proposal可能成为新微调阶段的前景。

创新性结构

1、Gradient Decoupled Layer(GDL)

解决的问题:backbone问题。
结构图如下:
DeFRCN论文学习(复现)_第3张图片
结构函数化如下:
DeFRCN论文学习(复现)_第4张图片
其中 G ( ) G() G()为GDL模块, A ( ) A() A()为仿射矩阵, λ \lambda λ为超参数, x x x为输入特征图。
结构描述:

  • 前向传播时,GDL的作用主要是进行仿射变换Affine A ( x ) A(x) A(x).使来自同一个backbone的特征图映射到新的特征空间中,实现一定程度的解耦。
  • 反向传播时,GDL的主要作用是 反向传播的梯度会根据模块的不同(RPN或RCNN),乘上一个不同的 λ \lambda λ.从而使方向传播的梯度权重不同。(当模块的 λ \lambda λ设为0时,反向传播的梯度为0,这时候主干的优化和RPN或RCNN模块的优化就无关了。具体看下面公式)

当整体模型进行优化时,RPNRCNN模块的梯度优化不受影响。但Backbone的优化会受到GDL模块的影响。
DeFRCN论文学习(复现)_第5张图片
θ b \theta_b θb代表backbone的优化参数,可以看到,在加入了GDL模块后, θ b \theta_b θb的优化情况就受到 λ 1 \lambda_1 λ1 λ 2 \lambda_2 λ2的影响。如果我们把 λ 1 \lambda_1 λ1设为0,那么Backbone的优化方向就只会被RCNN模块影响,RPN模块不会反向传播到Backbone模块。反之同理。
伪代码
DeFRCN论文学习(复现)_第6张图片

2、 Prototypical Calibration Block(PCB)

解决的问题:为了在推理时有效地解耦分类和定位任务。
模型结构图
DeFRCN论文学习(复现)_第7张图片
PCB模块由一个来自ImageNet预训练模型的强classifier、一个RoIAlign层和一个prototype bank组成。
具体作用:消除高置信度的假正例和恢复低置信度的真正例。
实现步骤:面对M-way K-shot任务,支持集S,PCB首先提取图片的原始特征图,然后根据真值boxes应用RoIAlign层来产生MK个实例表示。基于这些特征,我们把支持集S缩小为原型库 P = { p c } c = 1 M P = \{p_c\}^{M}_{c=1} P={pc}c=1M p c p_c pc定义如下:
在这里插入图片描述
S c S_c Sc为支持集 S S S中具有相同标签 c c c的样本形成的子集。在得到来自box classifier的proposal( y i ^ = ( c i , s i , b i ) \hat{y_i}=(c_i,s_i,b_i) yi^=(ci,si,bi), c i c_i ci为该proposal的预测类别, s i s_i si为该proposal的预测置信度, b i b_i bi为该proposal的预测检测框)后,PCB在proposal中的box上先应用RoIAlign层生成目标特征 x i x_i xi。然后计算 x i x_i xi p c i {p_c}_i pci之间的余弦相似度。公式如下:
在这里插入图片描述
最后,我们对余弦相似度 s i c o s s_i^{cos} sicos和检测器预测的proposal中的置信度 s i s_i si进行加权聚合。
在这里插入图片描述
此外,我们在小样本检测器和PCB模块间不分享任何参数,因此PCB不仅可以保证分类任务中物体平移不变性的质量,还可以更好的解耦RCNN中的分类任务和回归任务。
此外PCB模块是离线的,不需要进行任何进一步的训练,即插即用。
个人理解:其实PCB模块只是又引入了一个图像特征提取模型,这个模型没有像backbone和head那样被训练调整过,因此可以保留对分类任务的专一性,不会受到回归任务的影响,从而提高小样本分类的效果。

你可能感兴趣的:(计算机视觉,机器学习,算法,目标检测)