Project details for dlib ml

Logo JMLR dlib ml 17.30

by davis685 - September 16, 2010, 05:34:10 CET [ Project Homepage BibTeX BibTeX for corresponding Paper Download ]

view (4 today), download ( 0 today ), 5 subscriptions


A C++ toolkit containing machine learning algorithms and tools that facilitate creating complex software in C++ to solve real world problems.

The library provides efficient implementations of the following algorithms:

  • support vector machines for classification
  • reduced-rank methods for large-scale classification and regression.
    This includes an SVM implementation and a method for performing kernel ridge regression with efficient LOO cross-validation.
  • relevance vector machines for regression and classification
  • reduced set approximation of SV decision surfaces
  • online kernel RLS regression
  • online kernelized centroid estimation/one class classifier
  • online SVM classification
  • kernel k-means clustering
  • radial basis function networks
  • kernelized recursive feature ranking
  • Bayesian network inference using junction trees or MCMC

The library also comes with extensive documentation and example programs that walk the user through the use of these machine learning techniques.

dlib also comes with a fast matrix library that lets the user use a simple Matlab like syntax. It is also capable of using BLAS and LAPACK libraries such as ATLAS or the Intel MKL when available. Additionally, the use of BLAS and LAPACK is transparent to the user, that is, the dlib matrix object uses BLAS and LAPACK internally to optimize various operations while still allowing the user to use a simple MATLAB like syntax.

Changes to previous version:

Minor bug fixes

BibTeX Entry: Download
Corresponding Paper BibTeX Entry: Download
URL: Project Homepage
Supported Operating Systems: Linux, Macosx, Windows, Unix, Solaris
Data Formats: Svmlight, Binary
Tags: Svm, Classification, Clustering, Regression, Kernel Methods, Matrix Library, Kkmeans, Optimization, Algorithms, Exact Bayesian Methods, Approximate Inference, Bayesian Networks, Junction Tree
Archive: download here

Other available revisons

Version Changelog Date

This release adds a number of new features, most important of which is a deep convolutional neural network version of the max-margin object detection algorithm. This tool makes it very easy to create high quality object detectors. See for an introduction.

October 11, 2016, 01:54:09

This release adds support for cuDNN 5.1 as well as a number of minor bug fixes and usability improvements.

August 13, 2016, 20:24:13

This release adds a deep learning toolkit to dlib that has a clean and fully documented C++11 API. It also includes CPU and GPU support, binds to cuDNN, can train on multiple GPUs at a time, and comes with a pretrained imagenet model based on ResNet34.

The release also adds a number of other improvements such as new elastic net regularized solvers and QP solvers, improved MATLAB binding tools, and other usability tweaks and optimizations.

June 25, 2016, 23:04:08

This release has focused on build system improvements, both for the Python API and C++ builds using CMake. This includes adding a script for installing the dlib Python API as well as a make install target for installing a C++ shared library for non-Python use.

October 29, 2015, 01:48:44

This release adds new clustering tools as well as upgrades the shape_predictor to allow training on datasets with missing landmarks. It also includes bug fixes and minor usability improvements.

August 16, 2015, 04:33:39

This release adds a tool for solving linear model predictive control problems as well as improved python bindings and other usability improvements.

June 4, 2015, 04:50:55

This release adds an implementation of the least-squares policy iteration algorithm, a tool for plotting 3D point clouds, and a few bug fixes and usability improvements.

April 30, 2015, 03:49:28

This release adds an implementation of spectral clustering as well as a few bug fixes and usability improvements.

March 1, 2015, 23:51:06

In addition to a number of minor bug fixes and usability improvements, this release adds the following major features:

  • A real-time video object tracker
  • Python APIs for using dlib's shape prediction and face landmarking tools
February 4, 2015, 01:35:50

This release adds tools for computing 2D FFTs, Hough transforms, image skeletonizations, and also a simple and type safe API for calling C++ code from MATLAB.

December 20, 2014, 22:38:51

This release contains mostly minor bug fixes and usability improvements, with the notable exception of new routines for extracting local-binary-pattern features from images and improved tools for learning distance metrics.

November 13, 2014, 23:42:18

In addition to a number of usability improvements, this release adds an implementation of the recent paper "One Millisecond Face Alignment with an Ensemble of Regression Trees" by Vahid Kazemi and Josephine Sullivan. This includes tools for performing high quality face landmarking as well as tools for training new landmarking models. See the face_landmark_detection_ex.cpp and train_shape_predictor_ex.cpp example programs for an introduction.

August 29, 2014, 02:56:23

Fixed a bug in the way file serialization was being handled on MS Windows platforms.

June 17, 2014, 01:05:32
  • Added the ability to set a previously trained function as a prior to the svm_multiclass_linear_trainer, svm_c_linear_trainer, and svm_rank_trainer objects.
  • Added a user settable loss to the structural_assignment_trainer and structural_track_association_trainer objects.
  • Added evaluate_detectors(), a function for efficiently running multiple fHOG based object detectors.
June 3, 2014, 01:54:28

The major new feature in this release is a Python API for training histogram-of-oriented-gradient based object detectors and examples showing how to use this type of detector to perform real-time face detection. Additionally, this release also adds simpler interfaces for learning to solve assignment and multi-target tracking problems.

April 10, 2014, 01:47:08

This release adds a tool for training histogram-of-oriented-gradient based object detectors and examples showing how to use this type of detector to perform real-time face detection. The release also adds multi-threaded training options for the multiclass classifiers as well as numerous other usability improvements.

February 4, 2014, 01:00:50

This release adds bound constrained non-linear optimizers using the BFGS and L-BFGS methods. It also includes a new tool for learning a max-margin Mahalanobis distance metric as well as routines for easily computing Felzenszwalb's 31 channel HOG image representation.

October 23, 2013, 00:58:35

This release has been focused on improving the speed and usability of dlib's structural support vector machine solver. This includes two new tutorial style example programs showing how to use the solver from either C++ or Python.

August 29, 2013, 01:06:53

This release brings a tool for solving large scale support vector regression problems to the library as well as a structural SVM tool for learning BIO or BILOU style sequence tagging models. It also adds python interfaces to a number of dlib's machine learning tools.

June 21, 2013, 23:53:04

This release has primarily focused on improving the flexibility and ease of use of the object detection tools.

June 1, 2013, 19:47:11

In addition to some bug fixes, this release also brings the following notable improvements to the library:

  • The SURF feature extraction tool has higher matching accuracy than in previous dlib releases.
  • The cutting plane optimizer is now faster
  • A new tool for computing the singular value decomposition of very large matrices
  • A new tool for performing canonical correlation analysis on large datasets
  • A new tool for easily writing parallel for loops
March 25, 2013, 23:48:23

This release includes a large number of new minor features and usability improvements. It also includes a new machine learning tool for learning to rank objects. This is the dlib::svm_rank_trainer, an implementation of the well known SVM-Rank algorithm. Additionally, the implementation runs in O(n*log(n)) time and is therefore suitable for use with large training datasets.

February 5, 2013, 00:39:50

This release brings a number of new features to the library. The highlights include a probabilistic CKY parser, tools for creating applications using the Bulk Synchronous Parallel computing model, and two new clustering algorithms: Chinese Whispers and Newman's modularity clustering.

December 19, 2012, 01:39:59

In addition to a number of minor usability and feature improvements, this release also gives dlib's object detection tools the ability to model objects with movable parts.

October 19, 2012, 00:18:17

This release has focused on adding a set of graph cut algorithms. In particular, tools for finding the minimum weight cut on a graph, finding the MAP assignment of a Potts style Markov random field, and strucural SVM tools for learning the parameters of such a Markov model have been added.

June 16, 2012, 01:46:21

This release has focused mostly on minor usability and feature improvements. Some highlights are better support for learning to do sequence labeleing from unbalanced data, new image processing routines, and new tools for performing Kalman filtering and recursive least squares filtering.

April 12, 2012, 01:21:01

This release contains a number of new features and bug fixes. Some highlights are:

  • A structural support vector machine method for learning to solve assignment problems.
  • New feature extractors for detecting objects in images.
February 3, 2012, 00:39:10

This release contains a number of new features and bug fixes. Some highlights are:

  • A structural support vector machine method for learning to do sequence labeling.
  • A graph-based image segmentation tool.
November 22, 2011, 03:46:18

This release contains a number of new features and bug fixes. Some highlights are:

  • A structural support vector machine method for learning to detect objects in images.
  • Two new tools for finding the most likely assignment in a graphical model. One for chain-structured graphs and the other for approximate inference in general graphs.
October 23, 2011, 13:26:20
  • Added optimizations to the threaded and distributed structural svm solvers for the case where there are many data samples and the separation oracle is quick to evaluate.
  • Added Austin Appleby's excellent MurmurHash3.
  • Various usability and documentation improvements.
June 12, 2011, 15:21:48

The structural support vector machine solver can now be distributed across many networked computers and multi-core processors.

May 22, 2011, 18:51:29
  • Various usability improvements
  • Improved the feature vector caching in the structural SVM solver
May 7, 2011, 17:47:26
  • Added a multiclass SVM
  • Added a tool for solving the optimization problem associated with structural support vector machines
  • Added an implementation of the Hungarian algorithm for solving the optimal assignment problem
  • Improved the efficiency of the cutting plane optimizer used for SVM training
  • Added a ridge regression implementation optimized for use with the linear kernel
  • Minor bug fixes
March 25, 2011, 02:05:14

This release includes new interfaces to the quadratic program solvers as well as implementations of C-SVM, epsilon-insensitive support vector regression, and one-class SVM algorithms. Additionally, general purpose tools for creating one-vs-one and one-vs-all multiclass classifiers have been added.

January 4, 2011, 01:14:19

The major new feature in this release is a general purpose trust region routine for performing non-linear optimization as well as a Levenberg-Marquardt implementation for solving non-linear least squares problems. This release also includes a variety of feature improvements and optimizations to the linear algebra support library.

December 5, 2010, 20:33:10

This release adds LAPACK support. In particular, now all matrix decomposition routines make use of LAPACK whenever DLIB_USE_LAPACK is #defined.

September 16, 2010, 05:34:32

Minor bug fixes

September 16, 2010, 05:34:10

This release adds LAPACK support. In particular, now all matrix decomposition routines make use of LAPACK whenever DLIB_USE_LAPACK is #defined.

September 16, 2010, 05:33:25

This release adds LAPACK support. In particular, now all matrix decomposition routines make use of LAPACK whenever DLIB_USE_LAPACK is #defined.

July 29, 2010, 03:08:47

This release adds a tool for performing kernel ridge regression on large datasets. It also implements an efficient method for computing leave-one-out cross-validation error rates. Finally, a new example program detailing the steps necessary to create custom matrix expressions is included.

July 25, 2010, 20:50:21

This release adds a non-linear SVM training algorithm capable of learning from very large datasets. It also adds a tool for performing large scale manifold regularization.

May 17, 2010, 03:56:36

This release adds a general purpose implementation of the OCA optimizer, OCAS SVM trainer, and support for loading and saving LIBSVM formatted data files.

March 7, 2010, 21:37:42

This release was primarily devoted to bug fixing and usability improvements.

February 6, 2010, 00:54:08

This release improves the documentation, adds a few example programs, and fixed some bugs. Additionally, the following new components have been added:

  • A semi-supervised PCA
  • A tool for computing empirical kernel maps
  • The BOBYQA algorithm for box constrained derivative-free optimization
January 5, 2010, 01:17:24

This release adds a kernel cache and support for training on highly unbalanced data to the PEGASOS SVM training module. Additionally, the library now includes an implementation of the L-BFGS algorithm for unconstrained optimization.

September 11, 2009, 04:09:11

This release has been focused mostly on maintenance and usability improvements.

July 14, 2009, 03:04:23

This release adds kernels capable of operating on sparse vectors. It also includes various optimizations targeted at speeding up algorithms that operate with linear kernels.

April 6, 2009, 00:57:16

This release has two main updates:

  • The Pegasos SVM training implementation now has a parameter to allow the user to directly control the number of output support vectors.
  • The documentation has been cleaned up and example programs updated
March 17, 2009, 03:49:11

In addition to a lot of small usability improvements, this release adds a sparse kernelized version of the Pegasos SVM training algorithm.

March 9, 2009, 02:21:49

Initial Announcement on

June 13, 2008, 13:55:10


No one has posted any comments yet. Perhaps you'd like to be the first?

Leave a comment

You must be logged in to post comments.