This project is based on libfacedetection.train. bug-fixed about load data which 'WIDER_FACE' list for image path is unavailable. Add tools for add new data for train dataset.
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 .
convert json file to xml.
python json2xml.py
generator image list
python gen_list.py