projPart1

advertisement
ECE1390 Selected Topics in Circuit and Systems –
VLSI Circuits and Systems for Pattern Recognition
Final Project, Part I
Visual Object Detection with Support Vector Machine
Part I Goal: To train a SVM to detect human faces, test training results and analyze
performance issues.
Preparation
1. Download (and compile, if applies) the following files:
 SVMFu SVM classification package (by Ryan Rifkin, MIT)
 MIT CBCL (Center for Biological and Computational Learning) face data set
 Receiver operating characteristic (ROC) tabulation Perl script roc.pl (from
ECE1930 course web page)
 Shell script svm.csh for performance analysis automation (from ECE1930 course
web page)
2. Train a two-class SVM.
 Run svmfutrain training routine on svm.train.normgrey histogram-equalized,
normalized face data set for a linear kernel function (default) with C=10.
3. Test classification results.
 Run svmfutest testing routine on svm.test.normgrey test set.
4. Analyze performance.
 Run roc.pl Perl script to tabulate ROC curve
 Plot ROC curve (using gnuplot or matlab)
Note: Refer to svm.csh script for an example of automating steps 1 through 4. Make sure
to use proper command line parameters for each of simulation.
Questions
1. What does a ROC curve mean (hint: this is simple, if you know Perl)? Explain.
2. What is a good choice of kernel function? Try polynomial and Gaussian kernels with
various parameters. Plot ROC curves on the same figure for the best three cases: linear
SVM, best polynomial kernel, best Gaussian kernel. Which kernel gives the best results?
How many support vectors (SVs) do you get for each case?
Open question: can you do better with another inner-product based valid kernel (i.e.,
satisfying Mercer’s conditions)?
Note: remember from class that C is a “punishment” constant for misclassified points for
the non-separable data case.
3. What sampling window dimensions are sufficient for detecting faces? For the three
best kernels plot ROC curves for 19x19 pixel resolution (natural data set resolution),
16x16 pixels, 11x11 pixels. What is the classification performance loss? Plot the number
of support vectors versus input dimensionality (i.e., 121, 256, 361) for each of three
kernels (one figure per kernel). Can you think of ways to improve classification
performance for a fixed number of dimensions (hint: not necessarily square window)?
Open question: what is the improvement in classification performance for other sample
window shapes? How many dimensions do you save for the same classification
performance?
4. How does image resolution affect the classification performance? Plot ROC curves for
the three best kernels (one figure per kernel) comparing results for the data at full
resolution (8 bits) and quantized to 7, 6, 5 and 4 bits.
5. How does feature extraction affect the classification performance? Try different
methods of feature extraction (e.g., Haar wavelets) and compare the results (plot a figure
with all ROC curves). Refer to C. Papageorgiou, et. al. ICCV’98 paper. Which method is
the best?
6. How do support vectors look like? Rerun the simulation for 16x16 pixels and 11x11
pixels inputs (two cases) using: the best polynomial kernel, 4-bit image resolution and
your best feature extraction method. Pick and show (subjectively: most atypical) faces
(two) and non-faces (two). How many support vectors are there in each of the two cases?
7. How does the number of support vectors affect the classification performance? How
can one reduce the number of support vectors? Try to reduce the number of support
vectors (e.g., by coming up with a way to discard the most irrelevant SVs). Rerun the
experiments in 6 with only 160 and 128 4-bit SVs (two cases). Plot the ROC results on
the same figure.
8. Create a table containing detection rate (horizontal entries) for each of the case above
for false positive rates of 0.1 to 0.9 (linearly spaced with 0.1 interval – 9 columns).
Download