The Library
Help/Info
Current Release
Sourceforge
|
|
Last Modified:
Mar 07, 2010
|
|
Release notes
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."
|
Release 17.24
Release date: Jan 04, 2010 Major Changes in this Release:
|
New Stuff:
- Added some MATLAB style thresholding relational operators to the matrix.
- Added the kernel_matrix() functions.
- Added the empirical_kernel_map object.
- Added the discriminant_pca object.
- Added the read_write_mutex object.
Non-Backwards Compatible Changes:
- Renamed the support_vectors member of the decision_function and
distance_function classes to basis_vectors. This name more appropriately
reflects how these two classes are used within the library.
- Changed the matrix_exp interface slightly. This could only impact users
who created their own custom matrix expressions. If you don't get a
compiler error then you don't have to worry about it.
Bug fixes:
- Fixed a minor error in the LBFGS code.
- Added a missing check for division by zero to the kcentroid, krls,
and linearly_independent_subset_finder classes. If someone added
the zero vector to them as the first training example a division by zero
could result.
- There were a few cases where the code wouldn't compile when using
matrices of complex numbers. There was also a runtime bug that triggered
when a rank 1 update was performed where one of the vectors was conjugated
and two or more transposes were used in certain positions. This bug
caused the wrong output to be computed if the BLAS bindings were used.
Both of these bugs have been fixed.
- Fixed a bug in the http server that affected cookies with certain kinds of
data. The result was invalid data being sent back to the web browser.
Other:
- Generally improved the BLAS bindings for the matrix object.
|
Release 17.23
Release date: Oct 20, 2009 Major Changes in this Release:
|
New Stuff:
- Added the pointer_to_column_vector function.
- Added the BOBYQA algorithm for derivative-free optimization.
- Added some functions to make it easy to do a line search on a function
of a single variable when derivatives are not available.
Non-Backwards Compatible Changes:
Bug fixes:
- Fixed a bug in the cpp pretty printer. It wasn't parsing
exponentiated numbers like 1e100 correctly.
Other:
- Added a model selection example program using grid search
and the new BOBYQA algorithm.
|
Release 17.22
Release date: Sep 10, 2009 Major Changes in this Release:
|
New Stuff:
- Added an implementation of the L-BFGS algorithm for unconstrained non-linear
optimization.
Non-Backwards Compatible Changes:
- Refactored the optimization code. It is now much more flexible but
this resulted in changes to the API. See the optimization example program
for a discussion of the new API.
Bug fixes:
- Fixed a bug in the get_filesystem_roots() roots function that
prevented it from compiling.
Other:
|
Release 17.21
Release date: Aug 30, 2009 Major Changes in this Release:
|
New Stuff:
- Added the ability to use a kernel cache to the batch_trainer object.
- svm_pegasos can now be configured to use two different lambda arguments
for use with unbalanced data.
- Added the reciprocal_max() and dot() matrix functions.
- Added the bgr_pixel and cv_image objects so that OpenCV images can
be easily used with dlib routines.
Non-Backwards Compatible Changes:
- I changed the batch trainers so that they always call clear() on the
trainer being used before training begins.
- Modified the svm_pegasos class so that the user can set independent lambda
parameters for each class. This breaks backwards compatibility with
the previous interface slightly and changes the serialization format
of this class.
- Split the vector_normalizer into a normal normalizer and a pca normalizer
version.
- The zoomable_region widget now uses exponential rather than linear
zoom scaling since this is much more pleasing to use. There is now
a new requirement on the zoom increment that it must be between 0
and 1.
Bug fixes:
- Fixed a bug in the cross_validate_trainer_threaded() function. It could
deadlock if more than about 10 folds were requested.
- Fixed the serialization functions for the normalized_function object.
They will now work with custom normalizer function objects.
- Fixed a minor bug in the zoomable_region::set_min_zoom_scale() function.
It didn't always end up zooming in a smooth sensible manner after this
function was called.
Other:
- Made the thread_function object more general. It can now handle
arbitrary functions of up to four arguments.
|
Release 17.20
Release date: Jul 11, 2009 Major Changes in this Release:
|
New Stuff:
- Added the reshape_to_column_vector() function.
- Added a hook to the logger object that lets you set a different kind of
output logging destination (in addition to the std::ostream supported
already).
- Upgraded the scoped_ptr so that it can handle array pointers as well
as customer deleter functions.
- Added overloads of the kernel_derivative object for all the kernels
in dlib.
Non-Backwards Compatible Changes:
- Reworked the config_reader interface a little to make it easier to use.
In particular, I removed the enumerator over blocks in favor of a simple
get_blocks() function that just returns a std::vector of all the blocks.
I also removed the requires clauses on the block and key accessor functions
and instead made a request for a non-existent key/block result in a non-fatal
exception. This way users can let the config reader perform a more natural
role in config file validation (by catching this exception and acting
accordingly).
- It is now illegal to multiply matrices of size zero together.
Bug fixes:
- Fixed the gaussian() function used by the SURF code. It wasn't computing
a properly weighted Gaussian function.
- Fixed a few things in various parts of the code to avoid compiler errors
in certain use-cases.
- Added a missing rethrow statement. The xml parser would eat exceptions
thrown by event handlers rather than letting them propagate out as
documented in the specification.
Other:
|
Release 17.19
Release date: May 25, 2009 Major Changes in this Release:
|
New Stuff:
- Added an implementation of the SURF algorithm which includes the
following new objects and functions: integral_image, hessian_pyramid,
interest_point, surf_point, compute_dominant_angle(),
compute_surf_descriptor(), haar_x(), haar_y(), get_interest_points(),
and get_surf_points().
- Added the zeros_matrix() and ones_matrix() functions.
- Added serialization support to the type_safe_union object.
- Added the grow_rect() and shrink_rect() functions.
- Added the get_files_in_directory_tree() function.
- Added the null_trainer_type object.
- Added the roc_trainer_type object.
Non-Backwards Compatible Changes:
- Removed some extraneous get_kernel() functions from some of the
trainer adapter classes since they really aren't needed.
Bug fixes:
- Changed the socket read/write code so that it can handle a large
number ( > 2 billion) of bytes in I/O calls.
- Added a missing type cast to the reciprocal() function to fix a compile
time error you get when you use it with complex<float> type matrices.
- Fixed a bug in the assign_border_pixels() and zero_border_pixels() functions.
Their contracts said there was no upper limit on the size of the border that
could be assigned/zeroed but the implementations failed to handle the case
where the border was bigger than the image.
Other:
- Generally cleaned up the code and documentation here and there.
- Added in Steven Van Ingelgem's patches to improve the usability of the
HTTP server object.
- Updated the load_bmp() function so that it is capable of reading BMP
files that have been compressed with the RLE compression sometimes
used for 8bit BMP files.
- Merged in Miguel Grinberg's patch to add a non-blocking read() function to the
connection object.
|
Release 17.18
Release date: Apr 5, 2009 Major Changes in this Release:
|
New Stuff:
- Added a set of kernels that can operate on sparse vectors.
- Added the image_window and image_display objects.
- Added the rotate_point() function and the point_rotator object.
Non-Backwards Compatible Changes:
- Added Steven Van Ingelgem's patch to add the body of data posted
back to the server into the incoming data object given to the
server_http::on_request() handler. This removes the content_length
field and replaces it with a string that contains the body of content
data.
Bug fixes:
- Fixed a compile time bug in the offset_kernel.
Other:
- Added optimized overloads of the kcentroid object for various
linear kernels.
- Changed all the tests in the dlib test suite to use a new DLIB_TEST
macro instead of DLIB_CASSERT since the tests really aren't
technically assertions
|
Release 17.17
Release date: Mar 16, 2009 Major Changes in this Release:
|
New Stuff:
- Added the strings_equal_ignore_case() functions
Non-Backwards Compatible Changes:
- Changed the on_request() function in the http server
- Changed the serialization format of the kcentroid and svm_pegasos
objects
- By default, the kcentroid now keeps the most linearly independent
dictionary vectors rather than the newest
Bug fixes:
Other:
- Split the algorithms documentation page into three pages, algorithms,
machine learning, and bayes nets.
- Merged in Steven Van Ingelgem's patch to cleanup the HTTP server and
add new functionality. This breaks backwards compatibility with the
previous on_request() interface but it is easy to update old code and
it is now much cleaner and easier to use.
- Changed the kcentroid so that you can tell it to keep the most linearly
independent vectors rather than the newest vectors. I then changed the
svm_pegasos object so that it has a max number of support vector setting
so that the user can supply an upper limit on the number of support
vectors to use.
|
Old Release Notes
|