解读Learning High-Precision Bounding Box for Rotated Object Detection via Kullback-Leibler Divergence
Rating: ⭐⭐⭐⭐
conference: NeuraIPS
上交大佬的NIPS作,可以去GitHub关注一下这个大佬!
MMRotate据说也是上交和商汤合作的,之后的几篇都会优先更新里面的实现。
https://github.com/open-mmlab/mmrotate
总体感受:文章的思想确实很不错,但有些句子读起来就有点秀英文的意思,表达地并不是很确切(动词)和简练(一些比喻)。注意不是我多厉害,只是前两天看了例如Swin这类的Best Paper的直观对比感受。但是从GWD延伸到KLD改loss的思路值得我们学习,也从侧面说明中NIPS需要的数学作为支撑,深度学习的优化问题也需要数学去做改进。
两种形式的KLD对实验结果没有影响,所以使得效果变好的应该是KLD的尺度不变性(我的想法)。作者解释说KLD的好处在于让参数在优化时产生关联。
其中一部分数学知识我也没学到过(或者信号处理跟概率统计相关的),也就是我们到研究生博士生也不能停止数学,诸君共勉。
Abstract
先说Horizontal Detection的局限性:对于大的长宽比物体,当前的Regression Loss设计效果很差。作者希望做从一般(Rotational)到特殊(Horizontal)的演绎。(这一思路像是在准备统一旋转和水平框的检测)作者认为该过程中一大挑战就是:如何把耦合的位置参数解耦,防止在联合优化过程中参数之间互相影响。(但据我的理解,是否解耦应该影响收敛速度,并不太会影响最终结果)因此,作者将旋转框视为2D的高斯分布,计算高斯分布间的Kullback-Leibler Divergence(KLD)作为回归loss。根据分析,KLD及其导数可以很好地根据目标,动态调整参数。调整机理作者解释说是针对物体长宽比,调整angle参数的权重。同时,作者证明KLD是尺度不变的。并且推导
K
L
D
l
o
s
s
KLD \space loss
KLD loss可以变成
l
n
n
o
r
m
l
o
s
s
l_n \space norm\space loss
ln norm loss。并且在7个数据集上验证了算法的先进性。(旋转不变性的比较,该图片是作者在计图论坛的ppt,链接:https://yangxue0827.github.io/files/计图论坛.pdf)
1 Intro
注意下作者文中常用的两个adj,inductive(归纳的,也就是特殊到一般,具体地讲就是把旋转框作为特殊情况)和deductive(演绎的,也就是一般到特殊,提出一个新的reg loss把旋转和水平是为一种类型,水平是特殊情况)。本文是第二种。
作者首先分析前作的问题在于归纳的方法不能很好的处理大长宽比和高密集度的物体。本文认为:不同类型的目标,其参数的重要性是不同的
(
x
,
y
,
w
,
h
,
θ
)
(x,y,w,h,\theta)
(x,y,w,h,θ),希望在优化时能自适应地注意到这一点。
方法就是将 ( x , y , w , h , θ ) (x,y,w,h,\theta) (x,y,w,h,θ)转化为2D地高斯分布 N ( μ , Σ ) N(\mu,\Sigma) N(μ,Σ),再用KLD计算两个高斯分布的距离(还有对比结果,如上图)。也通过优化时的梯度分析(后文),证实了其有效性。
作者认为本文的四大亮点如下:
- 改变了传统检测其从Horizontal改到rotational的思路,提出的新方法表明它的劣化形式就是水平检测的 l n n o r m l_n \space norm ln norm。
- 因为之前参数不在一个尺度上,新方法提出了一个一致的loss。
- 梯度分析验证方法的有效性,并证明KLD是尺度不变的
- 在公开数据集和流行的检测器上验证效果,并取得SOTA。
2 Background
本文是第一个统一旋转和水平的工作。
2.1 Related Work
水平检测 水平检测回顾,bla bla。但是上述检测器的loss一般都是 l n n o r m l_n \space norm ln norm或者是 I o U b a s e d IoU\space based IoU based(GIoU、DIoU)。
旋转检测 之前的工作都是从水平检测的loss进行扩展。而作者的工作是从底层统一旋转和水平检测。
2.2 Inductive Thinking of Loss Design
作者回顾之前旋转检测对
θ
\theta
θ的处理:基于三角函数和取模的方式。最后到
l
n
n
o
r
m
l_n \space norm
ln norm的时候将这5类参数同样计算。
导致优化时参数各自优化各自的,因而会训练不稳定。
2.3 Deductive Thinking
我认为作者很大程度是从前人的工作做了延申,看完参考文献[5]应该就理解了。
上图为图片中检测框转化成高斯分布的过程。
之后对比了集中描述分布之间距离的方法:
1.高斯-瓦尔斯坦距离,两个概率分布之间的距离为:
距离分为中心的距离+
h
,
w
,
θ
h,w,\theta
h,w,θ的耦合项。该距离对性能提升不小,但是对于x,y点还是单独计算的距离。算是个semi-coupled loss,半耦合loss。
[5] X. Yang, J. Yan, M. Qi, W. Wang, Z. Xiaopeng, and T. Qi, “Rethinking rotated object detection with gaussian wasserstein distance loss,” in International Conference on Machine Learning, 2021.
当角度转为0的时候,上式简化为:
也就是和作者提到KLD的性质类似,都转化为 l n n o r m l o s s l_n \space norm \space loss ln norm loss。作者认为:GWD没有追求高精度的检测以及物体尺度变化(或者理解为尺度方差很大)(scale variance)。
3 Proposed Approach
Kullback-Leibler Divergence(KL散度) 本文采用KLD计算两个2D高斯分布的距离,公式如下:
需要注意,上方第一行的公式和GWD一样都是x,y耦合,
h
,
w
,
θ
h,w,\theta
h,w,θ耦合。第二个才是所有参数的耦合。
KLD是非对称的(上下不一样就可以看出来),但是实验中在优化时上下两种的效果是相近的。具体到我们的五个参数模型,上式转化为:
高精度检测分析 令
θ
\theta
θ取
0
。
0^。
0。,并对位置项求导:
可以看出模型在优化时会根据尺度对梯度进行放缩。例如,小的尺寸,在训练时就会优化让
Δ
x
,
Δ
y
\Delta x,\Delta y
Δx,Δy变大,就和我们机器学习添加的正则项系数
λ
\lambda
λ一样,所以我对这里的理解就是根据物体尺寸的自适应正则化手段。
注意,这里作者说明了,是让
Δ
x
,
Δ
y
\Delta x,\Delta y
Δx,Δy的优化和
θ
t
\theta_t
θt绑定。作为对比,GWD的化为:
l
2
n
o
r
m
l_2 \space norm
l2 norm为:是根据框的
w
a
,
h
a
w_a,h_a
wa,ha调整
Δ
x
,
Δ
y
\Delta x,\Delta y
Δx,Δy。
作者也在图2中做了几个方法的结果对比:
之后,为了说明
h
p
,
w
p
h_p,w_p
hp,wp和
Δ
θ
\Delta\theta
Δθ的约束关系,用公式说明:
上图说明
h
p
,
w
p
h_p,w_p
hp,wp被
Δ
θ
\Delta\theta
Δθ影响,下图说明对偶的关系:
考虑到特殊情况,当 w p = w t , h p = h t w_p=w_t,h_p=h_t wp=wt,hp=ht,公式转化为:
并且在长宽相等时取等号,反过来也就是说:如果物体长宽比比较大,那么上式 Δ θ \Delta\theta Δθ的系数就会更大,会在优化时更注重对其的优化。也是KLD能取得高精度检测的原因。
Scale invariance 作者在附录中证明了KLD的尺度不变性。基本思路就是,证明两个高斯分布分别乘以一个满秩阵M,求KLD,变形到与乘M之前一致。
水平框的特例 作者提出用KLD来囊括水平和旋转框的检测,就是把水平框当作没有旋转角的情况。这里就推到了水平框下的KLD:
可以看到,出现了 l n n o r m l_n\space norm ln norm的形式。
KLD变种 旋转的非对称性可以被KLD忽略,作者用了集中KLD的变体来说明。
旋转回归损失函数 训练的全过程是:(1)模型预测五元结果 (2)解码检测框 (3)将检测框和真实框转到高斯分布 (4)计算二者的KLD 最终的loss为:
f ( . ) f(.) f(.)表示一个非线性的函数,并让D更加平滑。本文用到的是 s q r t ( ) sqrt() sqrt()和 l n ( x + 1 ) ln(x+1) ln(x+1)。这一步作者成为Normalization。对于多任务loss为:
这个就和三作的DAL有点像了,但我觉得这个思路还是有更早的工作可以追溯的。
4 Experiment
4.1 Datasets and Implementation Details
作者在很多数据集上测试过:DOTA、UCAS_AOD、HRSC2016、ICDAR2015、MLT和MSRA-TD500上。(后三者为场景文本检测数据集,可以形象理解OCR)。
在这一点上,我其实有点想challenge S 2 N e t S^2Net S2Net的工作,因为我尝试过用其跑UCAS_AOD,结果其中一类的结果低了差不多10mAP。
4.2 Abalation Study and Further Comparison
作者先在HRSC2016数据集上做了超参数测试,需要注意的是:一定要在KLD计算后加入非线性激活。
如果该图片不假,那么加和不加的真是天差地别。
从这个图可以得出:KLD是一个类似plugin的方法。
水平框的验证:作者用Faster RCNN、RetinaNet和FCOS分别验证了,性能没有下降。但是需要注意:不适合用COCO这样的标注(会标注更大的范围)来验证本文的方法,而且很难会看到性能提升。
4.3 Comparison with the State-of-the-Art
5 Discussions
Limitations 本文的方法能直接应用于[34][35]的四边形检测。 我认为这里的四边形指的是那种非矩形框的检测。