code: def batch_detect(net, img_batch, target_size=128, device="cuda"):
      """
      Inputs:
          - net: BlazeFace model
          - img_batch: a numpy array or tensor of shape (Batch size, Channels, Height, Width)
          - target_size: target size of the input image
      Outputs:
          - list of 2-dim numpy arrays with shape (faces_on_this_image, 5): x1, y1, x2, y2, confidence
            (x1, y1) - top left corner, (x2, y2) - bottom right corner
      """
      B, C, H, W = img_batch.shape
      orig_size = min(H, W)
  
      if isinstance(img_batch, torch.Tensor):
          img_batch = img_batch.cpu().numpy()
  
      img_batch = img_batch.transpose((0, 2, 3, 1))
  
      imgs, (xshift, yshift) = resize_and_crop_batch(
          img_batch, target_size
      )
      preds = net.predict_on_batch(imgs)
      bboxlists = []
      for pred in preds:
          shift = np.array([xshift, yshift] * 2)
          scores = pred[:, -1:]
          locs = np.concatenate(
              (pred[:, 1:2], pred[:, 0:1], pred[:, 3:4], pred[:, 2:3]),
              axis=1,
          )
          bboxlists.append(
              np.concatenate((locs * orig_size + shift, scores), axis=1)
          )
  
      return bboxlists
  
file_path: face-alignment/face_alignment/detection/blazeface/detect.py
imports: import torch
  import torch.nn.functional
  import cv2
  import numpy
  from .utils import *
label_desc: Use image node_id 2 for calling a global function with example usage: batch_detect(net, img_batch, target_size, device) and returns: bboxlists