Gliding vertex on the horizontal bounding box for multi-oriented object detection,ECCV,2020
论文提出:五参数回归法对角度很敏感,很容易误检,而八参数回归法可以避免角度这个问题,但在八参数法四边形定义四个角的顺序时很麻烦(可以看下面的REDet中的解释)。为了避免这个问题,作者提出了一种巧妙的方法。
没有pytorch源码,个人感觉他是先用dota数据集里的8参数定义倾斜框法的那四个顶点坐标去获得外接水平框的坐标,计算真实的倾斜框顶点的offest和倾斜因子;然后再rpn预测得到水平框,fast-rcnn部分再去预测得到offest和倾斜因子(但我感觉很奇怪,定好loss后想预测什么就预测什么,让神经网络硬学,真的有理论依据吗?)。最后根据倾斜因子去输出水平框或者是倾斜框,倾斜框的后处理用的是倾斜nms。论文主要部分如下:
作者提出用一个水平框将倾斜的目标框住,然后水平框的四个顶点在水平框的四条边上滑动,计算倾斜框的4个顶点的length ratios(顺时针),即计算四个顶点沿着水平框相对于水平框的顶点的偏移量,来解决四个角顺序不定的问题,如下图:
如果alpha=1,则目标框是水平的
其实这种方法也存在边界问题:就是比如说gtbox是基于水平方向时略微顺时针转了一点,proposals时基于水平方向时略微逆时针转了一点,两明明是差不多的,但是损失却很大。作者为了避免这个问题,引入了基于面积计算的倾斜因子r=area(O)/area(Bh) ,也就是倾斜框与水平框面积之比来判断目标预测框的倾斜程度,r越接近于1,则说明目标预测框越接近水平,并且对于大横纵比的倾斜的目标,r接近于0。这样的话接近水平的目标就可以直接用水平框来表示,倾斜的目标才需要精确的回归。因此,其实近似水平框的那种情况是存在误差的。
网络的结构和faster-rcnn的几乎一样,只是多了五个变量alpha{1,2,3,4}和r。gtbox由三个信息组成:水平框(x,y,w,h),alpha{1,2,3,4},r。
RPN部分的损失和faster-rcnn的一样,最后的损失是:
其中两个N是proposals总数,p*=1 if 正样本 else 0,
Lh就是水平边界框损失