Note

The Patterns library currently has two implementations of pattern-related data structures and algorithms. The differences are described below, along with the list of examples for each implementation. There is also an example for the ofxGesture openFrameworks plugin.

Examples for the old implementation

The older implementation bundles the data and functionality into self-contained classes. It is easier to use, but only provides one kind of learning algorithm, one kind of inference algorithm, and is limited to gesture recognition tasks. However, it is currently faster and yields better experimental results.

The functionality currently present in the old implementation will all eventually be ported to the new implementation described below.

Table 1. Examples

Name

Description

Link

Mouse Gesture Recognition

On-line recognition of unsegmented gestures of mouse movement.

code

Vector Gesture Library

A shared library with a simplified interface and accompanying GUI, performing gesture recognition from feature vectors.

code

GUI Dynamic Time Warping

Visualization of the distance matrix used in the Dynamic Time Warping algorithm, computed from entered examples of mouse movement.

code

Coupled Gesture Recognition

Mouse gesture recognition using a coupled HMM which separates the two dimensions of movement into independent streams.

code

Gesture Set Recognition

On-line recognition of two numeric patterns in entered number sequence.

code

Gesture Serialization

Saving and loading a gesture model to/from a file.

code

Synchrony / Repetition

Measures similarity between two incoming sequences (or self-repetition of a single sequence).

code

Monocular Video Gesture Data

Code to load and model monocular video gesture data (point tracked in the image plane). Code and data provided by Dhi Aurrahman. Can be used with experiments listed below.

code

Arc Gesture Data

Code to load and model gesture data of a tangible object moving in an arc. Can be used with experiments listed below.

code

Video Gesture Data

Code to load and model gesture data obtained from a pair of video cameras. Data provided by Bo Peng. Can be used with experiments listed below.

code docs

Modeling Comparison Experiment

Compares implemented models in how well they model test data after being trained on training data.

code part 1 code part 2

Gesture Classification Experiment

Compares implemented models in how well they classify test gestures after being trained on training gestures.

code docs

Gesture-Nongesture Discrimination Experiment

Compares implemented models in how well they discriminate between test gestures and non-gestures after being trained on training data of the gesture only.

code


Examples for the new implementation

The new implementation separates data from algorithms, and allows the same data (probabilistic models) to be used for both pattern recognition and synthesis. It implements several training algorithms (expectation-maximization, best-match / Viterbi training, naive alignment training) and several inference algorithms (Viterbi, forward, backward, forward-backward).

Table 2. Examples

Name

Description

Link

MIDI generator

Generation of MIDI notes from a Markov chain.

code

Augmented HMM Example

Construction of an arbitrary AHMM, and use of the model for inference.

code

Augmented HMM Training Example

Training of an arbitrary AHMM.

code

Vowel Data

Code to load and model Japanese vowel data hosted by the UC Irvine Machine Learning Repository (originally provided by Mineichi Kudo, Jun Toyama, and Masaru Shimbo).

code

Vowel Data Classification Experiment

Gesture classification experiment based on the Japanese vowel data.

code


Examples for the ofxGesture plugin

Table 3. Examples

Name

Description

Link

Real-time Mouse Gesture Recognition

Recognition of mouse gestures performed in a window.

docs