code: def __init__(self, cfg):
      super(PoseModel, self).__init__()
      num_joints = cfg.DATA.NUM_JOINTS
      dropout = cfg.NETWORK.DROPOUT
      bn_track = cfg.NETWORK.BN_TRACK
      num_channels = cfg.NETWORK.NUM_CHANNELS
      lifter_res_blocks = cfg.NETWORK.LIFTER_RES_BLOCKS
      depth_estimator_res_blocks = (
          cfg.NETWORK.DEPTH_ESTIMATOR_RES_BLOCKS
      )
      self.is_15joints = num_joints == 15
      self.num_joints = num_joints
      self.use_scaler = cfg.TRAIN.USE_SCALER
      self.use_rotater = cfg.TRAIN.USE_ROTATER
      self.c = cfg.TRAIN.CAMERA_SKELETON_DISTANCE
      self.use_new_rot = cfg.TRAIN.USE_NEW_ROT
      self.bound_azim = cfg.TRAIN.BOUND_AZIM
      self.bound_elev = cfg.TRAIN.BOUND_ELEV
      self.num_frames = cfg.DATA.NUM_FRAMES
      self.frame_interval = cfg.DATA.FRAME_INTERVAL
      self.multi_new_temp = cfg.TRAIN.MULTI_NEW_TEMP
      self.use_simple_model = cfg.NETWORK.USE_SIMPLE_MODEL
  
      if self.use_simple_model:
          self.lifter_before = LinearModelBefore()
          self.lifter_after = LinearModelAfter()
      else:
          self.lifter_before = get_lifter_before(
              num_joints,
              num_feats=2,
              num_channels=num_channels,
              num_res_blocks=lifter_res_blocks,
              bn_track=bn_track,
              dropout=dropout,
          )
          self.lifter_after = get_lifter_after(
              num_joints,
              num_feats=2,
              num_xyz=1,
              num_channels=num_channels,
              is_generic_baseline=cfg.TRAIN.GENERIC_BASELINE,
          )
      self.is_euler = cfg.NETWORK.ROTATER_PRE_EULER
      self.learn_symmetry = cfg.TRAIN.LEARN_SYMMETRY
      self.scaler_input_size = cfg.NETWORK.SCALER_INPUT_SIZE
      self.is_mpi = cfg.DATA.DATASET_NAME == "mpi"
      self.is_surreal = cfg.DATA.DATASET_NAME == "surreal"
      self.is_generic_baseline = cfg.TRAIN.GENERIC_BASELINE
      self.scale_on_3d = cfg.TRAIN.SCALE_ON_3D
      if self.use_scaler:
          self.scaler = get_scaler(cfg)
      if self.use_rotater:
          self.rotater = get_rotater(cfg)
          self.rotate = rotate if self.is_euler else rotate2
  
imports: import torch
  import torch.nn
  import numpy
  import pickle
  from lib.utils.misc import init_weights, load_pickle
  from lib.utils.utils import Transform3D, transform_3d, transform_3d_v2
  from lib.models.building_blocks import ResBlock
  from lib.models.scaler import get_scaler
  from lib.models.rotater import get_rotater
  from lib.models.lifter import get_lifter_before, get_lifter_after
  from lib.models.simple_model import LinearModelBefore, LinearModelAfter, Linear
  from lib.utils.utils import rotate, rotate2
label_desc: Use image node_id 1 to create a new PoseModel object from inherited base classes: nn with example: obj = PoseModel(cfg)