pytorch复现_IOU



定义了一个compute_iou函数,用于计算两个矩形框(boxA和boxB)之间的交并比(IOU,Intersection over Union)。IOU是一种常用的度量,用于评估两个矩形框的重叠程度。
在代码中,函数的输入是两个矩形框的坐标,每个矩形框由左上角点和右下角点的坐标表示。函数的计算步骤如下:
1.计算交集区域的左上角点的坐标:x轴方向上取两个矩形框左上角点x坐标的最大值,y轴方向上取两个矩形框左上角点y坐标的最大值。
2.计算交集区域的右下角点的坐标:x轴方向上取两个矩形框右下角点x坐标的最大值,y轴方向上取两个矩形框右下角点y坐标的最大值。
3.计算交集区域的面积,如果x轴和y轴上的长度差值小于零,则交集面积为零;否则,交集面积为两者相乘。
4.分别计算两个矩形框的面积,通过右下角点坐标减去左上角点坐标并相乘。
5.最后,计算IOU,将交集面积除以两个矩形框的总面积减去交集面积。
在给定的示例中,boxA和boxB分别表示两个矩形框的坐标,然后调用compute_iou函数计算它们之间的IOU。结果将存储在变量IOU中。这个示例中,boxA和boxB相对于彼此有一定的重叠,因此IOU应该是一个介于0和1之间的值,用来表示它们的重叠程度。

python 复制代码
import numpy as np
def compute_iou(boxA,boxB):
    # 计算相交区域的坐标
    xA=max(boxA[0],boxB[0])
    yA=max(boxA[1],boxB[1])
    xB=min(boxA[2],boxB[2])
    yB=min(boxA[3],boxB[3])

    # 计算相交区域,如果是负数一定是不相交
    interArea = max(0,xB-xA)*max(0,yB-yA)

    # 计算A和B的面积
    boxAArea=(boxA[3]-boxA[1])*(boxA[2]-boxA[0])
    boxBArea=(boxB[3]-boxB[1])*(boxB[2]-boxB[0])

    # 计算iou
    iou=interArea/(boxAArea+boxBArea-interArea)

    return iou

# Test case 1: Non-overlapping rectangles
boxA1 = [1, 1, 3, 3]
boxB1 = [4, 4, 6, 6]
iou1 = compute_iou(boxA1, boxB1)

# Test case 2: Partially overlapping rectangles
boxA2 = [1, 1, 5, 5]
boxB2 = [3, 3, 7, 7]
iou2 = compute_iou(boxA2, boxB2)

# Test case 3: Fully overlapping rectangles
boxA3 = [2, 2, 6, 6]
boxB3 = [2, 2, 6, 6]
iou3 = compute_iou(boxA3, boxB3)

# Print results
print("Test case 1 IOU:", iou1)
print("Test case 2 IOU:", iou2)
print("Test case 3 IOU:", iou3)

结果:

相关推荐
ahardstone12 分钟前
【CS61A 2024秋】Python入门课,全过程记录P5(Week8 Inheritance开始,更新于2025/2/2)
开发语言·python
MoRanzhi120339 分钟前
亲和传播聚类算法应用(Affinity Propagation)
人工智能·python·机器学习·数学建模·scikit-learn·聚类
金融OG41 分钟前
99.23 金融难点通俗解释:小卖部经营比喻PPI(生产者物价指数)vsCPI(消费者物价指数)
人工智能·python·机器学习·数学建模·金融·数据可视化
艾醒(AiXing-w)1 小时前
玩转大语言模型——使用langchain和Ollama本地部署大语言模型
人工智能·语言模型·langchain
我的青春不太冷1 小时前
2025年最新在线模型转换工具优化模型ncnn,mnn,tengine,onnx
人工智能·深度学习·ncnn·mnn·在线模型转换网址
云卷云舒___________1 小时前
【B站保姆级视频教程:Jetson配置YOLOv11环境(六)PyTorch&Torchvision安装】
人工智能·pytorch·yolo·教程·jetson·torchvision
是Dream呀1 小时前
Python从0到100(八十六):神经网络-ShuffleNet通道混合轻量级网络的深入介绍
网络·python·神经网络
zxfeng~1 小时前
深度学习之“线性代数”
人工智能·python·深度学习·线性代数
油泼辣子多加1 小时前
Diffusion--人工智能领域的革命性技术
人工智能