def loss(self, mask_pred, mask_targets, labels): loss = dict() if self.class_agnostic: loss_mask = mask_cross_entropy(mask_pred, mask_targets, torch.zeros_like(labels)) else: loss_mask = mask_cross_entropy(mask_pred, mask_targets, labels) loss['loss_mask'] = loss_mask return loss
def loss(self, mask_pred, mask_targets, labels): loss = dict() if self.class_agnostic: loss_mask = mask_cross_entropy(mask_pred, mask_targets, torch.zeros_like(labels)) #loss_mask2 = mask_volume_loss(mask_pred, mask_targets, torch.zeros_like(labels)) else: loss_mask = mask_cross_entropy(mask_pred, mask_targets, labels) #loss_mask2 = mask_volume_loss(mask_pred, mask_targets, labels) * 100 # print("loss:", (loss_mask.item(), loss_mask2.item())) # loss['loss_mask'] = loss_mask + loss_mask2 loss['loss_mask'] = loss_mask return loss
def loss_aux(self, mask_pred, mask_targets, labels, alpha=0.25): loss = dict() mask_pred_level0 = mask_pred[0::4,:] mask_pred_level1 = mask_pred[1::4,:] mask_pred_level2 = mask_pred[2::4,:] mask_pred_level3 = mask_pred[3::4,:] if self.class_agnostic: loss_mask_level0 = mask_cross_entropy(mask_pred_level0, mask_targets, torch.zeros_like(labels)) loss_mask_level1 = mask_cross_entropy(mask_pred_level1, mask_targets, torch.zeros_like(labels)) loss_mask_level2 = mask_cross_entropy(mask_pred_level2, mask_targets, torch.zeros_like(labels)) loss_mask_level3 = mask_cross_entropy(mask_pred_level3, mask_targets, torch.zeros_like(labels)) else: loss_mask_level0 = mask_cross_entropy(mask_pred_level0, mask_targets, labels) loss_mask_level1 = mask_cross_entropy(mask_pred_level1, mask_targets, labels) loss_mask_level2 = mask_cross_entropy(mask_pred_level2, mask_targets, labels) loss_mask_level3 = mask_cross_entropy(mask_pred_level3, mask_targets, labels) loss['loss_mask_level0'] = loss_mask_level0 * alpha loss['loss_mask_level1'] = loss_mask_level1 * alpha loss['loss_mask_level2'] = loss_mask_level2 * alpha loss['loss_mask_level3'] = loss_mask_level3 * alpha return loss
def loss(self, mask_pred, mask_targets, iou_pred, iou_targets, labels): loss = dict() if self.class_agnostic: loss_mask = mask_cross_entropy(mask_pred, mask_targets, torch.zeros_like(labels)) iou_targets = self.mask_iou(mask_pred, mask_targets, torch.zeros_like(labels)) # use smooth L1 loss instead of L2 loss. # iou_loss = smooth_l1_loss(iou_pred, iou_targets, reduction='mean') else: loss_mask = mask_cross_entropy(mask_pred, mask_targets, labels) iou_targets = self.mask_iou(mask_pred, mask_targets, labels) # iou_loss = smooth_l1_loss() loss_iou = smooth_l1_loss(iou_pred, iou_targets, labels) loss['loss_mask'] = loss_mask loss['loss_maskiou'] = loss_iou return loss
def loss(self, mask_pred, mask_targets, labels): loss = dict() loss_mask = mask_cross_entropy(mask_pred, mask_targets, labels) loss['loss_mask'] = loss_mask return loss