class_docstr: Inspired by https://github.com/kuangliu/pytorch-src
  Transform between (bboxes, lables) <-> SSD output
  
  dboxes: default boxes in size 8732 x 4,
      encoder: input ltrb format, output xywh format
      decoder: input xywh format, output ltrb format
  
  encode:
      input  : bboxes_in (Tensor nboxes x 4), labels_in (Tensor nboxes)
      output : bboxes_out (Tensor 8732 x 4), labels_out (Tensor 8732)
      criteria : IoU threshold of bboexes
  
  decode:
      input  : bboxes_in (Tensor 8732 x 4), scores_in (Tensor 8732 x nitems)
      output : bboxes_out (Tensor nboxes x 4), labels_out (Tensor nboxes)
      criteria : IoU threshold of bboexes
      max_output : maximum number of output bboxes
code: def decode_batch(
      self, bboxes_in, scores_in, criteria=0.45, max_output=200
  ):
      # 将box格式从xywh转换回ltrb（方便后面非极大值抑制时求iou）, 将预测目标score通过softmax处理
      bboxes, probs = self.scale_back_batch(bboxes_in, scores_in)
  
      outputs = []
      # 遍历一个batch中的每张image数据
      for bbox, prob in zip(bboxes.split(1, 0), probs.split(1, 0)):
          bbox = bbox.squeeze(0)
          prob = prob.squeeze(0)
          outputs.append(
              self.decode_single_new(bbox, prob, criteria, max_output)
          )
      return outputs
  
imports: from math import sqrt
  import itertools
  import torch
  import torch.nn.functional
  from torch.jit.annotations import Tuple, List
  from torch import nn, Tensor
  import numpy
label_desc: Use image node_id 4 for calling the Encoder obj's underlying member method code with example usage: obj.decode_batch(bboxes_in, scores_in, criteria, max_output) and returns: outputs