|
|
|
import numpy as np
|
|
from typing import List
|
|
|
|
from detectron2.structures import Instances
|
|
|
|
|
|
def create_prediction_pairs(
|
|
instances: Instances,
|
|
prev_instances: Instances,
|
|
iou_all: np.ndarray,
|
|
threshold: float = 0.5,
|
|
) -> List:
|
|
"""
|
|
Args:
|
|
instances: predictions from current frame
|
|
prev_instances: predictions from previous frame
|
|
iou_all: 2D numpy array containing iou for each bbox pair
|
|
threshold: below the threshold, doesn't consider the pair of bbox is valid
|
|
Return:
|
|
List of bbox pairs
|
|
"""
|
|
bbox_pairs = []
|
|
for i in range(len(instances)):
|
|
for j in range(len(prev_instances)):
|
|
if iou_all[i, j] < threshold:
|
|
continue
|
|
bbox_pairs.append(
|
|
{
|
|
"idx": i,
|
|
"prev_idx": j,
|
|
"prev_id": prev_instances.ID[j],
|
|
"IoU": iou_all[i, j],
|
|
"prev_period": prev_instances.ID_period[j],
|
|
}
|
|
)
|
|
return bbox_pairs
|
|
|
|
|
|
LARGE_COST_VALUE = 100000
|
|
|