code: def get(self, img):
      ret = self.detector.detect_face(img, det_type=0)
      if ret is None:
          return None
      bbox, points = ret
      if bbox.shape[0] == 0:
          return None
      bbox = bbox[0, 0:4]
      points = points[0, :].reshape((2, 5)).T
      M = img_helper.estimate_trans_bbox(
          bbox, self.image_size[0], s=2.0
      )
      rimg = cv2.warpAffine(img, M, self.image_size, borderValue=0.0)
      img = cv2.cvtColor(rimg, cv2.COLOR_BGR2RGB)
      img = np.transpose(img, (2, 0, 1))  # 3*112*112, RGB
      input_blob = np.zeros(
          (1, 3, self.image_size[1], self.image_size[0]), dtype=np.uint8
      )
      input_blob[0] = img
      ta = datetime.datetime.now()
      data = mx.nd.array(input_blob)
      db = mx.io.DataBatch(data=(data,))
      self.model.forward(db, is_train=False)
      alabel = self.model.get_outputs()[-1].asnumpy()[0]
      tb = datetime.datetime.now()
      print("module time cost", (tb - ta).total_seconds())
      ret = np.zeros((alabel.shape[0], 2), dtype=np.float32)
      for i in range(alabel.shape[0]):
          a = cv2.resize(
              alabel[i], (self.image_size[1], self.image_size[0])
          )
          ind = np.unravel_index(np.argmax(a, axis=None), a.shape)
          # ret[i] = (ind[0], ind[1]) #h, w
          ret[i] = (ind[1], ind[0])  # w, h
      return ret, M
  
file_path: insightface/alignment/heatmap/test.py
imports: import argparse
  import cv2
  import sys
  import numpy
  import os
  import mxnet
  import datetime
  import img_helper
  from mtcnn_detector import MtcnnDetector
label_desc: Use image node_id 2 for calling the Handler obj's underlying member method code with example usage: obj.get(img) and returns: ret,  M, None, None