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))
Exemple #2
0
 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()
Exemple #3
0
 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))
Exemple #4
0
 def define_criterion(self, name):
     if name.lower == 'lovasz':
         self.criterion = Loss.Lovasz_Hinge(per_image=True)