code: def draw_proposal_recall(img, proposals, proposal_scores, gt_boxes):
      """
      Draw top3 proposals for each gt.
      Args:
          proposals: NPx4
          proposal_scores: NP
          gt_boxes: NG
      """
      box_ious = np_iou(gt_boxes, proposals)  # ng x np
      box_ious_argsort = np.argsort(-box_ious, axis=1)
      good_proposals_ind = box_ious_argsort[
          :, :3
      ]  # for each gt, find 3 best proposals
      good_proposals_ind = np.unique(good_proposals_ind.ravel())
  
      proposals = proposals[good_proposals_ind, :]
      tags = list(map(str, proposal_scores[good_proposals_ind]))
      img = viz.draw_boxes(img, proposals, tags)
      return img, good_proposals_ind
  
file_path: tensorpack/examples/FasterRCNN/viz.py
imports: import numpy
  from tensorpack.utils import viz
  from tensorpack.utils.palette import PALETTE_RGB
  from config import config
  from utils.np_box_ops import area
  from utils.np_box_ops import iou
  from common import polygons_to_mask
label_desc: Use image node_id 2 for calling a global function with example usage: draw_proposal_recall(img, proposals, proposal_scores, gt_boxes) and returns: img,  good_proposals_ind