手で引き裂かれた IOU インタビュー コードを記録する

この関数では、boxAと は境界ボックスの 4 つの座標を表す 4 つの整数を含むリストboxBです: [開始 x、開始 y、終了 x、終了 y]。

この関数は、まず 2 つの境界ボックスの交差面積を計算し、次に各境界ボックスの面積と 2 つの境界ボックスの結合面積を計算し、最後に交差面積を結合面積で除算し、その結果を求めます。借用書です。

def bbox_intersection_over_union(boxA, boxB):
    # 确定每个边界框的 (y, x) 的 (开始,结束) 坐标
    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 + 1) * max(0, yB - yA + 1)

    # 计算每个边界框的面积
    boxAArea = (boxA[2] - boxA[0] + 1) * (boxA[3] - boxA[1] + 1)
    boxBArea = (boxB[2] - boxB[0] + 1) * (boxB[3] - boxB[1] + 1)

    # 计算并集的面积
    unionArea = boxAArea + boxBArea - interArea

    # 计算交并比
    iou = interArea / float(unionArea)

    # 返回交并比
    return iou
  • xA2 つの境界ボックスの左上の x 座標のうち大きい方で、交差部分の左上の x 座標を表します。
  • yA2 つの境界ボックスの左上隅の y 座標の大きい方の値で、交差点の左上隅の y 座標を示します。
  • xB2 つの境界ボックスの右下 x 座標の小さい方で、交差部分の右下 x 座標を表します。
  • yBは、2 つの境界ボックスの右下の y 座標の小さい方の値で、交差点の右下の y 座標を表します。

これらの計算は、2 つの境界ボックスの交差の座標範囲を見つけるためのもので、交差の面積を計算するために使用されます。以上のxA場合、2つのバウンディングボックスが交差していないことを意味し、このとき交差する部分の面積は0になります。xByAyB

 

 

おすすめ

転載: blog.csdn.net/weixin_64043217/article/details/130966538