RetinaFace (RetinaFace: Single-stage Dense Face Localisation in the Wild, published in 2019) reimplemented in Tensorflow 2.0, with pretrained weights available. Resnet50 backbone.
Original paper -> arXiv
Original Mxnet implementation -> Insightface
To install dependencies, if you have a GPU, run :
pip install -r requirements-gpu.txt
If not, run :
pip install -r requirements.txt
Then build the rcnn module by running :
make
Download pretrained weights on Dropbox and save them in the data folder
Run :
python detect.py --weights_path="./data/retinafaceweights.npy" --sample_img="./sample-images/WC_FR.jpeg"
Python usage :
from retinaface import RetinaFace
import cv2
detector = RetinaFace("./data/retinafaceweights.npy", False, 0.4)
img = cv2.imread("./sample-images/WC_FR.jpeg")
faces, landmarks = detector.detect(img, 0.9)
mAP result values on the WIDERFACE validation dataset:
Model | Easy | Medium | Hard |
---|---|---|---|
Original Mxnet implementation | 96.5 | 95.6 | 90.4 |
Ours | 95.6 | 94.6 | 88.5 |
In order to verify the models accuracy on the WiderFace dataset:
- Run the model on the dataset and generate text files as results
python eval_widerface --weights_path="data/retinafaceweights.npy" --widerface_data_dir = "/data/WIDER_test/images" --save_folder="./WiderFace-Evaluation/results/"
- Evaluate the results
cd ./WiderFace-Evaluation
python setup.py build_ext --inplace
python evaluation.py -p ./results_val/ -g ./ground_truth/
This work is largely based on the original implementation by the amazing insightface team
Evaluation on widerface done with the Widerface-Evaluation repo
If you use this repo, please reference the original work :
@inproceedings{Deng2020CVPR,
title = {RetinaFace: Single-Shot Multi-Level Face Localisation in the Wild},
author = {Deng, Jiankang and Guo, Jia and Ververas, Evangelos and Kotsia, Irene and Zafeiriou, Stefanos},
booktitle = {CVPR},
year = {2020}
}