Tiny Face Detector in TensorFlow
A TensorFlow port(inference only) of Tiny Face Detector from authors' MatConvNet codes.
Converting a pretrained model
matconvnet_hr101_to_pickle reads weights of the MatConvNet pretrained model and
write back to a pickle file which is used in a TensorFlow model as initial weights.
Download a ResNet101-based pretrained model(hr_res101.mat) from the authors' repo.
Convert the model to a pickle file by:
python matconvnet_hr101_to_pickle.py --matlab_model_path /path/to/pretrained_model --weight_file_path /path/to/pickle_file
Tesing Tiny Face Detector in TensorFlow
Prepare images in a directory.
tiny_face_eval.pyreads images one by one from the image directory and write images to an output directory with bounding boxes of detected faces.
python tiny_face_eval.py --weight_file_path /path/to/pickle_file --data_dir /path/to/input_image_directory --output_dir /path/to/output_directory
Neural network diagram
This(pdf) is a network diagram of the ResNet101-based model used here for an input image(height: 1150, width: 2048, channel: 3).
Though this model is developed to detect tiny faces, I apply this to several types of images including 'faces' as experiments.
selfie with many people
This is the same image as one in the authors' repo.
selfie of celebrities
selfie of "celebrities"
Homer and "Meryl Streep" are missed.
figure1 from a paper
figure8 from a paper.
Facebook's face detector failed to detect these faces(as of the paper publication date[14 Feb 2016]).
figure3 from a paper
figure6 from a paper
- Many python codes are borrowed from chinakook's MXNet tiny face detector
- parula colormap table is borrowed from
Codes are tested only on CPUs, not GPUs.