CodeJerod Weinman < CompSci < Grinnell
Notice: If you use any of this software for research that is published, please send an email to me at ; I would be grateful if your paper would kindly acknowledge its use.
The following packages are freely released under the GNU GPL.

CRNN for Tensorflow

CRNN Convolutional, stacked bidirectional LSTM trained with CTC loss for word recognition built in Tensorflow 1.1 (Python).

MaxEnt for Matlab

@maxent Matlab implementation of a discriminative Maximum Entropy (MaxEnt) classifier (aka multinomial logistic regression), as in [Berger96]. Includes several options for training regularization (Gaussian and Laplacian priors). Requires the L-BFGS optimizer below.

CUDA MaxEnt extension

cudamaxent CUDA implementation of a the training algorithm for the Matlab-based discriminative Maximum Entropy (MaxEnt) classifier. Features up to a 205x speed-up compared to a multicore CPU.

Spatial Displacement MaxEnt for Matlab

@sdmaxent Matlab implementation of a "spatial displacement" discriminative Maximum Entropy (MaxEnt) classifier (aka multinomial logistic regression), as in [Berger96]. Designed to be trained and applied via convolution over an entire image. Thus, features are not vectors per se, but a stack of feature images and the features passed to the "classifier" are values in all feature images in a window around each pixel.Includes several options for training regularization (Gaussian and Laplacian priors). Requires the L-BFGS optimizer below.

L-BFGS for Matlab

lbfgs.m Matlab implementation of L-BFGS, a limited memory second-order (quasi-Newton) optimizer ideal for parameter training in conditional Markov models. Also includes a backtracking line minimizer.

Stochastic Gradient Descent for Matlab

sgd.m Matlab implementation of stochastic gradient descent, using local rate adaptation by performing non-linearly normalized meta-learning on the learning rate, as in [Schraudolph99].

Discrete Factor Graphs for Matlab

@factorgraph Matlab implementation of a factor graph, supported by belief propagation for inference, as in [Kschischang98]. Both sum-product and max-product, synchronous and asynchronous message passing schedules are included, as well as traditional and sparse belief propagation (sparse BP) messages (c.f. [Weinman09]). Supports arbitrary-arity factors and non-homogeneous variable nodes, as well as linear factors whose parameters may be tied and combined with observations to "unroll" into the complete graph. No parameter learning is supported. Bug reports and for-loop eliminating optimizations (e.g., using cellfun and bsxfun) are welcome. Here is a brief overview of the class design.

Structured Lexicon/Word Factor

@wordfactor Matlab implementation of the lexical factor used in [Weinman07, Weinman09]. Compactly supports message passing (both dense and sparse) using the factor graph library (above).

PIONEER / VIDI

The PIONEER system (Probabilistic Integrator of Noisy Evidence Enabling Reading) has been under development since 2005, when it was originally known as VIDI (Visual Information DIssemination ). Portions will appear here as they are prepared.

Word Normalization

wordnorm Matlab implementation of the word normalization algorithm described in [Weinman14]. Note two separate toolbox dependencies (packaged separately): derivest and a slightly modified netlab (diff from v3.3 [18/06/2004] included). A short installation guide and README demonstrates usage.

Conditional Random Field Toolkits

Grid CRF

gcrf Matlab implementation of a grid-topology conditional random field, supported by belief propagation for inference, as in [Kschischang98], and parameter learning. Both sum-product and max-product, synchronous and asynchronous message passing schedules are included. A short overview, installation guide, and README are included.

Coming Soon

Matlab code for training chain, and arbitrary topology conditional random fields (CRFs) with pairwise clique potentials. (Prodding interest always helps.)

Other Contributions

Contributions that live elsewhere include:
  • Parts of the Java MaLLeT toolkit (clustering, and other sundry modifications).
  • Extensions of the C++ Middlebury stereo code for doing loopy belief propagation and mean field inference (both with speedy sparse variants) in grid-shaped random field models.