メインコンテンツまでスキップ

pairwise_iou

pairwise_iou(boxes1: Boxes, boxes2: Boxes) -> np.ndarray

  • 説明

    pairwise_iou は、2 つの境界ボックスリスト間の IoU(交差比率)を計算する関数です。この関数は、すべての N x M ペアにおける境界ボックス間の IoU を計算します。入力される境界ボックスは Boxes 型である必要があります。

  • パラメータ

    • boxes1 (Boxes):最初の境界ボックスリスト。N 個の境界ボックスを含みます。
    • boxes2 (Boxes):2 番目の境界ボックスリスト。M 個の境界ボックスを含みます。
  • import docsaidkit as D

    boxes1 = D.Boxes([[10, 20, 50, 80], [20, 30, 60, 90]])
    boxes2 = D.Boxes([[20, 30, 60, 90], [30, 40, 70, 100]])
    iou = D.pairwise_iou(boxes1, boxes2)
    print(iou)
    # >>> [[0.45454547 0.2]
    # [1.0 0.45454547]]

補足説明

IoU の概要

IoU(Intersection over Union)は、コンピュータビジョンにおける物体検出アルゴリズムのパフォーマンスを評価するための重要な指標で、特に物体検出やセグメンテーションタスクで使用されます。これは予測された境界ボックスと実際の境界ボックスの重なり具合を測定します。

定義

IoU の計算式は、予測された境界ボックスと実際の境界ボックスの交差面積を、両者の和集合面積で割ったものです。IoU の値は 0 から 1 の範囲で、数値が大きいほど重なり具合が高く、予測が正確であることを意味します。

計算手順

  1. 境界ボックス座標の決定:最初に、予測された境界ボックスと実際の境界ボックスの位置を特定します。通常、境界ボックスは 4 つの座標(x0, y0, x1, y1)で表現され、(x0, y0)は左上の角、(x1, y1)は右下の角を示します。

  2. 交差面積の計算:予測された境界ボックスと実際の境界ボックスの交差面積を計算します。もし 2 つの境界ボックスが重ならない場合、交差面積は 0 となります。

  3. 和集合面積の計算:和集合面積は、2 つの境界ボックスの面積の合計から交差面積を引いたものです。

  4. IoU の計算:交差面積を和集合面積で割ることで、IoU の値を求めます。

使用例

  • 物体検出:物体検出タスクでは、IoU は予測された境界ボックスが目標物体をどれだけ正確に覆っているかを評価するために使用されます。通常、IoU が特定の閾値(例えば 0.5)を超えると、検出は成功と見なされます。

  • モデル評価:IoU は異なる物体検出モデルのパフォーマンスを評価・比較するためによく使用されます。IoU が高いほど、モデルの検出精度が良いことを示します。

  • 非極大抑制(NMS):物体検出後の後処理において、IoU は非極大抑制(NMS)で使用され、重複する検出ボックスを排除し、最適な検出結果を選択します。

長所と制限

  • 長所

    • 直感的:IoU は予測された境界ボックスと実際の境界ボックスの類似度を直感的に量化する方法を提供します。
    • 標準化:0 から 1 の間のスカラー値として、IoU は比較と評価が容易です。
  • 制限

    • 敏感さの欠如:予測ボックスと実際のボックスがほとんど重なっている場合、IoU の変化があまり敏感でない場合があります。
    • 閾値選択:IoU の閾値設定が評価結果に影響を与えることがあり、異なる閾値が異なる評価基準を導く可能性があります。