onnxfaciallmkdetector
Endtoend face detection, cropping, norm estimation, and landmark detection in a single onnx model, model.onnx
.
Demo
You can try this model at the following link. Thanks for hysts.
Code
See src.
Example
import onnxruntime as ort
import cv2
sess = ort.InferenceSession("model.onnx")
img = cv2.imread("input.jpg")
scores, bboxes, keypoints, aligned_imgs, landmarks, affine_matrices = sess.run(None, {"input": img})
# float32 int64 int64 uint8 int64 float32
# (N,) (N, 4) (N, 5, 2) (N, 224, 224, 3) (N, 106, 2) (N, 2, 3)
This model requires onnxruntime>=1.11
.
How does it work?
This is simply a merged model of the following underlying models with some pre and postprocessing.
Underlying models
model  reference  

face detection  SCRFD_10G_KPS  https://github.com/deepinsight/insightface/tree/master/detection/scrfd#pretrainedmodels 
landmark detection  2d106det  https://github.com/deepinsight/insightface/blob/master/alignment/coordinate_reg/README.md#pretrainedmodels 
Pre and PostProcessing
Implemented the following processing by PyTorch and exported to ONNX.

Input transform:
 Resize and pad to (1920, 1920)
 BGR to RGB conversion
 Transpose (H, W, C) to (C, H, W)

(Face Detection)

Postprocessing of face detection
 Predicted bounding boxes and Confidence Score Processing
 NMS (ONNX Operator)

Norm estimation and face cropping
 Estimate the norm and apply an affine transformation to each face.
 Crop the faces and resize them to (192, 192).

(Landmark Detection)

Perform postprocessing for landmark detection.
 Process the predicted landmarks and apply the inverse affine transform to each face.
Note
Please check with the model provider regarding the license for your use.
This model includes the work that is distributed in the Apache License 2.0.