The Library
Help/Info
Current Release
|
|
Last Modified:
Jan 03, 2011
|
|
Release notes
Release 17.34
Release date: Jan 03, 2011 Major Changes in this Release:
|
New Stuff:
- General Stuff
- Added the promote template
- Added the basic_type template
- Added the assign_image_scaled() function
- Added the unordered_pair object.
- Added the symmetric_matrix_cache() function
- Added two new quadratic program solvers. The solve_qp2_using_smo
and solve_qp3_using_smo objects.
- Machine Learning Stuff
- Added the svm_c_trainer object. It implements C-SVM classification and
allows the user to set different C values for each class.
- Added the svm_one_class_trainer object.
- Added the svr_trainer object. It implements epsilon-insensitive
support vector regression.
- Added two new any objects. The any_decision_function for containing
decision function style objects and the any_trainer for trainers.
- Added cross_validate_regression_trainer()
- Added test_regression_function()
- Added the probabilistic() function. It is a trainer adapter that
simply calls train_probabilistic_decision_function().
- Added tools for multiclass classification
- Added one_vs_one_trainer
- Added one_vs_all_trainer
- Added cross_validate_multiclass_trainer()
- Added test_multiclass_decision_function()
Non-Backwards Compatible Changes:
- invalid_svm_nu_error has been renamed to invalid_nu_error.
- Changed the pixel_traits so that signed grayscale pixel types are allowed.
This involved adding a few new fields to pixel_traits. I also changed the
get_pixel_intensity() function so that its return value is of the same type
as the basic pixel type rather than always being unsigned long.
- Removed the kernel_type typedef from the normalized function since this
meta-object should be capable of working with non-kernel decision functions.
- train_probabilistic_decision_function() no longer accepts column vectors of
samples and labels. Now it only accepts std::vectors of samples and labels.
Bug fixes:
- Fixed a bug in the deserialization code for the sparse kernels. The bug
prevented code which used the deserialize() routine from compiling.
Other:
- Changed the image display GUI widgets to use the assign_image_scaled()
function internally. Now they will accept just about any image and
do the right thing.
- Modified the type_safe_union so that you can call apply_to_contents() on const
type_safe_unions.
- Added serialization support for std::pair objects.
- Made the train_probabilistic_decision_function() more general by making it work
with any kind of trainer object rather than only ones which produce
dlib::decision_function objects. I also made it work with trainers that only
take std::vectors.
- Added overloads to the config_reader's methods to allow it to load directly
from a file name given as a string in addition to taking istream objects.
|
Release 17.33
Release date: Dec 05, 2010 Major Changes in this Release:
|
New Stuff:
- Added the ability to add/subtract scalar values to/from all the elements
of a matrix using the - and + operators.
- Added a trust region optimizer.
- Added Levenberg-Marquardt and LM/quasi-newton hybrid methods for solving
non-linear least squares problems.
- Added an any container object.
Non-Backwards Compatible Changes:
Bug fixes:
- Fixed a compiler warning and also a runtime bug in sort_basis_vectors().
The bug triggered when all the basis vectors were included in the final
answer.
Other:
- Added a bunch of overloads to catch operations on diagonal matrices
and use more efficient code paths for them. For example, inv(diagm(d))
turns into diagm(reciprocal(d)). Multiplication by a diagonal matrix
is now also handled efficiently.
|
Release 17.32
Release date: Nov 13, 2010 Major Changes in this Release:
|
New Stuff:
- Added a class for reading JPEG image files.
- Added scale_rows(), flipud() and fliplr() matrix functions.
- Added console_progress_indicator. It is a tool for measuring how long a
task will take.
- Added sort_basis_vectors(). It is a function for performing supervised
basis selection.
Non-Backwards Compatible Changes:
- Renamed the linearly_independent_subset_finder's dictionary_size() member
function to size(). This way, linearly_independent_subset_finder objects
can be used in many templated functions which expect objects which look
like arrays.
Bug fixes:
- Changed the assert macros so that they don't use __PRETTY_FUNCTION__
with gcc 4.4.5 since, on Ubuntu at least, this version of gcc segfaults
when __PRETTY_FUNCTION__ is used within certain template constructs.
- Improved the alias detection capability of kernel_matrix() expressions.
Now statements of the form: sample = kernel_matrix(kern, *, sample) can
be used since the aliasing of sample will be handled.
Other:
- Generally tried to make things more usable.
- Optimized matrix expressions such as mat*diagm(vect)
- Made the code in chol() more robust to indefinite matrices.
|
Release 17.31
Release date: Sep 15, 2010 Major Changes in this Release:
|
New Stuff:
- Added the running_scalar_covariance object.
- All the matrix decomposition routines now use LAPACK when DLIB_USE_LAPACK
is #defined.
Non-Backwards Compatible Changes:
- Removed the dlib::EOTHER constant since it conflicts with visual
studio 2010.
- Changed the svd functions so you can't supply output matrices which use
both column and row major layouts. Now all the output matrices need to
use the same memory layout.
- Removed the qr_decomposition::get_householder() function.
Bug fixes:
- Minor fixes so that dlib compiles in Visual Studio 2010
Other:
- Added an overloaded matrix_assign() that handles symmetric kernel_matrix()
expressions more efficiently by only evaluating the upper triangular part
of the matrix.
|
Release 17.30
Release date: Jul 28, 2010 Major Changes in this Release:
|
New Stuff:
Non-Backwards Compatible Changes:
Bug fixes:
- Fixed a compile-time bug in the matrix related to multiplication by
subm() expressions when the BLAS bindings were enabled.
- Fixed a bug in train_probabilistic_decision_function() which could
cause it to go into an infinite loop when working with very large
datasets.
Other:
|
Release 17.29
Release date: Jul 25, 2010 Major Changes in this Release:
|
New Stuff:
- Added a reference_wrapper implementation and modified the thread_function
slightly so it works with it.
- Added an implementation of kernel ridge regression.
- Added a simple newton search strategy for optimizing functions.
Non-Backwards Compatible Changes:
- If you have created your own matrix expressions then its possible this
new release will cause them to not compile.
Bug fixes:
- Fixed a bug in scale_columns. It said it didn't have any destructive aliasing
when in fact it destructively aliased its second argument.
- Fixed a bug in the random number generator where setting the seed back to ""
didn't result in the object going back to it's initial state.
Other:
- Reorganized the matrix expression code. It's now much simpler and the
library includes a new example program which details the steps needed to
create new matrix expressions.
- Changed the train_probabilistic_decision_function() routine so that it uses
a more numerically stable method to perform its maximum likelihood optimization.
- Added missing get/set epsilon functions to the RVM training objects.
I also changed the default epsilon from 0.0005 to 0.001.
|
Release 17.28
Release date: Jun 14, 2010 Major Changes in this Release:
|
New Stuff:
- Added the simplify_linear_decision_function() routines.
- Added the find_approximate_k_nearest_neighbors() function.
- Added the fill_lisf() function.
Non-Backwards Compatible Changes:
- Made the sample_pair have a default distance of infinity instead of
the max floating point value. I also reworked the graph creation functions
to make them a little more versatile. Now you can use infinite distances to
indicate that certain nodes are not connected at all.
- Changed the linear_manifold_regularizer to normalize the regularization
parameter by the sum of edge weights instead of the sum of edges.
Bug fixes:
- Fixed a bug in the timer_kernel_2 object. In certain rare cases it would
stop calling the action function and essentially shut down without being
told to do so.
Other:
- Made the reduced() and reduced2() functions more efficient.
- Many small usability improvements here and there.
|
Release 17.27
Release date: May 16, 2010 Major Changes in this Release:
|
New Stuff:
- Added the svm_c_ekm_trainer. It is a kernelized version of the fast
linear trainer svm_c_linear_trainer.
- Added the linear_manifold_regularizer and some supporting tools.
- Added the sum_rows(), sum_cols(), join_rows(), join_cols(), reshape(),
and pointer_to_matrix() functions.
- Added the randomly_subsample() function.
Non-Backwards Compatible Changes:
Bug fixes:
- Fixed some minor compile time bugs on certain older compilers.
Other:
- Updated the += and -= matrix operators to be a little more flexible. Now
if you try to apply them to a matrix of the wrong size it will automatically
resize the target matrix and just do a normal assignment.
- Removed the requirement that you load dng files into an image of the exact
pixel type that created the file. Now you can use any pixel type. I also
changed the code so that grayscale pixels with more than 16 bits get saved as
16 bit grayscale images instead of 8 bit images.
|
Release 17.26
Release date: Mar 07, 2010 Major Changes in this Release:
|
New Stuff:
- Added the solve_qp_using_smo() function to solve certain quadratic
programs.
- Added the oca object. It is an implementation of the Optimized Cutting
Plane Algorithm.
- Added a linear SVM trainer that uses oca.
- Added an implementation of the Histogram of Oriented Gradients algorithm
- Added a simple tool for making image pyramids
- Added the running_covariance object
- Added a simple linear (i.e. non-kernelized) kmeans implementation
- Added support for serializing dlib::int64
- Added some functions to load and save LIBSVM formatted data files.
Non-Backwards Compatible Changes:
- Changed the definition of dlib's sparse vector format to require
unsigned integral keys. Having this requirement is nice because it
creates a simple correspondence between dense vector index values and
sparse vector keys. The previous sparse vector definition was
excessively generic.
- Renamed sparse_vector::dot_product() to sparse_vector::dot() so that
both dense and sparse vectors have a global function with the same
name (i.e. dot()).
Bug fixes:
- Fixed a bug discovered by Mitchell Peabody. In some instances trying to
deserialize a std::vector would fail to compile.
Other:
- Increased the number of template arguments of the type_safe_union from 10
to 20. Additionally, I made the get_id() function public and renamed it
to get_type_id(). I also added a comment explaining the serialization
format of type_safe_union objects.
- Moved the optimization algorithms into their own page in the documentation.
- Added a Suggested Books page to the documentation
|
Release 17.25
Release date: Feb 05, 2010 Major Changes in this Release:
|
New Stuff:
- Added the ability to compute transformation matrices that map between
the representations used by different empirical_kernel_maps. Also added
the ability to compute projection error.
- Added the random_subset_selector object.
- Added the compute_mean_squared_distance() function.
Non-Backwards Compatible Changes:
- Modified the logger's hook implementation so that it uses a special stream
buffer instead of an std::ostringstream. This way logging doesn't cause
memory allocations. This breaks backwards compatibility with the previous
hook function API but only slightly. The new hook functions must take a
const char* instead of std::string.
- Added the const_ret_type typedef to the matrix_exp. It is now required that
all matrix expressions define this type. This enables the expressions to
return elements by constant reference when appropriate rather than always
returning by value.
Bug fixes:
- Fixed a bug in the matrix BLAS bindings that caused BLAS to return an invalid
argument error. The error occurred when general matrix multiply expressions
were transposed and didn't result in a square matrix. E.g. mat = trans(a*b)
where mat isn't square.
- Fixed potential compile time bugs in the comparison operators for futures.
- Added a missing check for division by zero in the SURF feature extractor.
- Modified the find_min_single_variable() function so that it is more
robust when working with functions that are made up of a bunch of
constant value strips. Previously, these kinds of functions could
cause the optimization to fail.
Other:
- Changed the regression test suite so that when it sets the logging level
it now sets it for all loggers. Not just ones that start with "test."
|
Old Release Notes
|