code: def get_eval_dataflow(name, shard=0, num_shards=1):
      
      roidbs = DetectionDataset().load_inference_roidbs(name)
  
      num_imgs = len(roidbs)
      img_per_shard = num_imgs // num_shards
      img_range = (shard * img_per_shard, (shard + 1) * img_per_shard if shard + 1 < num_shards else num_imgs)
  
      # no filter for training
      ds = DataFromListOfDict(roidbs[img_range[0]: img_range[1]], ['file_name', 'image_id'])
  
      def f(fname):
          im = cv2.imread(fname, cv2.IMREAD_COLOR)
          assert im is not None, fname
          return im
      ds = MapDataComponent(ds, f, 0)
      # Evaluation itself may be multi-threaded, therefore don't add prefetch here.
      return ds
docs: Args:
          name (str): name of the dataset to evaluate
          shard, num_shards: to get subset of evaluation data