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)

结果:

相关推荐
weixin_45729710几秒前
RAG流程全解析:从数据到精准答案
人工智能
whaosoft-143几秒前
51c大模型~合集171
人工智能
arron889914 分钟前
YOLOv8n-pose 模型使用
人工智能·深度学习·yolo
万邦科技Lafite16 分钟前
利用淘宝开放API接口监控商品状态,掌握第一信息
大数据·python·电商开放平台·开放api接口·淘宝开放平台
AI人工智能+1 小时前
一种融合AI与OCR的施工许可证识别技术,提升工程监管效率,实现自动化、精准化处理。
人工智能·自动化·ocr·施工许可证识别
Hy行者勇哥2 小时前
Python 与 VS Code 结合操作指南
开发语言·python
大力水手(Popeye)2 小时前
Pytorch——tensor
人工智能·pytorch·python
ygy.白茶3 小时前
从电影分类到鸢尾花识别
人工智能
AI_gurubar6 小时前
大模型教机器人叠衣服:2025年”语言理解+多模态融合“的智能新篇
人工智能·机器人
飞翔的佩奇6 小时前
【完整源码+数据集+部署教程】表盘指针检测系统源码和数据集:改进yolo11-CA-HSFPN
python·yolo·计算机视觉·数据集·yolo11·表盘指针检测