/Tiny_Faces_in_Tensorflow

A Tensorflow Tiny Face Detector, implementing "Finding Tiny Faces"

Primary LanguagePythonMIT LicenseMIT

Tiny Face Detector in TensorFlow

A TensorFlow port(inference only) of Tiny Face Detector from authors' MatConvNet codes[1].

Requirements

Codes are written in Python. At first install Anaconda. Then install OpenCV, TensorFlow.

Usage

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.

  1. Download a ResNet101-based pretrained model(hr_res101.mat) from the authors' repo.

  2. 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

  1. Prepare images in a directory.

  2. tiny_face_eval.py reads 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).

Examples

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[1].

selfie

Original image

selfie of celebrities

selfie

Original image

selfie of "celebrities"

Homer and "Meryl Streep" are missed.

selfie

Original image

zombies

selfie

Original image

monkeys

selfie

Original image

dogs

selfie

Original image

cats

selfie

Original image

figure1 from a paper[2]

selfie

figure8 from a paper[2].

Facebook's face detector failed to detect these faces(as of the paper publication date[14 Feb 2016]).

selfie

figure3 from a paper[2]

selfie

figure6 from a paper[2]

selfie

Acknowledgments

Disclaimer

Codes are tested only on CPUs, not GPUs.

References

  1. Hu, Peiyun and Ramanan, Deva, Finding Tiny Faces, The IEEE Conference on Computer Vision and Pattern Recognition (CVPR 2017). project page, arXiv

  2. Michael J. Wilber, Vitaly Shmatikov, Serge Belongie, Can we still avoid automatic face detection, 2016. arXiv