Spring 2008 - CS477/577 - An Introduction to Computer Vision

Assignment Nine

Due: Late, Monday, May 12, 2008
(Final absolute deadline --- likely grading will begin first thing May 13)

Credit (Ugrads): Approximately 6 points (Relative, and very rough absolute weighting)

Credit (Grads): Approximately 4 points (Relative, and very rough absolute weighting)

This assignment must be done individually


You can do this assignment in either Matlab or C/C++.

Information for those working in C/C++ who want to use my libraries.


Assignment specification

This assignment has one main part and some initial preprocessing , both of which are required for undergrads and grads.

There are a number of ways to extend this assignment. If you try something interesting, let the TA know so she can consider giving you modest extra credit (max one full mark extra).

In this assignment, you will build a face detector with the help of a Support Vector Machine (SVM).  You will be provided with a software implementation of an SVM and training data  to build the classifier with.

A set of 200 training images (faces and non faces) are provided here.  Preprocessing involves extracting features from these images to provide as input to the SVM. For the purposes of this assignment you may use a naive set of features - the pixel intensities of the image. Note that this means the images may need to be converted to black and white and possibly blurred and sub-sampled. Each image will be represented as a vector of intensity values. You may think of it as unrolling the image matrix into one long vector.

These vectors are then provided as input to the SVM software. Executables for the appropriate for the graphics machines are here
        svm-train,
        svm-predict,
        svm-scale.
If you would like to use a different platform, you will find that it is easy to build these from the source code provided on the libsvm site.

There is a README file available that tells you how the input is  to be formatted and how to use the software. Note that many of the options for using the software (choice of kernels, error margin etc) are optional and that the default functionality is sufficient for the purposes of this assignment. You're welcome to experiment with these optionsh, but please be sure to include any resulting observations in the README file you turn in. Visit the libsvm page to see some examples and choices on how to use this software.

3. Finally, once the classifier or model is built, you will need to see how well your face detector is doing by classifying some test images which again consist of faces and non faces.  The test data can be downloaded from here.

What to hand in

1. A README file that will report the initial preprocessing you did to the data, options used for the SVM and the accuracy results on the test and training data. Comment on the results.

2. Your code for the assignment. Assuming that the TA has access to the images, she should be able to run your code to do any preprocessing as well as to generate the input files for the SVM and verify your results.

Some useful tools

You may use one of Matlab, C/C++, or the program "kjb_image" convert to black and white, to subsample, or blur the images. There is a man page for kjb image. You may need:
            MANPATH: ~kobus/doc/man
            PATH:       : ~kobus/bin/linux_x86_64_c2

Acknowledgments

The data for this assignment was obtained from Dr. Libor Spacek's Computer Vision research page and is not to be published/printed/sold/distributed.  Please refer to http://cswww.essex.ac.uk/mv/allfaces/index.html  for the complete copyright information.

The software provided for the Support Vector Machine is called libsvm (version 2.86) and is copyrighted as given here.


To hand in the above, use the turnin program available on lectura (turnin key is cs477_hw9).