3、RDD-Single-Stage Rotation-Decoupled Detector for Oriented Object
code:
https://github.com/Capino512/pytorch-rotation-decoupled-detector
1.Abstract
2.Introduction
贡献:
文章提出一种新的单阶段检测算法用于有效且准确的方向性目标检测。
展示了一种旋转解耦anchor匹配策略,将OBB看作是HBB与角度的组合。
新的匹配策略基于旋转解耦的包围框IoU而不是OBB。
所提出的策略没有带来回归参数的改变,在算法的学习上扮演正面效应。
首先,HBB在匹配过程中比起OBB更高的表现出稳定性。
其次,提出的策略在HBB的基础上只引入了一个目标变量。
比起其他旋转检测算法需要增加额外的不同角度的anchor,新方法只需要很少的anchor,因此极大地减少了计算量。
为了应用HBB检测框架,我们重新设计了OBB的表征形式,新设计的表征方法在计算anchor与GT的IoU时不会受到角度变化的影响。
新提出的方法对依据spindle主轴的方向将OBB分类为两类,反过来对应HBB。
新提出的策略并没有对网络模型进行修改,因而可以被应用在不同结构的检测模型中。
基于以上观点,我们提出了RDD方法,在三个OBB标签的公开遥感数据集上实现了最好的效果。(DOTA , HRSC2016 and UCAS-AOD)。
3.Related Work
4.Proposed Method
RDD 方法基于FPN架构,采用多尺度特征图。
任意方向的目标通过一个旋转包围框来表示通常比水平边界更准确。
然而,IoU对角度变化很敏感。
实验发现,通过设计合理的学习目标,即使不应用旋转框,也可以准确学习到角度。
本文设计了一个新的包围框标准形式。
此外,旋转解耦anchor匹配策略用于优化任意方向目标的位置学习。
采用正负样本均衡策略解决前景-背景、类别不平衡问题。
1、Network Architecture
RDD轻量级网络结构如1图所示,
每种操作的类型在图1的底部。
首先,从骨干网络获取多尺度特征图,选择ResNet101作为实验的基础网络。
其次,多尺度特征图输入一个金字塔架构做特征融合。
为了级联不同层的特征,对特征图上采样,与前一层的特征图进行元素级相加操作。
在想加操作前后添加一个卷积层,以保证检测中特征的分辨性。
最后,预测层输出分类和回归结果。
分类和回归采用相同的预测层,仅仅在输出通道数目方面不同。
对于分类,输出通道数量是 α ∗ c \alpha * c α∗c;
对于回归,输出通道数量为 α ∗ 5 \alpha * 5 α∗5。
其中 α 和 c \alpha 和 c α和c分别表示anchor数目和类别数目。
在本项研究中,只有水平anchor用于后续操作而非旋转anchor。
2、Rotated Bounding Box Representation
HBB 具有良好的鲁棒性,但是缺乏准确性。
OBB更为准确但是不够鲁棒。
其 θ \theta θ周期性通常会带来突然的IoU下降问题,从而后续产生不可避免的错检,尤其极端长宽比。
利用HBB和OBB各自的优势重新定义包围框。
通常情况下,定义为 ( x , y , w , h ) (x,y,w,h) (x,y,w,h)的HBB和 ( x , y , h , w ) (x,y,h,w) (x,y,h,w)的HBB是不同的。
将其此重新定义为 H B B h HBB_h HBBh和 H B B v HBB_v HBBv分别表示水平方向和垂直方向。
因此,对任意OBB,可以找到对应的 H B B h / v HBB_{h/v} HBBh/v.
他们具有相同的形状和中心点,角度范围为 [ − π / 4 , π / 4 ] [-\pi/4,\pi/4] [−π/4,π/4].
图2显示了新定义的包围框角度。
3、Anchor Setting
本方法采用了SDD算法中的anchor设置策略,仅仅采用水平anchor而,而没有用旋转anchor。
4、旋转解耦Anchor匹配策略
基于重定义的包围框,我们提出一种旋转解耦的anchor匹配策略。
在匹配之前,旋转的包围框、GT被解耦成 H B B h / v HBB_{h/v} HBBh/v和一个绝对的角度。
H B B h / v HBB_{h/v} HBBh/v用作匹配中的GT。
图3显示了提出的匹配策略与旋转anchor不同之处。
GT与旋转解耦anchor之间的IoU计算无需考虑角度,但是GT与旋转anchor之间需要考虑角度。
本研究中,与RetinaNet类似,前景IoU阈值为0.5,背景IoU阈值为0.4.
提出的anchor匹配策略更为关注形状,抑制了角度的影响。
为了更好的对比,我们对匹配过程进行仿真。
水平anchor采用7个比例 1 , 2 , 1 / 2 , 4 , 1 / 4 , 8 , 1 / 8 {1,2,1/2,4,1/4,8,1/8} 1,2,1/2,4,1/4,8,1/8,三种尺度 2 0 , 2 1 / 3 , 2 2 / 3 {2^0,2^{1/3},2^{2/3}} 20,21/3,22/3。
旋转anchor通过在水平anchor的基础上增加一系列 3 0 ° 30^° 30°为间隔的角度。
图4 显示了不同匹配策略的结果。
可以看出,除了密集anchor的设置,GT与匹配anchor的重叠部分在某些角度并不高。
这是因为,旋转anchor的角度通常是在固定间隔上设置的,而没有考虑长宽比。
此外,我们还画出了最大IoU的变化曲线,如图5所示。
图5表明,基于旋转anchor匹配策略,最大IoU曲线在长宽比上升时急剧变化,而对于所提出的策略,曲线并未受到影响。
在匹配anchor数量增加时,这一区别相当明显。
在长宽比增加时,anchor匹配数目的不同显著增加。
在这种情况下,anchor的匹配数目甚至达到0,此时网络无法从GT学习。
然而,这一变化是不合理的。
理想情况是匹配结果不会受到角度变化的影响。
与之对比,我们提出的方法在不同条件下总是稳定的。
5、Positive and Negative Sample Balance Strategy
在匹配之后,大部分anchor被标记为背景或者是负样本。
极少部分作为正样本或者前景。
前景背景不平衡问题在训练时发生,不依赖于每个类别的样本数量。
本文采用一种与Focal Loss类似的策略,不同之处在于新策略不再动态对loss进行缩放。
我们对类别标签分配为1,0,-1,分别对应前景,背景和忽略anchor。
BCE损失定义为:
其中, y y y是anchor的类别标签, p p p是预测概率。
分类损失定义为:
其中 N N N表示anchor的数目, N p o s N_{pos} Npos表示前景anchor的数目。
正样本对分类损失贡献相比于负样本更加稳定,但是正样本的数目相对于负样本而言少。
anchor采用 ( x a , y a , w a , h a ) (x_a,y_a,w_a,h_a) (xa,ya,wa,ha)进行表示。
采用Smooth-L1损失作为旋转框回归损失,仅计算前景anchor:
最终的损失计算为:
5.实验
https://github.com/Capino512/pytorch-rotation-decoupled-detector
1、DOTA
2、HRSC2016
3、UCAS-AOD
6.讨论
本文方法存在基于anchor的检测算法的通病:
1)anchor的设置根据检测目标的形状确定;
2)在每个特征层,采用多尺度的anchor,增大了计算量;
3)难以处理高重叠的目标。