Software

EBLearn: A C++ Library for Machine Learning and Computer Vision

EBLearn is an object-oriented C++
library that implements various machine learning models, including
energy-based learning, gradient-based learning for machine composed of
multiple heterogeneous modules. In particular, the library provides a
complete set of tools for building, training, and running
convolutional networks.

In Eblearn, a learning machine is constructed by assembling
modules. Each module can be a functional module of a factor. Each
module has at least two methods: fprop, which computes the output(s)
from the input(s), and bprop, which computes the gradient of a loss
function with respect to the input(s) and internal parameters given
the gradient of the loss function with respect to the
output(s). Functional modules implement simple deterministic
dependencies between inputs and outputs. Factor modules implement
non-deterministic dependencies between inputs: the takes one or
several input objects and output a scalar energy, which can be
interpreted as a negative log-likelihood. Factor modules also have an
infer method that produce the combination of unknown inputs with the
lowest energy. This design allows semi-automatic differentiation of
complex architectures for gradient-based learning, as well as
efficient MAP inference algorithms for factor graphs. Eblearn uses a
similar model and API as the machine learning library distributed with
the Lush language. All the trainable parameters are collected in a
single vector, which facilitates the implementation of fancy
optimization algorithms independently of the structure of the learning
machine.

Eblearn implements convolutional networks for invariant recognition of
images and temporal sequences. It implements all the known tricks to
make gradient-based learning fast, including the stochastic diagonal
Levenberg-Marquardt method.

Eblearn also provides utility functions to preprocess images and
access and manipulate datasets. It comes with a portable GUI toolkit
built on top of Qt, which enables the graphic visualization of
internal variables and other data. The library has been used
successfully to train face detectors, and object recognizers.

Tired of Matlab? Lush is an
easy-to-learn, open-source object-oriented programming language
designed for researchers, experimenters, and engineers working in
large-scale numerical and graphic applications.

Lush combines three languages in one: a very simple to use,
loosely-typed interpreted language, a strongly-typed compiled language
with the same syntax, and the C language, which can be freely mixed
with the other languages within a single source file, and even
within a single function.

If you do research and development in signal processing, image
processing, machine learning, computer vision, bio-informatics, data
mining, statistics, or artificial intelligence, and feel limited by
Matlab and other existing tools, Lush is for you. If you want a
simple environment to experiment with graphics, video, and sound,
Lush is for you. Lush is Free Software (GPL) and runs under GNU/Linux,
Solaris, and Irix.