class_docstr: SigLoss.
  
      This follows `AdaBins <https://arxiv.org/abs/2011.14141>`_.
  
  Args:
      valid_mask (bool): Whether filter invalid gt (gt > 0). Default: True.
      loss_weight (float): Weight of the loss. Default: 1.0.
      max_depth (int): When filtering invalid gt, set a max threshold. Default: None.
      warm_up (bool): A simple warm up stage to help convergence. Default: False.
      warm_iter (int): The number of warm up stage. Default: 100.
code: def sigloss(self, input, target):
      if self.valid_mask:
          valid_mask = target > 0
          if self.max_depth is not None:
              valid_mask = torch.logical_and(
                  target > 0, target <= self.max_depth
              )
          input = input[valid_mask]
          target = target[valid_mask]
  
      if self.warm_up:
          if self.warm_up_counter < self.warm_iter:
              g = torch.log(input + self.eps) - torch.log(
                  target + self.eps
              )
              g = 0.15 * torch.pow(torch.mean(g), 2)
              self.warm_up_counter += 1
              return torch.sqrt(g)
  
      g = torch.log(input + self.eps) - torch.log(target + self.eps)
      Dg = torch.var(g) + 0.15 * torch.pow(torch.mean(g), 2)
      return torch.sqrt(Dg)
  
file_path: dinov2/dinov2/eval/depth/models/losses/sigloss.py
imports: import torch
  import torch.nn
  from ...models.builder import LOSSES
label_desc: Use image node_id 2 for calling the SigLoss obj's underlying member method code with example usage: obj.sigloss(input, target) and returns: torch, torch