class_docstr: Args:
      packed_annotations: object that contains packed annotations
      j_valid (:obj: `torch.Tensor`): uint8 tensor of size M containing
          0 for points to be discarded and 1 for points to be selected
      y_lo (:obj: `torch.Tensor`): int tensor of indices of upper values
          in z_est for each point
      y_hi (:obj: `torch.Tensor`): int tensor of indices of lower values
          in z_est for each point
      x_lo (:obj: `torch.Tensor`): int tensor of indices of left values
          in z_est for each point
      x_hi (:obj: `torch.Tensor`): int tensor of indices of right values
          in z_est for each point
      w_ylo_xlo (:obj: `torch.Tensor`): float tensor of size M;
          contains upper-left value weight for each point
      w_ylo_xhi (:obj: `torch.Tensor`): float tensor of size M;
          contains upper-right value weight for each point
      w_yhi_xlo (:obj: `torch.Tensor`): float tensor of size M;
          contains lower-left value weight for each point
      w_yhi_xhi (:obj: `torch.Tensor`): float tensor of size M;
          contains lower-right value weight for each point
class_docstr_tok: ["Args",":","packed_annotations",":","object","that","contains","packed","annotations","j_valid","(",":","obj",":","`","torch.Tensor","`",")",":","uint8","tensor","of","size","M","containing","0","for","points","to","be","discarded","and","1","for","points","to","be","selected","y_lo","(",":","obj",":","`","torch.Tensor","`",")",":","int","tensor","of","indices","of","upper","values","in","z_est","for","each","point","y_hi","(",":","obj",":","`","torch.Tensor","`",")",":","int","tensor","of","indices","of","lower","values","in","z_est","for","each","point","x_lo","(",":","obj",":","`","torch.Tensor","`",")",":","int","tensor","of","indices","of","left","values","in","z_est","for","each","point","x_hi","(",":","obj",":","`","torch.Tensor","`",")",":","int","tensor","of","indices","of","right","values","in","z_est","for","each","point","w_ylo_xlo","(",":","obj",":","`","torch.Tensor","`",")",":","float","tensor","of","size","M",";","contains","upper-left","value","weight","for","each","point","w_ylo_xhi","(",":","obj",":","`","torch.Tensor","`",")",":","float","tensor","of","size","M",";","contains","upper-right","value","weight","for","each","point","w_yhi_xlo","(",":","obj",":","`","torch.Tensor","`",")",":","float","tensor","of","size","M",";","contains","lower-left","value","weight","for","each","point","w_yhi_xhi","(",":","obj",":","`","torch.Tensor","`",")",":","float","tensor","of","size","M",";","contains","lower-right","value","weight","for","each","point"]
code: def __init__(
      self,
      packed_annotations: Any,
      j_valid: torch.Tensor,
      y_lo: torch.Tensor,
      y_hi: torch.Tensor,
      x_lo: torch.Tensor,
      x_hi: torch.Tensor,
      w_ylo_xlo: torch.Tensor,
      w_ylo_xhi: torch.Tensor,
      w_yhi_xlo: torch.Tensor,
      w_yhi_xhi: torch.Tensor,
  ):
      for k, v in locals().items():
          if k != "self":
              setattr(self, k, v)
  
imports: from abc import ABC, abstractmethod
  from dataclasses import dataclass
  from typing import Any, Dict, List, Optional, Tuple
  import torch
  from torch.nn import functional
  from detectron2.structures import BoxMode, Instances
  from densepose import DensePoseDataRelative
label_desc: Use image node_id 1 to create a new BilinearInterpolationHelper object  with example: obj = BilinearInterpolationHelper(packed_annotations, j_valid, y_lo, y_hi, x_lo, x_hi, w_ylo_xlo, w_ylo_xhi, w_yhi_xlo, w_yhi_xhi)