| 48 | |
| 49 | |
| 50 | def fast_hist(pred, gtruth, num_classes): |
| 51 | # mask indicates pixels we care about |
| 52 | mask = (gtruth >= 0) & (gtruth < num_classes) |
| 53 | |
| 54 | # stretch ground truth labels by num_classes |
| 55 | # class 0 -> 0 |
| 56 | # class 1 -> 19 |
| 57 | # class 18 -> 342 |
| 58 | # |
| 59 | # TP at 0 + 0, 1 + 1, 2 + 2 ... |
| 60 | # |
| 61 | # TP exist where value == num_classes*class_id + class_id |
| 62 | # FP = row[class].sum() - TP |
| 63 | # FN = col[class].sum() - TP |
| 64 | hist = np.bincount(num_classes * gtruth[mask].astype(int) + pred[mask], |
| 65 | minlength=num_classes ** 2) |
| 66 | hist = hist.reshape(num_classes, num_classes) |
| 67 | return hist |
| 68 | |
| 69 | |
| 70 | def prep_experiment(args): |