ml-lib is a library of machine learning externals for Max and Pure Data. ml-lib is primarily based on the Gesture Recognition Toolkit by Nick Gillian ml-lib is designed to work on a variety of platforms including OS X, Windows, Linux, on Intel and ARM architectures.
The goal of ml-lib is to provide a simple, consistent interface to a wide range of machine learning techniques in Max and Pure Data. The canonical NIME 2015 paper on ml-lib can be found here.
Bug Reports and Discussion
Please use the GitHub Issue Tracker for all bug reports and feature requests.
Please use the ArtFab Discussion form (under Software > ml.lib) for all general conversations, questions, discussions and project sharing.
ML-LIB IS CURRENTLY IN OPEN BETA
This means the software is considered feature complete, but has not been extensively tested and should not be used in production environments.
The library has currently been tested on Mac OS X with Max 5.x and 6.x and on Mac OS X and Linux on i386 and armv6 architectures using Pure Data.
Bugs should be reported via the issues page.
- Download the latest release from the GitHub releases page
- For Max, add the
ml.*.mxoexternals and the ml-lib helpfiles to your Max Search Path
- For Pd, add
ml.*.pd_*to your Pd search path and add the "ml" library to your startup flags by opening up the application Preferences and adding "-lib ml" to the Startup Flags
Compiling from source
Instructions for compiling ml-lib from source can be found here
ml-lib objects follow the naming convention
ml.* where “*” is an abbreviated form of the algorithm implemented by the object.
A full list of all objects and their parameters can be found here.
For more detailed descriptions of the underlying algorithms, see links below.
Objects fall into one of five categories:
- Pre-processing: pre-process data prior to used as input to a classification or regression object
- Post-processing: post-process data after being output from a classification or regression object
- Feature extraction: extract “features” from control data. Feature vectors can be used as input to classification or regression objects
- Classification: take feature vectors as input, and output a value representing the class of the input. For example an object detecting hand position might output 0 for left, 1 for right, 2 for top and 3 for bottom.
- Regression: perform an M x N mapping between an input vector and an output vector with one or more dimensions. For example an object may map
ydimensions of hand position to a single dimension representing the distance from origin (0, 0).
No objects currently implemented
No objects currently implemented
ml.peak: output detected peaks from a continues stream of input values
ml.minmax: output a vector of minima and maxima locations (peaks) from an input vector
ml.adaboost: Adaptive Boosting
ml.dtw: Dynamic Time Warping
ml.gmm: Gaussian Mixture Model
ml.hmm: Hidden Markov Models
ml.knn: k’s Nearest Neighbour
ml.randforest: Random Decision Forest
ml.svm: Support Vector Machines
ml.linreg: Linear Regression
ml.logreg: Logistic Regression
ml.mlp: Multi-layer Perceptron Artificial Neural Networks (ANN)
See the help file for each component for further details about operation and usage.
ml-lib is copyright (c) 2014 Carnegie Mellon University.