class_docstr: Generalized Intersection over Union, see https://arxiv.org/abs/1902.09630
  Args:
      loss_weight (float): giou loss weight, default as 1
      eps (float): epsilon to avoid divide by zero, default as 1e-10
      reduction (string): Options are "none", "mean" and "sum". default as none
docstr: calculate the iou of box1 and box2
  Args:
      box1 (Tensor): box1 with the shape (..., 4)
      box2 (Tensor): box1 with the shape (..., 4)
      eps (float): epsilon to avoid divide by zero
  Return:
      iou (Tensor): iou of box1 and box2
      overlap (Tensor): overlap of box1 and box2
      union (Tensor): union of box1 and box2
docstr_tok: ["calculate","the","iou","of","box1","and","box2","Args",":","box1","(","Tensor",")",":","box1","with","the","shape","(","...",",","4",")","box2","(","Tensor",")",":","box1","with","the","shape","(","...",",","4",")","eps","(","float",")",":","epsilon","to","avoid","divide","by","zero","Return",":","iou","(","Tensor",")",":","iou","of","box1","and","box2","overlap","(","Tensor",")",":","overlap","of","box1","and","box2","union","(","Tensor",")",":","union","of","box1","and","box2"]
code: def bbox_overlap(self, box1, box2, eps=1e-10):
      """calculate the iou of box1 and box2
      Args:
          box1 (Tensor): box1 with the shape (..., 4)
          box2 (Tensor): box1 with the shape (..., 4)
          eps (float): epsilon to avoid divide by zero
      Return:
          iou (Tensor): iou of box1 and box2
          overlap (Tensor): overlap of box1 and box2
          union (Tensor): union of box1 and box2
      """
      x1, y1, x2, y2 = box1
      x1g, y1g, x2g, y2g = box2
  
      xkis1 = paddle.maximum(x1, x1g)
      ykis1 = paddle.maximum(y1, y1g)
      xkis2 = paddle.minimum(x2, x2g)
      ykis2 = paddle.minimum(y2, y2g)
      w_inter = (xkis2 - xkis1).clip(0)
      h_inter = (ykis2 - ykis1).clip(0)
      overlap = w_inter * h_inter
  
      area1 = (x2 - x1) * (y2 - y1)
      area2 = (x2g - x1g) * (y2g - y1g)
      union = area1 + area2 - overlap + eps
      iou = overlap / union
  
      return iou, overlap, union
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import numpy
  import math
  import paddle
  from ppdet.core.workspace import register, serializable
  from ..bbox_utils import bbox_iou
label_desc: Use image node_id 2 for calling the GIoULoss obj's underlying member method code with example usage: obj.bbox_overlap(box1, box2, eps) and returns: iou,  overlap,  union