Example #1
0
def bce_dice_with_ssim(mask_tuple, depth_tuple):
    mask_loss = (dice_loss(mask_tuple[0], mask_tuple[1]) +
                 LocalBCELoss(mask_tuple[0], mask_tuple[1])) / 2
    depth_loss = ssim(depth_tuple[0], depth_tuple[1], 11, reduction='mean')
    #torch.sqrt(nn.MSELoss()(depth_tuple[0], depth_tuple[1]))
    #ssim(depth_tuple[0], depth_tuple[1], 11)
    return mask_loss, depth_loss
Example #2
0
def bce_with_rmse_ssim(mask_tuple, depth_tuple):
    mask_loss = LocalBCELoss(mask_tuple[0], mask_tuple[1])
    depth_loss = (1 - ssim(
        depth_tuple[0], depth_tuple[1], 11, reduction='mean')) + torch.sqrt(
            nn.MSELoss()(depth_tuple[0], depth_tuple[1]))
    #torch.sqrt(nn.MSELoss()(depth_tuple[0], depth_tuple[1]))
    #ssim(depth_tuple[0], depth_tuple[1], 11)
    return mask_loss, depth_loss
Example #3
0
def bce_dice_with_rmse_ssim(mask_tuple, depth_tuple):
    mask_loss = (dice_loss(mask_tuple[0], mask_tuple[1]) +
                 LocalBCELoss(mask_tuple[0], mask_tuple[1])) / 2
    depth_loss = (torch.sqrt(nn.MSELoss()(depth_tuple[0], depth_tuple[1])) +
                  ssim(depth_tuple[0], depth_tuple[1], 11)) / 2
    #torch.sqrt(nn.MSELoss()(depth_tuple[0], depth_tuple[1]))
    #ssim(depth_tuple[0], depth_tuple[1], 11)
    return mask_loss, depth_loss
Example #4
0
     print("[%d,%d] Loss:%.4f, PSNR: %.4f, SSIM: %.4f" %
           (epoch + 1, i + 1, loss.item(), psnr_val, ssim_val))
     #3. Log the scalar values
     writer.add_scalar('loss', loss.item(), step)
     step += 1
 ''' validation '''
 psnr_val = 0.
 ssim_val = 0.
 with torch.no_grad():
     net.eval()
     for i, (lr, guide, gt) in enumerate(loader['validation']):
         lr, guide, gt = lr.cuda(), guide.cuda(), gt.cuda()
         lr = F.interpolate(lr, size=guide.shape[-2:])
         imgf = torch.clamp(net(lr, guide), 0., 1.)
         psnr_val += psnr_loss(imgf, gt, 1.)
         ssim_val += ssim(imgf, gt, 5, 'mean', 1.)
     psnr_val = float(psnr_val / loader['validation'].__len__())
     ssim_val = 1 - 2 * float(ssim_val / loader['validation'].__len__())
 writer.add_scalar('PSNR on validation data', psnr_val, epoch)
 writer.add_scalar('SSIM on validation data', ssim_val, epoch)
 ''' decay the learning rate '''
 #    scheduler.step()
 ''' save model '''
 if best_psnr_val < psnr_val:
     best_psnr_val = psnr_val
     torch.save(net.state_dict(), os.path.join(save_path, 'best_net.pth'))
 torch.save(
     {
         'net': net.state_dict(),
         'optimizer': optimizer.state_dict(),
         'epoch': epoch
Example #5
0
def LocalSSIMLoss(input, target, reduction='mean'):
    return ssim(input, target, 11, reduction=reduction)
Example #6
0
def joint_ssim_loss(mask_tuple, depth_tuple):
    mask_ssim_loss = ssim(mask_tuple[0], mask_tuple[1], 11)
    depth_ssim_loss = ssim(depth_tuple[0], depth_tuple[1], 11)
    return (mask_ssim_loss + depth_ssim_loss) / 2