广义交并比-GIOU(回归检测的一种指标和Loss)

注释

  • 本系列《论文翻译》仅代表个人观点
  • 目的提高英文阅读能力
  • 错误之处较多,欢迎读者修正,在此感谢

1. 摘要

  目标检测的评价指标最常使用的是交并比进行度量。然而在优化(经常使用距离参数对边界框进行回归)和最大化(最大化这个度量参数)之间存在一些缺陷(这里指代价函数和优化目标之间存在不对等情况,具体看后文就会明白)。度量的最优目标就是其本身。在轴对称的情况下,IOU可以直接当做回归损失。然而,在不想交的情况下,IOU是不能当做度量值的。在本文中,我将通过介绍一种新的度量(GIOU)和LOSS计算方法来解决IOU的缺点。通过把GIOU融合进当前最先进的网络之中(数据集使用当前最流行的基准PASCAL VOC、COCO等),对比GIU和IOU,展示出GIOU一致的优于IOU的表现。

2. 介绍

  框回归是2D、3D计算机视觉任务中最重要的组成部分之一。任务包括:目标定位、多目标检测、目标跟踪、依靠高精度的框回归实例级分割。 使用深度神经网络去提高应用的性能,占主导地位的方法是提出一个更好的基础架构或者更好的策略来提取更精确的特征。然而一个很好的提高方法被忽视,使用损失的度量方法IOU去代替回归损失(L1--LOSS、L2--LOSS)。

  IOU又被称为Jaccard索引,常用来作为两个任意形状目标相似性对比。IOU对目标的形状属性进行编码,长宽高位置等,然后对他们的区域计算一个标准的度量。由IOU的计算属性,具有尺度不变性。由于这个良好的属性,所以被广泛的应用在分割和目标检测中进行性能评价。

  然而,IOU没有表现出很好的相关性,对于 \(l_n-norms\) 等损失最小化(2D、3D中两个框参数化)和提高他们IOU值。例如:在图1(a)中,假设LOSS采用\(l_2-norm\)进行表示,则每个LOSS的大小相同。相同的论述可以推广到其他的loss(图b和图c)。直观上,一个好的目标局部最优不一定是IOU局部最优。和IOU相反,\(l_n-norm\) 是不具有尺度不变性的。为了这个目的,一些具有透视变换的区域(同一水平),那么他们计算出的LOSS就不相同。此外,一些不同的参数化类型表述之间可能缺少标准化。比如使用中心点和大小表示的\((x,y,w,h)\),随着更多参数(旋转、或者增加一个维度表示)的合并,复杂度也会增加。为了解决上述的问题,一些优秀的检测器提出了的概念,来做一个初始化的假设。又定义一个非线性的参数来对尺度进行补偿。即使做了这些手动改变,也不无弥补优化器和IOU之间的差别。注释:这是表达的意思是我们进行训练最小化的东西A,评价的指标B,A和B之间没有统一(标准化)。例如,最小二乘法,我们最小化和评价的指标都是一个(平均垂直到线的距离最小)。而在目标检测的时候我们使用的是L1-LOSS,而评价的时候使用IOU。作者给出的图一发现这两个不统一。Anchor的出现是为了简化目标得表示方式,尺度参数的出现(SSD里面是编解码)是为了解决多尺度问题

  在这篇文章中,我们发现一种与流行方法不同的可计算IOU,在两个轴对齐的情况下,可以直接得到解,并且此方式可以反向传播。也可以使用优化器进行优化得到最优值。在2D、3D的目标检测中可以非常好的使用IOU进行计算。这样IOU既可以当做优化函数,也可以作为度量函数。然而,IOU同时作为度量和LOSS存在一个重要问题:如果两个框不想交,那么就无法衡量两个框的距离,同时值为0,当计算梯度的时候就无法使用优化器进行传播。

  在这篇文章中,我们通过扩充IOU的概念(范围)去解决不想交的情况。我们确保具有以下性质:(a)和IOU的定义一样,对边界进行编码。(b)保持尺度不变性。(c)在相交的情况和LOSS有很强的相关性。我们介绍的方法称为GIOU,作为解决两个任意形状的几何相关性。我们也提供了一种计算GIOU的分析方案,在两个轴对齐的情况下,让它称为计算LOSS的一种途径。在当前最先进的检测网络合并入GIOU,可以达到比之前都有提升的结果。。。(后面都是和摘要相同)。

  这篇文章最主要的贡献总结如下(都是废话):

  • GIOU用于对比两个任意形状的框
  • 提供计算方案
  • 在网络进行了实验

3. 相关工作

  目标检测精度测量:IOU作为基础,当IOU大于0.5时候作为计算输入,使用mAP作为衡量基准。

  边界框的表现和LOSS计算:说了一些传统论文的计算方法。。。。

  使用近似IOU或一个替代函数:在语义分割任务中,他们做了一些努力,使用近似或另外的函数替代LOSS的计算。在当前的目标检测中,部分论文已经开始使用IOU作为LOSS的计算,但是在不想交的情况下如何应用还是个未解决的问题。

4. 广义交并比

  IOU用来衡量两个任意形状的相关性:
\[
IOU=\frac{|A\bigcap B|}{A\bigcup B}
\]
  IOU作为2D、3D目标检测评价函数最广泛的使用,主要包括两个优点:

  • IOU表示一个距离,假设\(L_{IOU}=1-IOU\)为一个指标,也就意味着\(L_{IOU}\)满足所有的属性,包括难以辨认的、对称的、不等三角等。
  • IOU具有尺度不变性,这也就意味着,在\(S\)空间中,A和B的关系对于尺度具有不变性。

然而,IOU存在一个主要的缺点:

  • 当\(|A\bigcap B|=0\),\(IOU(A,B)=0\)。在这种情况下,IOU无法反应出两个形状在附近还是非常远。

为了解决这个问题,我们提出一个扩充的IOU来解决这个问题,命名为GIOU。

。。。说了一段计算GLOU的话,就是如下公式:

GIOU具有如下的优点:

  • 和IOU类似
  • 尺度不变
  • GIOU <= IOU
  • 0 =< IOU <= 1

5. GIOU作为目标检测的LOSS

这部分很简单,IOU怎么计算的,GIOU同样计算

  下面放一张原论文的计算图即可:

  LOSS的稳定性分析:当出现一些极端情况的时候,哪个度量方式会使LOSS更稳定?

6. 实验结果

不进行分析,直接看结果即可

7. 个人理解

  本文的思想非常简单,就是说LOSS和评估函数得相等,不然LOSS学到的东西不等于评价结果。主语如果做得论文说的很清楚,这里不再赘述。

关于网上说的几个问题,这里个人回答一波

  1. 为什么 \(、L_1、L_2\) 作为LOSS可以得出不错的结果?

其实回答这个问题很简单,因为\(、L_1、L_2\)的计算在一定情况下是符合优化目标的

试想一下,SSD的框定义那么多,总有一个符合计算模式的(而且是精心设计的框)

如果按照作者说的,把anchor和GroundTrue全部不想交试试?gradient=0怎么计算?

  1. 为什么GIOU的效果不明显,有的反而不好?

不明显?

效果不明显是因为SSD这种框太多了,很多都符合\(、L_1、L_2\)的计算模式了。

可以试试把SSD框降低,同时一张图像中的目标增加

反而不好?

按照理论分析基本不可能

单词汇总

  • metric:度量
  • optimal: 最优
  • plateau: 平面
  • infeasible: 不可行
  • adress: 解决
  • incorporating:合并
  • consistent:一致的
  • instance level segmentation:实例级分割
  • dominate:占统治地位
  • utilizing:利用
  • surrogate:取代、代替
  • arbitrary:任意的
  • appealing:吸引人的(appeal呼吁、吸引)
  • significant:明显的
  • intuitive:直观上
  • to this end:为了这个目的
  • alleviate:减轻
  • compensate:补偿
  • prevailing:流行的
  • maintains:保持
  • remedy:修正
  • crucial:重要的
  • volumes:容器
  • fulfill:满足
  • discern:辨认、识别
  • symmetry:对称
  • vicinity:附近
  • ellipse:椭圆
  • tighter:紧
  • protocol:协议

《论文翻译》 GIOU的更多相关文章

  1. [原创]Faster R-CNN论文翻译

    Faster R-CNN论文翻译   Faster R-CNN是互怼完了的好基友一起合作出来的巅峰之作,本文翻译的比例比较小,主要因为本paper是前述paper的一个简单改进,方法清晰,想法自然.什 ...

  2. R-CNN论文翻译

    R-CNN论文翻译 Rich feature hierarchies for accurate object detection and semantic segmentation 用于精确物体定位和 ...

  3. SSD: Single Shot MultiBoxDetector英文论文翻译

    SSD英文论文翻译 SSD: Single Shot MultiBoxDetector 2017.12.08    摘要:我们提出了一种使用单个深层神经网络检测图像中对象的方法.我们的方法,名为SSD ...

  4. R-FCN论文翻译

    R-FCN论文翻译 R-FCN: Object Detection viaRegion-based Fully Convolutional Networks 2018.2.6   论文地址:R-FCN ...

  5. 深度学习论文翻译解析(四):Faster R-CNN: Down the rabbit hole of modern object detection

    论文标题:Faster R-CNN: Down the rabbit hole of modern object detection 论文作者:Zhi Tian , Weilin Huang, Ton ...

  6. 深度学习论文翻译解析(三):Detecting Text in Natural Image with Connectionist Text Proposal Network

    论文标题:Detecting Text in Natural Image with Connectionist Text Proposal Network 论文作者:Zhi Tian , Weilin ...

  7. 深度学习论文翻译解析(二):An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application to Scene Text Recognition

    论文标题:An End-to-End Trainable Neural Network for Image-based Sequence Recognition and Its Application ...

  8. 深度学习论文翻译解析(一):YOLOv3: An Incremental Improvement

    论文标题: YOLOv3: An Incremental Improvement 论文作者: Joseph Redmon Ali Farhadi YOLO官网:YOLO: Real-Time Obje ...

  9. 【转】分布式一致性算法:Raft 算法(Raft 论文翻译)

    编者按:这篇文章来自简书的一个位博主Jeffbond,读了好几遍,翻译的质量比较高,原文链接:分布式一致性算法:Raft 算法(Raft 论文翻译),版权一切归原译者. 同时,第6部分的集群成员变更读 ...

随机推荐

  1. C#进阶系列——WebApi接口返回值类型详解

    阅读目录 一.void无返回值 二.IHttpActionResult 1.Json(T content) 2.Ok(). Ok(T content) 3.NotFound() 4.其他 5.自定义I ...

  2. lock的等效代码

    1.lock的等效代码 在.NET的多线程程序中,经常会遇到lock关键字来控制同步,比如下列代码: private object o = new object(); public void Work ...

  3. windows + Eclipse 汉化

    https://www.eclipse.org/babel/downloads.php 下载Eclipse 对应版本 汉化包解压 复制文件夹里的内容到eclipse 文件夹下对应的文件里 重启ecli ...

  4. SQL链接服务器查询-OPENQUERY的使用

    OpenQuery: 用途:与其他Server交互的技术,通过它能够直接访问其他数据库资源.可以跨平台连接,包括Oracle   --创建链接服务器 exec sp_addlinkedserver ' ...

  5. js入门之内置对象Math

    一. 复习数据类型 简单数据类型, 基本数据类型/值类型 Number String Boolean Null Undefined 复杂数据类型 引用类型 Object 数组 数据在内存中是如何存储的 ...

  6. js几种数组排序及sort的实现

    给出以下数组,并进行排序处理 var arr = new Array('1','3','8','2','3','5'); 1. 插入法排序 Array.prototype.csSort = funct ...

  7. django内置缓存

    由于Django是动态网站,所有每次请求均会去数据进行相应的操作,当程序访问量大时,耗时必然会更加明显,最简单解决方式是使用:缓存,缓存将一个某个views的返回值保存至内存或者memcache中,5 ...

  8. JS函数篇【2】

    什么是函数 函数的作用,可以写一次代码,然后反复地重用这个代码. <h3 onload="add2(1,2,3);add3(4,5,6)"></h3> &l ...

  9. 基于Java+Selenium的WebUI自动化测试框架(六)---浏览器初始化

    本篇我们来讨论,如何写一个浏览器初始化的类.在写之前,先思考一下,我们需要一个什么样的初始化? 先来看看使用原生的Java + selenium是怎么做的.(以firefox为例) System.se ...

  10. 使用springboot和easypoi进行的数据导出的小案例

    在这个案例中使用的有springboot和easypoi进行数据导出到excel中 yml文件是这样的: server: port: 8080 spring: datasource: url: jdb ...