〖Ultralytics〗解析文件:ultralytics/engine/validator.py - `match_predictions`函数解析

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)
        # cush as: pred_classes: tensor([0., 0.], device='cuda:0')
        print("true_classes:",true_classes)
        # such as: true_classes: tensor([0.], device='cuda:0')
        print("iou:", iou)
        # such as : tensor([[0.8884, 0.0000]], device='cuda:0')
        # Dx10 matrix, where D - detections, 10 - IoU thresholds
        correct = np.zeros((pred_classes.shape[0], self.iouv.shape[0])).astype(bool)
        print("correct:",correct) # (预测数量,10)
        #correct: [[False False False False False False False False False False]
        #  [False False False False False False False False False False]]

        # LxD matrix where L - labels (rows), D - detections (columns)
        correct_class = true_classes[:, None] == pred_classes
        print("correct_class:",correct_class)
        # correct_class: tensor([[True, True]], device='cuda:0')
        iou = iou * correct_class  # zero out the wrong classes
        iou = iou.cpu().numpy()
        for i, threshold in enumerate(self.iouv.cpu().tolist()):
            if use_scipy:
                # WARNING: known issue that reduces mAP in https://github.com/ultralytics/ultralytics/pull/4708
                import scipy  # scope import to avoid importing for all commands

                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)
                #  cush as:
                # matches: (array([ 1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 31, 32, 32, 34, 34, 34, 34, 34, 34, 35, 35]),
                #           array([16, 15, 22, 23, 18, 19, 10, 20,  1,  7, 13, 14, 28,  3,  6,  9,  5,  0, 25, 11, 21, 12,  4,  8,  2, 26, 24, 17, 27, 29, 30, 86, 31, 73, 32, 39, 43, 69, 79, 94, 33, 37]))
                matches = np.array(matches).T
                if matches.shape[0]:
                    if matches.shape[0] > 1:
                        # print("matches:", matches)
                        #  such as:

                        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]] # 多个实例预测中:去除真实mask对应相同的预测mask(取真实mask与预测mask的iou最高的那一个预测作为真实mask的预测)
                        print("matches 2:", matches)
                        matches = matches[np.unique(matches[:, 0], return_index=True)[1]] # 单个实例预测中: 获取iou值最高的那一个作为真实mask预测的iou
                        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)
        # print("torch.tensor(correct, dtype=torch.bool, device=pred_classes.device):",torch.tensor(correct, dtype=torch.bool, device=pred_classes.device))
        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]]

``
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值