def _after_epoch(self) -> None: for i in range(self.num_classes): self.total_seen[i] = dist.allreduce(self.total_seen[i], reduction='sum') self.total_correct[i] = dist.allreduce(self.total_correct[i], reduction='sum') self.total_positive[i] = dist.allreduce(self.total_positive[i], reduction='sum') ious = [] for i in range(self.num_classes): if self.total_seen[i] == 0: ious.append(1) else: cur_iou = self.total_correct[i] / (self.total_seen[i] + self.total_positive[i] - self.total_correct[i]) ious.append(cur_iou) miou = np.mean(ious) if hasattr(self, 'trainer') and hasattr(self.trainer, 'summary'): self.trainer.summary.add_scalar(self.name, miou * 100) else: print(ious) print(miou)
def _after_epoch(self) -> None: self.size = dist.allreduce(self.size, reduction='sum') self.errors = dist.allreduce(self.errors, reduction='sum') self.trainer.summary.add_scalar(self.name, self.errors / self.size)