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
      }
  
imports: import xml.etree.ElementTree
  from collections import defaultdict
  from pathlib import Path
  from typing import Any, Dict, List, Optional, Sequence, Tuple, Union
  import numpy
  from prettytable import PrettyTable
  from tqdm import tqdm
  import json
  import os
  import re
label_desc: Use image node_id 1 to create a new RecallTracker object  with example: obj = RecallTracker(topk)