code: def parse_utk_data(metadata, image_paths, img_indices, img_features):
      utk_map = {}
      for key, val in metadata.items():
          path = f"manifold://ssl_framework/tree/datasets/utk_faces/images/{key}"
          gender = val["gender"].lower()
          age = get_utk_age_bucket(val["age"])
          skintone = val["race"]
          utk_map[path] = {
              "gender": gender,
              "age": age,
              "skintone": skintone,
              "gender_skintone": f"{gender}_{skintone}",
          }
      # now we filter further based on the image paths actually present in the data
      # and we enter the information about the prediction
      filtered_utk_map, output_features = {}, []
      for item in range(len(img_indices)):
          idx = img_indices[item]
          inp_img_path = image_paths[idx]
          filtered_utk_map[inp_img_path] = utk_map[inp_img_path]
          filtered_utk_map[inp_img_path].update(
              {"feature": img_features[item]}
          )
          output_features.append(img_features[item])
      output_features = np.vstack(output_features)
      print(
          f"Returning parsed data and features: {output_features.shape}"
      )
      return filtered_utk_map, output_features
  
file_path: vissl/projects/fairness_indicators/similarity_search/inference_casual_conversations.py
imports: import numpy
  import pandas
  import torch
  from vissl.utils.io import load_file
label_desc: Use image node_id 6 for calling a global function with example usage: parse_utk_data(metadata, image_paths, img_indices, img_features) and returns: filtered_utk_map,  output_features