abnormal_face.py
1.3 KB
import os
import cv2
import MNN
import logging
import numpy as np
class Abnormal_Face(object):
def __init__(self, model_path):
logging.info('******** Start Init Abnormal Face ********')
self.interpreter = MNN.Interpreter(model_path)
self.session = self.interpreter.createSession()
self.input_tensor = self.interpreter.getSessionInput(self.session)
logging.info('******** Success Init Abnormal Face ********')
def reg(self, image, bbox):
image_h, image_w, image_c = image.shape
face_area = image[bbox[1]:bbox[3], bbox[0]:bbox[2], ]
face_h, face_w, _ = face_area.shape
image_resize = cv2.resize(face_area, (128, 128), interpolation=cv2.INTER_CUBIC)
image_transpose = image_resize.astype(np.float32).transpose((2, 0, 1)) / 255
input_tensor = MNN.Tensor((1, 3, 128, 128), MNN.Halide_Type_Float, image_transpose, MNN.Tensor_DimensionType_Caffe)
self.input_tensor.copyFrom(input_tensor)
self.interpreter.runSession(self.session)
output_tensor = self.interpreter.getSessionOutput(self.session)
output_data = output_tensor.getData()
output_data = output_data[0]
output_data = output_data.tolist()
predict_res = output_data.index(max(output_data))
return predict_res