The Library Algorithms API Wrappers Bayesian Nets Compression Containers Graph Tools Image Processing Linear Algebra Machine Learning Metaprogramming Miscellaneous Networking Optimization Parsing Help/Info Examples: C++ Assignment_Learning Base64_Encoder Bayesian_Network Bayesian_Network_From_Disk Bayesian_Network_GUI Bridge BSP Cmd_Line_Parser Compress_Stream Config_File_Reader Custom_Trainers Directory_Navigation Empirical_Kernel_Map Face_Detection FHOG_Feature_Extraction FHOG_Object_Detection Graph_Labeling GUI HTTP_Server Image IO Socket Streams IO Streams Server Kernel_Centroid Kernel_K-Means_Clustering Kernel_Ridge_Regression Kernel_RLS_Filtering Kernel_RLS_Regression KRR_Classification Learning_to_Track Linear_Manifold_Regularizer Logger Logger_Advanced Matrix Matrix_Expressions Member_Function_Pointer Model_Selection Multiclass_Classification Multithreaded_Object Neural_Network Non-Linear Least Squares Numerical_Integration Object_Detector Object_Detector_Advanced One_Class_Classifiers Online_SVM Optimization Parallel_For_Loops Pipe Pipe_2 Quantum_Computing Queue Rank_Features Relevance_Vector_Classification Relevance_Vector_Regression Running_Stats Sequence_Labeling Sequence_Segmentation Sockets Sockstreambuf Sparse_Vectors Std_C++_Allocator Structural_Support_Vector_Machines Support_Vector_Machine Support_Vector_Regression SURF SVM-Rank Threaded_Object Threads Thread_Function Thread_Pool Timer Train_Object_Detector Using_Custom_Kernels XML_Parser Examples: Python Face_Detector Linear_Assignment_Problems Sequence_Segmenter Structural_Support_Vector_Machines SVM-Rank Train_Object_Detector FAQ Home How to compile How to contribute Index Introduction License Python API Suggested Books Current Release Change Log Release Notes Version: 18.7 |
Last Modified: Apr 09, 2014
| # Release notes # Release 18.7 Release date: Apr 09, 2014 Major Changes in this Release:
    New Features:
       - Added a Python API for working with fHOG based object detectors.  See the
         new python example programs train_object_detector.py and face_detector.py for
         more details.
       - Added the ability to use a user supplied fHOG style feature extractor with
         the scan_fhog_pyramid object.  So now you can define your own version of HOG
         for use with these tools.
       - The oca solver now supports taking a user supplied prior vector. That is,
         it lets you use a regularizer like ||w-prior||^2 instead of the usual
         ||w||^2 regularizer.
       - Added the structural_track_association_trainer object.  It is a structural
         SVM tool for creating multi-target tracking algorithms.  See the
         learning_to_track_ex.cpp example program for an introduction.
       - Added the following minor utility functions: nearest_center(),
         add_image_rotations(), set_aspect_ratio(), and tile_images().

    Non-Backwards Compatible Changes:
       - Refactored the load_image_dataset() routines so they are easier to use and
         more flexible. This introduces a slight backwards incompatibility in that
         the version that loads full_object_detection objects now returns an ignore
         rectangle set instead of a parts name list.  Other than that the changes
         are backwards compatible with previous versions of dlib.
       - Added a bias term to the assignment_function's model so the user doesn't
         need to remember, or even understand, that they should add it themselves.
         However, this change breaks backwards compatibility with the previous
         serialization format for assignment_function objects.

    Bug fixes:
       - Fixed a number of compile time errors that could occur in rare cases.
       - The stopping condition for the svr_linear_trainer was too tight, causing it
         to take an excessive amount of time to converge in some cases.
       - Disabled use of XIM for X11 windowing since it makes programs hang on some
         systems. However, this means the wide character input methods won't work on
         X11 systems anymore.
       - Fixed a bug in randomize_samples() which caused the outputs to be not as
         random as they should be.
       - Fixed dlib's CMakeLists.txt file so that the "use FFTW" option actually
         causes the build to use FFTW.
       - Fixed a compile time error that triggered when trying to link with FFTW.
       - mat() did not work correctly when used with std::vector<bool> objects.
         This has been fixed.

    Other:
# Release 18.6 Release date: Feb 03, 2014 Major Changes in this Release:
    New Features:
       - Object Detection Tools:
          - Added scan_fhog_pyramid, a tool for creating Histogram of Oriented Gradient (HOG)
            based object detectors.
          - Added get_frontal_face_detector(), a HOG based face detector.
          - Added an option to include "ignore/don't care" truth boxes to the
            structural_object_detection_trainer.  This allows a user to tell the trainer that
            they don't care if certain objects are detected or not detected.
       - Image Processing Tools:
          - Added extract_image_chips()
          - Added a version of draw_rectangle() for drawing on images.
          - The spatial filtering routines now support even sized filters.
          - Added flip_image_dataset_left_right(), upsample_image_dataset(), and
            rotate_image_dataset().
       - Machine Learning Tools:
          - Added a nuclear norm regularization option to the structural SVM solver.
          - Added the option to learn only non-negative weights to the
            svm_multiclass_linear_trainer.
       - Speed Improvements:
          - The svm_multiclass_linear_trainer, one_vs_one_trainer, and one_vs_all_trainer
            objects are now multithreaded.  This also means you have to #include
            dlib/svm_threaded.h instead of dlib/svm.h to use these tools.
          - A number of image processing tools can now optionally use SSE and AVX instructions
            and are therefore considerably faster.  In particular, the following tools have been
            accelerated: extract_fhog_features, resize_image, pyramid_down, pyramid_up,
            spatially_filter_image_separable, and spatially_filter_image.
       - Added an inv() routine that inverts point transformation functions.
       - Added a sign() routine for matrix objects.

    Non-Backwards Compatible Changes:
       - The spatial image filtering functions have the following changes:
          - They no longer zero the image borders when you set the add_to parameter to true.
          - The spatially_filter_image_separable_down() routine now only allows grayscale
            output images.
       - Changed the default parameters of the test_box_overlap object. Now it defaults to
         using exactly the PASCAL VOC match criterion.
       - To use the svm_multiclass_linear_trainer, one_vs_one_trainer, or one_vs_all_trainer
         objects you now have to #include dlib/svm_threaded.h instead of dlib/svm.h.
       - pyramid_up() no longer has a levels option.

    Bug fixes:
       - Fixed a compile time bug that could occur when wide character strings were
         serialized.
       - Fixed a compile time bug occurring in gcc 4.7.1 on SUSE Linux.  Thanks to Volker
         Härtel for finding this.
       - Fixed compile time errors that occurred when using gcc on cygwin.
       - Fixed a compile time bug that could occur when serializing mlp objects.
       - Fixed a bug in the bigint object that caused division to sometimes produce incorrect
         results.
       - Fixed a bug which sometimes caused load_image_dataset() to erroneously report that
         the dataset file could not be found.
       - Fixed a bug in the structural_object_detection_trainer that caused it to erroneously
         throw a impossible_labeling_error exception in certain rare cases.
       - Updated find_max_factor_graph_nmplp() to use the improved version of the algorithm
         from the 2011 paper Introduction to dual decomposition for inference by David Sontag,
         Amir Globerson, and Tommi Jaakkola.  The original algorithm presented in their 2008
         paper had an error that negatively affected its convergence.  Thanks to James Gunning
         for pointing this out.

    Other:
       - Fixed many compiler warnings in gcc 4.8.
       - Made many of the mat() converters bind the resulting matrix expressions into BLAS
         functions.
       - libpng and libjpeg are now included in the dlib/external folder to enable easy static
         linking to these libraries on platforms that typically don't have them (e.g. Windows).
         Moreover, dlib's cmake files will automatically perform this static linking when no
         copy of these libraries is found on the system.
# Release 18.5 Release date: Oct 22, 2013 Major Changes in this Release:
    New Features:
       - Added routines for performing BFGS and L-BFGS optimization with box constraints.
         See the new find_min_box_constrained() and find_max_box_constrained() routines.
       - Added vector_normalizer_frobmetric.  This is a tool for learning a
         Mahalanobis distance metric.
       - The user can now set different loss values for false alarming vs. getting a
         correct detection when using the structural_sequence_segmentation_trainer.
       - Added an overload of clamp() that lets you use matrix valued lower/upper bounds.
       - New image processing tools:
          - Added the scan_image_custom object, split_array(), and add_image_left_right_flips().
          - Added extract_fhog_features(), this is a function for computing
            Felzenszwalb's 31 channel HOG image representation.

    Non-Backwards Compatible Changes:
       - Refactored the image pyramid code. Now there is just one templated object called
         pyramid_down and you give it the downsampling amount as a template argument.  To make
         old code work with this change use the following substitutions:
           change pyramid_down to pyramid_down<2>
           change pyramid_down_3_2 to pyramid_down<3>
           change pyramid_down_4_3 to pyramid_down<4>
           change pyramid_down_5_4 to pyramid_down<5>

    Bug fixes:

    Other:
       - Made the structural SVM solver slightly faster.
       - Moved the python C++ utility headers from tools/python/src into dlib/python.
       - The PNG loader is now able to load grayscale images with an alpha channel.
       - Removed checks that prevented users from using references to functions with the
         optimization code and forced the use of function pointers. This was to avoid
         triggering a bug in gcc 4.0.  Since that compiler is no longer officially supported
         by dlib I've removed these checks to increase usability.
       - Made resize_image() use bilinear interpolation by default and also added a special
         version of it that is optimized for this case.
       - Dlib's cmake files will now automatically link to the Intel MKL on MS Windows
         platforms if the MKL is installed.
# Release 18.4 Release date: Aug 14, 2013 Major Changes in this Release:
    New Features:
       - Added Python interfaces to dlib's structural support vector machine solver and
         Hungarian algorithm implementation.
       - Added running_cross_covariance
       - Added order_by_descending_distance()
       - Added is_finite()
       - Added the csv IO manipulator that lets you print a matrix in comma separated value
         format.

    Non-Backwards Compatible Changes:
       - Changed the object detector testing functions to output average precision instead of
         mean average precision.
       - Added an option to weight the features from a hashed_feature_image relative to the
         number of times they occur in an image.  I also made it the default behavior to use
         this relative weighting and changed the serialization format to accommodate this.

    Bug fixes:
       - Fixed typo in learn_platt_scaling(). The method wasn't using the exact prior
         suggested by Platt's paper.
       - Fixed a bug in running_scalar_covariance that caused the covariance() and
         correlation() methods to output the wrong answer if the covariance was negative.

    Other:
       - Gave the image_window the ability to tie the mouse and keyboard events together such
         that it is possible for a user to listen for both simultaneously.
       - A number of changes were made to the structural_svm_problem's code which make it
         significantly faster in some cases.
       - Added Steven Van Ingelgem's patch to the HTTP server which makes operations on HTTP
         headers case-insensitive.
# Release 18.3 Release date: June 21, 2013 Major Changes in this Release:
    New Features:
       - Machine Learning:
          - Added the svr_linear_trainer, a tool for solving large scale support vector
            regression problems.
          - Added a tool for working with BIO and BILOU style sequence taggers/segmenters.
            This is the new sequence_segmenter object and its associated
            structural_sequence_segmentation_trainer object.
          - Added a python interface to some of the machine learning tools.  These
            include the svm_c_trainer, svm_c_linear_trainer, svm_rank_trainer, and
            structural_sequence_segmentation_trainer objects as well as the cca()
            routine.
       - Added point_transform_projective and find_projective_transform().
       - Added a function for numerically integrating arbitrary functions, this is the
         new integrate_function_adapt_simpson() routine which was contributed by
         Steve Taylor
       - Added jet(), a routine for coloring images with the jet color scheme.

    Non-Backwards Compatible Changes:

    Bug fixes:
       - Fixed a bug in hysteresis_threshold() that caused it to produce incorrect
         outputs in some cases.
       - Fixed a segmentation fault in the eigenvalue_decomposition object which
         could occur when NaN valued inputs were given.

    Other:
       - Made image saving routines work on matrix objects in addition to array2d objects.
       - The machine learning page now contains a flow chart to help new users
         select a machine learning tool appropriate for their task.
# Release 18.2 Release date: May 30, 2013 Major Changes in this Release:
    New Features:
       - Object Detection Tools:
          - Added another image scanning tool similar to scan_image_pyramid.  This
            is the new scan_image_boxes object.  It allows a user to easily specify
            an arbitrary set of object boxes which should be checked by an object
            detector rather than scanning a fixed sized window over the image as is
            done by the scan_image_pyramid tool.  This allows more flexible scanning
            strategies.  For example, it is now possible to use the selective search
            method implemented by the new find_candidate_object_locations() routine.
          - Added the binned_vector_feature_image.
          - Upgraded the object_detector so that you can use the adjust_threshold
            argument for all versions of the operator() method.
          - Added remove_unobtainable_rectangles()
       - Hashing Tools:
          - Added a set of new locality sensitive hashing functions meant for use
            with larger vectors and higher bit sizes than the current LSH tools.
            These are the new hash_similar_angles_xxx objects.
          - Added find_k_nearest_neighbors_lsh() and hash_samples()
          - Added create_max_margin_projection_hash()
       - New Matrix Routines: linpiece(), fft(), and ifft()
       - Added numeric constants and additional statistics to the running_stats
         object.  This code was contributed by Steve Taylor.
       - Added the image_window::get_next_keypress() routine.  This tool allows a
         user to easily find out which keyboard key the user is pressing.

    Non-Backwards Compatible Changes:
       - Changed the object_detector interface slightly.  In particular, it no
         longer adds the adjust_threshold argument to the output scores.
       - The object detector testing functions now output mean average precision in
         addition to precision and recall.
       - Changed how dlib does serialization in a number of ways:
          - The running_stats and scan_image_pyramid objects have had their
            serialization format changed in a way that breaks backwards
            compatibility.  This means serialized versions of these objects can't be
            loaded by the new version of dlib.
          - Changed the format dlib uses when it serializes floating point values.
            Previously, we used an ASCII based format.  Dlib now uses a much more
            efficient binary format. However, the deserialization routines have
            been made backwards compatible with the previous format. So dlib can
            still deserialize older data but older software won't be able to read
            the new format.
          - Changed the serialization formats for the matrix and array2d objects so
            that either object can be deserialized into the other. This was done in a
            way that is backwards compatible with previous versions of dlib. That is,
            we can still load data serialized by previous dlib versions. However,
            older versions of dlib can't load the new serialization format.

    Bug fixes:
       - Fixed a bug in save_dng() that happened sometimes when saving images with
         unsigned char pixels.
       - The test_ranking_function() and cross_validate_ranking_trainer() routines
         computed incorrect MAP scores when the learned function output a constant
         value for all samples.  This has been fixed.

    Other:
       - Gave load_image_dataset() the ability to skip images that don't have any
         ground truth boxes.
       - Changed average_precision() to use interpolated precision. So now it uses
         the same metric as the one used by the Pascal VOC challenge.
       - Upgraded the dng image format so it can natively store floating point
         pixel types without any information loss.
# Release 18.1 Release date: Mar 25, 2013 Major Changes in this Release:
    New Features:
       - Added svd_fast(), a routine for computing a singular value decomposition of very
         large matrices.
       - Added cca(), a routine for doing canonical correlation analysis on very large
         and high-dimensional datasets.
       - Added tools for creating parallel for loops, see parallel_for().
       - Added some features to the image display widgets to let the user easily
         get information about where the user is clicking.  This is the new
         get_next_double_click() routine.
       - Added an operator>> for matrix objects which allows you to read in ASCII
         matrices using the format used by operator<<.
       - Added serialization support for std::vector<bool>.
       - Added the following new minor objects and routines: average_precision(),
         make_sparse_vector_inplace(), orthogonalize(), count_bits(), draw_surf_points(),
         hamming_distance(), cosine_distance, and negative_dot_product_distance.

    Non-Backwards Compatible Changes:
       - Changed ranking evaluation functions to return the mean average precision
         in addition to just raw ranking accuracy. This changes their return types
         from double to matrix<double,1,2>.
       - Generalized segment_image() so it works on any pixel type or array of
         vectors.  I also changed its interface slightly.  In particular, I removed
         the min_diff parameter and replaced it with an explicit min_size parameter.
       - Changed how the SURF descriptor is computed slightly to improve its
         accuracy.  The interface to the user has not been changed, however, the
         number and position of detected SURF points might be different than in
         previous dlib versions.

    Bug fixes:
       - Fixed an endianness bug in the PNG I/O functions which occurred when 16bit
         grayscale PNGs were used.
       - Fixed a bug which could potentially occur when empty std::vector<char> or
         std::vector<unsigned char> were serialized.
       - There was a bug in the version of draw_line() that draws directly onto an
         array2d type image (not the one that draws onto a GUI canvas object). The
         bug triggered whenever a perfectly horizontal or vertical line that extended
         outside the image was drawn. This has been fixed.
       - Fixed a bug in the Windows implementation of the signaler object, which
         was found by Isaac Peterson. The bug caused the program to deadlock if
         signal() or broadcast() was called at exactly the same time a
         wait_or_timeout() function timed out.
       - Fixed a bug in the image_window and image_display GUI tools which caused
         them to not redraw overlay lines correctly in certain cases involving
         non-default zoom levels.
       - Switched randomly_color_image() to use the non-pointer based version of
         murmur_hash3() to avoid violation of the strict aliasing rule. In
         particular, the previous version didn't work correctly in gcc 4.7.2 when
         optimizations were enabled.
       - Visual Studio 2012's iostreams library has a bug which caused the
         iosockstream to crash on use.  This version of dlib has been changed to
         avoid triggering this bug.

    Other:
       - Refactored the Platt scaling code a little. Now there is a function,
         learn_platt_scaling(), that allows you to directly call the Platt scaling
         code without supplying a trainer object.
       - Optimized the oca and structural SVM solvers.  They are now a little bit faster
         than in previous dlib releases.
# Release 18.0 Release date: Feb 04, 2013 Major Changes in this Release:
    New Features:
       - Machine Learning
          - Added svm_rank_trainer, an optimized implementation of the SVM-Rank algorithm.
          - Added rank_unlabeled_training_samples(), an implementation of the SVM Active
            Learning algorithm.
          - Added svm_c_linear_dcd_trainer, a warm-startable SVM solver using the dual
            coordinate descent algorithm used by liblinear.
          - Added the ability to force the last element of a weight vector to 1 to the
            following objects: svm_c_linear_trainer, svm_c_linear_dcd_trainer,
            svm_rank_trainer, and oca.
          - Added the ability to learn non-negative weight vectors to the
            structural_sequence_labeling_trainer object.
       - Networking
          - Added an iosockstream object.
          - Added a method to the server object that lets a user set the graceful close timeout
            time to something other than the default of 500ms.
       - Linear Algebra
          - Added the gaussian_randm() function.
          - Added the find_affine_transform() function.
          - Added the mat() function.  It combines the array_to_matrix(), vector_to_matrix(),
            pointer_to_column_vector(), and pointer_to_matrix() methods all into one convenient
            interface.   mat() also works for Armadillo and Eigen matrices.
          - Added STL style begin() and end() methods to matrix and matrix_exp.
          - Added an overload of sparse_matrix_vector_multiply() that multiplies a dense matrix
            with a sparse vector.
          - Made toMat() work with the matrix object in addition to array2d style images.
       - Graphical User Interface Tools
          - Added draw_solid_convex_polygon().
          - Added an overload of draw_image() that's useful for drawing images and doing
            interpolation at the same time.
          - Added the on_view_changed() callback to zoomable_region and scrollable_region widgets.
       - Added parse_trees_to_string() and parse_trees_to_string_tagged().
       - Added lambda function support to the timeout object.
       - Added the vectorstream object.
       - Added the parse_xml() routines.
       - Added a group name feature to the command line parser.  Now it is possible to make
         print_options() print related options in named groups.
       - Added the following new hashing functions: murmur_hash3_128bit_3(),
         murmur_hash3_2(), murmur_hash3_3(), uniform_random_hash(), gaussian_random_hash()
         as well as hash() overloads for uint32, uint64, and std::pair.

    Non-Backwards Compatible Changes:
       - Made the svm_c_linear_trainer use the risk gap to decide when to stop.  This was done
         because it is how all the other OCA based SVM tools in dlib decide when to stop.
         However, it might cause the outputs to be slightly different in this version of dlib.
       - It is now illegal to call unlock() on a mutex when the mutex is not owned by the
         calling thread.  The most likely reason for doing this was to unlock early in an area
         locked by an auto_mutex.  Old code that does this can be fixed by calling auto_mutex's
         unlock() function instead.
       - Removed the structural_assignment_trainer::learns_nonnegative_weights() routine
         and moved its functionality into the feature extraction interface used by this object.

    Bug fixes:
       - Fixed a bug in find_max_factor_graph_nmplp() which caused it to not work properly on
         some compilers.
       - Fixed a bug pointed out by Joel Nelson in the version of md5() that took an istream.
         The bug caused the function to crash on strings longer than 56 characters.

    Other:
       - dlib now has an excellent new logo thanks to Yasser Asmi.
       - Added a new documentation page for the various linear algebra tools.
       - The following objects were turned into single implementation components:
         sockstreambuf, timeout, member_function_pointer, xml_parser, linker,
         bound_function_pointer, and timer.
# Release 17.49 Release date: Dec 18, 2012 Major Changes in this Release:
    New Features:
       - Machine Learning
          - Added the ability to learn non-negative weight vectors to the
            structural_assignment_trainer object.
          - Added two new graph clustering algorithms: Chinese Whispers and Newman's modularity
            clustering.
          - Added a number of new graph manipulation tools: sparse_matrix_vector_multiply(),
            is_ordered_by_index(), find_neighbor_ranges(), convert_unordered_to_ordered(),
            remove_duplicate_edges(), and the ordered_sample_pair object.
       - Networking
          - Added a set of tools for creating applications using the Bulk Synchronous Parallel
            computing model.  See the new bsp_ex.cpp example program for an introduction.
          - Added a routine that lets a user disable Nagle's algorithm on a TCP connection.
          - Added an asynchronous start routine to the server object.  This is the new
            start_async() method.
          - Added the network_address object.
          - Added connect_to() to the bridge interface.
       - Added find_max_parse_cky(), a method implementing the well known CKY algorithm for
         parsing probabilistic context free grammars.
       - Added the ability to label parts of objects with the mouse to the image_display
         widget.
       - Added the ability to put overlay circles and full_object_detections into the
         image_window widget.
       - Added a stddev() for matrix objects.
       - Added operator+() for running_stats and running_scalar_covariance.
       - Added an overload of murmur_hash3_128bit() that takes 4 integers instead of a block of
         memory.
       - Added rand::get_random_64bit_number().

    Non-Backwards Compatible Changes:
       - Changed the image_dataset_metadata XML reading tools to use a map of strings to points
         to represent object parts. This change removes the old head point from a box since
         this information can now be represented in the parts map.
       - The syntax for passing order_by_distance and order_by_index to std::sort() is now
         slightly different since these functions are now templates.  However, this change
         allows them to work on any kind of sample_pair or ordered_sample_pair object.
       - The default distance value of a sample_pair is now initialized to 1 instead of
         infinity.

    Bug fixes:
       - Added a patch, contributed by Martin Müllenhaupt, to fix a minor bug in the SQLite
         bindings.
       - Fixed a typo which would prevent code that called running_stats::max_n() from
         compiling.

    Other:
       - Added a new documentation page for the various graph tools in dlib.
       - Added support for Visual Studio 2012.
       - Switched the sample_pair object to use double to store its distance value instead of
         float.
       - Added William Sobel's patch to the web server that improves its flexibility and
         security.
       - Changed the server object so you don't have to use the server::kernel_1a syntax to
         declare it anymore.  Now you just say server, server_iostream, or server_http
         depending on which one you want.
       - Changed the cmd_line_parser so you don't have to use the ::kernel_1a syntax anymore.
         Now it is declared like a normal single implementation object.
       - Set the default max number of connections a server will accept at a time to 1000
         rather than the previous default of infinity.
# Release 17.48 Release date: Oct 18, 2012 Major Changes in this Release:
    New Features:
      - Added more overloads of find_max_factor_graph_potts() to make applying it
        over a Markov random field of image pixels really simple.
      - Added overloads of serialize()/deserialize() so that they can serialize
        Google protocol buffer objects.
      - Image Processing:
          - Added find_points_above_thresh()
          - Added max_filter()
          - Added scan_image_movable_parts()
          - Added sum_filter_assign()
          - Added the full_object_detection object.
          - Added the ability to model objects with movable parts into the
            scan_image_pyramid object.  This update also includes all the needed tools
            to train movable part models using the structural_object_detection_trainer.
      - Machine Learning:
          - Added a per node loss option to the structural_svm_graph_labeling_problem's
            interface.
          - Added Emanuele Cesena's implementation of Sammon's nonlinear dimensionality
            reduction method.

    Non-Backwards Compatible Changes:
      - To support movable part models, the serialization format of scan_image_pyramid
        objects was modified.  This breaks backwards compatibility with the previous
        format for scan_image_pyramid objects as well as object_detector instances
        that use the scan_image_pyramid.

    Bug fixes:
      - Fixed a bug in auto_threshold_image() that caused it to give bad outputs
        when used with very large images.

    Other:
      - Updated find_max_factor_graph_potts() to correctly say you can use infinite
        weights for the factor_value_disagreement() values since the code actually
        supports this.
      - Made integer serialization about 3 times faster.
Old Release Notes