1. 函数
def match_predictions(self, pred_classes, true_classes, iou, use_scipy=False):
"""
Matches predictions to ground truth objects (pred_classes, true_classes) using IoU.
Args:
pred_classes (torch.Tensor): Predicted class indices of shape(N,).
true_classes (torch.Tensor): Target class indices of shape(M,).
iou (torch.Tensor): An NxM tensor containing the pairwise IoU values for predictions and ground of truth
use_scipy (bool): Whether to use scipy for matching (more precise).
Returns:
(torch.Tensor): Correct tensor of shape(N,10) for 10 IoU thresholds.
"""
print("pred_classes:",pred_classes)
print("true_classes:",true_classes)
print("iou:", iou)
correct = np.zeros((pred_classes.shape[0], self.iouv.shape[0])).astype(bool)
print("correct:",correct)
correct_class = true_classes[:, None] == pred_classes
print("correct_class:",correct_class)
iou = iou * correct_class
iou = iou.cpu().numpy()
for i, threshold in enumerate(self.iouv.cpu().tolist()):
if use_scipy:
import scipy
cost_matrix = iou * (iou >= threshold)
if cost_matrix.any():
labels_idx, detections_idx = scipy.optimize.linear_sum_assignment(cost_matrix, maximize=True)
valid = cost_matrix[labels_idx, detections_idx] > 0
if valid.any():
correct[detections_idx[valid], i] = True
else:
print("类别匹配 iou:",iou)
matches = np.nonzero(iou >= threshold)
print("matches:", matches)
matches = np.array(matches).T
if matches.shape[0]:
if matches.shape[0] > 1:
print("iou[matches[:, 0], matches[:, 1]]:",iou[matches[:, 0], matches[:, 1]])
matches = matches[iou[matches[:, 0], matches[:, 1]].argsort()[::-1]]
print("matches 1:",matches)
matches = matches[np.unique(matches[:, 1], return_index=True)[1]]
print("matches 2:", matches)
matches = matches[np.unique(matches[:, 0], return_index=True)[1]]
print("matches 3:", matches)
print("matches[:, 1].astype(int):", matches[:, 1].astype(int))
print("i:",i)
correct[matches[:, 1].astype(int), i] = True
print("correct:",correct)
return torch.tensor(correct, dtype=torch.bool, device=pred_classes.device)
2. 对应的一组打印
pred_classes: tensor([0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.], device='cuda:0')
true_classes: tensor([0., 0., 0., 0.], device='cuda:0')
iou: tensor([[0.0000e+00, 5.3806e-01, 0.0000e+00, 9.7216e-01, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.5022e-02, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 5.0438e-02, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 2.4361e-02, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 7.2532e-01, 0.0000e+00, 0.0000e+00, 0.0000e+00],
[0.0000e+00, 4.3628e-01, 3.2947e-01, 5.4265e-03, 0.0000e+00, 0.0000e+00, 2.8638e-01, 6.7284e-01, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 2.3521e-01, 5.5659e-02, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 5.5171e-01, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.8097e-01, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 9.3197e-04, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00],
[0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 9.5152e-01, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 6.2203e-01, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 9.9108e-04, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 2.0947e-01, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.5038e-02, 0.0000e+00, 0.0000e+00],
[6.1200e-01, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 1.0673e-02, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 4.1530e-01, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00,
0.0000e+00, 6.9189e-01, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 4.0263e-01, 1.4130e-01, 0.0000e+00, 6.4516e-02, 2.0765e-01, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 0.0000e+00, 4.3902e-02, 3.4783e-01, 0.0000e+00, 0.0000e+00, 0.0000e+00, 4.2174e-01]],
device='cuda:0')
correct: [[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]]
correct_class: tensor([[True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True],
[True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True],
[True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True],
[True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]],
device='cuda:0')
类别匹配 iou: [[ 0 0.53806 0 0.97216 0 0 0 0 0 0 0 0 0 0 0 0.015022 0 0 0 0 0 0 0.050438 0 0 0
0 0 0.024361 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.72532 0 0 0]
[ 0 0.43628 0.32947 0.0054265 0 0 0.28638 0.67284 0 0 0 0 0 0 0 0 0.23521 0.055659 0 0 0 0 0.55171 0 0 0
0 0 0 0 0 0.18097 0 0 0 0 0 0 0 0 0 0.00093197 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0.95152 0 0 0 0 0 0.62203 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0.00099108 0 0 0 0 0.20947 0 0 0 0 0 0 0 0.015038 0 0]
[ 0.612 0 0 0 0 0 0 0 0 0 0.010673 0 0 0 0 0 0 0 0 0.4153 0 0 0 0 0 0
0 0.69189 0 0 0 0 0 0 0 0.40263 0.1413 0 0.064516 0.20765 0 0 0 0 0 0.043902 0.34783 0 0 0 0.42174]]
matches: (array([0, 0, 0, 1, 1, 2, 2, 3, 3]), array([ 1, 3, 47, 7, 22, 4, 10, 0, 27]))
iou[matches[:, 0], matches[:, 1]]: [ 0.53806 0.97216 0.72532 0.67284 0.55171 0.95152 0.62203 0.612 0.69189]
matches 1: [[ 0 3]
[ 2 4]
[ 0 47]
[ 3 27]
[ 1 7]
[ 2 10]
[ 3 0]
[ 1 22]
[ 0 1]]
matches 2: [[ 3 0]
[ 0 1]
[ 0 3]
[ 2 4]
[ 1 7]
[ 2 10]
[ 1 22]
[ 3 27]
[ 0 47]]
matches 3: [[0 1]
[1 7]
[2 4]
[3 0]]
matches[:, 1].astype(int): [1 7 4 0]
i: 0
correct: [[ True False False False False False False False False False]
[ True False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[ True False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[ True False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]]
类别匹配 iou: [[ 0 0.53806 0 0.97216 0 0 0 0 0 0 0 0 0 0 0 0.015022 0 0 0 0 0 0 0.050438 0 0 0
0 0 0.024361 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.72532 0 0 0]
[ 0 0.43628 0.32947 0.0054265 0 0 0.28638 0.67284 0 0 0 0 0 0 0 0 0.23521 0.055659 0 0 0 0 0.55171 0 0 0
0 0 0 0 0 0.18097 0 0 0 0 0 0 0 0 0 0.00093197 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0.95152 0 0 0 0 0 0.62203 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0.00099108 0 0 0 0 0.20947 0 0 0 0 0 0 0 0.015038 0 0]
[ 0.612 0 0 0 0 0 0 0 0 0 0.010673 0 0 0 0 0 0 0 0 0.4153 0 0 0 0 0 0
0 0.69189 0 0 0 0 0 0 0 0.40263 0.1413 0 0.064516 0.20765 0 0 0 0 0 0.043902 0.34783 0 0 0 0.42174]]
matches: (array([0, 0, 1, 1, 2, 2, 3, 3]), array([ 3, 47, 7, 22, 4, 10, 0, 27]))
iou[matches[:, 0], matches[:, 1]]: [ 0.97216 0.72532 0.67284 0.55171 0.95152 0.62203 0.612 0.69189]
matches 1: [[ 0 3]
[ 2 4]
[ 0 47]
[ 3 27]
[ 1 7]
[ 2 10]
[ 3 0]
[ 1 22]]
matches 2: [[ 3 0]
[ 0 3]
[ 2 4]
[ 1 7]
[ 2 10]
[ 1 22]
[ 3 27]
[ 0 47]]
matches 3: [[0 3]
[1 7]
[2 4]
[3 0]]
matches[:, 1].astype(int): [3 7 4 0]
i: 1
correct: [[ True True False False False False False False False False]
[ True False False False False False False False False False]
[False False False False False False False False False False]
[False True False False False False False False False False]
[ True True False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[ True True False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]]
类别匹配 iou: [[ 0 0.53806 0 0.97216 0 0 0 0 0 0 0 0 0 0 0 0.015022 0 0 0 0 0 0 0.050438 0 0 0
0 0 0.024361 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.72532 0 0 0]
[ 0 0.43628 0.32947 0.0054265 0 0 0.28638 0.67284 0 0 0 0 0 0 0 0 0.23521 0.055659 0 0 0 0 0.55171 0 0 0
0 0 0 0 0 0.18097 0 0 0 0 0 0 0 0 0 0.00093197 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0.95152 0 0 0 0 0 0.62203 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0.00099108 0 0 0 0 0.20947 0 0 0 0 0 0 0 0.015038 0 0]
[ 0.612 0 0 0 0 0 0 0 0 0 0.010673 0 0 0 0 0 0 0 0 0.4153 0 0 0 0 0 0
0 0.69189 0 0 0 0 0 0 0 0.40263 0.1413 0 0.064516 0.20765 0 0 0 0 0 0.043902 0.34783 0 0 0 0.42174]]
matches: (array([0, 0, 1, 2, 2, 3, 3]), array([ 3, 47, 7, 4, 10, 0, 27]))
iou[matches[:, 0], matches[:, 1]]: [ 0.97216 0.72532 0.67284 0.95152 0.62203 0.612 0.69189]
matches 1: [[ 0 3]
[ 2 4]
[ 0 47]
[ 3 27]
[ 1 7]
[ 2 10]
[ 3 0]]
matches 2: [[ 3 0]
[ 0 3]
[ 2 4]
[ 1 7]
[ 2 10]
[ 3 27]
[ 0 47]]
matches 3: [[0 3]
[1 7]
[2 4]
[3 0]]
matches[:, 1].astype(int): [3 7 4 0]
i: 2
correct: [[ True True True False False False False False False False]
[ True False False False False False False False False False]
[False False False False False False False False False False]
[False True True False False False False False False False]
[ True True True False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[ True True True False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]]
类别匹配 iou: [[ 0 0.53806 0 0.97216 0 0 0 0 0 0 0 0 0 0 0 0.015022 0 0 0 0 0 0 0.050438 0 0 0
0 0 0.024361 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.72532 0 0 0]
[ 0 0.43628 0.32947 0.0054265 0 0 0.28638 0.67284 0 0 0 0 0 0 0 0 0.23521 0.055659 0 0 0 0 0.55171 0 0 0
0 0 0 0 0 0.18097 0 0 0 0 0 0 0 0 0 0.00093197 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0.95152 0 0 0 0 0 0.62203 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0.00099108 0 0 0 0 0.20947 0 0 0 0 0 0 0 0.015038 0 0]
[ 0.612 0 0 0 0 0 0 0 0 0 0.010673 0 0 0 0 0 0 0 0 0.4153 0 0 0 0 0 0
0 0.69189 0 0 0 0 0 0 0 0.40263 0.1413 0 0.064516 0.20765 0 0 0 0 0 0.043902 0.34783 0 0 0 0.42174]]
matches: (array([0, 0, 1, 2, 3]), array([ 3, 47, 7, 4, 27]))
iou[matches[:, 0], matches[:, 1]]: [ 0.97216 0.72532 0.67284 0.95152 0.69189]
matches 1: [[ 0 3]
[ 2 4]
[ 0 47]
[ 3 27]
[ 1 7]]
matches 2: [[ 0 3]
[ 2 4]
[ 1 7]
[ 3 27]
[ 0 47]]
matches 3: [[ 0 3]
[ 1 7]
[ 2 4]
[ 3 27]]
matches[:, 1].astype(int): [ 3 7 4 27]
i: 3
correct: [[ True True True False False False False False False False]
[ True False False False False False False False False False]
[False False False False False False False False False False]
[False True True True False False False False False False]
[ True True True True False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[ True True True True False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False True False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]]
类别匹配 iou: [[ 0 0.53806 0 0.97216 0 0 0 0 0 0 0 0 0 0 0 0.015022 0 0 0 0 0 0 0.050438 0 0 0
0 0 0.024361 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.72532 0 0 0]
[ 0 0.43628 0.32947 0.0054265 0 0 0.28638 0.67284 0 0 0 0 0 0 0 0 0.23521 0.055659 0 0 0 0 0.55171 0 0 0
0 0 0 0 0 0.18097 0 0 0 0 0 0 0 0 0 0.00093197 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0.95152 0 0 0 0 0 0.62203 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0.00099108 0 0 0 0 0.20947 0 0 0 0 0 0 0 0.015038 0 0]
[ 0.612 0 0 0 0 0 0 0 0 0 0.010673 0 0 0 0 0 0 0 0 0.4153 0 0 0 0 0 0
0 0.69189 0 0 0 0 0 0 0 0.40263 0.1413 0 0.064516 0.20765 0 0 0 0 0 0.043902 0.34783 0 0 0 0.42174]]
matches: (array([0, 0, 2]), array([ 3, 47, 4]))
iou[matches[:, 0], matches[:, 1]]: [ 0.97216 0.72532 0.95152]
matches 1: [[ 0 3]
[ 2 4]
[ 0 47]]
matches 2: [[ 0 3]
[ 2 4]
[ 0 47]]
matches 3: [[0 3]
[2 4]]
matches[:, 1].astype(int): [3 4]
i: 4
correct: [[ True True True False False False False False False False]
[ True False False False False False False False False False]
[False False False False False False False False False False]
[False True True True True False False False False False]
[ True True True True True False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[ True True True True False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False True False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]]
类别匹配 iou: [[ 0 0.53806 0 0.97216 0 0 0 0 0 0 0 0 0 0 0 0.015022 0 0 0 0 0 0 0.050438 0 0 0
0 0 0.024361 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.72532 0 0 0]
[ 0 0.43628 0.32947 0.0054265 0 0 0.28638 0.67284 0 0 0 0 0 0 0 0 0.23521 0.055659 0 0 0 0 0.55171 0 0 0
0 0 0 0 0 0.18097 0 0 0 0 0 0 0 0 0 0.00093197 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0.95152 0 0 0 0 0 0.62203 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0.00099108 0 0 0 0 0.20947 0 0 0 0 0 0 0 0.015038 0 0]
[ 0.612 0 0 0 0 0 0 0 0 0 0.010673 0 0 0 0 0 0 0 0 0.4153 0 0 0 0 0 0
0 0.69189 0 0 0 0 0 0 0 0.40263 0.1413 0 0.064516 0.20765 0 0 0 0 0 0.043902 0.34783 0 0 0 0.42174]]
matches: (array([0, 2]), array([3, 4]))
iou[matches[:, 0], matches[:, 1]]: [ 0.97216 0.95152]
matches 1: [[0 3]
[2 4]]
matches 2: [[0 3]
[2 4]]
matches 3: [[0 3]
[2 4]]
matches[:, 1].astype(int): [3 4]
i: 5
correct: [[ True True True False False False False False False False]
[ True False False False False False False False False False]
[False False False False False False False False False False]
[False True True True True True False False False False]
[ True True True True True True False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[ True True True True False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False True False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]]
类别匹配 iou: [[ 0 0.53806 0 0.97216 0 0 0 0 0 0 0 0 0 0 0 0.015022 0 0 0 0 0 0 0.050438 0 0 0
0 0 0.024361 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.72532 0 0 0]
[ 0 0.43628 0.32947 0.0054265 0 0 0.28638 0.67284 0 0 0 0 0 0 0 0 0.23521 0.055659 0 0 0 0 0.55171 0 0 0
0 0 0 0 0 0.18097 0 0 0 0 0 0 0 0 0 0.00093197 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0.95152 0 0 0 0 0 0.62203 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0.00099108 0 0 0 0 0.20947 0 0 0 0 0 0 0 0.015038 0 0]
[ 0.612 0 0 0 0 0 0 0 0 0 0.010673 0 0 0 0 0 0 0 0 0.4153 0 0 0 0 0 0
0 0.69189 0 0 0 0 0 0 0 0.40263 0.1413 0 0.064516 0.20765 0 0 0 0 0 0.043902 0.34783 0 0 0 0.42174]]
matches: (array([0, 2]), array([3, 4]))
iou[matches[:, 0], matches[:, 1]]: [ 0.97216 0.95152]
matches 1: [[0 3]
[2 4]]
matches 2: [[0 3]
[2 4]]
matches 3: [[0 3]
[2 4]]
matches[:, 1].astype(int): [3 4]
i: 6
correct: [[ True True True False False False False False False False]
[ True False False False False False False False False False]
[False False False False False False False False False False]
[False True True True True True True False False False]
[ True True True True True True True False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[ True True True True False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False True False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]]
类别匹配 iou: [[ 0 0.53806 0 0.97216 0 0 0 0 0 0 0 0 0 0 0 0.015022 0 0 0 0 0 0 0.050438 0 0 0
0 0 0.024361 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.72532 0 0 0]
[ 0 0.43628 0.32947 0.0054265 0 0 0.28638 0.67284 0 0 0 0 0 0 0 0 0.23521 0.055659 0 0 0 0 0.55171 0 0 0
0 0 0 0 0 0.18097 0 0 0 0 0 0 0 0 0 0.00093197 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0.95152 0 0 0 0 0 0.62203 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0.00099108 0 0 0 0 0.20947 0 0 0 0 0 0 0 0.015038 0 0]
[ 0.612 0 0 0 0 0 0 0 0 0 0.010673 0 0 0 0 0 0 0 0 0.4153 0 0 0 0 0 0
0 0.69189 0 0 0 0 0 0 0 0.40263 0.1413 0 0.064516 0.20765 0 0 0 0 0 0.043902 0.34783 0 0 0 0.42174]]
matches: (array([0, 2]), array([3, 4]))
iou[matches[:, 0], matches[:, 1]]: [ 0.97216 0.95152]
matches 1: [[0 3]
[2 4]]
matches 2: [[0 3]
[2 4]]
matches 3: [[0 3]
[2 4]]
matches[:, 1].astype(int): [3 4]
i: 7
correct: [[ True True True False False False False False False False]
[ True False False False False False False False False False]
[False False False False False False False False False False]
[False True True True True True True True False False]
[ True True True True True True True True False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[ True True True True False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False True False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]]
类别匹配 iou: [[ 0 0.53806 0 0.97216 0 0 0 0 0 0 0 0 0 0 0 0.015022 0 0 0 0 0 0 0.050438 0 0 0
0 0 0.024361 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.72532 0 0 0]
[ 0 0.43628 0.32947 0.0054265 0 0 0.28638 0.67284 0 0 0 0 0 0 0 0 0.23521 0.055659 0 0 0 0 0.55171 0 0 0
0 0 0 0 0 0.18097 0 0 0 0 0 0 0 0 0 0.00093197 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0.95152 0 0 0 0 0 0.62203 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0.00099108 0 0 0 0 0.20947 0 0 0 0 0 0 0 0.015038 0 0]
[ 0.612 0 0 0 0 0 0 0 0 0 0.010673 0 0 0 0 0 0 0 0 0.4153 0 0 0 0 0 0
0 0.69189 0 0 0 0 0 0 0 0.40263 0.1413 0 0.064516 0.20765 0 0 0 0 0 0.043902 0.34783 0 0 0 0.42174]]
matches: (array([0, 2]), array([3, 4]))
iou[matches[:, 0], matches[:, 1]]: [ 0.97216 0.95152]
matches 1: [[0 3]
[2 4]]
matches 2: [[0 3]
[2 4]]
matches 3: [[0 3]
[2 4]]
matches[:, 1].astype(int): [3 4]
i: 8
correct: [[ True True True False False False False False False False]
[ True False False False False False False False False False]
[False False False False False False False False False False]
[False True True True True True True True True False]
[ True True True True True True True True True False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[ True True True True False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False True False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]]
类别匹配 iou: [[ 0 0.53806 0 0.97216 0 0 0 0 0 0 0 0 0 0 0 0.015022 0 0 0 0 0 0 0.050438 0 0 0
0 0 0.024361 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.72532 0 0 0]
[ 0 0.43628 0.32947 0.0054265 0 0 0.28638 0.67284 0 0 0 0 0 0 0 0 0.23521 0.055659 0 0 0 0 0.55171 0 0 0
0 0 0 0 0 0.18097 0 0 0 0 0 0 0 0 0 0.00093197 0 0 0 0 0 0 0 0 0]
[ 0 0 0 0 0.95152 0 0 0 0 0 0.62203 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0.00099108 0 0 0 0 0.20947 0 0 0 0 0 0 0 0.015038 0 0]
[ 0.612 0 0 0 0 0 0 0 0 0 0.010673 0 0 0 0 0 0 0 0 0.4153 0 0 0 0 0 0
0 0.69189 0 0 0 0 0 0 0 0.40263 0.1413 0 0.064516 0.20765 0 0 0 0 0 0.043902 0.34783 0 0 0 0.42174]]
matches: (array([0, 2]), array([3, 4]))
iou[matches[:, 0], matches[:, 1]]: [ 0.97216 0.95152]
matches 1: [[0 3]
[2 4]]
matches 2: [[0 3]
[2 4]]
matches 3: [[0 3]
[2 4]]
matches[:, 1].astype(int): [3 4]
i: 9
correct: [[ True True True False False False False False False False]
[ True False False False False False False False False False]
[False False False False False False False False False False]
[False True True True True True True True True True]
[ True True True True True True True True True True]
[False False False False False False False False False False]
[False False False False False False False False False False]
[ True True True True False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False True False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]
[False False False False False False False False False False]]
``