class_docstr: Utility class to track recall@k for various k, split by categories.
class_docstr_tok: ["Utility","class","to","track","recall","@","k","for","various","k",",","split","by","categories","."]
docstr: Parameters:
     - topk : tuple of ints corresponding to the recalls being
     tracked (eg, recall@1, recall@10, ...)
docstr_tok: ["Parameters",":","-","topk",":","tuple","of","ints","corresponding","to","the","recalls","being","tracked","(","eg",",","recall","@","1",",","recall","@","10",",","...",")"]
code: def __init__(self, topk: Sequence[int]):
      """
      Parameters:
         - topk : tuple of ints corresponding to the recalls being
         tracked (eg, recall@1, recall@10, ...)
      """
  
      self.total_byk_bycat: Dict[int, Dict[str, int]] = {
          k: defaultdict(int) for k in topk
      }
      self.positives_byk_bycat: Dict[int, Dict[str, int]] = {
          k: defaultdict(int) for k in topk
      }
  
file_path: mmdetection/mmdet/evaluation/metrics/flickr30k_metric.py
imports: from collections import defaultdict
  from typing import Dict, List, Optional, Sequence
  import numpy
  from mmengine.evaluator import BaseMetric
  from mmengine.logging import MMLogger
  from mmdet.registry import METRICS
  from ..functional import bbox_overlaps
label_desc: Use image node_id 1 to create a new RecallTracker object  with example: obj = RecallTracker(topk)