"Beware of bugs in the above code; I have only proved it correct, not tried it." Donald Knuth.

All the source files present on this page are released under the GNU General Public License version 3 as published by the Free Software Foundation. A copy of the license is available here. Please contact me if you have any question about the license.

Training of 2D and 3D Deformable Part Models

The implementation of the deformable part model of P. Felzenszwalb et al. and the extension I presented at BMVC. It supersedes the version below as it can now both train and test 2D and 3D (translation + scale) models.

Source code: ffld_v2.tar.bz2.

Accelerated Deformable Part Model

My implementation of the deformable part model of P. Felzenszwalb et al., with the exact same performance but with convolutions an order of magnitude faster, that I presented at ECCV. So far it contains only the code for a standalone version.

Source code: ffld.tar.gz Updated (fixed a compilation problem).

Very fast implementation of the MSER detector

Linear time Maximally Stable Extremal Regions (MSER) implementation as described in D. Nistér and H. Stewénius. Linear Time Maximally Stable Extremal Regions, ECCV 2008. The functionality is similar to that of VLFeat but the code is several time faster. MSER is a blob detector, like the Laplacian of Gaussian used by the SIFT algorithm.

Source code: mser.tar.gz Updated!

Robust implementation of the L-BFGS algorithm

Limited-memory BFGS (L-BFGS) algorithm implementation as described by Nocedal. L-BFGS is an unconstrained quasi-Newton optimization method that uses a limited memory variation of the Broyden–Fletcher–Goldfarb–Shanno (BFGS) update to approximate the inverse Hessian matrix. The implementation is robust as it uses a simple line-search technique (backtracking in one direction only) and still works even if the L-BFGS algorithm returns a non descent direction (as it will then restart the optimization starting from the current solution). Its robustness enables it to minimize non-smooth functions, such as the hinge loss.

Source code: lbfgs.h lbfgs.cpp.

C++ BLF 2D rectangle packing algorithm

The Bottom-Left-Fill algorithm is a heuristic employed to pack 2D rectangles. It simply fits each rectangle in the first (most bottom-left) gap big enough. It works better if the rectangles are first ordered, typically by decreasing height or area.

Source code: blf.cpp.

Tasting experiments

The source code used for the experiments of my paper Tasting families of features for image classification, ICCV 2011.

Source code: tasting.