def track(self, model: BaseModel, **kwargs): """ Add current model predictions (usually the result of a batch) to the tracking """ super().track(model) outputs = model.get_output() targets = model.get_labels() # Mask ignored label mask = targets != self._ignore_label outputs = outputs[mask] targets = targets[mask] outputs = self._convert(outputs) targets = self._convert(targets) if len(targets) == 0: return assert outputs.shape[0] == len(targets) self._confusion_matrix.count_predicted_batch(targets, np.argmax(outputs, 1)) self._acc = 100 * self._confusion_matrix.get_overall_accuracy() self._macc = 100 * self._confusion_matrix.get_mean_class_accuracy() self._miou = 100 * self._confusion_matrix.get_average_intersection_union()
def track(self, model: BaseModel, **kwargs): """ Add current model predictions (usually the result of a batch) to the tracking """ super().track(model) outputs = model.get_output() targets = model.get_labels() # Mask ignored label mask = targets != self._ignore_label outputs = outputs[mask] targets = targets[mask] outputs = SegmentationTracker.detach_tensor(outputs) targets = SegmentationTracker.detach_tensor(targets) if not torch.is_tensor(targets): targets = torch.from_numpy(targets) self._ap_meter.add(outputs, F.one_hot(targets, self._num_classes).bool()) outputs = self._convert(outputs) targets = self._convert(targets) if len(targets) == 0: return assert outputs.shape[0] == len(targets) self._confusion_matrix.count_predicted_batch(targets, np.argmax(outputs, 1)) self._acc = 100 * self._confusion_matrix.get_overall_accuracy() self._macc = 100 * self._confusion_matrix.get_mean_class_accuracy() self._miou = 100 * self._confusion_matrix.get_average_intersection_union( ) self._map = 100 * self._ap_meter.value().mean().item()