IoU、GIoU、CIoU和DIoU

IoU(Intersection over Union,交并比)、GIoU(Generalized IoU,广义交并比)、CIoU(Complete IoU,完全交并比)和DIoU(Distance IoU,距离交并比)是目标检测中常用于评估预测框和真实框之间重叠程度的指标。

IoU(交并比):

python">def calculate_iou(box1, box2):
    intersection = max(0, min(box1[2], box2[2]) - max(box1[0], box2[0])) * max(0, min(box1[3], box2[3]) - max(box1[1], box2[1]))
    union = (box1[2] - box1[0]) * (box1[3] - box1[1]) + (box2[2] - box2[0]) * (box2[3] - box2[1]) - intersection
    iou = intersection / union
    return iou

GIoU(广义交并比):

  • 定义: GIoU考虑了边界框的重叠和大小。
  • 用途: 解决了IoU在定位任务中不是一个合适度量的问题。
    python">def calculate_giou(box1, box2):
        # 具体实现取决于具体要求,包括计算边界框和凸包的面积。以下是一个简化的示例:
        iou = calculate_iou(box1, box2)
        c_area = min(box1[2], box2[2]) * min(box1[3], box2[3])
        giou = iou - ((c_area - union) / c_area)
        return giou
    

    CIoU(完全交并比):

  • 定义: CIoU通过考虑边界框的纵横比进一步改进了GIoU。
  • 用途: 尝试解决GIoU对纵横比差异敏感的问题。
    python">def calculate_ciou(box1, box2):
        giou = calculate_giou(box1, box2)
        c_x = min(box1[0], box2[0]) + min(box1[2], box2[2]) / 2
        c_y = min(box1[1], box2[1]) + min(box1[3], box2[3]) / 2
        c_distance = ((c_x - box2[0]) ** 2 + (c_y - box2[1]) ** 2) ** 0.5
        diou_term = c_distance ** 2 / ((c_area - union) + 1e-7)
        ciou = giou - diou_term
        return ciou
    

    DIoU(距离交并比):

  • 定义: DIoU引入了考虑边界框中心点距离的项。
  • 用途: 通过惩罚边界框中心点之间的大距离,改进了CIoU。
    python">def calculate_diou(box1, box2):
        ciou = calculate_ciou(box1, box2)
        c_x = min(box1[0], box2[0]) + min(box1[2], box2[2]) / 2
        c_y = min(box1[1], box2[1]) + min(box1[3], box2[3]) / 2
        c_distance = ((c_x - box2[0]) ** 2 + (c_y - box2[1]) ** 2) ** 0.5
        diou_term = c_distance ** 2 / ((c_area - union) + 1e-7)
        diou = ciou - diou_term
        return diou
    


http://www.niftyadmin.cn/n/5233871.html

相关文章

索引器【C#】

索引: 索引,索的是实例化的编号,派生的子类,第 [ N ] 个儿子。 用数组的方式访问实例。 返回的是实例的,一个属性值。 声明: this [ 索引 ] public string this[int index]{get{}set{}}pub…

k8s(二):Pod

Pod pod 是K8s中最小的可部署单元,用于容纳一个或多个容器。Pod为容器提供了一个共享的环境,包括网络命名空间、存储卷和IP地址。 pod的阶段(phase) Pending: Pod 已被 Kubernetes 系统接受,但有一个或者多个容器尚未创建亦未运行。此阶段包…

使用gcloud SDK 管理和部署 Cloud run service

查看cloud run 上的service 列表: gcloud run services list > gcloud run services listSERVICE REGION URL LAST DEPLOYED BY LAST DEPL…

将不同时间点的登录状态记录转化为不同时间段的相同登录状态SQL求解

题目 有不同时间点的登录状态记录表state_log如下 请使用sql将其转化为如下表的不同时间段的相同登录状态记录 思路分析: 此类问题需要用到lag或lead函数取上下行对应的数据,然后对前后结果做比较打标签(0或1),再…

手写VUE后台管理系统7 - 整合Less样式

整合LESS 安装使用 Less(Leaner Style Sheets),是一门向后兼容的 CSS 扩展语言。 Less 官网:https://less.bootcss.com/ 安装 yarn add less安装完成就可以直接使用了 使用 以文件形式定义全局样式 在 assets 目录下创建 less …

rust从0开始写项目-04-多样化错误处理

一个优秀的项目,错误处理的优雅性是至关重要的,而rust,anyhow creat是绕不过去的一个,今天我们来研究下,怎么使用它,帮助我们写出更优雅的代码 关注 vx golang技术实验室,获取更多golang、rust好…

JS--异步的日常用法

目录 JS 异步编程并发(concurrency)和并行(parallelism)区别回调函数(Callback)GeneratorPromiseasync 及 await常用定时器函数 JS 异步编程 并发(concurrency)和并行(p…

认知觉醒(二)

认知觉醒(二) 内观自己,摆脱焦虑 第一章 大脑——一切问题的起源 第一节 大脑:重新认识你自己 我猜很多人并不真正了解自己,甚至从未了解过,所以才会对自身的各种问题困惑不已。这里我说的“自己”,特指自己的大…