4. Face Recognition/Classification

The final stage of the pipeline uses extracted FacialFeatures to perform face recognition (determining who’s face it is) or classification (determining some characteristic of the face; for example male/female, glasses/no-glasses, etc). All recognisers/classifiers are instances of FaceRecogniser. There are a couple of default implementations, but the most common is the AnnotatorFaceRecogniser which can use any form of IncrementalAnnotator to perform the actual classification. There are also specific recognisers for the Eigen Face and Fisher Faces algorithms that can be constructed with internal recognisers (usually a AnnotatorFaceRecogniser) that perform specific machine learning operations. All FaceRecognisers are capable of serialising and deserialising their internal state to disk. All recognisers are also capable of incremental learning (i.e. new examples can be added at any point).

Currently, there are implementations of IncrementalAnnotator that implement common machine-learning algorithms including k-nearest-neighbours and naive-bayes. Batch annotators (BatchAnnotators), such as a Support Vector Machine annotator can also be used by using an adaptor to convert the BatchAnnotator into an IncrementalAnnotator (for example a InstanceCachingIncrementalBatchAnnotator).

The face detection and recognition components can be managed separately, however, the FaceRecognitionEngine class can be used to simplify usage.