docstr: Transform the set of class-agnostic boxes into class-specific boxes
  by applying the predicted offsets (box_deltas)
  :param boxes: !important [N 4]
  :param box_deltas: [N, 4 * num_classes]
  :return: [N 4 * num_classes]
docstr_tok: ["Transform","the","set","of","class-agnostic","boxes","into","class-specific","boxes","by","applying","the","predicted","offsets","(","box_deltas",")",":","param","boxes",":","!","important","[","N","4","]",":","param","box_deltas",":","[","N",",","4","*","num_classes","]",":","return",":","[","N","4","*","num_classes","]"]
code: def bbox_pred(boxes, box_deltas):
      """
      Transform the set of class-agnostic boxes into class-specific boxes
      by applying the predicted offsets (box_deltas)
      :param boxes: !important [N 4]
      :param box_deltas: [N, 4 * num_classes]
      :return: [N 4 * num_classes]
      """
      if boxes.shape[0] == 0:
          return np.zeros((0, box_deltas.shape[1]))
  
      boxes = boxes.astype(np.float, copy=False)
      widths = boxes[:, 2] - boxes[:, 0] + 1.0
      heights = boxes[:, 3] - boxes[:, 1] + 1.0
      ctr_x = boxes[:, 0] + 0.5 * (widths - 1.0)
      ctr_y = boxes[:, 1] + 0.5 * (heights - 1.0)
  
      dx = box_deltas[:, 0:1]
      dy = box_deltas[:, 1:2]
      dw = box_deltas[:, 2:3]
      dh = box_deltas[:, 3:4]
  
      pred_ctr_x = dx * widths[:, np.newaxis] + ctr_x[:, np.newaxis]
      pred_ctr_y = dy * heights[:, np.newaxis] + ctr_y[:, np.newaxis]
      pred_w = np.exp(dw) * widths[:, np.newaxis]
      pred_h = np.exp(dh) * heights[:, np.newaxis]
  
      pred_boxes = np.zeros(box_deltas.shape)
      # x1
      pred_boxes[:, 0:1] = pred_ctr_x - 0.5 * (pred_w - 1.0)
      # y1
      pred_boxes[:, 1:2] = pred_ctr_y - 0.5 * (pred_h - 1.0)
      # x2
      pred_boxes[:, 2:3] = pred_ctr_x + 0.5 * (pred_w - 1.0)
      # y2
      pred_boxes[:, 3:4] = pred_ctr_y + 0.5 * (pred_h - 1.0)
  
      if box_deltas.shape[1] > 4:
          pred_boxes[:, 4:] = box_deltas[:, 4:]
  
      return pred_boxes
  
imports: from __future__ import print_function
  import sys
  import os
  import datetime
  import time
  import numpy
  import mxnet
  from mxnet import ndarray
  import cv2
  from rcnn.logger import logger
  from rcnn.processing.bbox_transform import clip_boxes
  from rcnn.processing.generate_anchor import generate_anchors_fpn, anchors_plane
  from rcnn.processing.nms import gpu_nms_wrapper, cpu_nms_wrapper
  from rcnn.processing.bbox_transform import bbox_overlaps
label_desc: Use image node_id 9 for calling the RetinaFace obj's underlying member method code with example usage: obj.bbox_pred(boxes, box_deltas) and returns: pred_boxes, np