VLG Group
Group Meetings
Y. LeCun's website
CS at Courant
Courant Institute


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.

Visit the EBLearn home page

Lush: The Programming Language for Research

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.

Lush has a library of over 14,000 functions and classes, some of which are simple interfaces to popular libraries: vector/matrix/tensor algebra, linear algebra (LAPACK, BLAS), numerical function (GSL), 2D and 3D graphics (X, SDL, OpenGL, OpenRM, PostScipt), image processing, computer vision (OpenCV), machine learning (gblearn2, Torch), regular expressions, audio processing (ALSA), and video grabbing (Video4linux).

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.

Visit the Lush home page

VisionGrader: A Scoring Tool for Object Detection in Images

VisionGrader is a Python scripts that can be used to score computer vision algorithms designed to detect objects in images.

VisionGrader can parse ground truth data from various sources (e.g. INRIA pedestrian dataset format), and produce ROC or DET curves.