code: def test_fast_eval_recall(self):
      # create dummy data
      fake_json_file = osp.join(self.tmp_dir.name, "fake_data.json")
      self._create_dummy_coco_json(fake_json_file)
      dummy_pred = self._create_dummy_results()
  
      # test default proposal nums
      coco_metric = CocoMetric(
          ann_file=fake_json_file, metric="proposal_fast"
      )
      coco_metric.dataset_meta = dict(classes=["car", "bicycle"])
      coco_metric.process(
          {},
          [
              dict(
                  pred_instances=dummy_pred,
                  img_id=0,
                  ori_shape=(640, 640),
              )
          ],
      )
      eval_results = coco_metric.evaluate(size=1)
      target = {
          "coco/AR@100": 1.0,
          "coco/AR@300": 1.0,
          "coco/AR@1000": 1.0,
      }
      self.assertDictEqual(eval_results, target)
  
      # test manually set proposal nums
      coco_metric = CocoMetric(
          ann_file=fake_json_file,
          metric="proposal_fast",
          proposal_nums=(2, 4),
      )
      coco_metric.dataset_meta = dict(classes=["car", "bicycle"])
      coco_metric.process(
          {},
          [
              dict(
                  pred_instances=dummy_pred,
                  img_id=0,
                  ori_shape=(640, 640),
              )
          ],
      )
      eval_results = coco_metric.evaluate(size=1)
      target = {"coco/AR@2": 0.5, "coco/AR@4": 1.0}
      self.assertDictEqual(eval_results, target)
  
imports: import os.path
  import tempfile
  from unittest import TestCase
  import numpy
  import pycocotools.mask
  import torch
  from mmengine.fileio import dump
  from mmdet.evaluation import CocoMetric
label_desc: Use image node_id 9 for calling the TestCocoMetric obj's underlying member method code with example usage: obj.test_fast_eval_recall() without return types