Yolo Keras Face Detection
Implement Face detection, and Age and Gender Classification using Keras.
(image from wider face dataset)Overview
Functions
Face Detection
Age and Gender Classification
Requirements
Keras2 (Tensorflow backend)
OpenCV
Python 2.7
Darknet (for Training)
Test
Download Pretrained-Model
python download_model.py
Predict from Camera Image
Here is a run using pretrained model .
python agegender_demo.py
Train
Install
Keras
pip install keras
Darknet
Download Darknet and put in the same folder.
https://github.com/pjreddie/darknet
Face Detection (FDDB)
Create dataset
Download fddb dataset (FDDB-folds and originalPics folder) and put in the dataset/fddb folder.
http://vis-www.cs.umass.edu/fddb/
Create dataset/fddb/FDDB-folds/annotations_darknet folder for darknet.
python annotation_fddb_darknet.py
Preview converted annotations.
python annotation_view.py fddb
Train using Darknet
Here is a training using YoloV2.
cd darknet
./darknet detector train data/face-one-class.data cfg/yolov2-tiny-train-one-class.cfg
Test using Darknet
Here is a test.
./darknet detector demo data/face-one-class.data cfg/yolov2-tiny-train-one-class.cfg backup-face/yolov2-tiny-train-one-class_32600.weights -c 0
Training Result
http://www.abars.biz/keras/yolov2-tiny-one-class.cfg
http://www.abars.biz/keras/yolov2-tiny-train-one-class_32600.weights
Convert to Keras Model
Download YAD2K
https://github.com/allanzelener/YAD2K
This is a convert script.
python3 yad2k.py yolov2-tiny-train-one-class.cfg yolov2-tiny-train-one-class_32600.weights yolov2_tiny-face.h5
This is a converted model.
https://github.com/abars/YoloKerasFaceDetection/releases/download/1.10/yolov2_tiny-face.h5
Age and Gender classification
Create Dataset
Use AdienceBenchmarkOfUnfilteredFacesForGenderAndAgeClassification dataset
Download AdienceBenchmarkOfUnfilteredFacesForGenderAndAgeClassification dataset and put in the dataset/adience folder.
https://www.openu.ac.il/home/hassner/Adience/data.html#agegender
Create dataset/agegender_adience/annotations for keras.
python annotation_agegender_adience_keras.py
Use IMDB-WIKI dataset
Download IMDB-WIKI dataset (Download faces only 7gb) and put in the dataset/imdb_crop folder.
https://data.vision.ee.ethz.ch/cvl/rrothe/imdb-wiki/
Create dataset/agegender_imdb/annotations for keras.
python annotation_imdb_keras.py
Use UTKFace dataset
Download UTKFace dataset and put in the dataset/imdb_crop folder.
https://susanqq.github.io/UTKFace/
Create dataset/agegender_utk/annotations for keras.
python annotation_utkface_keras.py
Use AppaReal dataset
Download AppaReal dataset and put in the dataset/appa-real-release folder.
http://chalearnlap.cvc.uab.es/dataset/26/description/
Create dataset/agegender_appareal/annotations for keras.
python annotation_appareal_keras.py
Train using Keras
Install keras-squeezenet
https://github.com/rcmalli/keras-squeezenet
Run classifier task using keras.
python agegender_train.py age101 squeezenet imdb
python agegender_train.py gender squeezenet imdb
Test using Keras
Test classifier task using keras.
python agegender_predict.py age101 squeezenet imdb
python agegender_predict.py gender squeezenet imdb
Training result
Age101 (IMDB) (EPOCHS=100)
Gender (IMDB) (EPOCHS=25)
Related Work
https://github.com/dannyblueliu/YOLO-Face-detection