ターゲット検出IOU計算

IOUは、交差点オーバー連合(交差点オーバー連合)が目標検出に使用される概念であるであることを、生成された候補フレームの重複率(候補者が拘束さ)と、元のラベルのフレーム(グランドトゥルースがバインド)で、その交差点と和集合。比率理想的な状況は完全なオーバーラップです。つまり、比率は1です。マルチターゲットトラッキングでは、トラッキングフレームとターゲット検出フレームの類似性を判断するために使用されます。

IoUは、2つの領域の共通部分を2つの領域の合計で割った結果です。

from __future__ import print_function
from numba import jit
import numpy as np


# 计算IOU
@jit
def iou(bb_test, bb_gt):
    """
    计算预测框和目标框的交并比
    :param bb_test:表示预测框的左上角和右下角的坐标 [x1, y1, x2, y2]
    :param bb_gt: 表示目标框的左上角和右下角的坐标 [x1, y1, x2, y2]
    :return:
    """
    # 交集区域左上角坐标的最大值
    xx1 = np.maximum(bb_test[0], bb_gt[0])
    yy1 = np.maximum(bb_test[1], bb_gt[1])

    # 交集区域右下角坐标的最大值
    xx2 = np.maximum(bb_test[2], bb_gt[2])
    yy2 = np.maximum(bb_test[3], bb_gt[3])

    # 交集区域的宽
    w = np.maximum(0, xx2 - xx1)
    # 交集区域的高
    h = np.maximum(0, yy2 - yy1)
    # 交集区域的面积
    hw = h * w

    # 并集的面积
    s = (bb_test[2] - bb_test[0]) * (bb_test[3] - bb_test[1]) + (bb_gt[2] - bb_gt[0]) * (bb_gt[3] - bb_gt[1]) - hw

    return hw/s

if __name__ == '__main__':
    print(iou([133, 59, 310, 213], [182, 94, 327, 248]))
    print(iou([182, 94, 327, 248], [133, 59, 310, 213]))

 

おすすめ

転載: blog.csdn.net/qq_39197555/article/details/114952970