Viola-jones

Version 18 (Anthony Rowe, 08/23/2013 03:00 am)

1 1 Anthony Rowe
2 17 Anthony Rowe
h2. Viola Jones Face Detector
3 17 Anthony Rowe
4 17 Anthony Rowe
5 1 Anthony Rowe
The Viola-Jones sample project that comes with the CMUcam3 is an example of a lightweight
6 7 Anthony Rowe
face detector. The algorithm is based on the well known
7 17 Anthony Rowe
paper “Robust Real-Time Face Detection” by P. Viola and M. Jones from 2004 [attachment:viola-ijcv04.pdf "r1"]. The implementation on the CMUcam3 will return coordinates for boxes where it detects a face in the image.  If you test this code with a relatively uniform background (like a white wall), it works reasonably well.  The images are trained from the CMU face database such that they generalize to all faces. Sometimes certain faces with features not found in the database can confuse the detector.
8 1 Anthony Rowe
9 18 Anthony Rowe
!face.jpg! !face1.jpg!
10 11 Anthony Rowe
11 17 Anthony Rowe
[attachment:viola-ijcv04.pdf "r1"] introduces a novel technique to detect faces in real-time and with very high
12 1 Anthony Rowe
detection rate. It is essentially a feature-based approach in which a classifier is trained for
13 17 Anthony Rowe
Haar-like rectangular features ""[6":http://csdl2.computer.org/persagen/DLAbsToc.jsp?resourcePath=/dl/proceedings/&toc=comp/proceedings/iccv/1998/8295/00/8295toc.xml&DOI=10.1109/ICCV.1998.710772"] selected by ""[AdaBoost":http://en.wikipedia.org/wiki/Adaboost"]. The test image is scanned at
14 1 Anthony Rowe
different scales and positions using a rectangular window, and the regions which pass the
15 1 Anthony Rowe
classifier are declared as faces. One of the major contributions of this paper is the
16 1 Anthony Rowe
extremely rapid computation of these features using the concept of Integral Image, which
17 1 Anthony Rowe
enables the detection in real-time. Additionally, instead of learning a single classifier and
18 1 Anthony Rowe
computing all the features for all the scanning windows in the image, a number of
19 1 Anthony Rowe
classifiers are learnt which are put together in a series to form a cascade. The classifiers
20 1 Anthony Rowe
in the beginning of the cascade are simpler and consist of smaller numbers of features.
21 1 Anthony Rowe
However, as one proceeds in the cascade, the classifiers become more complex. A region
22 1 Anthony Rowe
is reported as detection only if it passes all the classifier stages in the cascade. If it is
23 1 Anthony Rowe
rejected at any stage, it is discarded and not processed further. This way, the easier
24 1 Anthony Rowe
patches in the image which the “cascade of classifiers” is sure of not being a face, are
25 1 Anthony Rowe
rejected very early while the difficult regions are operated on by more complex
26 1 Anthony Rowe
classifiers. This greatly speeds up the detection process without compromising on the
27 4 Anthony Rowe
accuracy and provides high detection rate. This overall system provides performance
28 17 Anthony Rowe
comparable to the existing best face detector systems (Rowley et al., 1998 [attachment:CVPR00.pdf "r2"];
29 17 Anthony Rowe
Schneiderman and Kanade, 2000 [attachment:nips00.pdf "r3"]; Roth at al., 2000 [attachment:rowley-ieee.pdf "r4"]) but with orders of magnitudes
30 5 Anthony Rowe
faster than any of these systems. On a conventional desktop, it can detect faces at 15
31 6 Anthony Rowe
frames per second.
32 5 Anthony Rowe
33 17 Anthony Rowe
More information on the Viola-Jones face detector and its CMUcam3 implementation can be found in our "CC3 Face Detector":http://www.cmucam.org/attachment/wiki/Documentation/cc3_face_detector.pdf document.
34 16 Anthony Rowe
35 17 Anthony Rowe
*Extra Utilities and Images*
36 17 Anthony Rowe
* [attachment:generate_feat_in_struct_for_C.m?format=raw generate_feat_in_struct_for_C.m] 
37 17 Anthony Rowe
** This Matlab file prints the learned adaboost model in a text file so that it can be easily imported in vj.h 
38 17 Anthony Rowe
* [attachment:get_scaled_feature.m?format=raw get_scaled_feature.m]
39 17 Anthony Rowe
** This file used by generate_feat_in_struct_for_C.m
40 17 Anthony Rowe
* "* Test images we used for the viola-jones face detector
41 17 Anthony Rowe
* [http://www.cs.ubc.ca/~pcarbo/viola-traindata.tar.gz":http://vasc.ri.cmu.edu/idb/images/face/frontal_images/images.tar]
42 17 Anthony Rowe
** Face Training data