『计算机视觉』Generalized Intersection over Union: A Metric and A Loss for Bounding BoxRegression
论文地址:Generalized Intersection over Union
一、相关工作
目标检测精度标准
度量检测优劣基本基于 IOU,mAP 是典型的基于 IOU 的标准,但是 mAP 仅有一个 threshold,对于过了线的预测框一视同仁,不能进一步衡量其优劣,所以 MS COCO 挑战赛提出了多 IOU 阈值的综合 mAP 评价标准(就是同时采用几个阈值,计算出多个 mAP 综合打分)。
Bounding box 表示方法和损失函数
YOLO v1 直接回归 bbox 的位置参数(x,y,h,w),并在(h,w)采用预测平方根的方式回避尺度敏感
RCNN 预测的是相对预先检测出的候选区的位置偏移,采用 log 空间回避尺度敏感
此时的损失函数以 l2 为主
Faster RCNN 提出 l1 smooth 损失函数,使得学习鲁棒性更好
Faster RCNN 提出了 anchor boxes 取代了 RCNN 系列中的候选生成算法,但是过多的 anchor 候选框导致了正负样本不平衡的问题,其作者进一步提出了 focal loss 进行应对(存疑,一般来说 one stage 法更易受到正负样本不平衡的困扰,而 two stage 法由于会在候选框阶段通过得分和nms筛选过滤掉大量的负样本,然后在分类回归阶段又固定正负样本比例,相较 one stage 法情况会好很多)。
二、Generalized Intersection over Union
1、IOU 的优点
- 将 1-IOU 作为距离度量,(数学可证的)满足非负性、同一性、对称性和三角不等性(non-negativity, identity of indiscernibles, symmetry and triangle inequality)
- IOU 具有尺度不变性,不受 bbox 于 ground truth 的大小影响
2、IOU 的问题
- 只要两个框不相交,IOU 就为0,这使得它无法衡量两个框是相邻还是相距甚远
- IOU 无法反映两个框相交的方式,解释如 Figure2 所示:

3、GIOU 算法介绍
对于同形状的 A 和 B,C 为相同形状的最小的可以包含 A、B 的图形(例如通常 A 和 B 是矩形框,此时 C 也取矩形框),下面公式给出 GIOU 的计算过程:

然后作者给出了 GIOU 的5个特点:
- 将 1-GIOU 作为距离度量,其继承了 IOU 的优良数学特性
- GIOU 同样具有尺度不变性
- GIOU 永远小于 IOU,且当 A 趋近于 B 时(即两者趋于重合),GIOU 趋于 IOU
- IOU 取值区间为 [0,1],GIOU 取值区间为 [-1,1]:
和 3 中所说对应,A 和 B 趋于重合时 IOU 和 GIOU 均趋向 1
A 和 B 差别越大,GIOU 趋向于 -1 - 如 Figure2 所示,GIOU 相对 IOU 更能反映两个框相交形式的好坏(how overlap between two symmetrical objectsoccurs)
4、GIOU 应用为损失函数
基于 min、max 和 分段函数的BP算法是可行的,所以 IOU 与 GIOU 的应用就不是问题了。作者说,虽然 IOU(GIOU) 计算不能得到解析解,但在限定了形状为矩形时就大大简化了问题:对角点进行 min、max 操作即可:

作者还画了图试图证明 GIOU 损失函数的梯度相对于 IOU 损失函数更大,不过我感觉有点牵强(没看懂),所以不贴了。
三、实验
作者将 GIOU 损失函数应用到已有 2D 物体检测算法中,结果相对从前在两个指标上:IOU、GIOU 均有提高,毕竟优化目标就是检测指标,比起使用中间量的 l2 损失效果好是情理之中的。
文章源码还没有被释放,不过原理并不复杂,只要修改已有算法的损失函数即可,但是最近比较忙,没有时间实践一下了。个人觉得是篇很中肯的文章,期待其他人复现实验验证一下,如果效果好说不定就像 BN、Relu 一样成为相关领域的标准配置了。
『计算机视觉』Generalized Intersection over Union: A Metric and A Loss for Bounding BoxRegression的更多相关文章
- Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression
Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression 2019-05-20 19:3 ...
- 论文阅读笔记四十七:Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression(CVPR2019)
论文原址:https://arxiv.org/pdf/1902.09630.pdf github:https://github.com/generalized-iou 摘要 在目标检测的评测体系中,I ...
- 『计算机视觉』Mask-RCNN_从服装关键点检测看KeyPoints分支
下图Github地址:Mask_RCNN Mask_RCNN_KeyPoints『计算机视觉』Mask-RCNN_论文学习『计算机视觉』Mask-RCNN_项目文档翻译『计算机视觉』Mas ...
- 『计算机视觉』Mask-RCNN_训练网络其三:训练Model
Github地址:Mask_RCNN 『计算机视觉』Mask-RCNN_论文学习 『计算机视觉』Mask-RCNN_项目文档翻译 『计算机视觉』Mask-RCNN_推断网络其一:总览 『计算机视觉』M ...
- 『计算机视觉』Mask-RCNN_训练网络其二:train网络结构&损失函数
Github地址:Mask_RCNN 『计算机视觉』Mask-RCNN_论文学习 『计算机视觉』Mask-RCNN_项目文档翻译 『计算机视觉』Mask-RCNN_推断网络其一:总览 『计算机视觉』M ...
- 『计算机视觉』Mask-RCNN_训练网络其一:数据集与Dataset类
Github地址:Mask_RCNN 『计算机视觉』Mask-RCNN_论文学习 『计算机视觉』Mask-RCNN_项目文档翻译 『计算机视觉』Mask-RCNN_推断网络其一:总览 『计算机视觉』M ...
- 『计算机视觉』Mask-RCNN_锚框生成
Github地址:Mask_RCNN 『计算机视觉』Mask-RCNN_论文学习 『计算机视觉』Mask-RCNN_项目文档翻译 『计算机视觉』Mask-RCNN_推断网络其一:总览 『计算机视觉』M ...
- 『计算机视觉』Mask-RCNN_推断网络终篇:使用detect方法进行推断
一.detect和build 前面多节中我们花了大量笔墨介绍build方法的inference分支,这节我们看看它是如何被调用的. 在dimo.ipynb中,涉及model的操作我们简单进行一下汇总, ...
- 『计算机视觉』Mask-RCNN_推断网络其六:Mask生成
一.Mask生成概览 上一节的末尾,我们已经获取了待检测图片的分类回归信息,我们将回归信息(即待检测目标的边框信息)单独提取出来,结合金字塔特征mrcnn_feature_maps,进行Mask生成工 ...
随机推荐
- win7系统删除打印机后刷新又出现怎么办
方法/步骤:1.进入桌面后,按下“Win + R”组合键打开运行窗口,在运行中输入“spool”并点击确定:2.之后会进入路径为“C:\Windows\System32\spool”的文件夹中,3.在 ...
- [macOS] git忽略所有的.DS_Store文件
最彻底的方法如下: vi ~/.gitignore_global 输入以下内容 # OS generated files # ###################### .DS_Store .DS_ ...
- 从网卡发送数据再谈TCP/IP协议—网络传输速度计算-网卡构造
在<在深谈TCP/IP三步握手&四步挥手原理及衍生问题—长文解剖IP>里面提到 单个TCP包每次打包1448字节的数据进行发送(以太网Ethernet最大的数据帧是1518字节,以 ...
- (3)打造简单OS-MBR引导区转移加载简单程序(突破512限制)
在第一节<(1)汇编写入引导区,虚拟机启动步骤>中讲解到一个简单屏幕显示一川字符串,第二节讲到BIOS启动过程! 第一节中基本原理就是将那个汇编代码用nasm汇编器进行汇编成二进制,然后把 ...
- Git 教程(三):仓库与分支
远程仓库 到目前为止,我们已经掌握了如何在Git仓库里对一个文件进行时光穿梭,你再也不用担心文件备份或者丢失的问题了. 可是有用过集中式版本控制系统SVN的童鞋会站出来说,这些功能在SVN里早就有了, ...
- AndroidStudio 快捷键(最实用的20个)(转)
有时候用的编辑器多了,快捷键容易记混淆,所以我门只用记最实用的快捷键就行了,其他效率不高的到要用的时候再查也不迟 下面是我使用AndroidStudio以来最常用的也是我认为最有用的20个快捷键 给大 ...
- 在dotnetcore的MVC项目中,创建支持 vue.js 的最小工程模板
网上Vue模板不是最新的,我自己做了一个最新的支持 Vue.js 的最小工程模板,方便大家从 Hello world. 入门, 在 VS2017 里学习,并扩展出自己的项目. 下面是创建步骤: 1.在 ...
- Win10环境下 HTTP 错误 500.19 - Internal Server Error 问题及其解决方法
记一下今日份小bug... 明天要做软件架构实验了,今天打算测试下运行web项目,于是乎,找出了以前用JSP写的web项目测试运行不了,我再打开浏览器测试Tomcat服务器,在地址栏键入http:// ...
- Character
Character a = new Character(); Character.isUpperCase(a) 判断给点的字符是否是大写字符 Character.isLowerCase(a) 判断给定 ...
- LeetCode Weekly Contest 118
要死要死,第一题竟然错误8次,心态崩了呀,自己没有考虑清楚,STL用的也不是很熟,一直犯错. 第二题也是在室友的帮助下完成的,心态崩了. 970. Powerful Integers Given tw ...