|
|
|
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 |
|
|