Advertisement

《R3Det:Refined Single-Stage Detector with Feature Refinement for Rotating Object》论文笔记

阅读量:

参考代码:

  1. 基于TensorFlow的R3Det算法实现了高效的物体检测。
  2. 该框架基于PyTorch框架实现了旋转检测算法的优化。
  3. 本项目对旋转检测算法进行了综述性介绍,并提供了详细的实验结果分析。

1. 概述

导读:这篇文章提出了一种级联优化的旋转目标检测算法。这篇文章的检测算法可以看作是单阶段的(类似RefineDet)检测算法。算法的第一级回归用于生成带旋转角度的roi proposal(也可以称之为带旋转角度的anchor),在之后的优化级中去迭代优化上一级生成的roi proposal。需要注意的是文章的算法在检测目标的优化阶段对特征图进行了优化(也就是文章提到的特征对齐操作,feature alignment operator),从而帮助获取更加精确的目标位置定位。对于损失函数部分,文章引入倾斜矩形的交叠面积作为目标边界框损失的加权项,从而与Smooth L1损失进行互补,兼顾不同IoU情况下的回归损失。注意:需要去读论文源码的同学请阅读TF版本的代码实现,Pytorch版本的代码存在较多遗漏

需要注意的是,文中采用层级式优化策略对旋转的目标框进行回归分析,并在锚框机制上进行了简化处理。文中对常见的锚框机制进行了系统性分析:A锚框和Rotated A锚框(Rotated A锚),其中A锚框具有平移不变性特点,而Rotated A锚则能够有效捕捉目标旋转特征。

  • 1)水平方向的 anchor:当 anchor 数量较小时能够实现较高的召回率;
  • 2)具有角度特性的 anchor:在复杂环境中展现出卓越的性能表现;

鉴于上述两种不同的锚点特性,在研究中主要采用了水平锚点来进行回归分析,并且未单独设置与角度相关的锚点,则将角度信息直接纳入回归模型。在此基础上,在后续阶段上对带有旋转角度的目标区域建议框进行了进一步优化

2. 方法设计

2.1 方法pipline

文章提出的算法 pipeline 主要是单一阶段的架构;该网络基于FPN输出结果进行边界框预测,并可参考下图以了解详细结构。

在这里插入图片描述

观察上图所示的网络架构设计,在初始阶段输出的结果分为两类通道:一类为分类相关通道(标记为 5A ),另一类为回归相关通道(同样标记为 5A )。然而,在后续优化过程中这些通道被缩减为单一的标准尺寸(标记为 5 )。这与前述内容一致。The initial stage primarily relies on horizontal anchors to generate region-of-interest (ROI) proposals incorporating angular information.A之后再级联几个优化模块进行精细化回归。

该方法通过预测带有旋转角度的目标框来实现目标定位与边界估计,并对被预测的目标进行详细描述。其中(x,y,w,h,\theta)表示旋转矩形框的中心点坐标及其宽高和旋转角度参数。回归目标变量由以下公式定义:t_x=\frac{(x-x_a)}{w_a}t_y=\frac{(y-y_a)}{h_a}用于表示中心点坐标的归一化值;而t_w=log(\frac{w}{w_a}), t_h=log(\frac{h}{h_a}),以及t_{\theta}=\theta-\theta_a分别用于表示宽度、高度以及旋转角度的归一化值与偏移量。

2.2 Feature Refinement Module(FRM)

当确定边界框位置时,在进行边界框位置确定的过程中使用的是一种浮点数方法;然而通常情况下目标的位置都是定点坐标,在这种情况下会导致在级联优化及定位过程中无法实现精确对齐;为了解决这一问题,在两阶段的检测机制中可以借助RoI Pooling等技术来实现特征对齐;那么,在单阶段检测网络中如何实现特征对齐的问题?文章采用的方法是通过双线性插值技术来实现特征对齐;具体而言,请参考下图中的展示:

在这里插入图片描述

那么对于插值的算子来说,则可以表示为:

在这里插入图片描述

在插值计算过程中所使用的点来源于上一阶段预测网络生成的区域建议框(Roi Proposal)。那么FRM模块的特征优化过程可被描述为:在插值计算过程中所使用的点来源于上一阶段预测网络生成的区域建议框(Roi Proposal)。具体而言,则是利用上一级生成的Roi Proposal所对应的边界框位置及其置信度来对特征图进行优化。具体来讲就是使用上一级生成roi proposal的边界框位置和置信度去优化特征图

在这里插入图片描述

对于这个模块如何嵌入到网络中的,可以参考下图:

在这里插入图片描述

本FRM模块的操作步骤可参考以下代码段:

那么同样是在特征对齐方面的问题上,请问文章的方法与RoI Pooling有什么不同呢?对此،文章中将其归纳为如下2点:

    1. 在计算效率方面存在差异:RoI Pooling是基于单个特征块的操作方式;而本文提出的方法通过对取5个关键点(包括4个顶点和1个中心点)进行处理,在这一过程中能够显著提升计算效率。
    1. 在涵盖的信息范围上存在差异:RoI Pooling是基于单个实例特征的操作;而本文的方法则是在原始特征图层面上完成对齐操作。

2.3 损失函数

与传统检测方法相比,在构建回归损失时综合考虑了Smooth L1与倾斜举行的交叠面积(Skew IoU)。这一设计基于以下原因: Smooth L1 损失与真实计算的 Skew IoU 并非完全同步。具体参考后续详细说明。

在这里插入图片描述

从上图可以看出, Smooth L1损失函数保持一致, 但Skew IoU存在显著差异。通过对这一现象进行系统性分析, 探讨了两者之间的内在联系。

在这里插入图片描述

从图中可以看到两者并不统一这一现象后

在这里插入图片描述

refine stage数量的影响:

在这里插入图片描述

3. 实验结果

DOTA数据集:

在这里插入图片描述

ICDAR 2015数据集:

在这里插入图片描述

全部评论 (0)

还没有任何评论哟~