deepinsight / insightface

State-of-the-art 2D and 3D Face Analysis Project
https://insightface.ai
22.82k stars 5.34k forks source link

improve the speed of face recognition on CPU #2530

Open arad2022 opened 6 months ago

arad2022 commented 6 months ago

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)

longduong2 commented 5 months ago

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

arad2022 commented 5 months ago

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?

Raghucharan16 commented 4 months ago

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