H2RBox

H2RBox

Introduction

论文题目 :HORIZONTAL BOX ANNOTATION IS ALL YOU NEED FOR ORIENTED OBJECT DETECTION

论文地址https://arxiv.org/abs/2210.06742

论文出处 :arxiv 2022.10

代码实现https://github.com/yangxue0827/h2rbox-mmrotate

Idea

现在很多目标检测数据集的annotation都是基于水平边界框的注释,但是水平框数据集不能直接用于旋转检测器的训练,这就导致现成的数据集和不断增长的旋转目标检测需求之间存在gap。因此作者提出了一种HBox-to-RBox style method(H2RBox),使用水平框进行弱监督学习,并且采用无监督学习辅助修正尺度和空间上的一致性,来预测对象角度。

SKU110K (零售场景数据集, 2019) = > SKU110K-R (2020)
DIOR (航空数据集 2020) => DIOR-R (2022)

这两个数据集一开始是水平框标注的,然后后面为了做旋转目标检测而特地使用旋转框重新标注。

Detail

作者实验发现,通过一些用水平框弱监督的实例分割模型(BoxInst, BoxLevelSet),可以轻松获得分割掩码Mask,然后通过掩码的最小外接性,可以轻松获得最终的旋转框。作者称这种方法为HBox-Mask-RBox style methods.

可以看到这个model也是一个二阶段的任务,而且第一阶段是实例分割,

如果直接引入实例分割,会带来以下问题:

  1. 分割质量很可能对背景噪声敏感
  2. 在对象拥挤等复杂场景中,会严重影响后续RBox的检测步骤.
  3. 实例分割的计算成本往往更高,导致整个检测过程耗时更长。

基于以上几点,作者提出了一种HBox-to-RBox style method(H2RBox)。想要跳过实例分割这个步骤,来构造一个HBox-to-RBox paradigm.

具体来说:

  1. 首先经过WS分支中的FCOS网络,得到预测的RBox(x,y,w,h,θ)(x, y ,w, h, \theta)

  2. 然后把输入的水平图像旋转一个随机角度,经过SS分支,然后同样回归得到子网络(FCOS)预测的RBox

然后开始计算LOSS

Lcls{L_{cls}}: FCOS网络中的分类Loss

Lcn{L_{cn}}: FCOS网络中的center-ness loss,通过将class score与center-ness相乘后作为最终该预测框的score,从而降低了那些远离object中心点的预测框的权重,并进行NMS,去掉一些远离object的低质量检测框。

LregL_{reg}: 使用H2RBox的外接矩形与GT的HBox进行Loss计算.

作者认为在理想情况下,WS分支的RBox的外接矩形和GT的HBox是高度重叠的。

Lss:L_{ss}: WS分支的RBox * Rotation Matrix后,与SS分支的RBox进行Loss计算。

这个就是作者说的通过学习两个分支,不同视图的RBox的一致性(包括尺度和空间),以消除undesired cases.

测试阶段只涉及WS分支.

label re-assignment strategies (label at location (x,y)(x*, y*) in SS branch 旋转映射回 (x,y)(x, y) in WS branch的策略)

简单贴一下Loss

Lcls{L_{cls}}: SoftMax Loss Lcn{L_{cn}} : Center-ness loss LregL_{reg}: Cross entropy Loss

Result

下面两张图对比,说明了但WS的效果不好,这也是为什么作者要引入SS分支。

下面是DOTA-v1.0数据集上的性能对比:

下面是DIOR-R数据集上的性能对比:

总结

不难发现,因为作者的这个方法原创性比较大,没有一个好的baseline,因此效果整体上来说不是很好。

作者的想法很好:怎么样把水平框数据集利用到旋转目标检测上来, more data, more powerful。

但我要研究的重点不是这个方面,因此可能帮助不是很大。


本博客所有文章均采用 CC BY-NC-SA 4.0 协议 ,禁止商用,转载请注明出处!