Due date: Sunday 04/29/2012, 11:55pm.
The final programming project constitutes
35% of the grade (25% for programming, 10% for the project presentation). Students also have the option to choose their own topic, as long as
they have obtained the instructor's approval for the proposed topic by
April 9. The project presentations will take place in class,
Tuesday, May 1, and Thursday, May 3.
No extensions will be given, except for
well-documented medical (or otherwise serious) emergencies, in which
case extensions will be granted according strictly to UTA guidelines.
Implement a face detector that is trained using AdaBoost, combines information from skin color and rectangle filters, and utilizes the ideas of bootstrapping and classifier cascades. In particular, the following methods/concepts must be utilized in this face detector:
- AdaBoost: The face detector, or at least components of the face detector, must be trained using AdaBoost and rectangle filters.
- Skin detection: A skin detector must be used to improve the efficiency of face detection on color images.
- Bootstrapping: Bootstrapping is a method for improving the quality of the training set, by identifying and including more challenging examples. Bootstrapping is performed by iterating between 1). Training a face detector using the training set, and 2). Applying the face detector on additional data, and adding to the training set cases where the face detector makes mistakes.
- Classifier cascades: An AdaBoost-based detector was implemented in the code available online for this course. In that detector, the same strong classifier was applied to every single window of the image. A classifier cascade is a sequence of classifiers, where the first classifier is very fast but relatively inaccurate, and each subsequent classifier is slower but more accurate. For every classifier in the cascade (except for the final classifier), we need to choose a threshold that determines whether a window should be classified as nonface, or should be passed on to the next classifier in the cascade. That threshold should be chosen so that it causes as few mistakes as possible.
All the data that you need from this project can be downloaded from zipped file training_test_data.zip, which has size 47MB. You can access individual files from directory training_test_data, When you train your system, you can use windows from images in directory training_faces as positive examples. As negative examples, you can use windows from images in directory training_nonfaces. For bootstrapping, once you have trained a detector, you should apply it to all images in training_faces and training_nonfaces, identify windows where the detector makes mistakes, add those windows to the training set, and retrain.
As test data, you can use the images in directories test_cropped_faces, test_face_photos, and test_nonfaces. You are not allowed to use any of these test data for training.
You should submit your project on Blackboard. You should submit all your code, and also whatever data was computed and saved by your training algorithm. Do not submit any training and test images, you can assume that we have the entire training_test_data directory on our computer.
Grading will be based on how well you applied knowledge that you obtained in this course in order to design a detector that is accurate and efficient. 25% of the project grade will be assigned to each of the four components of the system (AdaBoost, skin detection, bootstrapping, cascades).
In addition to correctness and quality of implementation, you will also be graded based on:
- the quality of the decisions and choices you make in building your system.
- the quality and information content of the experimental evaluation.
- the quality of the written project report (is it informative? does it allow duplicating the results? is it easy to read?)
In general, this project is intended to be a simulation of a project that you could be assigned when working in the real world. In such projects, much less is specified that in a typical homework assignment; the system designer needs to evaluate different choices at each step, and finally make choices that lead to a good product/system. Also, the system designer must be able to explain what was done, justify different choices, and describe clearly how well each component works. During this course you have learned a variety of different computer vision methods, and you have also encountered several different approaches for making system design choices and for justifying those choices. This is an opportunity to use what you have learned.
Students will need to present their project implementations, in a 7-10 minute presentation, for which slides should be prepared. The presentations should specify the main choices that were made in designing the system, and the accuracy/efficiency of the results that were obtained on the test data.