docs: def boxlist_iou(boxlist1, boxlist2):
      """Compute the intersection over union of two set of boxes.
      The box order must be (xmin, ymin, xmax, ymax).
  
      Arguments:
        box1: (BoxList) bounding boxes, sized [N,4].
        box2: (BoxList) bounding boxes, sized [M,4].
  
      Returns:
        (tensor) iou, sized [N,M].
  
      Reference:
        https://github.com/chainer/chainercv/blob/master/chainercv/utils/bbox/bbox_iou.py
      """
      if boxlist1.size != boxlist2.size:
          raise RuntimeError(
                  "boxlists should have same image size, got {}, {}".format(boxlist1, boxlist2))
  
      N = len(boxlist1)
      M = len(boxlist2)
  
      area1 = boxlist1.area()
      area2 = boxlist2.area()
  
      box1, box2 = boxlist1.bbox, boxlist2.bbox
  
      lt = torch.max(box1[:, None, :2], box2[:, :2])  # [N,M,2]
      rb = torch.min(box1[:, None, 2:], box2[:, 2:])  # [N,M,2]
  
      TO_REMOVE = 1
  
      wh = (rb - lt + TO_REMOVE).clamp(min=0)  # [N,M,2]
      inter = wh[:, :, 0] * wh[:, :, 1]  # [N,M]
  
      iou = inter / (area1[:, None] + area2 - inter)
      return iou