def define_criterion(self, name): if name.lower() == 'bce+dice': self.criterion = Loss.BCE_Dice() elif name.lower() == 'dice': self.criterion = Loss.DiceLoss() elif name.lower() == 'bce': self.criterion = nn.BCEWithLogitsLoss() elif name.lower() == 'robustfocal': self.criterion = Loss.RobustFocalLoss2d() elif name.lower() == 'lovasz-hinge' or name.lower() == 'lovasz': self.criterion = Loss.Lovasz_Hinge(per_image=True) elif name.lower() == 'bce+lovasz': self.criterion = Loss.BCE_Lovasz(per_image=True) else: raise NotImplementedError( 'Loss {} is not implemented'.format(name))
def __init__(self, lr=0.005, fold=None, val_mode='max', criterion_name='lovasz', comment=''): super(SegmentationNetwork, self).__init__() self.lr = lr self.fold = fold self.scheduler = None self.best_model_path = None self.epoch = 0 self.val_mode = val_mode if criterion_name == 'lovasz': self.criterion = Loss.Lovasz_Hinge(per_image=True) if self.val_mode == 'max': self.best_metric = -np.inf elif self.val_mode == 'min': self.best_metric = np.inf self.comment = comment self.train_log = dict(loss=[], iou=[], mAP=[]) self.val_log = dict(loss=[], iou=[], mAP=[]) self.create_save_folder()
def define_criterion(self, name): if name.lower() == 'bce+dice': self.criterion = Loss.BCE_Dice() elif name.lower() == 'dice': self.criterion = Loss.DiceLoss() elif name.lower() == 'bce': # self.criterion = nn.BCEWithLogitsLoss() # self.criterion = nn.CrossEntropyLoss(size_average=False, reduction='sum') self.criterion = nn.CrossEntropyLoss() # self.criterion = Loss.CE_SOFT() elif name.lower() == 'robustfocal': self.criterion = Loss.RobustFocalLoss2d() elif name.lower() == 'lovasz-hinge' or name.lower() == 'lovasz': self.criterion = Loss.Lovasz_Hinge(per_image=True) elif name.lower() == 'bce+lovasz': self.criterion = Loss.BCE_Lovasz(per_image=True) else: raise NotImplementedError( 'Loss {} is not implemented'.format(name))
def define_criterion(self, name): if name.lower == 'lovasz': self.criterion = Loss.Lovasz_Hinge(per_image=True)