code: def __init__(
      self,
      num_joints,
      num_xyz=3,
      num_feats=5,
      num_channels=1024,
      num_res_blocks=2,
      dropout=0.25,
      bn_track=True,
  ):
      super(Lifter, self).__init__()
      input_size = num_joints * num_feats
      self.num_xyz = num_xyz
      self.num_joints = num_joints
      self.num_res_blocks = num_res_blocks
      self.pre = nn.Sequential(
          nn.Linear(input_size, num_channels),
          nn.BatchNorm1d(num_channels, track_running_stats=bn_track),
          nn.ReLU(inplace=True),
          nn.Dropout(dropout),
      )
      self.blocks, self.branches = nn.ModuleList(), nn.ModuleList()
      for _ in range(num_res_blocks):
          self.blocks.append(
              ResBlock(
                  num_channels,
                  input_size,
                  dropout=dropout,
                  bn_track=bn_track,
                  use_spectral_norm=False,
              )
          )
  
      for _ in range(num_xyz):
          self.branches.append(
              Branch(
                  num_channels,
                  input_size,
                  num_joints,
                  dropout=dropout,
                  bn_track=bn_track,
              )
          )
  
file_path: insightface/body/human_pose/ambiguity_aware/lib/models/lifter.py
imports: import torch
  import torch.nn
  from lib.models.building_blocks import Branch, ResBlock
  from lib.utils.misc import init_weights
label_desc: Use image node_id 1 to create a new Lifter object from inherited base classes: nn with example: obj = Lifter(num_joints, num_xyz, num_feats, num_channels, num_res_blocks, dropout, bn_track)