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. |
|
|
Vector Gesture Library |
A shared library with a simplified interface and accompanying GUI, performing gesture recognition from feature vectors. |
|
|
GUI Dynamic Time Warping |
Visualization of the distance matrix used in the Dynamic Time Warping algorithm, computed from entered examples of mouse movement. |
|
|
Coupled Gesture Recognition |
Mouse gesture recognition using a coupled HMM which separates the two dimensions of movement into independent streams. |
|
|
Gesture Set Recognition |
On-line recognition of two numeric patterns in entered number sequence. |
|
|
Gesture Serialization |
Saving and loading a gesture model to/from a file. |
|
|
Synchrony / Repetition |
Measures similarity between two incoming sequences (or self-repetition of a single sequence). |
|
|
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. |
|
|
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. |
|
|
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. |
|
|
Modeling Comparison Experiment |
Compares implemented models in how well they model test data after being trained on training data. |
|
|
Gesture Classification Experiment |
Compares implemented models in how well they classify test gestures after being trained on training gestures. |
|
|
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. |
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. |
|
|
Augmented HMM Example |
Construction of an arbitrary AHMM, and use of the model for inference. |
|
|
Augmented HMM Training Example |
Training of an arbitrary AHMM. |
|
|
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). |
|
|
Vowel Data Classification Experiment |
Gesture classification experiment based on the Japanese vowel data. |
Examples for the ofxGesture plugin
Table 3. Examples
|
Name |
Description |
Link |
|---|---|---|
|
Real-time Mouse Gesture Recognition |
Recognition of mouse gestures performed in a window. |