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