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
-
Semi-frontal face alignment on Menpo dataset
-
Profile face alignment on Menpo dataset
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:
- https://github.com/rwightman/pytorch-image-models
- https://github.com/Res2Net/Res2Net-PretrainedModels
- https://github.com/HRNet/HRNet-Image-Classification
- https://github.com/lzx1413/pytorch_face_landmark
- https://github.com/polarisZhao/PFLD-pytorch