/ Machine Learning

Implementation of face landmark detection with PyTorch

Implementation of face landmark detection with PyTorch

Pytorch Face Landmark Detection

Implementation of face landmark detection with PyTorch. The model was trained using coordinate-based regression methods.

  • Support 68-point and 39-point landmark inference.
  • Support different backbone networks.
  • Support ONNX inference.

Inference

Test on a sample folder and save the landmark detection results.

python3 -W ignore test_batch_mtcnn.py

Optimize with ONNX and test on a camera. The pytorch model has been converted to ONNX for fast inference.

python3 -W ignore test_camera_mtcnn_onnx.py

Benchmark Results on 300W

  • Inter-ocular Normalization (ION)
Algorithms Common Challenge Full Set Param # (M) CPU Inference (s)
ResNet18 (224×224) 3.73 7.14 4.39 11.76 /
Res2Net50_v1b (224×224) 3.43 6.77 4.07 26.00 /
Res2Net50_v1b_SE (224×224) 3.37 6.67 4.01 27.05 /
Res2Net50_v1b_ExternalData (224×224) 3.30 5.92 3.81 26.00 /
HRNet_w18_small_v2 (224×224) 3.57 6.85 4.20 13.83 /
MobileNetV2 (224×224) 3.70 7.27 4.39 3.74 1.2
MobileNetV2_SE (224×224) 3.63 7.01 4.28 4.15 /
MobileNetV2 (56×56) 4.50 8.50 5.27 3.74 0.01 (onnx)
MobileNetV2_ExternalData (224×224) 3.48 6.0 3.96 3.74 1.2

Visualization Results

  • Face alignment on 300W dataset
    300w

  • Semi-frontal face alignment on Menpo dataset
    menpo_semi_frontal

  • Profile face alignment on Menpo dataset
    menpo_profile

TODO

The following features will be added soon.

  • Still to come:
    • [x] Support for the 39-point detection
    • [ ] Support for the 106 point detection
    • [ ] Support for heatmap-based inferences

Datasets:

References:

GitHub

Comments