cunjian / Pytorch_face_landmark
Programming Languages
Labels
Projects that are alternatives of or similar to Pytorch face landmark
Pytorch Face Landmark Detection
Implementation of face landmark detection with PyTorch. The models were trained using coordinate-based or heatmap-based regression methods. Different face detetors were supported. A video demo and image detection results were displayed here.
- Support 68-point and 39-point landmark inference.
- Support automatic alignment and crop
- Support different backbone networks and face detectors.
- Support ONNX and OpenVINO inferences.
- Support heatmap-based models.
Inference
Test on a sample folder and save the landmark detection and cropped face results. Support different backbones and face detectors.
python3 test_batch_detections.py --backbone MobileFaceNet --detector Retinaface
- backbone: MobileNet/PFLD/MobileFaceNet; detector: MTCNN/FaceBoxes/Retinaface
Optimize with ONNX and test on a camera with MTCNN as a face detector.
python3 test_camera_mtcnn_onnx.py
Optimize with ONNX and test on a camera with a lightweight face detector. It can achieve real-time speed on CPU.
python3 test_camera_light_onnx.py
Optimize with OpenVINO and test on a camera with a lightweight face detector. About 10 times faster than ONNX.
python3 test_camera_mobilefacenet_openvino.py
Benchmark Results on 300W
- Inter-ocular Normalization (ION)
Algorithms | Common | Challenge | Full Set | Param # (M) |
---|---|---|---|---|
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 |
- Inter-ocular Normalization (ION) with Lightweight Models
Algorithms | Common | Challenge | Full Set | Param # (M) | CPU Inference (s) |
---|---|---|---|---|---|
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_SE_RE (224×224) | 3.63 | 6.66 | 4.21 | 4.15 | / |
MobileNetV2_ExternalData (224×224) | 3.48 | 6.0 | 3.96 | 3.74 | 1.2 |
MobileNetV2 (56×56) | 4.50 | 8.50 | 5.27 | 3.74 | 0.01 (onnx) |
MobileNetV2_SE_ExternalData (56×56) | 4.10 | 6.89 | 4.64 | 4.10 | 0.01 (onnx) |
PFLD_ExternalData (112×112) | 3.49 | 6.01 | 3.97 | 0.73 | 0.01 (onnx) |
MobileFaceNet_ExternalData (112×112) | 3.30 | 5.69 | 3.76 | 1.01 | / |
Note: SE (squeeze-and-excitation module), RE (random erasing module).
- Heatmap Inference (still under test)
Algorithms | Common | Challenge | Full Set | Param # (M) |
---|---|---|---|---|
Hourglass2 | 3.06 | 5.54 | 3.55 | 8.73 |
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
Public Datasets:
Citations:
If you use library in your project, please, cite it as follows.
@misc{PFL,
title={{PyTorch Face Landmark}: A Fast and Accurate Facial Landmark Detector},
url={https://github.com/cunjian/pytorch_face_landmark},
note={Open-source software available at https://github.com/cunjian/pytorch_face_landmark},
author={Cunjian Chen},
year={2021},
}