5 """Convert detection results to a list of numpy arrays.
8 bboxes (torch.Tensor | np.ndarray): shape (n, 5)
9 labels (torch.Tensor | np.ndarray): shape (n, )
10 num_classes (int): class number, including background class
13 list(ndarray): bbox results of each class
15 if bboxes.shape[0] == 0:
16 return [np.zeros((0, 5), dtype=np.float32)
for i
in range(num_classes)]
18 if isinstance(bboxes, torch.Tensor):
19 bboxes = bboxes.detach().cpu().numpy()
20 labels = labels.detach().cpu().numpy()
21 return [bboxes[labels == i, :]
for i
in range(num_classes)]
30 """Convert tracking/detection results to a list of numpy arrays.
33 bboxes (torch.Tensor | np.ndarray): shape (n, 5)
34 labels (torch.Tensor | np.ndarray): shape (n, )
35 masks (torch.Tensor | np.ndarray): shape (n, h, w)
36 ids (torch.Tensor | np.ndarray): shape (n, )
37 num_classes (int): class number, not including background class
40 dict[str : list(ndarray) | list[list[np.ndarray]]]: tracking/detection
41 results of each class. It may contain keys as belows:
43 - bbox_results (list[np.ndarray]): Each list denotes bboxes of one
45 - mask_results (list[list[np.ndarray]]): Each outer list denotes masks
46 of one category. Each inner list denotes one mask belonging to
47 the category. Each mask has shape (h, w).
49 assert labels
is not None
50 assert num_classes
is not None
57 labels = labels[valid_inds]
59 if bboxes
is not None:
61 bboxes = bboxes[valid_inds]
62 if bboxes.shape[0] == 0:
64 np.zeros((0, 6), dtype=np.float32)
65 for i
in range(num_classes)
68 if isinstance(bboxes, torch.Tensor):
69 bboxes = bboxes.cpu().numpy()
70 labels = labels.cpu().numpy()
71 ids = ids.cpu().numpy()
74 (ids[labels == i,
None], bboxes[labels == i, :]),
75 axis=1)
for i
in range(num_classes)
78 bbox_results =
bbox2result(bboxes, labels, num_classes)
79 results[
'bbox_results'] = bbox_results
83 masks = masks[valid_inds]
84 if isinstance(masks, torch.Tensor):
85 masks = masks.detach().cpu().numpy()
86 masks_results = [[]
for _
in range(num_classes)]
87 for i
in range(bboxes.shape[0]):
88 masks_results[labels[i]].append(masks[i])
89 results[
'mask_results'] = masks_results