论文详细描述了当前旋转目标检测的主要问题,提出将旋转回归目标定义为高斯分布,使用Wasserstein距离度量高斯分布间的距离用于训练。目前,常规目标检测也有很多将回归转化为概率分布函数的做法,本文有异曲同工之妙,值得阅读

来源:晓飞的算法工程笔记 公众号

论文: Rethinking Rotated Object Detection with Gaussian Wasserstein Distance Loss

  • 论文地址:https://arxiv.org/abs/2101.11952
  • 论文代码:https://github.com/yangxue0827/RotationDetection

Introduction


  任意朝向的目标在检测数据集中无处不在,相对于水平的目标检测,旋转目标检测仍处于起步阶段。目前,大多数SOTA研究都集中于回归目标的旋转角度,而解决旋转角度则带来新的问题:i) 指标与损失不一致。ii) 旋转角度回归区间不连续。 iii) 方形问题。事实上,以上的问题还没有很好的解决方案,这会极大地影响模型的性能,特别是在角度在范围边界的情况。

  为了解决上述问题,论文提出了GWD方法,首先使用二维高斯分布来对旋转目标进行建模,然后使用Gaussian Wasserstein Distance(GWD)来代替不可微的旋转IoU,根据GWD计算loss值,这样就将模型训练和度量标准对齐了。
  论文的主要贡献有以下几点:

  • 总结了旋转目标检测的三个主要问题。
  • 使用Gaussian Wasserstein Distance(GWD)描述旋转bbox间的距离,再用GWD计算代替IoU损失的loss,且是可微的。
  • GWD-based损失能够解决旋转角度范围不连续问题和方形问题,且对bbox的定义方式没有要求。
  • 在多个公开数据集上进行测试,论文的方法均有不错的表现。

Rotated Object Regression Detector Revisit


Bounding Box Definition

  图2展示了两种旋转bbox的定义方式:OpenCV形式 D o c D_{oc} Doc​和长边形式 D l e D_{le} Dle​,前者的角度为 h o c h_{oc} hoc​和横坐标的夹角 θ ∈ [ − 9 0 ∘ , 0 ∘ ) \theta\in[-90^{\circ},0^{\circ}) θ∈[−90∘,0∘),后者的角度则为长边与横坐标的夹角 θ ∈ [ − 9 0 ∘ , 9 0 ∘ ) \theta\in[-90^{\circ},90^{\circ}) θ∈[−90∘,90∘),两种定义可以进行相互的转换(不考虑中心点):

  两种表示方法的主要差异在于边顺序和角度 ( h , w , θ ) (h,w,\theta) (h,w,θ),相同的bbox用不同的表达方式,可能需要交换边的顺序或角度加减90。在现在很多的研究中,将模型的设计与bbox的定义进行耦合来避免特定的问题:如 D o c D_{oc} Doc​可避免方形问题, D l e D_{le} Dle​可避免边交换问题。

Inconsistency between Metric and Loss(指标与损失不一致问题)

  IoU是检测领域的重要评测指标,但在实际训练中使用的回归损失函数(如 l n l_n ln​-norms)与评测指标往往存在不一致的问题,即更小的损失值并不等于更高的性能。目前,不一致问题在水平目标检测领域已经有了一些应对措施,如DIoU和GIoU。而在旋转目标检测领域,由于角度回归的加入,使得不一致问题更加突出,但目前仍没有很好的解决方案,论文也列举了一些例子来对比IoU损失和smooth L1损失:

  • Case 1: 角度差值与损失值之间的关系,曲线几何都是单调的,但只有smooth L1曲线是凸曲线,能优化到全局最优解。

  • Case 2:长宽比差异与损失值之间的关系,smooth-l1损失值是固定的(主要来自于角度差异),而IoU损失则随着横轴剧烈变化。

  • Case 3:中心点偏移对损失值的影响,曲线都是单调的,但smooth L1曲线与差值大小没有高度一致。

  从上面的分析可以看出,在旋转目标检测领域,IoU损失更能填补评判准则与回归损失间的差异。但很遗憾,在旋转目标检测领域,两个旋转bbox间的IoU计算是不可微的,不能用于训练。为此,论文基于Wasserstein distance提出可微的损失来替代IoU损失,顺便也可以解决旋转角度回归区间不连续问题和方形问题。

Boundary Discontinuity and Square-Like Problem(旋转角度回归区间不连续以及方形问题)

  上图的Case1-2总结了旋转角度回归区间不连续问题,以以OpenCV形式的Case 2为例,对于anchor ( 0 , 0 , 70 , 10 , − 9 0 ∘ ) (0,0,70,10,-90^{\circ}) (0,0,70,10,−90∘)以及GT ( 0 , 0 , 10 , 70 , − 2 5 ∘ ) (0,0,10,70,-25^{\circ}) (0,0,10,70,−25∘),存在两种回归的方法:

  • way1逆时针旋转一个小角度即可,预测结果为 ( 0 , 0 , 70 , 10 , − 11 5 ∘ ) (0,0,70,10,-115^{\circ}) (0,0,70,10,−115∘),但由于角度的周期性(PoA)和边顺序交换(EoE),若使用smooth L1损失函数,这个结果与GT间会产生巨大的损失值。另外,这个角度也超出了预定的角度范围。
  • 选择way2则需要在缩放宽高的同时,顺时针旋转一个大的角度。

  上述的问题通常出现在anchor和GT的角度在角度范围的边界位置时,当anchor和GT的角度不在边界位置时,way1则不会产生巨大的损失值。因此,对于smooth-L1,边界角度和非边界角度的最优处理会太一致,这也会阻碍模型的训练。

  方形问题主要出现在使用长边形式的检测方法中,由于方形目标没有绝对的长边,长边形式对方形目标的表达本身就不唯一。以Case3为例,存在anchor ( 0 , 0 , 45 , 44 , 0 ∘ ) (0,0,45,44,0^{\circ}) (0,0,45,44,0∘)以及GT ( 0 , 0 , 45 , 43 , − 6 0 ∘ ) (0,0,45,43,-60^{\circ}) (0,0,45,43,−60∘),way1可以顺时针旋转一个小角度变成位置与GT一致的 ( 0 , 0 , 45 , 43 , 3 0 ∘ ) (0,0,45,43,30^{\circ}) (0,0,45,43,30∘)。但由于角度差距较大,way1会产生较高的回归损失。因此,需要像way2那样逆时针旋转较大的角度。造成方形问题的主要原因并不是前面提到的PoA和EoE,而是度量标准和损失计算的不一致导致的。

The Proposed Method


  经过上述的分析,论文希望新的旋转目标检测方法的回归损失函数满足以下几点:

  • Requirement1: 与IoU度量标准高度一致。
  • Requirement2: 可微,允许直接学习。
  • Requirement3: 对角度回归范围的边界场景更为平滑。

Wasserstein Distance for Rotating Box

  目前大多数IoU损失都可认为是距离函数,基于此,论文基于Wasserstein distance提出新的回归损失函数。首先,将旋转bbox B ( x , y , h , w , θ ) \mathcal{B}(x,y,h,w,\theta) B(x,y,h,w,θ)转化为2-D高斯分布 N ( m , ∑ ) \mathcal{N}(m,\sum) N(m,∑):

  R R R为旋转矩阵, S S S为特征值的对角向量。对于 R n \mathbb{R}^n Rn上的任意两个概率测度 μ \mu μ和 υ \upsilon υ,其Wasserstein距离 W W W可表达为:

  公式2对所有的随机向量组合 ( X , Y ) ∈ R n × R n , X ∼ μ , Y ∼ υ (X,Y)\in\mathbb{R}^n\times\mathbb{R}^n,X\sim\mu,Y\sim\upsilon (X,Y)∈Rn×Rn,X∼μ,Y∼υ进行计算,代入高斯分布 d : = W ( N ( m 1 , ∑ 1 ) ; N ( m 2 , ∑ 2 ) ) d:=W(\mathcal{N}(m_1,\sum_1);\mathcal{N}(m_2,\sum_2)) d:=W(N(m1​,∑1​);N(m2​,∑2​)),转换得到:

  特别要注意:

  考虑在可交换的情况(水平目标检测) ∑ 1 ∑ 2 = ∑ 2 ∑ 1 \sum_1\sum_2=\sum_2\sum_1 ∑1​∑2​=∑2​∑1​下,公式3可转换为:

  ∥ ∥ F \parallel\parallel_F ∥∥F​为Frobenius范数,这里的bbox均是水平的,公式5近似于 l 2 l_2 l2​-norm损失,表明Wasserstein距离与水平检测任务中常用的损失一致,能够用于回归损失。这里的公式推算比较复杂,有兴趣的可以看看参考文献。

Gaussian Wasserstein Distance Regression Loss

  论文采用非线性转化函数 f f f将GWD映射为 1 τ + f ( d 2 ) \frac{1}{\tau+f(d^2)} τ+f(d2)1​,得到类似于IoU损失的函数:

  前面的曲线图也描述了使用不同非线性函数 f f f下的损失函数曲线,可以看到公式6十分贴近IoU损失曲线,也能度量无相交的bbox。因此,公式6显然可以满足Requirement1和Requirement2,下面开始分析Requirement3,先给出公式1的特性:

  根据特性1可知,GWD损失函数对于OpenCV形式和长边形式是相等的,即模型不需要固定特定bbox表达形式进行训练。以Case2的Way1为例,GT ( 0 , 0 , 70 , 10 , 6 5 ∘ ) (0,0,70,10,65^{\circ}) (0,0,70,10,65∘)和预测 ( 0 , 0 , 70 , 10 , − 11 5 ∘ ) (0,0,70,10,-115^{\circ}) (0,0,70,10,−115∘)拥有相同的均值 m m m和方差 ∑ \sum ∑,GWD损失函数不会输出较大的损失值。而根据特性2和特性3,Case2和Case3的way1同样不会产生较大的损失值,所以GWD损失函数也满足Requirement3。
  整体而言,GWD在旋转目标检测的优势有以下几点:

  • GWD使得bbox的不同定义形式相等,保证模型能够专注于准确率提升,不需要顾忌bbox的定义形式。
  • GWD是可微的IoU损失替代方案,与检测指标高度一致。而且,GWD可以度量无相交bbox间的距离,类似于GIoU和DIoU的特性。
  • GWD避免了旋转角度回归区间不连续问题和方形问题,降低了模型的学习难度。

Overall Loss Function Design

  论文将RetinaNet作为基础检测器,bbox表示为 ( x , y , w , h , θ ) (x,y,w,h,\theta) (x,y,w,h,θ),实验主要采用OpenCV形式,回归目标定义为:

  变量 x x x, x a x_a xa​, x ∗ x^{*} x∗分布代表GT,anchor和预测结果,最终的多任务损失函数为:

  N N N为anchor数, o b j n obj_n objn​为前景或背景的指示器, b n b_n bn​为预测bbox, g t n gt_n gtn​为GT, t n t_n tn​为GT的标签, p n p_n pn​为预测标签, λ 1 = 1 \lambda_1=1 λ1​=1和 λ 2 = 2 \lambda_2=2 λ2​=2为超参数, L c l s L_{cls} Lcls​为focal loss。

Experiments


  对比其他针对特定问题的解决方案。

  在DOTA数据集上对比多个模型,论文还有很多其他实验,有兴趣的可以去看看。

Conclusion


  论文详细描述了当前旋转目标检测的主要问题,提出将旋转回归目标定义为高斯分布,使用Wasserstein距离度量高斯分布间的距离用于训练。目前,常规目标检测也有很多将回归转化为概率分布函数的做法,本文有异曲同工之妙,值得阅读。

参考内容

  • Wasserstein distance between two Gaussians - https://djalil.chafai.net/blog/2010/04/30/wasserstein-distance-between-two-gaussians/


如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】

GWD:基于高斯Wasserstein距离的旋转目标检测 | ICML 2021相关推荐

  1. 旋转目标检测 | 基于高斯Wasserstein距离损失的目标检测(附源代码)

    计算机视觉研究院专栏 作者:Edison_G 公众号ID|ComputerVisionGzq 学习群|扫码在主页获取加入方式 源码获取|扫码回复"GWD"获取源码 边界不连续及其与 ...

  2. 基于深度学习的目标检测综述(单阶段、多阶段、FPN变体、旋转目标检测等)

    随着深度学习的发展,基于深度学习的目标检测方法因其优异的性能已经得到广泛的使用.目前经典的目标检测方法主要包括单阶段(YOLO.SSD.RetinaNet,还有基于关键点的检测方法等)和多阶段方法(F ...

  3. ICML 2021 | 上交华为提出GWD:旋转目标检测新方法

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 作者:yangxue |  已授权转载(源:知乎) https://zhuanlan.zhihu.com/p ...

  4. 基于mmdetection 旋转目标检测(OBB detection)+DOTA数据集自定义数据集+配docker

    这两周得益于组里的任务需求,肝了一个遥感类的飞机旋转框目标检测,在给定的4096*4096的大尺度分辨率图片上去识别检测飞机. 经过模型检测后输出结果图如下图所示: 可以看到最终的结果还是不错的,通过 ...

  5. 基于mmrotate的旋转目标检测入门详解

    一.旋转目标检测方法对比 1 当前前沿方法的对比 首先我们打开papers with code 网站 https://paperswithcode.com/ 我们在搜索栏输入 oriented obj ...

  6. 旋转目标检测:The KFIoU Loss for Rotated Object Detection(Under review in ICLR 2022)

    关键词:KFIoU, 倾斜IoU(SkewIoU) 参考博客: https://zhuanlan.zhihu.com/p/447286823 论文原文下载: https://openreview.ne ...

  7. 干货 | 一文总结旋转目标检测全面综述:论文方法与代码

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|计算机视觉联盟 1.RRPN(两阶段文字检测 华科白翔组 ...

  8. CVPR 2022 | 浙大提出Oriented RepPoints:旋转目标检测网络

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 点击进入-> CV 微信技术交流群 作者:小海马 |  已授权转载(源:知乎)编辑:CVer http ...

  9. 一文总结旋转目标检测全面综述:论文方法与代码

    参考一文总结旋转目标检测全面综述:论文方法与代码 - 云+社区 - 腾讯云 首先放上DOTA数据集官网(http://captain.whu.edu.cn/DOTAweb/index.html),官网 ...

最新文章

  1. 微信小程序开发之选项卡
  2. 堆溢出攻击(XP SP2 - 2003)
  3. Android(java)学习笔记158:多线程断点下载的原理(JavaSE实现)
  4. [ACM_几何] Wall
  5. 换脸效果媲美GAN!一文解析OpenAI最新流生成模型「Glow」
  6. date类before()方法的主要作用是_黄精的主要作用及中医食疗方法
  7. C# Winform 带优美外观的UserControl控件GroupBox
  8. 网信金融 与 金银猫合作
  9. Facebook隐私泄露事件继续发酵,黑客明码标价出售聊天信息
  10. java xms xmx 默认值_JVM启动参数-Xmx的默认值是多少?
  11. [dhtmlxGantt]Milestone Mark-里程碑标识的交错显示
  12. 阅读之大量数据访问机器的架构优化
  13. java 接受gsm信息_android 获取手机GSM/CDMA信号信息,并获得基站信息
  14. .chm电子书转换为.pdf的方法
  15. 查岗神器!如何查看连接过的WiFi记录+详细信息+密码找回
  16. RxJS + Redux + React = Amazing!(译二)
  17. c语言around用法,around的用法知识点梳理
  18. 食品专业本科生曝料中国食品行业黑幕
  19. ios客户端请求数据加密方式
  20. 2.2 STM32 RAM溢出分析(KEIL在Build的时候提示Error:L6406E:No space in execution)

热门文章

  1. 最新毕设 基于STM32的智能宠物投喂系统(全套资料)
  2. centos8 stream 百度网盘
  3. MySQL - Any、All 用法
  4. 七夜java_七夜 - BlogJava
  5. VCS视频学习中的一个例子代码:dff.v和dff_tb.v
  6. 软件设计模式-曾梦想仗剑走天涯
  7. 网站数据采集-网站采集工具-SEO文章聚合采集(免费采集教程)
  8. 路由导航守卫和路由拦截
  9. 关于运行VMware等虚拟机导致win10蓝屏死机(终止代码:SYSTEM_SERVICE_EXCEPTION)
  10. vue 项目中使用mobiscroll calendar