Face Detection
Benjamin Leib
bgleib

The Algorithm

This program does face detection using sliding windows. The full pipeline is fairly complicated (and largely pre-implemented), so I will focus on the parts of it that I worked on directly. The first of these is the extraction of features from image crops (that is, turning each window into a feature to be fed into the SVM). I did this using a HOG descripter implementation written by Oswaldo Ludwig which I found on the Matlab code sharing site. After tuning the parameters, I ended up going with 36 windows per crop, each with 9 bins, so the final dimensionality of the extracted feature is 324.

The other section I implemented was the mining of hard negatives. I did this by running the existing evaluator (trained on random negatives) on the negative scenes to get false positives, which I then sampled to get the hard negatives.

Results

My best accuracy was 35.7%, which I achieved using a linear SVM with lambda=10 (which I found empirically) trained on 1000 positive and 1000 random negative training examples, and using an evaluation step size of 4 and start scale of 3. See below for the precision-recall graph from that run. Using a non-linear SVM with lambda=10 and sigma=1 decreased the accuracy to 28.6%. I also tried using the hard negatives but found that my accuracy decreased to 3.7% I believe that my accuracy would have been greatly improved by doing the final evalation with a lower step size and starting scale, but when I attempted to do so I ran into memory issues and could not get final results.