by jasonleaster

jasonleaster /FaceDetection

:star2: Human Face Detection based on AdaBoost

132 Stars 63 Forks Last release: Not found MIT License 5 Commits 0 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

EFace -- A project of face detection in Python

This project name as

which is a implementation of face detection algorithm.

My nick name is

. For convenient, I name it as

It's stimulating to do this project. Enjoy with it.

The architecture of this project.

The following list show the files in this awesome project.

  • adaboost.py Implementation of Adaptive Boosting algorithm

  • cascade.py Cascade Decision Tree

  • config.py All parameters of configuration in this project are stored in this file.

  • image.py The initialization of images. class Image and class ImageSet are in this file.

  • haarFeature.py Stuff with Haar-Features.

  • weakClassifier.py The detail about Weak classifier.

  • training.py Script for training the model.


  • model/ cache files for adaboost model.

  • featuers/ values for different feaures with different samples.

  • doc/ documents with this project.


For training a adaboost model:

     python ./trainingAdaBoost.py

To detect faces in a image, you have to define the TEST_IMG which is the path where store your image:

    python ./EFace.py

Presentation of current result:

I'm still working on making this project more powerful. So, here is the presentation of current result.




Programming Style:

I used basic OOP(Object Oriented Programming) tricks to build my program. Something like... I put all about

into a class(AdaBoost) which you can find in file
. Everytime you want to do something with adaboost, just create a object instance of that class.

Adavantages of this style: Higher level of abstraction and easy to be used. With this style, green hand will easy to build good archtecture with our project.

Disadvantages of this style: Without optimalization, it will cost a lot of memory. This will be obvious when the scale of project goes more and more large.

During this period when I working on the project, I meet a lots of problem. But I also want to say "thanks" to these problem. It help me a lot to enhance my ability in programming.

  • Exception Handle The training process cost too much time. Sometimes, we have a better idea to change the code into a better version. But the trainning process is going on. If we press

    ctrl + c
    to interrupt, the data that we have get from the
    process will lost.

    I use a handler for

    and then save the data of model so that the valuable data won't be lose.
  • High Performance Programming in Python

    There have lots of tricks to make native Python code run more faster. The computation of image processing is very huge. This means that it's a typical problem about CPU-bound.

  • Concurrent Control To improve the performance of this system in the training process, I try to use parallel mechanism with the two CPU in my workstation.

... ...

Optimization diary

2016-04-09 Restart to built this project and finished optimize the image.py

2016-04-13 refactor the training.py and make it more light. create a new module mapReduce.py. In haarFeature.py, @idxVector is initialized by numpy.zeros, it's faster than numpy.array([0 for i in range(length)])

2016-04-15 going to optimal weakClassifier.py and adaboost.py. Try to vectorize weakclassifier.py

2016-04-16 change scanImage.py and use different size of final classifier image but not resize the inputed image.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.