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)
Information for those working in C/C++ who want to use my libraries.
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).