最近一个项目需要检测地物带方向的旋转框,于是看了下相关内容,用了R3Det和BBAVectors。这里做下记录。
上面是三种OBB定义方式。(a) opencv定义法(90∘-regression-based,[x,y,w,h,θ]):角度θ是指框与x轴所成的锐角,并且框的这条边记为w,另一条边记为h,因此角度的表示范围是[−90,0)。
(b) 长边定义法(180∘-regression-based,[x,y,h,w,θ]):角度θ是指框的长边h与x轴所成的夹角,因此角度的表示范围是[−90,90)。© 有序四边形定义法(Point-based, [ x 1 , y 1 , x 2 , y 2 , x 3 , y 3 , x 4 , y 4 ] [x{1},y{1},x{2},y{2},x{3},y{3},x{4},y{4}] [x1,y1,x2,y2,x3,y3,x4,y4] ):最左边的点(如果水平矩形的话有两个点满足取上面的那个)为起始点,逆时针排列。
上交和旷世2019提出的旋转目标检测网络,有mmdetection版本
这是一个单阶段的目标检测网络。
采用FPN作为backbone,提出focal loss来解决类别不平衡的问题,使用水平anchor,更快速的获得更多的proposals(后续refinement阶段使用refined旋转anchors以适应密集场景),回归时多了一个方向θ,共五个参数表示旋转框。由于倾斜交并比分数对角度很敏感,因此需要对预测框的精炼以提高旋转目标检测的召回率。
这个模块是为了重建特征图与框对齐,先双路卷积,再根据refined bboc的五个坐标双线性插值得到更精准的特征向量。遍历特征点后,将重建整个特征图。如下图所示。
思路比较简单,先用CenterNet检测物体中心点,然后回归一个包围框的边缘感知向量(BBAVectors)来得到有方向的包围框。
CenterNet是一个Anchor-free的方法,U型结构,先ResNet卷积5次,在上采样,得到一个原始图像1/4大小的特征图。然后使用Heatmap用来定位关键点。这里,我们用来检测物体的中心点。Heatmap有k个通道,分别对应了不同类别的物体。Heatmap的每个像素点的值表示物体的置信度。然后在直接回归宽和高。那为什么不能直接回归旋转角θ呢,因为小的旋转可能对于loss来说微不足道,但会使IOU变化较大。于是本文设计了四个向量BBAVectors来描述包围框,这样就需要回归总计4*2+2=10维特征向量。
后面由于我们的任务不仅要得到OBB,还要得到车头的方向,于是在此基础上多回归了一个车头方向的向量,B=[t,r,b,l,w,h]变为B=[t,r,b,l,d,w,h],效果还不错。