code: def _init_reader(self):
      # Currently all lmdb features are with ndim == 2
      if self.base_path.endswith(".lmdb"):
          self.feat_reader = LMDBFeatureReader(
              self.max_features, self.base_path
          )
      elif self.ndim == 2 or self.ndim == 0:
          if self.max_features is None:
              self.feat_reader = FasterRCNNFeatureReader()
          else:
              # TODO: Fix later when we move to proper standardized features
              # if isinstance(self.image_feature.item(0), dict):
              #     self.feat_reader = \
              #         PaddedFeatureRCNNWithBBoxesFeatureReader(
              #             self.max_features
              #         )
              # else:
              self.feat_reader = PaddedFasterRCNNFeatureReader(
                  self.max_features
              )
      elif self.ndim == 3 and not self.depth_first:
          self.feat_reader = Dim3FeatureReader()
      elif self.ndim == 4 and self.depth_first:
          self.feat_reader = CHWFeatureReader(self.max_features)
      elif self.ndim == 4 and not self.depth_first:
          self.feat_reader = HWCFeatureReader()
      else:
          raise TypeError("unknown image feature format")
  
imports: import math
  import os
  import pickle
  from typing import Any
  import lmdb
  import numpy
  import torch
  from mmf.utils.file_io import PathManager
label_desc: Use image node_id 2 for calling the FeatureReader obj's underlying member method code with example usage: obj._init_reader() without return types