docs: def calc_iou_tensor(box1, box2):
      """ Calculation of IoU based on two boxes tensor,
          Reference to https://github.com/kuangliu/pytorch-ssd
          input:
              box1 (N, 4)
              box2 (M, 4)
          output:
              IoU (N, M)
      """
      N = box1.size(0)
      M = box2.size(0)
  
      be1 = box1.unsqueeze(1).expand(-1, M, -1)
      be2 = box2.unsqueeze(0).expand(N, -1, -1)
  
      # Left Top & Right Bottom
      lt = torch.max(be1[:, :, :2], be2[:, :, :2])
      # mask1 = (be1[:,:, 0] < be2[:,:, 0]) ^ (be1[:,:, 1] < be2[:,:, 1])
      # mask1 = ~mask1
      rb = torch.min(be1[:, :, 2:], be2[:, :, 2:])
      # mask2 = (be1[:,:, 2] < be2[:,:, 2]) ^ (be1[:,:, 3] < be2[:,:, 3])
      # mask2 = ~mask2
  
      delta = rb - lt
      delta[delta < 0] = 0
      intersect = delta[:, :, 0] * delta[:, :, 1]
      # *mask1.float()*mask2.float()
  
      delta1 = be1[:, :, 2:] - be1[:, :, :2]
      area1 = delta1[:, :, 0] * delta1[:, :, 1]
      delta2 = be2[:, :, 2:] - be2[:, :, :2]
      area2 = delta2[:, :, 0] * delta2[:, :, 1]
  
      iou = intersect / (area1 + area2 - intersect)
      return iou