code: def extract_feats_labels(self, data_list):
      img_feats = []
      pids = []
      for imgPath, pid in data_list:
          img = Image.open(os.path.join(self.root, imgPath)).convert(
              "L"
          )
          img = np.array(img)
          img = img[..., np.newaxis]
  
          img_feats.append(self.forward_db(self.get(img)).flatten())
          pids.append(pid)
  
      img_feats = np.array(img_feats).astype(np.float32)
      img_input_feats = (
          img_feats[:, 0 : img_feats.shape[1] // 2]
          + img_feats[:, img_feats.shape[1] // 2 :]
      )
      img_input_feats = img_input_feats / np.sqrt(
          np.sum(img_input_feats**2, -1, keepdims=True)
      )
  
      pids = np.array(pids)
  
      return img_input_feats, pids
  
file_path: insightface/recognition/idmmd/evaluate/eval_buaa_112.py
imports: import numpy
  import os, sys
  import argparse
  import torch
  from PIL import Image
  from network.lightcnn112 import LightCNN_29Layers
  from evaluate import evaluate2
label_desc: Use image node_id 4 for calling the Embedding obj's underlying member method code with example usage: obj.extract_feats_labels(data_list) and returns: img_input_feats,  pids