class_docstr: Allows to perform MTCNN Detection ->
      a) Detection of faces (with the confidence probability)
      b) Detection of keypoints (left eye, right eye, nose, mouth_left, mouth_right)
class_docstr_tok: ["Allows","to","perform","MTCNN","Detection","-",">","a",")","Detection","of","faces","(","with","the","confidence","probability",")","b",")","Detection","of","keypoints","(","left","eye",",","right","eye",",","nose",",","mouth_left",",","mouth_right",")"]
docstr: Non Maximum Suppression.
  
  :param boxes: np array with bounding boxes.
  :param threshold:
  :param method: NMS method to apply. Available values ('Min', 'Union')
  :return:
docstr_tok: ["Non","Maximum","Suppression",".",":","param","boxes",":","np","array","with","bounding","boxes",".",":","param","threshold",":",":","param","method",":","NMS","method","to","apply",".","Available","values","(","'Min","'",",","'Union","'",")",":","return",":"]
code: def __nms(boxes, threshold, method):
      """
      Non Maximum Suppression.
  
      :param boxes: np array with bounding boxes.
      :param threshold:
      :param method: NMS method to apply. Available values ('Min', 'Union')
      :return:
      """
      if boxes.size == 0:
          return np.empty((0, 3))
  
      x1 = boxes[:, 0]
      y1 = boxes[:, 1]
      x2 = boxes[:, 2]
      y2 = boxes[:, 3]
      s = boxes[:, 4]
  
      area = (x2 - x1 + 1) * (y2 - y1 + 1)
      sorted_s = np.argsort(s)
  
      pick = np.zeros_like(s, dtype=np.int16)
      counter = 0
      while sorted_s.size > 0:
          i = sorted_s[-1]
          pick[counter] = i
          counter += 1
          idx = sorted_s[0:-1]
  
          xx1 = np.maximum(x1[i], x1[idx])
          yy1 = np.maximum(y1[i], y1[idx])
          xx2 = np.minimum(x2[i], x2[idx])
          yy2 = np.minimum(y2[i], y2[idx])
  
          w = np.maximum(0.0, xx2 - xx1 + 1)
          h = np.maximum(0.0, yy2 - yy1 + 1)
  
          inter = w * h
  
          if method is "Min":
              o = inter / np.minimum(area[i], area[idx])
          else:
              o = inter / (area[i] + area[idx] - inter)
  
          sorted_s = sorted_s[np.where(o <= threshold)]
  
      pick = pick[0:counter]
  
      return pick
  
imports: import cv2
  import numpy
  import pkg_resources
  from mtcnn.exceptions import InvalidImage
  from mtcnn.network.factory import NetworkFactory
label_desc: Use image node_id 7 for calling the MTCNN obj's underlying member method code with example usage: obj.__nms(boxes, threshold, method) and returns: pick, np