class_docstr: 24 keypoints 3D dataset for pose estimation. 
  
  each item is a list of images
  
  The dataset loads raw features and apply specified transforms
  to return a dict containing the image tensors and other information.
  
  Args:
      dataset_dir (str): Root path to the dataset.
      image_dir (str): Path to a directory where images are held.
class_docstr_tok: ["24","keypoints","3D","dataset","for","pose","estimation",".","each","item","is","a","list","of","images","The","dataset","loads","raw","features","and","apply","specified","transforms","to","return","a","dict","containing","the","image","tensors","and","other","information",".","Args",":","dataset_dir","(","str",")",":","Root","path","to","the","dataset",".","image_dir","(","str",")",":","Path","to","a","directory","where","images","are","held","."]
code: def __getitem__(self, index):  # 拿一个连续的序列
      inds = self.mf_inds[
          index
      ]  # 如[568, 569, 570, 571, 572, 573]，长度为num_frames
  
      images = self.data_labels["images"]  # all images
      annots = self.data_labels["annotations"]  # all annots
  
      act = self.data_labels["act_inds"][inds[0]]  # 动作名（文件夹名）
  
      kps3d_list = []
      kps3d_vis_list = []
      names = []
  
      h, w = 0, 0
      for ind in inds:  # one image
          height = float(images[ind]["height"])
          width = float(images[ind]["width"])
          name = images[ind]["file_name"]  # 图像名称，带有后缀
  
          kps3d_name = name.split(".")[0] + ".obj"
          kps3d_path = os.path.join(
              self.dataset_dir, act, self.p3d_dir, kps3d_name
          )
  
          joints, joints_vis = self.kps3d_process(kps3d_path)
          joints_vis = np.array(joints_vis, dtype=np.float32)
  
          kps3d_list.append(joints)
          kps3d_vis_list.append(joints_vis)
          names.append(name)
  
      kps3d = np.array(
          kps3d_list
      )  # (6, 24, 3),(num_frames, joints_num, 3)
      kps3d_vis = np.array(kps3d_vis_list)
  
      # read image
      imgs = []
      for name in names:
          img_path = os.path.join(
              self.dataset_dir, act, self.image_dir, name
          )
  
          image = cv2.imread(
              img_path, cv2.IMREAD_COLOR | cv2.IMREAD_IGNORE_ORIENTATION
          )
          image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
  
          imgs.append(np.expand_dims(image, axis=0))
  
      imgs = np.concatenate(imgs, axis=0)
      imgs = imgs.astype(
          np.float32
      )  # (6, 1080, 1920, 3),(num_frames, h, w, c)
  
      # attention: 此时图像和标注是镜像的
      records = {
          "kps3d": kps3d,
          "kps3d_vis": kps3d_vis,
          "image": imgs,
          "act": act,
          "names": names,
          "im_id": index,
      }
  
      return self.transform(records)
  
imports: import os
  import cv2
  import numpy
  import json
  import copy
  import pycocotools
  from pycocotools.coco import COCO
  from .dataset import DetDataset
  from ppdet.core.workspace import register, serializable
  from paddle.io import Dataset
label_desc: Use image node_id 4 for calling the Keypoint3DMultiFramesDataset obj's underlying member method code with example usage: obj.__getitem__(index) and returns: self