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

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

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

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_{oc}\)和长边形式\(D_{le}\),前者的角度为\(h_{oc}\)和横坐标的夹角\(\theta\in[-90^{\circ},0^{\circ})\),后者的角度则为长边与横坐标的夹角\(\theta\in[-90^{\circ},90^{\circ})\),两种定义可以进行相互的转换(不考虑中心点):

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

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

  IoU是检测领域的重要评测指标,但在实际训练中使用的回归损失函数(如\(l_n\)-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,-90^{\circ})\)以及GT\((0,0,10,70,-25^{\circ})\),存在两种回归的方法:

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

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

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

The Proposed Method


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

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

Wasserstein Distance for Rotating Box

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

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

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

  特别要注意:

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

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

Gaussian Wasserstein Distance Regression Loss

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

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

  根据特性1可知,GWD损失函数对于OpenCV形式和长边形式是相等的,即模型不需要固定特定bbox表达形式进行训练。以Case2的Way1为例,GT\((0,0,70,10,65^{\circ})\)和预测\((0,0,70,10,-115^{\circ})\)拥有相同的均值\(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,\theta)\),实验主要采用OpenCV形式,回归目标定义为:

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

  \(N\)为anchor数,\(obj_n\)为前景或背景的指示器,\(b_n\)为预测bbox,\(gt_n\)为GT,\(t_n\)为GT的标签,\(p_n\)为预测标签,\(\lambda_1=1\)和\(\lambda_2=2\)为超参数,\(L_{cls}\)为focal loss。

Experiments


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

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

Conclusion


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

参考内容

如果本文对你有帮助,麻烦点个赞或在看呗~

更多内容请关注 微信公众号【晓飞的算法工程笔记】

GWD:基于高斯Wasserstein距离的旋转目标检测 | ICML 2021的更多相关文章

  1. Arbitrary-Oriented Object Detection with Circular Smooth Label(ECCV2020,旋转目标检测)

    论文链接:https://arxiv.org/abs/2003.05597 code:https://github.com/Thinklab-SJTU/CSL_RetinaNet_Tensorflow ...

  2. CVPR2020|3D-VID:基于LiDar Video信息的3D目标检测框架

    作者:蒋天园 Date:2020-04-18 来源:3D-VID:基于LiDar Video信息的3D目标检测框架|CVPR2020 Brief paper地址:https://arxiv.org/p ...

  3. [OpenCV]基于特征匹配的实时平面目标检测算法

    一直想基于传统图像匹配方式做一个融合Demo,也算是对上个阶段学习的一个总结. 由此,便采购了一个摄像头,在此基础上做了实时检测平面目标的特征匹配算法. 代码如下: # coding: utf-8 ' ...

  4. 基于候选区域的深度学习目标检测算法R-CNN,Fast R-CNN,Faster R-CNN

    参考文献 [1]Rich feature hierarchies for accurate object detection and semantic segmentation [2]Fast R-C ...

  5. 基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN

    object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.object detection要解决的问题就是物体在哪里,是什么这整个流程的问题.然而,这个问题 ...

  6. 目标检测-基于Pytorch实现Yolov3(1)- 搭建模型

    原文地址:https://www.cnblogs.com/jacklu/p/9853599.html 本人前段时间在T厂做了目标检测的项目,对一些目标检测框架也有了一定理解.其中Yolov3速度非常快 ...

  7. (转)基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN

    object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.object detection要解决的问题就是物体在哪里,是什么这整个流程的问题.然而,这个问题 ...

  8. 基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN,Faster R-CNN

    基于深度学习的目标检测技术演进:R-CNN.Fast R-CNN,Faster R-CNN object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.obj ...

  9. 转载:点云上实时三维目标检测的欧拉区域方案 ----Complex-YOLO

    感觉是机器翻译,好多地方不通顺,凑合看看 原文名称:Complex-YOLO: An Euler-Region-Proposal for  Real-time 3D Object Detection ...

  10. CVPR2020论文解读:3D Object Detection三维目标检测

    CVPR2020论文解读:3D Object Detection三维目标检测 PV-RCNN:Point-Voxel Feature Se tAbstraction for 3D Object Det ...

随机推荐

  1. STM32F407VET6烧录出现flash download failed target dll has been cancelled

    今天在通过stlink烧录一个长时间未用的STM32F407VET6 Black Board的时候, 出现错误 Internal command error Flash download failed ...

  2. letcode-Z字抖动

    题目 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下 ...

  3. Windows 进程的一些学习笔记

    进程的内存映像是指内核在内存中如何存放可执行程序文件. 在将程序转化为进程的过程中,操作系统将可执行程序由硬盘复制到内存. 可执行程序和内存映像的区别 可执行程序位于磁盘中而内存映像位于内存中: 可执 ...

  4. 信捷电气 - C++工程师面试题(社招:3-5年工作经验)

    1. char i = 1; printf("%d",i);    // char字节用printf以整数型打印出来 2. int (*a[10])int a[10]是函数指针数组 ...

  5. django学习第十天---ajax请求和JsonResponse

    AJAX 它是js的功能,特点:异步请求,局部刷新 简单请求示例 基于jquery的ajax请求 异步请求,不会刷新页面,页面上用户之前输入的数据都不会丢失 <p>下面是ajax请求< ...

  6. Kotlin return@xxx 的坑

    Kotlin Return 到标签 先看例子: (1..5).forEach { if (it == 3) { return@forEach } println(it) } println(" ...

  7. 【Azure 应用服务】在安全漏洞扫描中发现有泄露服务器IIS版本的情况,如何实现屏蔽服务版本号信息呢?

    问题描述 当对Azure App Service应用进行安全扫描时,发现了HTTP/S请求的响应头中会包含服务端IIS的版本信息,这是一个低风险因素. 如: Server: Microsoft-IIS ...

  8. Taurus.MVC WebMVC 入门开发教程6:路由配置与路由映射

    前言: 在本篇 Taurus.MVC WebMVC 入门开发教程的第六篇文章中, 我们将讨论如何配置路由并映射到控制器和操作方法. 路由是决定应用程序如何响应客户端请求的重要组成部分,因此在 Web ...

  9. 当云原生网关遇上图数据库,NebulaGraph 的 APISIX 最佳实践

    本文介绍了利用开源 API 网关 APISIX 加速 NebulaGraph 多个场景的落地最佳实践:负载均衡.暴露接口结构与 TLS Termination. API 网关介绍 什么是 API 网关 ...

  10. C++基本知识梳理

    一.命名空间 概念:命名空间是新定义的一个作用域,里面可以放函数,变量,定义类等,主要用来防止命名冲突. 实现:namespace关键字 命名空间名字{ 命名空间成员 } 注意点: 1.命名空间可以嵌 ...