It is the training program for libfacedetection. The source code is based on FaceBoxes.PyTorch and ssd.pytorch.
-
Install PyTorch >= v1.0.0 following official instruction.
-
Clone this repository. We will call the cloned directory as
$TRAIN_ROOT
.
git clone https://github.com/ShiqiYu/libfacedetection.train
- Install dependencies.
pip install -r requirements.txt
Note: Codes are based on Python 3+.
- Download WIDER FACE dataset, place the images under this directory:
$TRAIN_ROOT/data/WIDER_FACE_rect/images
and create a symbol link to this directory from
$TRAIN_ROOT/data/WIDER_FACE_landmark/images
- Train the model using WIDER FACE:
cd $TRAIN_ROOT/tasks/task1/
python3 train.py
cd $TRAIN_ROOT/tasks/task1/
./detect.py -m weights/yunet_final.pth --image_file=filename.jpg
- Enter the directory.
cd $TRAIN_ROOT/tasks/task1/
- Create a symbolic link to WIDER Face.
$WIDERFACE
is the path to WIDER Face dataset, which containswider_face_split/
,WIDER_val
, etc.
ln -s $WIDERFACE widerface
- Perform evaluation. To reproduce the following performance, run on the default settings. Run
python test.py --help
for more options.
mkdir results
python test.py
- Download and run the official evaluation tools. NOTE: Matlab required!
# download
wget http://shuoyang1213.me/WIDERFACE/support/eval_script/eval_tools.zip
# extract
unzip eval_tools.zip
# run the offical evaluation script
cd eval_tools
vim wider_eval.m # modify line 10 and line 21 according to your case
matlab -nodesktop -nosplash -r "run wider_eval.m;quit;"
Run on default settings: scales=[1.], confidence_threshold=0.3:
AP_easy=0.849, AP_medium=0.816, AP_hard=0.601
The following bash code can export a CPP file for project libfacedetection
cd $TRAIN_ROOT/tasks/task1/
./exportcpp.py -m weights/yunet_final.pth -o output.cpp
You can copy $TRAIN_ROOT/tasks/task1/ to $TRAIN_ROOT/tasks/task2/ or other similar directory, and then modify the model defined in file: tasks/task2/yufacedetectnet.py .