机器学习IoU计算

在机器学习中,特别是在计算机视觉和目标检测领域,IoU(Intersection over Union,交并比)是一个常用的评估指标。它衡量的是预测边界框(predicted bounding box)与真实边界框(ground truth bounding box)的交叠程度。
IoU的计算公式如下:
     IoU = 重叠面积/面积和
具体步骤如下:

计算交集的面积:找到预测框和真实框相交的部分,计算该相交区域的面积。
计算并集的面积:计算预测框和真实框合并起来的总面积。
求IoU值:将交集的面积除以并集的面积。
IoU的值范围从0到1,其中:
-IoU = 0 表示预测框和真实框没有重叠。
- IoU = 1 表示预测框和真实框完全重叠。
- 通常在目标检测任务中,设定一个阈值(比如0.5),只有当IoU大于这个阈值时,才认为检测是正确的。
IoU是目标检测中非常重要的一个概念,因为它简单直观,可以有效地反映预测框与真实框的匹配程度。在许多目标检测算法中,如Faster R-CNN、SSD和YOLO等,都会用到IoU来进行训练和评估。
输入两个box列表,列表的值为预测框和真实框的中点坐标和长和宽。先通过列表数据得到两框的左上角和右下角的坐标,之后分别选取重叠区域的左上角和右下角坐标,之后计算重叠部分面积 积/两框面积的和 

import numpy as np
def Iou(box1, box2):
    x_1 = box1[0]
    y_1 = box1[1]
    w_1 = box1[2]
    h_1 = box1[3]
    x_2 = box2[0]
    y_2 = box2[1]
    w_2 = box2[2]
    h_2 = box2[3]  
    x_1_1 = x_1 - w_1/2
    x_1_2 = x_1 + w_1/2
    y_1_1 = y_1 - h_1/2
    y_1_2 = y_1 + h_1/2
    x_2_1 = x_2 - w_2/2
    x_2_2 = x_2 + w_2/2
    y_2_1 = y_2 - h_2/2
    y_2_2 = y_2 + h_2/2
    if x_1_1 > x_2_1:
        a1 = x_1_1
    else:
        a1 = x_2_1
    if y_1_1 > y_2_1:
        b1 = y_2_1
    else:
        b1 = y_1_1
    if x_1_2 > x_2_2:
        a2 = x_2_2
    else:
        a2 = x_1_2
    if y_1_2 > y_2_2:
        b2 = y_1_2
    else:
        b2 = y_2_2    
    s1 = (a2 - a1) * (b2 - b1)
    s = (w_1 * h_1) * (w_2 * h_2) - s1
    return s1/s
box1 = [3, 3, 4, 6]
box2 = [4, 2, 4, 6]
Iou(box1, box2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值