code: def __getitem__(self, idx):
      sample_info = self.annotation_db[idx]
      sample_info = self.preprocess_sample_info(sample_info)
      current_sample = Sample()
  
      # breaking change from VQA2Dataset: load question_id
      current_sample.question_id = torch.tensor(
          sample_info["question_id"], dtype=torch.int
      )
  
      if isinstance(sample_info["image_id"], int):
          current_sample.image_id = str(sample_info["image_id"])
      else:
          current_sample.image_id = sample_info["image_id"]
      if self._use_features is True:
          features = self.features_db[idx]
          current_sample.update(features)
  
      current_sample = self.add_sample_details(
          sample_info, current_sample
      )
      current_sample = self.add_answer_info(sample_info, current_sample)
  
      # only the 'max_features' key is needed
      # pop other keys to minimize data loading overhead
      if hasattr(current_sample, "image_info_0"):
          for k in list(current_sample.image_info_0):
              if k != "max_features":
                  current_sample.image_info_0.pop(k)
      if hasattr(current_sample, "image_info_1"):
          for k in list(current_sample.image_info_1):
              if k != "max_features":
                  current_sample.image_info_1.pop(k)
  
      return current_sample
  
file_path: mmf/mmf/datasets/builders/textvqa/dataset.py
imports: import numpy
  import torch
  from mmf.common.sample import Sample
  from mmf.datasets.mmf_dataset import MMFDataset
  from mmf.utils.distributed import byte_tensor_to_object, object_to_byte_tensor
  from mmf.utils.text import word_tokenize
label_desc: Use image node_id 5 for calling the TextVQADataset obj's underlying member method code with example usage: obj.__getitem__(idx) and returns: current_sample