code: def _save_feature(
      self, file_name, full_features, feat_list, info_list
  ):
      file_base_name = os.path.basename(file_name)
      file_base_name = file_base_name.split(".")[0]
      full_feature_base_name = file_base_name + "_full.npy"
      feat_list_base_name = file_base_name + ".npy"
      info_list_base_name = file_base_name + "_info.npy"
      if self.args.visualize:
          np.save(
              os.path.join(
                  self.args.output_folder, full_feature_base_name
              ),
              full_features,
          )
      np.save(
          os.path.join(self.args.output_folder, feat_list_base_name),
          feat_list.cpu().numpy(),
      )
      np.save(
          os.path.join(self.args.output_folder, info_list_base_name),
          info_list,
      )
  
file_path: mmf/tools/scripts/features/frcnn/extract_features_frcnn.py
imports: import argparse
  import copy
  import logging
  import os
  import numpy
  import torch
  from tools.scripts.features.extraction_utils import chunks, get_image_files
  from tools.scripts.features.frcnn.frcnn_utils import Config
  from tools.scripts.features.frcnn.modeling_frcnn import GeneralizedRCNN
  from tools.scripts.features.frcnn.processing_image import Preprocess
label_desc: Use image node_id 5 for calling the FeatureExtractor obj's underlying member method code with example usage: obj._save_feature(file_name, full_features, feat_list, info_list) without return types