Safemotion Lib
Loading...
Searching...
No Matches
Functions
result_transforms Namespace Reference

Functions

 bbox2result (bboxes, labels, num_classes)
 
 outs2results (bboxes=None, labels=None, masks=None, ids=None, num_classes=None, **kwargs)
 

Function Documentation

◆ bbox2result()

result_transforms.bbox2result ( bboxes,
labels,
num_classes )
Convert detection results to a list of numpy arrays.

Args:
    bboxes (torch.Tensor | np.ndarray): shape (n, 5)
    labels (torch.Tensor | np.ndarray): shape (n, )
    num_classes (int): class number, including background class

Returns:
    list(ndarray): bbox results of each class

Definition at line 4 of file result_transforms.py.

4def bbox2result(bboxes, labels, num_classes):
5 """Convert detection results to a list of numpy arrays.
6
7 Args:
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
11
12 Returns:
13 list(ndarray): bbox results of each class
14 """
15 if bboxes.shape[0] == 0:
16 return [np.zeros((0, 5), dtype=np.float32) for i in range(num_classes)]
17 else:
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)]
22
23

◆ outs2results()

result_transforms.outs2results ( bboxes = None,
labels = None,
masks = None,
ids = None,
num_classes = None,
** kwargs )
Convert tracking/detection results to a list of numpy arrays.

Args:
    bboxes (torch.Tensor | np.ndarray): shape (n, 5)
    labels (torch.Tensor | np.ndarray): shape (n, )
    masks (torch.Tensor | np.ndarray): shape (n, h, w)
    ids (torch.Tensor | np.ndarray): shape (n, )
    num_classes (int): class number, not including background class

Returns:
    dict[str : list(ndarray) | list[list[np.ndarray]]]: tracking/detection
    results of each class. It may contain keys as belows:

    - bbox_results (list[np.ndarray]): Each list denotes bboxes of one
        category.
    - mask_results (list[list[np.ndarray]]): Each outer list denotes masks
        of one category. Each inner list denotes one mask belonging to
        the category. Each mask has shape (h, w).

Definition at line 24 of file result_transforms.py.

29 **kwargs):
30 """Convert tracking/detection results to a list of numpy arrays.
31
32 Args:
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
38
39 Returns:
40 dict[str : list(ndarray) | list[list[np.ndarray]]]: tracking/detection
41 results of each class. It may contain keys as belows:
42
43 - bbox_results (list[np.ndarray]): Each list denotes bboxes of one
44 category.
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).
48 """
49 assert labels is not None
50 assert num_classes is not None
51
52 results = dict()
53
54 if ids is not None:
55 valid_inds = ids > -1
56 ids = ids[valid_inds]
57 labels = labels[valid_inds]
58
59 if bboxes is not None:
60 if ids is not None:
61 bboxes = bboxes[valid_inds]
62 if bboxes.shape[0] == 0:
63 bbox_results = [
64 np.zeros((0, 6), dtype=np.float32)
65 for i in range(num_classes)
66 ]
67 else:
68 if isinstance(bboxes, torch.Tensor):
69 bboxes = bboxes.cpu().numpy()
70 labels = labels.cpu().numpy()
71 ids = ids.cpu().numpy()
72 bbox_results = [
73 np.concatenate(
74 (ids[labels == i, None], bboxes[labels == i, :]),
75 axis=1) for i in range(num_classes)
76 ]
77 else:
78 bbox_results = bbox2result(bboxes, labels, num_classes)
79 results['bbox_results'] = bbox_results
80
81 if masks is not None:
82 if ids is not None:
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
90
91 return results