code: def decode_bbox_target(box_predictions, anchors):
      """
      Args:
          box_predictions: (..., 4), logits
          anchors: (..., 4), floatbox. Must have the same shape
  
      Returns:
          box_decoded: (..., 4), float32. With the same shape.
      """
      orig_shape = tf.shape(anchors)
      box_pred_txtytwth = tf.reshape(box_predictions, (-1, 2, 2))
      box_pred_txty, box_pred_twth = tf.split(
          box_pred_txtytwth, 2, axis=1
      )
      # each is (...)x1x2
      anchors_x1y1x2y2 = tf.reshape(anchors, (-1, 2, 2))
      anchors_x1y1, anchors_x2y2 = tf.split(anchors_x1y1x2y2, 2, axis=1)
  
      waha = anchors_x2y2 - anchors_x1y1
      xaya = (anchors_x2y2 + anchors_x1y1) * 0.5
  
      clip = np.log(config.PREPROC.MAX_SIZE / 16.0)
      wbhb = tf.exp(tf.minimum(box_pred_twth, clip)) * waha
      xbyb = box_pred_txty * waha + xaya
      x1y1 = xbyb - wbhb * 0.5
      x2y2 = xbyb + wbhb * 0.5  # (...)x1x2
      out = tf.concat([x1y1, x2y2], axis=-2)
      return tf.reshape(out, orig_shape)
  
file_path: tensorpack/examples/FasterRCNN/modeling/model_box.py
imports: import numpy
  import tensorflow
  from collections import namedtuple
  from tensorpack.tfutils.scope_utils import under_name_scope
  from config import config
label_desc: Use image node_id 2 for calling a global function with example usage: decode_bbox_target(box_predictions, anchors) and returns: tf