This repo contains code for Mobilenet+SSD face detector training. This detector is compatible with Movidius Neural Compute Stick. You need NCSDK to test it with Neural Compute Stick.
You can deploy two different SSD face detectors: "full" detector or "short" detector. The latter is shortened: layers 14-17 are deleted. It is a bit faster (67 ms vs 75 ms) and captures small faces only.
To deploy detectors to Caffe:
make deploy_full
or
make deploy_short
To deploy detectors to NCS (and Caffe):
make compile_full
or
make compile_short
Deployment models are placed in models/deploy.
To train this detector (SSD-Caffe is needed):
-
Edit Makefile: set data_dir, lmdb_pyscript, caffe_exec, datasets names and path to data folder.
-
Make LMBD database:
make lmdb
- Make face model (generate templates and get pre-trained weights):
make face_model_full
- Edit train_files/solver_train_full.prototxt if necessary and train net:
make train_full
Or resume from snapshot:
echo /path/to/snapshot > train_files/snapshot.txt
make resume_full
- Test model:
echo /path/to/snapshot > train_files/snapshot.txt
make test_full
Test best model from this repo:
make test_best_full
- (Optional) Make long-range (shorter) model:
make face_model_short
And test it:
make test_short_init
- Plot loss from Caffe logs:
make plot_loss
Plot Average Precision from snapshots:
echo /path/to/any/snapshot > train_files/snapshot.txt
make plot_map_full
- Profile initial VOC net, best face net, short face net for Neural Compute Stick:
make profile_initial
or
make profile_face_full
or
make profile_short_init
Also see Caffe_face.ipynb for details.
See images/output to see how nets perform on examples (test network to get these results).
See this notebook for training this model in Google Colaboratory.