GIOU:Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression

2023-11-16

废话不多说,先看motivation
There is a gap between optimizing the commonly used distance losses and maximizing this metric value.
The optimal objective for a metric is the metric itself. so in the case of axis-aligned 2D bounding boxed,it can be shown that IOU can be directly used as a regression loss.
However(重点来了):IOU has a plateau making it infeasible to optimize in the case of non-overlapping bounding boxes.
接下来看一张图:
黑色表示预测bbox
绿色表示真值bbox在这里插入图片描述
这张图想说明什么呢?There is not a strong correlation between minimizing the commonly used lossed and improving their IOU values.它们的损失函数相同但是它们的IoU和GIoU不一样,也就是说一个好的局部目标优化对于IoU不一定是一个最好的局部优化。
再来一张图:
在这里插入图片描述
这张图的IoU 一样但是GIoU不一样,意思是重叠程度相同,但是重叠效果不同,从左到右依次变差,这是IoU不能体现的。
IoU计算及其特点
在这里插入图片描述
优点:
1.IoU as a distance,eg.Liou=1-IoU
2.IoU is invariant to the scale of the problem.
缺点:
在这里插入图片描述
GIoU的计算及其特点
在这里插入图片描述
可以看到主要是计算最小的包围凸对象C(将A、B包围住),然后|C(A∪B|表示除了A、B,C所占的面积
特点:
1.follows the same definition as IoU(GIoU as a distance),i.e.encoding the shape properties of the compared objects into the region property
2.maintains the scale invariant property of IoU
3.ensures a strong correlation with IoU in the case of overlapping objects
4.在这里插入图片描述
5.在这里插入图片描述
计算GIoU的思路清晰了,最重要的就是找到C,那具体如何实现呢?如何作为一个loss呢?
在这里插入图片描述
一定要注意输入的是什么?一般我用到的是( x,y,w,h)
除了那些验证条件1,思路很简单:
1.计算真值bbox面积
2.计算预测bbox面积
3.计算真值bbox和预测bbox相交的面积I
4.找到最小包围bboxC,并计算面积
有没有发现3,4找顶点的操作正好相反呢?
5.计算IoU
6.计算GIoU
7.计算loss
我没有看源码,直接按照这个思路写的代码,如下:

def giou(reference, proposals):
    """Compute the GIoU

    args:
        reference - Tensor of shape (1, 4),(x,y,w,h)
        proposals - Tensor of shape (num_proposals, 4),(x,y,w,h)
    """

    # Intersection box
    tl = torch.max(reference[:,:2], proposals[:,:2])
    br = torch.min(reference[:,:2] + reference[:,2:], proposals[:,:2] + proposals[:,2:])
    sz = (br - tl).clamp(0)

    # inter Area
    intersection = sz.prod(dim=1)
    union = reference[:,2:].prod(dim=1) + proposals[:,2:].prod(dim=1) - intersection
    iou=intersection / union

    # smallest enclosing box
    l = torch.min(reference[:, :2], proposals[:, :2])
    r = torch.max(reference[:, :2] + reference[:, 2:], proposals[:, :2] + proposals[:, 2:])
    length = (r - l).clamp(0)
    area=length.prod(dim=1)
    #GIOU
    giou=iou-(area-union)/area
    giou_loss=1-giou
    return giou,giou_loss
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GIOU:Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression 的相关文章

随机推荐

  • JSON与JAVA数据的相互转换

    先做个记号 JSON与JAVA数据的相互转换
  • MySQL中的事务

    系列文章目录 MySQL常见的几种约束 MySQL中的函数 文章目录 系列文章目录 前言 一 事务及其特征 1 事务的概念 2 事务的特性 1 原子性 2 一致性 3 隔离性 4 持久性 二 事务并发问题 1 脏读 Dirty read 2
  • html.4

    一 表格的结构标签 可以确定表格在浏览器中的位置 htead 代表表格的头部 tbody 代表表格的主体 tfoot 代表表格的尾部 shift alt 鼠标 选中没以后的相同位置
  • c++ char数组转string

    代码 char数组的路径转string的路径 void charArrayPath2string char char array path MAX PATH std string string path std stringstream s
  • Shell脚本函数应用

    记录 429 场景 Shell脚本函数应用 定义函数 函数调用 函数传参 版本 CentOS Linux release 7 9 2009 1 普通函数 示例普通函数是没有入参和返回值 1 1脚本 脚本名称 b2023051701 sh 脚
  • Android基础知识(二)简单控件

    一 文本显示 考虑到结构样式相分离的思想 我们往往在XML中设置文本
  • ABAP 向上取整和向下取整 CEIL & FLOOR

    ls taba 2 zjybs floor lv zlssl ls taba 2 bstrf 向上取整 CEIL 改为向下取整 FLOOR DATA a TYPE mseg menge b TYPE mseg menge c TYPE ms
  • shell 与用户交互

    bash shell如何获取命令行参数 添加到命令后的数据 命令行选项 确定命令行为的英文字母 键盘输入数据 操作命令行参数 1 读取参数 bash shell用位置参数变量 positional parameter 存储命令行输入的所有参
  • 第一次考CCF有感

    DWT来查寝时告诉我ccf能查分了 突然间就很紧张 很忐忑 我不知道我将面临的分数会是多少 说实话我幻想过400分 因为我感觉这次题目相比以前还是要简单一些的 毕竟图论都没考 表面上 2018 12 17 登上网址 查询成绩 这短短的几秒仿
  • 分库分表之拆分键设计

    众所周知 在现实世界中 每一个资源都有其提供能力的最大上限 当单一资源达到最大上限后就得让多个资源同时提供其能力来满足使用方的需求 同理 在计算机世界中 单一数据库资源不能满足使用需求时 我们也会考虑使用多个数据库同时提供服务来满足需求 当
  • spring-boot返回数据为null时返回空字符串

    在项目开发中 我们会遇到一些null值 如果不想让返回数据有null值 而是返回空字符串该怎么办捏 So Easy 我们做一下配置就好了 1 Jackson null值处理 spring boot是对Jackson默认支持的 所以有了web
  • (十一) 编译工具cmake

    文章目录 1 简单例子 2 管理工程 3 生成和使用共享库 3 1生成动态共享库 3 2引用库文件 4 其他 4 1环境变量 4 2系统信息 4 3 主要的开关选项 5 常用指令 5 1ADD DEFINITIONS 5 2 ADD DEP
  • k8s Unable to connect to the server: EOF 问题解决

    原因是K8s 没有启动成功 如下状态方位 启动成功 启动失败的原因多数是镜像下载失败 找到 Docker 的设置页面 在 Docker Engine 页面 将镜像网站的地址加入到右侧配置文件的 registry mirrors 节点下面 这
  • java毕业设计——基于java+Eclipse+jsp的网上手机销售系统设计与实现(毕业论文+程序源码)——网上手机销售系统

    基于java Eclipse jsp的网上手机销售系统设计与实现 毕业论文 程序源码 大家好 今天给大家介绍基于java Eclipse jsp的网上手机销售系统设计与实现 文章末尾附有本毕业设计的论文和源码下载地址哦 需要下载开题报告PP
  • 攻防世界Web题 - unseping 总结

    攻防世界Web题 unseping 总结 1 审题 进入题目 可以看出来是典型的php反序列化题目 2 源代码分析
  • 论文查找路径 查找IEEE、ScienceDirect论文 免费查看的方法

    IEEE ScienceDirect转免费查看网站网址 IEEE和ScienceDirect上的论文不少质量不错的 但是不少都是要收费才能下载查看的 怎么办呢 有国外大神提供的工具来帮忙 打开上面的网址 里面提供了三个网址 随便打开一个 仅
  • RabbitMQ--扩展--2.2--性能测试--linux.md

    RabbitMQ 扩展 2 2 性能测试 linux md 1 下载 https github com rabbitmq rabbitmq perf test releases tag v2 18 0 rabbitmq perf test
  • python发邮件--中文附件报错问题

    coding utf 8 Created on Thu Apr 11 14 01 30 2019 author zhang peng coding utf 8 import os import sys import smtplib from
  • 擎创技术流

    上期跟大家聊了下eBPF的发展历史还有特性 点击这里 擎创技术流 深入浅出运维可观测工具 一 聊聊eBPF的前世今生 一键回看上期精彩内容 这期主要跟大家分享下eBPF在应用过程中可能出现的问题 希望能帮到遇到类似问题的朋友 话不多说 我们
  • GIOU:Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression

    废话不多说 先看motivation There is a gap between optimizing the commonly used distance losses and maximizing this metric value