当前位置: 首页 > article >正文

IoU、GIoU、CIoU和DIoU

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

IoU(交并比):

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在定位任务中不是一个合适度量的问题。
    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对纵横比差异敏感的问题。
    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。
    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.kler.cn/a/154621.html

相关文章:

  • hive表名重命名、rename重命名
  • 【Linux】介绍和基础01
  • 【安全科普】NUMA防火墙诞生记
  • 算力100问☞第5问:算力如何衡量?
  • Leecode刷题C语言之统计好节点的数目
  • UE5 UE4 播放视频没有声音解决
  • TypeScript编程语言学习,为学习HarmonyOS开发做准备
  • Vue安装及环境配置详细教程
  • 数据结构—两个有序单链表的合并排序算法
  • Swagger——接口文档自动生成和测试
  • js 处理编译器html 包含img的标签并设置width
  • Serilog .net下的新兴的日志框架
  • 使用WalletConnect Web3Modal v3 链接钱包基础教程
  • MATLAB算法实战应用案例精讲-【智能优化算法】生物地理学优化算法-BBO(附MATLAB代码实现)
  • QProcess 启动 进程 传参数 启动控制台进程 传参
  • Python标准库:math库【侯小啾python领航班系列(十六)】
  • STM32F407-14.3.8-01强制输出模式
  • 删除链表的倒数第N个节点,剑指offerII(21),力扣
  • 给Web3应用新增区块链数据(Web3项目一实战之六)
  • iceoryx(冰羚)-进程间消息同步
  • c语言:整数与浮点数在内存中的存储方式
  • 抖音视频如何无水印保存?抖音视频无水印保存教程
  • k8s部署jenkins
  • 【前端】JS实现SQL格式化
  • Adobe Indesign操作
  • 『测试基础』| 如何理解测试用例管理和缺陷管理?