insightface icon indicating copy to clipboard operation
insightface copied to clipboard

improve the speed of face recognition on CPU

Open arad2022 opened this issue 1 year ago • 3 comments

How I can increase the speed of below program I can use GPU in this time I want to increase speed on CPU. Any suggestion? Why all the model loaded and how I can disable them?

Import libraries

import torch import insightface import cv2 import numpy as np

Load a face recognition model

model = insightface.app.FaceAnalysis() model.prepare(ctx_id = -1) # use CPU and set NMS threshold #model.prepare(ctx_id = 0)

Load two images

img1 = cv2.imread(r"D:\20240127_120414.png")

img2 = cv2.imread(r"D:\code\IMG_20240205_140538.jpg")

faces1 = model.get(img1)

box = faces1[0]['bbox'] bbox = box.astype(int)

x_min, y_min, x_max, y_max = int(box['left']), int(box['top']), int(box['right']), int(box['bottom'])

face_img = img1[bbox[1]:bbox[3], bbox[0]:bbox[2]] print(face_img.shape) cv2.imwrite("./test.png", face_img) faces2 = model.get(img2)

Extract face embeddings

embeddings1 = np.array([face.normed_embedding for face in faces1]) embeddings2 = np.array([face.normed_embedding for face in faces2])

Compute cosine similarity between embeddings

similarity = np.dot(embeddings1, embeddings2.T)

output Applied providers: ['CPUExecutionProvider'], with options: {'CPUExecutionProvider': {}} find model: C:\Users\windows/.insightface\models\buffalo_l\1k3d68.onnx landmark_3d_68 ['None', 3, 192, 192] 0.0 1.0 Applied providers: ['CPUExecutionProvider'], with options: {'CPUExecutionProvider': {}} find model: C:\Users\windows/.insightface\models\buffalo_l\2d106det.onnx landmark_2d_106 ['None', 3, 192, 192] 0.0 1.0 Applied providers: ['CPUExecutionProvider'], with options: {'CPUExecutionProvider': {}} find model: C:\Users\windows/.insightface\models\buffalo_l\det_10g.onnx detection [1, 3, '?', '?'] 127.5 128.0 Applied providers: ['CPUExecutionProvider'], with options: {'CPUExecutionProvider': {}} find model: C:\Users\windows/.insightface\models\buffalo_l\genderage.onnx genderage ['None', 3, 96, 96] 0.0 1.0 Applied providers: ['CPUExecutionProvider'], with options: {'CPUExecutionProvider': {}} find model: C:\Users\windows/.insightface\models\buffalo_l\w600k_r50.onnx recognition ['None', 3, 112, 112] 127.5 127.5 set det-size: (640, 640)

arad2022 avatar Feb 20 '24 06:02 arad2022

Using OpenVino to export this module lets you rebuild the Face Analysis flow for CPU, making it run much faster.

longduong2 avatar Mar 28 '24 09:03 longduong2

Using OpenVino to export this module lets you rebuild the Face Analysis flow for CPU, making it run much faster.

Could you please provide code example for that? How can I export Buffalo model to OpenVino format and then load it for test?

arad2022 avatar Mar 31 '24 11:03 arad2022

I have downloaded the glint360k model and how can i use that for verification when i extracted it these are the files inside it. image

Raghucharan16 avatar May 16 '24 14:05 Raghucharan16