GWD:基于高斯Wasserstein距离的旋转目标检测 | ICML 2021
论文详细描述了当前旋转目标检测的主要问题,提出将旋转回归目标定义为高斯分布,使用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距离度量高斯分布间的距离用于训练。目前,常规目标检测也有很多将回归转化为概率分布函数的做法,本文有异曲同工之妙,值得阅读。
参考内容
- Wasserstein distance between two Gaussians - https://djalil.chafai.net/blog/2010/04/30/wasserstein-distance-between-two-gaussians/
如果本文对你有帮助,麻烦点个赞或在看呗~
更多内容请关注 微信公众号【晓飞的算法工程笔记】
GWD:基于高斯Wasserstein距离的旋转目标检测 | ICML 2021的更多相关文章
- Arbitrary-Oriented Object Detection with Circular Smooth Label(ECCV2020,旋转目标检测)
论文链接:https://arxiv.org/abs/2003.05597 code:https://github.com/Thinklab-SJTU/CSL_RetinaNet_Tensorflow ...
- CVPR2020|3D-VID:基于LiDar Video信息的3D目标检测框架
作者:蒋天园 Date:2020-04-18 来源:3D-VID:基于LiDar Video信息的3D目标检测框架|CVPR2020 Brief paper地址:https://arxiv.org/p ...
- [OpenCV]基于特征匹配的实时平面目标检测算法
一直想基于传统图像匹配方式做一个融合Demo,也算是对上个阶段学习的一个总结. 由此,便采购了一个摄像头,在此基础上做了实时检测平面目标的特征匹配算法. 代码如下: # coding: utf-8 ' ...
- 基于候选区域的深度学习目标检测算法R-CNN,Fast R-CNN,Faster R-CNN
参考文献 [1]Rich feature hierarchies for accurate object detection and semantic segmentation [2]Fast R-C ...
- 基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN
object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.object detection要解决的问题就是物体在哪里,是什么这整个流程的问题.然而,这个问题 ...
- 目标检测-基于Pytorch实现Yolov3(1)- 搭建模型
原文地址:https://www.cnblogs.com/jacklu/p/9853599.html 本人前段时间在T厂做了目标检测的项目,对一些目标检测框架也有了一定理解.其中Yolov3速度非常快 ...
- (转)基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN、Faster R-CNN
object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.object detection要解决的问题就是物体在哪里,是什么这整个流程的问题.然而,这个问题 ...
- 基于深度学习的目标检测技术演进:R-CNN、Fast R-CNN,Faster R-CNN
基于深度学习的目标检测技术演进:R-CNN.Fast R-CNN,Faster R-CNN object detection我的理解,就是在给定的图片中精确找到物体所在位置,并标注出物体的类别.obj ...
- 转载:点云上实时三维目标检测的欧拉区域方案 ----Complex-YOLO
感觉是机器翻译,好多地方不通顺,凑合看看 原文名称:Complex-YOLO: An Euler-Region-Proposal for Real-time 3D Object Detection ...
- CVPR2020论文解读:3D Object Detection三维目标检测
CVPR2020论文解读:3D Object Detection三维目标检测 PV-RCNN:Point-Voxel Feature Se tAbstraction for 3D Object Det ...
随机推荐
- STM32F407VET6烧录出现flash download failed target dll has been cancelled
今天在通过stlink烧录一个长时间未用的STM32F407VET6 Black Board的时候, 出现错误 Internal command error Flash download failed ...
- letcode-Z字抖动
题目 将一个给定字符串 s 根据给定的行数 numRows ,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "PAYPALISHIRING" 行数为 3 时,排列如下 ...
- Windows 进程的一些学习笔记
进程的内存映像是指内核在内存中如何存放可执行程序文件. 在将程序转化为进程的过程中,操作系统将可执行程序由硬盘复制到内存. 可执行程序和内存映像的区别 可执行程序位于磁盘中而内存映像位于内存中: 可执 ...
- 信捷电气 - C++工程师面试题(社招:3-5年工作经验)
1. char i = 1; printf("%d",i); // char字节用printf以整数型打印出来 2. int (*a[10])int a[10]是函数指针数组 ...
- django学习第十天---ajax请求和JsonResponse
AJAX 它是js的功能,特点:异步请求,局部刷新 简单请求示例 基于jquery的ajax请求 异步请求,不会刷新页面,页面上用户之前输入的数据都不会丢失 <p>下面是ajax请求< ...
- Kotlin return@xxx 的坑
Kotlin Return 到标签 先看例子: (1..5).forEach { if (it == 3) { return@forEach } println(it) } println(" ...
- 【Azure 应用服务】在安全漏洞扫描中发现有泄露服务器IIS版本的情况,如何实现屏蔽服务版本号信息呢?
问题描述 当对Azure App Service应用进行安全扫描时,发现了HTTP/S请求的响应头中会包含服务端IIS的版本信息,这是一个低风险因素. 如: Server: Microsoft-IIS ...
- Taurus.MVC WebMVC 入门开发教程6:路由配置与路由映射
前言: 在本篇 Taurus.MVC WebMVC 入门开发教程的第六篇文章中, 我们将讨论如何配置路由并映射到控制器和操作方法. 路由是决定应用程序如何响应客户端请求的重要组成部分,因此在 Web ...
- 当云原生网关遇上图数据库,NebulaGraph 的 APISIX 最佳实践
本文介绍了利用开源 API 网关 APISIX 加速 NebulaGraph 多个场景的落地最佳实践:负载均衡.暴露接口结构与 TLS Termination. API 网关介绍 什么是 API 网关 ...
- C++基本知识梳理
一.命名空间 概念:命名空间是新定义的一个作用域,里面可以放函数,变量,定义类等,主要用来防止命名冲突. 实现:namespace关键字 命名空间名字{ 命名空间成员 } 注意点: 1.命名空间可以嵌 ...