技术综述五:旋转目标检测系列算法讲解(一)

举报
我想静静 发表于 2020/09/30 10:59:25 2020/09/30
【摘要】 在自然场景图像的目标检测中,通常使用水平四边形框作为检测框对目标的位置进行框定。但是,在遥感目标检测以及文字检测等相关场景,目标通常情况都是倾斜的。因此,使用检测算法对旋转目标进行检测有利于对遥感目标检测以及文字检测中的目标进行精确定位,为后续识别、分析等高阶任务提供更加准确的初始结果。本文将介绍三种优秀的旋转目标检测算法。

研究背景及意义

         在自然场景图像的目标检测中,通常使用水平四边形框作为检测框对目标的位置进行框定。但是,在遥感目标检测以及文字检测等相关场景,目标通常情况都是倾斜的。因此,使用检测算法对旋转目标进行检测有利于对遥感目标检测以及文字检测中的目标进行精确定位,为后续识别、分析等高阶任务提供更加准确的初始结果。下面,我们将介绍三种优秀的旋转目标检测算法。

SCRDet: Towards More Robust Detection for Small, Cluttered and Rotated Objects

SCRDet算法主要为解决遥感图像中,目标尺度小、背景杂波、旋转等相关问题。针对目标尺度小的问题,如图一所示,SCRDet算法整合多层卷积特征在捕获低层卷积特征以对目标精确定位的同时,使用高层卷积特征对目标进行更加鲁棒的检测。使用C3C4而不使用C2是在算法的精确度和计算复杂度之间进行平衡。

image.png

图一

image.png

图二

同时,遥感图像中目标与目标之间的间隔小且背景存在杂波干扰,如图二(a)(b)所示,目标之间的间隔和背景杂波都会影响遥感目标检测。因此,SCRDet算法使用如图三的结构,给整合后的卷积特征以空间attention和通道attention其中,空间attention对目标之间的间隔和背景杂波中的噪声进行抑制,而通道attention选取有效的通道特征图进行检测。在训练过程中,空间attention使用真值attention map作为监督信号进行训练。

image.png

图三

   image.png

图四

如图四所示,由于目前旋转目标的长宽及角度按照opencv的计算方式得到,其角度和长宽具有周期性,会使得预测目标框(红色)和真值目标框(绿色)即使很接近,它们的loss也非常大,这样会使得算法的准确度下降。因此,为了解决上述问题,需要对算法的位置回归loss进行修改,SCRDet算法使用IOU作为位置回归的大小,使用smooth L1 loss的单位向量作为梯度传播方向,有效的解决了上述loss不符合实际的情况。

 

Gliding vertex on the horizontal bounding box for multi-oriented object detection

Gliding Vertex算法主要为解决目标的预测坐标和目标的真值坐标因为坐标排序的差异而引入的错误loss,如假设目标的真值坐标为(x1,y1,x2,y2,x3,y3,x4,y4),目标的预测坐标为(x2,y2,x3,y3,x4,y4,x1,y1),目标的预测框和目标的真值框是完全一致的,但是因为框的表示问题会引入错误的loss(目标的坐标为(x,y,w,h)也有一样的问题)。

因此,如图五所示,Gliding Vertex算法首先预测水平检测框的坐标 (没有上述坐标排序的问题),再将水平检测框的坐标通过预测的offset位移到倾斜的检测框,从而预测得到旋转目标的坐标。

图五

同时,由于训练数据集中水平目标数量少。因此,算法可能对水平目标的坐标预测不准,Gliding Vertex算法使用一个obliquity factorr)预测目标是否可能为水平目标,以对水平目标进行较好的预测。在训练过程中,通过计算倾斜框和水平框的IOU判断目标的真值坐标是否为水平框,即。因此,算法预测的目标位置的输出为9个参数,即(x,y,w,h,α1,α2,α3,α4,r),算法的网络结构和输出如下图六所示:

图六

         Gliding Vertex算法和faster rcnn算法的的loss一致,只是多了(α2,α3,α4,r)五个参数的回归


                                                  


其中,为分类的loss9参数的回归loss分别为水平框,offset以及obliquity factor的位置回归loss

Arbitrary-Oriented Object Detection with Circular Smooth LabelCSL

image.png

图七

如图七所示,(a) (b) (c)表示了三种常用的旋转框的表示方法

(a) opencv定义法(-900度的范围):这种方法容易在0度和90度附近由于角度的周期性变化以及宽、高的转换产生不符合实际情况的大loss,降低算法的性能。

(b) 长边定义法(-9090范围):这种方法容易在-90度和90度附近由于角度的周期性变化产生不符合实际情况的大loss,降低算法的性能。

(c) 有序四边形定义法(Point-based):定义abcd四个点,回归它们和真值对应的点的距离。然而,这种方法容易产生错误的点对,即理想情况的点的对应是image.png,而实际算法的点的对应关系却是image.png,使得产生错误的loss,影响算法的性能。

上述三个问题对应图八的(a) (b) (c)图。

image.png

图八

上述的SCRDetGliding Vertex算法分别使用了图八的(a) (b)的方式回归目标的旋转框。为避免上述(a) (b)两种表示方式对应的问题,SCRDetGliding Vertex算法分别通过设计针对性的loss函数以及改变旋转框的表示方式(即(c)方式)。但这两种方法都没有从原理上解决旋转目标框的表示问题。而CSL算法通过新的范式解决角度的周期性变化以及宽、高的转换等问题,即使用分类的方式代替角度回归。

image.png

图九

如图九(a)所示,直接的想法是使用One-hot标签进行角度的预测,但是这种One-hot标签不能衡量预测的角度和真值角度的关系,即0度和1度的角度的损失(loss)和0度和-90度的角度的损失(loss)是一样的,这不符合常识。同时,在真值为0度的时候,预测的角度在0度附近(如-55度),我们也应该认为算法取得较好的性能。因此,CSL算法尝试使用脉冲函数、矩形函数、三角函数、高斯函数等函数进行真值角度的标注,试验结果证明高斯函数效果最好,标签的函数表示如图十所示。同时,为了在角度边界(即图七(b)-9089的交界处)有平滑的标签,角度的真值标签在角度边界处是平滑的,这也是算法成为CSLCircular Smooth Label)算法的原因。其中,Circular表示角度的分类标签是在角度边界处相连的,Smooth表示标签是平滑的。

图十

使用高斯函数产生平滑的标签的直观理解:为当目标为旋转目标时,预测的角度离真值越近,loss应该越小。CSL算法使用的loss函数如图十一所示,其中,为位置回归loss分别为角度分类和类别分类loss


图十一

实验结果

         如图十二所示,从中可以得到SCRDetGliding VertexCSL算法在DOTA数据集上的实验结果。

image.png

图十二

总结

为缓解遥感目标检测场景的目标尺度小、背景杂波、旋转(角度表示带来的角度周期性以及旋转目标宽高变换问题)等相关问题,SCRDet算法分别结合多层卷积特征、空间和channel attention、新的loss得到了较好的实验结果。Gliding Vertex算法为解决角度表示带来的角度周期性以及旋转目标宽高变换等问题,使用9个参数来两阶段的回归旋转目标的坐标,但是也带来了新的问题(如图八的(c)所示)。为从根本上解决角度表示带来的角度周期性以及旋转目标宽高变换等问题,CSL算法使用平滑的环形角度离散标签代替传统的旋转目标检测算法中的旋转角度回归,即将角度回归转换成角度分类。CSL算法从根本上就没有角度周期性以及旋转目标宽高变换等问题,但是可能会带来分支不平衡的问题,即角度分类分支的参数要远远大于目标位置回归和类别分类分支的参数。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。