From b5f8ee61a7f7e9bd291dd26b0585d03eb686c941 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 5 May 2024 13:19:16 +0200 Subject: Adding upstream version 1.46.3. Signed-off-by: Daniel Baumann --- ml/dlib/docs/.logger_revnum | 1 - ml/dlib/docs/README.txt | 72 - ml/dlib/docs/bash_helper_functions | 30 - ml/dlib/docs/docs/algorithms.xml | 1118 - ml/dlib/docs/docs/api.xml | 1289 -- ml/dlib/docs/docs/bayes.xml | 377 - ml/dlib/docs/docs/bayesopt_vs_lipo.svg | 21764 ------------------- ml/dlib/docs/docs/bigminus.gif | Bin 91 -> 0 bytes ml/dlib/docs/docs/bigplus.gif | Bin 99 -> 0 bytes ml/dlib/docs/docs/books.xml | 306 - ml/dlib/docs/docs/boost.png | Bin 6308 -> 0 bytes ml/dlib/docs/docs/change_log.xml | 11 - ... README. DO NOT EDIT THE TABLE OF CONTENTS FILE | 0 ...README. DO NOT EDIT THE TABLE OF CONTENTS FILE2 | 0 ...README. DO NOT EDIT THE TABLE OF CONTENTS FILE3 | 0 ml/dlib/docs/docs/chm/README.txt | 5 - ml/dlib/docs/docs/chm/documentation.html | 20 - ml/dlib/docs/docs/chm/htmlhelp/hha.dll | Bin 837904 -> 0 bytes ml/dlib/docs/docs/chm/htmlhelp/hhc.exe | Bin 51472 -> 0 bytes ml/dlib/docs/docs/chm/htmlhelp/htmlhelp.reg | 5 - ml/dlib/docs/docs/chm/htmlhelp/itcc.dll | Bin 154352 -> 0 bytes ml/dlib/docs/docs/chm/htmlhelp/itircl.dll | Bin 155552 -> 0 bytes ml/dlib/docs/docs/chm/htmlhelp/itss.dll | Bin 138048 -> 0 bytes ml/dlib/docs/docs/chm/htmlhelp/setup_htmlhelp.sh | 10 - ml/dlib/docs/docs/chm/htmlhelp_stylesheet.xsl | 223 - ml/dlib/docs/docs/chm/lib.hhp | 77 - ml/dlib/docs/docs/chm/toc.xml | 10 - ml/dlib/docs/docs/compile.xml | 227 - ml/dlib/docs/docs/compression.xml | 881 - ml/dlib/docs/docs/containers.xml | 1201 - ml/dlib/docs/docs/dlib-icon-30x32.png | Bin 1278 -> 0 bytes ml/dlib/docs/docs/dlib-icon-32.png | Bin 1291 -> 0 bytes ml/dlib/docs/docs/dlib-icon-48.png | Bin 2040 -> 0 bytes ml/dlib/docs/docs/dlib-icon-64.png | Bin 2768 -> 0 bytes ml/dlib/docs/docs/dlib-icon.ico | Bin 1150 -> 0 bytes ml/dlib/docs/docs/dlib-logo-and-icons.svg | 1602 -- ml/dlib/docs/docs/dlib-logo-small.png | Bin 2780 -> 0 bytes ml/dlib/docs/docs/dlib-logo.png | Bin 5701 -> 0 bytes ml/dlib/docs/docs/dlib.css | 369 - ml/dlib/docs/docs/dlib.js | 94 - ml/dlib/docs/docs/down.gif | Bin 61 -> 0 bytes ml/dlib/docs/docs/enable_if.html | 387 - ml/dlib/docs/docs/face_landmarking_example.png | Bin 113093 -> 0 bytes ml/dlib/docs/docs/faq.xml | 547 - ml/dlib/docs/docs/find_max_global_example.mp4 | Bin 610283 -> 0 bytes ml/dlib/docs/docs/find_max_global_example.png | Bin 13294 -> 0 bytes ml/dlib/docs/docs/find_max_global_example.webm | Bin 355489 -> 0 bytes .../docs/docs/find_max_global_results_table.svg | 3398 --- ml/dlib/docs/docs/graph_tools.xml | 678 - ml/dlib/docs/docs/guipics/button.png | Bin 327 -> 0 bytes ml/dlib/docs/docs/guipics/check_box.png | Bin 438 -> 0 bytes .../docs/docs/guipics/directed_graph_drawer.png | Bin 3532 -> 0 bytes ml/dlib/docs/docs/guipics/image_window.jpg | Bin 24648 -> 0 bytes ml/dlib/docs/docs/guipics/label.png | Bin 322 -> 0 bytes ml/dlib/docs/docs/guipics/list_box.png | Bin 1187 -> 0 bytes ml/dlib/docs/docs/guipics/menu_bar.png | Bin 4588 -> 0 bytes ml/dlib/docs/docs/guipics/message_box.png | Bin 5209 -> 0 bytes ml/dlib/docs/docs/guipics/mouse_tracker.png | Bin 705 -> 0 bytes ml/dlib/docs/docs/guipics/named_rectangle.png | Bin 730 -> 0 bytes .../docs/docs/guipics/open_existing_file_box.png | Bin 8368 -> 0 bytes ml/dlib/docs/docs/guipics/open_file_box.png | Bin 8267 -> 0 bytes ml/dlib/docs/docs/guipics/perspective_window.png | Bin 29372 -> 0 bytes ml/dlib/docs/docs/guipics/popup_menu.png | Bin 1412 -> 0 bytes ml/dlib/docs/docs/guipics/radio_button.png | Bin 474 -> 0 bytes ml/dlib/docs/docs/guipics/save_file_box.png | Bin 8138 -> 0 bytes ml/dlib/docs/docs/guipics/scroll_bar.png | Bin 358 -> 0 bytes ml/dlib/docs/docs/guipics/tabbed_display.png | Bin 769 -> 0 bytes ml/dlib/docs/docs/guipics/text_box.png | Bin 798 -> 0 bytes ml/dlib/docs/docs/guipics/text_field.png | Bin 451 -> 0 bytes ml/dlib/docs/docs/guipics/text_grid.png | Bin 1516 -> 0 bytes ml/dlib/docs/docs/heatmap.png | Bin 259 -> 0 bytes ml/dlib/docs/docs/howto_contribute.xml | 604 - ml/dlib/docs/docs/imaging.xml | 2608 --- ml/dlib/docs/docs/index.xml | 226 - ml/dlib/docs/docs/intro.xml | 431 - ml/dlib/docs/docs/jet.png | Bin 273 -> 0 bytes ml/dlib/docs/docs/kernel_1a.txt | 78 - ml/dlib/docs/docs/kernel_1a.xml | 8 - ml/dlib/docs/docs/kernel_1b.txt | 77 - ml/dlib/docs/docs/kernel_1b.xml | 8 - ml/dlib/docs/docs/kernel_1c.txt | 78 - ml/dlib/docs/docs/kernel_1c.xml | 8 - ml/dlib/docs/docs/kernel_1da.txt | 78 - ml/dlib/docs/docs/kernel_1da.xml | 8 - ml/dlib/docs/docs/kernel_1db.txt | 78 - ml/dlib/docs/docs/kernel_1db.xml | 8 - ml/dlib/docs/docs/kernel_1ea.txt | 78 - ml/dlib/docs/docs/kernel_1ea.xml | 8 - ml/dlib/docs/docs/kernel_1eb.txt | 78 - ml/dlib/docs/docs/kernel_1eb.xml | 8 - ml/dlib/docs/docs/kernel_1ec.txt | 78 - ml/dlib/docs/docs/kernel_1ec.xml | 8 - ml/dlib/docs/docs/kernel_2a.txt | 78 - ml/dlib/docs/docs/kernel_2a.xml | 8 - ml/dlib/docs/docs/kernel_3a.txt | 78 - ml/dlib/docs/docs/kernel_3a.xml | 8 - ml/dlib/docs/docs/kernel_3b.txt | 78 - ml/dlib/docs/docs/kernel_3b.xml | 8 - ml/dlib/docs/docs/license.xml | 36 - ml/dlib/docs/docs/linear_algebra.xml | 1382 -- ml/dlib/docs/docs/main_menu.xml | 665 - ml/dlib/docs/docs/metaprogramming.xml | 813 - ml/dlib/docs/docs/minus.gif | Bin 56 -> 0 bytes ml/dlib/docs/docs/ml.xml | 3957 ---- ml/dlib/docs/docs/ml_guide.dia | Bin 15962 -> 0 bytes ml/dlib/docs/docs/ml_guide.svg | 4345 ---- ml/dlib/docs/docs/network.xml | 259 - ml/dlib/docs/docs/old_change_log.xml | 7 - ml/dlib/docs/docs/old_release_notes.xml | 10 - ml/dlib/docs/docs/optimization.xml | 1338 -- ml/dlib/docs/docs/other.xml | 1166 - ml/dlib/docs/docs/parsing.xml | 652 - ml/dlib/docs/docs/plus.gif | Bin 59 -> 0 bytes ml/dlib/docs/docs/python/conf.py | 246 - ml/dlib/docs/docs/python/generate_dlib_listing.py | 32 - ml/dlib/docs/docs/python/index.rst | 45 - ml/dlib/docs/docs/rbf_big_gamma.gif | Bin 2131 -> 0 bytes ml/dlib/docs/docs/rbf_normal.gif | Bin 3050 -> 0 bytes ml/dlib/docs/docs/rbf_small_gamma.gif | Bin 1503 -> 0 bytes ml/dlib/docs/docs/release_notes.xml | 4437 ---- ml/dlib/docs/docs/right.gif | Bin 67 -> 0 bytes ml/dlib/docs/docs/stylesheet.xsl | 1201 - ml/dlib/docs/docs/term_index.xml | 1801 -- ml/dlib/docs/docs/tiled_pyramid_example.jpg | Bin 12237 -> 0 bytes ml/dlib/docs/docs/vs-cmake-gui.png | Bin 93460 -> 0 bytes ml/dlib/docs/docs/vs_mode_1.png | Bin 13372 -> 0 bytes ml/dlib/docs/docs/vs_mode_2.png | Bin 13885 -> 0 bytes ml/dlib/docs/docs/vs_mode_3.png | Bin 11228 -> 0 bytes ml/dlib/docs/makedocs | 282 - ml/dlib/docs/makerel | 91 - ml/dlib/docs/testenv | 31 - ml/dlib/docs/testenv_rel | 24 - 132 files changed, 62336 deletions(-) delete mode 100644 ml/dlib/docs/.logger_revnum delete mode 100644 ml/dlib/docs/README.txt delete mode 100755 ml/dlib/docs/bash_helper_functions delete mode 100644 ml/dlib/docs/docs/algorithms.xml delete mode 100644 ml/dlib/docs/docs/api.xml delete mode 100644 ml/dlib/docs/docs/bayes.xml delete mode 100644 ml/dlib/docs/docs/bayesopt_vs_lipo.svg delete mode 100644 ml/dlib/docs/docs/bigminus.gif delete mode 100644 ml/dlib/docs/docs/bigplus.gif delete mode 100644 ml/dlib/docs/docs/books.xml delete mode 100644 ml/dlib/docs/docs/boost.png delete mode 100644 ml/dlib/docs/docs/change_log.xml delete mode 100644 ml/dlib/docs/docs/chm/READ THE README. DO NOT EDIT THE TABLE OF CONTENTS FILE delete mode 100644 ml/dlib/docs/docs/chm/READ THE README. DO NOT EDIT THE TABLE OF CONTENTS FILE2 delete mode 100644 ml/dlib/docs/docs/chm/READ THE README. DO NOT EDIT THE TABLE OF CONTENTS FILE3 delete mode 100644 ml/dlib/docs/docs/chm/README.txt delete mode 100644 ml/dlib/docs/docs/chm/documentation.html delete mode 100644 ml/dlib/docs/docs/chm/htmlhelp/hha.dll delete mode 100644 ml/dlib/docs/docs/chm/htmlhelp/hhc.exe delete mode 100644 ml/dlib/docs/docs/chm/htmlhelp/htmlhelp.reg delete mode 100644 ml/dlib/docs/docs/chm/htmlhelp/itcc.dll delete mode 100644 ml/dlib/docs/docs/chm/htmlhelp/itircl.dll delete mode 100644 ml/dlib/docs/docs/chm/htmlhelp/itss.dll delete mode 100755 ml/dlib/docs/docs/chm/htmlhelp/setup_htmlhelp.sh delete mode 100644 ml/dlib/docs/docs/chm/htmlhelp_stylesheet.xsl delete mode 100644 ml/dlib/docs/docs/chm/lib.hhp delete mode 100644 ml/dlib/docs/docs/chm/toc.xml delete mode 100644 ml/dlib/docs/docs/compile.xml delete mode 100644 ml/dlib/docs/docs/compression.xml delete mode 100644 ml/dlib/docs/docs/containers.xml delete mode 100644 ml/dlib/docs/docs/dlib-icon-30x32.png delete mode 100644 ml/dlib/docs/docs/dlib-icon-32.png delete mode 100644 ml/dlib/docs/docs/dlib-icon-48.png delete mode 100644 ml/dlib/docs/docs/dlib-icon-64.png delete mode 100644 ml/dlib/docs/docs/dlib-icon.ico delete mode 100644 ml/dlib/docs/docs/dlib-logo-and-icons.svg delete mode 100644 ml/dlib/docs/docs/dlib-logo-small.png delete mode 100644 ml/dlib/docs/docs/dlib-logo.png delete mode 100644 ml/dlib/docs/docs/dlib.css delete mode 100644 ml/dlib/docs/docs/dlib.js delete mode 100644 ml/dlib/docs/docs/down.gif delete mode 100644 ml/dlib/docs/docs/enable_if.html delete mode 100644 ml/dlib/docs/docs/face_landmarking_example.png delete mode 100644 ml/dlib/docs/docs/faq.xml delete mode 100644 ml/dlib/docs/docs/find_max_global_example.mp4 delete mode 100644 ml/dlib/docs/docs/find_max_global_example.png delete mode 100644 ml/dlib/docs/docs/find_max_global_example.webm delete mode 100644 ml/dlib/docs/docs/find_max_global_results_table.svg delete mode 100644 ml/dlib/docs/docs/graph_tools.xml delete mode 100644 ml/dlib/docs/docs/guipics/button.png delete mode 100644 ml/dlib/docs/docs/guipics/check_box.png delete mode 100644 ml/dlib/docs/docs/guipics/directed_graph_drawer.png delete mode 100644 ml/dlib/docs/docs/guipics/image_window.jpg delete mode 100644 ml/dlib/docs/docs/guipics/label.png delete mode 100644 ml/dlib/docs/docs/guipics/list_box.png delete mode 100644 ml/dlib/docs/docs/guipics/menu_bar.png delete mode 100644 ml/dlib/docs/docs/guipics/message_box.png delete mode 100644 ml/dlib/docs/docs/guipics/mouse_tracker.png delete mode 100644 ml/dlib/docs/docs/guipics/named_rectangle.png delete mode 100644 ml/dlib/docs/docs/guipics/open_existing_file_box.png delete mode 100644 ml/dlib/docs/docs/guipics/open_file_box.png delete mode 100644 ml/dlib/docs/docs/guipics/perspective_window.png delete mode 100644 ml/dlib/docs/docs/guipics/popup_menu.png delete mode 100644 ml/dlib/docs/docs/guipics/radio_button.png delete mode 100644 ml/dlib/docs/docs/guipics/save_file_box.png delete mode 100644 ml/dlib/docs/docs/guipics/scroll_bar.png delete mode 100644 ml/dlib/docs/docs/guipics/tabbed_display.png delete mode 100644 ml/dlib/docs/docs/guipics/text_box.png delete mode 100644 ml/dlib/docs/docs/guipics/text_field.png delete mode 100644 ml/dlib/docs/docs/guipics/text_grid.png delete mode 100644 ml/dlib/docs/docs/heatmap.png delete mode 100644 ml/dlib/docs/docs/howto_contribute.xml delete mode 100644 ml/dlib/docs/docs/imaging.xml delete mode 100644 ml/dlib/docs/docs/index.xml delete mode 100644 ml/dlib/docs/docs/intro.xml delete mode 100644 ml/dlib/docs/docs/jet.png delete mode 100644 ml/dlib/docs/docs/kernel_1a.txt delete mode 100644 ml/dlib/docs/docs/kernel_1a.xml delete mode 100644 ml/dlib/docs/docs/kernel_1b.txt delete mode 100644 ml/dlib/docs/docs/kernel_1b.xml delete mode 100644 ml/dlib/docs/docs/kernel_1c.txt delete mode 100644 ml/dlib/docs/docs/kernel_1c.xml delete mode 100644 ml/dlib/docs/docs/kernel_1da.txt delete mode 100644 ml/dlib/docs/docs/kernel_1da.xml delete mode 100644 ml/dlib/docs/docs/kernel_1db.txt delete mode 100644 ml/dlib/docs/docs/kernel_1db.xml delete mode 100644 ml/dlib/docs/docs/kernel_1ea.txt delete mode 100644 ml/dlib/docs/docs/kernel_1ea.xml delete mode 100644 ml/dlib/docs/docs/kernel_1eb.txt delete mode 100644 ml/dlib/docs/docs/kernel_1eb.xml delete mode 100644 ml/dlib/docs/docs/kernel_1ec.txt delete mode 100644 ml/dlib/docs/docs/kernel_1ec.xml delete mode 100644 ml/dlib/docs/docs/kernel_2a.txt delete mode 100644 ml/dlib/docs/docs/kernel_2a.xml delete mode 100644 ml/dlib/docs/docs/kernel_3a.txt delete mode 100644 ml/dlib/docs/docs/kernel_3a.xml delete mode 100644 ml/dlib/docs/docs/kernel_3b.txt delete mode 100644 ml/dlib/docs/docs/kernel_3b.xml delete mode 100644 ml/dlib/docs/docs/license.xml delete mode 100644 ml/dlib/docs/docs/linear_algebra.xml delete mode 100644 ml/dlib/docs/docs/main_menu.xml delete mode 100644 ml/dlib/docs/docs/metaprogramming.xml delete mode 100644 ml/dlib/docs/docs/minus.gif delete mode 100644 ml/dlib/docs/docs/ml.xml delete mode 100644 ml/dlib/docs/docs/ml_guide.dia delete mode 100644 ml/dlib/docs/docs/ml_guide.svg delete mode 100644 ml/dlib/docs/docs/network.xml delete mode 100644 ml/dlib/docs/docs/old_change_log.xml delete mode 100644 ml/dlib/docs/docs/old_release_notes.xml delete mode 100644 ml/dlib/docs/docs/optimization.xml delete mode 100644 ml/dlib/docs/docs/other.xml delete mode 100644 ml/dlib/docs/docs/parsing.xml delete mode 100644 ml/dlib/docs/docs/plus.gif delete mode 100644 ml/dlib/docs/docs/python/conf.py delete mode 100644 ml/dlib/docs/docs/python/generate_dlib_listing.py delete mode 100644 ml/dlib/docs/docs/python/index.rst delete mode 100644 ml/dlib/docs/docs/rbf_big_gamma.gif delete mode 100644 ml/dlib/docs/docs/rbf_normal.gif delete mode 100644 ml/dlib/docs/docs/rbf_small_gamma.gif delete mode 100644 ml/dlib/docs/docs/release_notes.xml delete mode 100644 ml/dlib/docs/docs/right.gif delete mode 100644 ml/dlib/docs/docs/stylesheet.xsl delete mode 100644 ml/dlib/docs/docs/term_index.xml delete mode 100644 ml/dlib/docs/docs/tiled_pyramid_example.jpg delete mode 100755 ml/dlib/docs/docs/vs-cmake-gui.png delete mode 100755 ml/dlib/docs/docs/vs_mode_1.png delete mode 100755 ml/dlib/docs/docs/vs_mode_2.png delete mode 100755 ml/dlib/docs/docs/vs_mode_3.png delete mode 100755 ml/dlib/docs/makedocs delete mode 100755 ml/dlib/docs/makerel delete mode 100755 ml/dlib/docs/testenv delete mode 100755 ml/dlib/docs/testenv_rel (limited to 'ml/dlib/docs') diff --git a/ml/dlib/docs/.logger_revnum b/ml/dlib/docs/.logger_revnum deleted file mode 100644 index bf6b783fb..000000000 --- a/ml/dlib/docs/.logger_revnum +++ /dev/null @@ -1 +0,0 @@ -f9ef9feebe06 diff --git a/ml/dlib/docs/README.txt b/ml/dlib/docs/README.txt deleted file mode 100644 index 155043460..000000000 --- a/ml/dlib/docs/README.txt +++ /dev/null @@ -1,72 +0,0 @@ -This "package" is just a copy of the stuff I use to generate the documentation -for the dlib library. It contains a copy of the XSLT and XML I use to -generate the HTML documentation. - -The current version of these files can be obtained from the dlib GitHub -repository at: https://github.com/davisking/dlib - -======================== Overview ======================== - -I write all my documentation in XML files. If you look through the files in -the docs folder you will see each of them. There is also a stylesheet.xsl -file which contains all the XSLT I wrote to transform XML files into HTML. -Anyway, I use that stylesheet to generate the dlib documentation from those -XML files. - -There is also a stylesheet inside the docs/chm folder (htmlhelp_stylesheet.xsl) -that knows how to look at the XML files and generate the table of contents -files needed by the htmlhelp tool (the thing that makes chm help files). - -Also note that the first 80 or so lines of the stylesheet.xsl file contains -stuff specific to the dlib project and thus should be changed or removed -as appropriate if you want to reuse it for a different project. - -======================== Installing the required tools ======================== - -To begin with, the XML and XSLT is usable on any operating system, however, -all the scripts I have in the docs folder that automate everything are bash -shell scripts. I also use stuff like wine and other Linux tools and I have -only ever tested any of this in Debian. So if you want to use all the scripts -then you should probably run this stuff in Linux. But if not you can probably -hack something together :) - -There are four scripts in the docs folder. - - - testenv_rel: This script tests your environment for all the needed utilities. - Run it and it should tell you what else you need to install. - Note that the htmlify utility is something I wrote and is in - dlib's repository in the tools/htmlify folder. You should - build and install it. (go into that folder, make a subfolder - called build, then cd into build and say: "cmake ..; make; - sudo make install". You will need to install cmake if you - don't have it already) - - - makedocs: This remakes all the HTML documentation by pulling files out - of the dlib repository. If you want to use this stuff for your - own projects you will need to edit this file a bit. - - Note that this script puts its output in the docs/web and - docs/chm/docs folders. I use the chm folder for off-line - documentation while the web folder contains what goes onto - dlib.net. Both sets of HTML are generated from the same XML - files and are mostly the same. You will see and - tags inside the XML though in cases where the two - differ. - - - makerel: Runs makedocs as well as creates tar and zip files of the project. - It also runs htmlhelp in wine to generate the chm help files. - Note that you will need to run docs/chm/htmlhelp/setup_htmlhelp.sh - before it will work in wine. - - -======================== License for documentation files ======================== - -To the extent possible under law, Davis E King has waived all copyright and -related or neighboring rights to dlib documentation (XML, HTML, and XSLT files). -This work is published from United States. - -That is, I (Davis the author) don't care what you do with this. So do -whatever you want :) - - - diff --git a/ml/dlib/docs/bash_helper_functions b/ml/dlib/docs/bash_helper_functions deleted file mode 100755 index 66603e6d2..000000000 --- a/ml/dlib/docs/bash_helper_functions +++ /dev/null @@ -1,30 +0,0 @@ -#/bin/sh -# -# This script defines some helper functions used by other scripts in the docs -# folder. - -get_short_revision_number() -{ - RESULT=`hg log -r $1 | grep changeset | awk '{print $2}' | sed -e 's/:.*//'` -} - -get_last_modified_date() -{ - RESULT=`hg log $1 -l1 --template '{date|date}\n' | awk '{ print $2" "$3", " $5}'` -} - -get_dlib_version() -{ - cat ../dlib/CMakeLists.txt | awk '/set\(CPACK_PACKAGE_VERSION_'$1'/{ match($2,"\"(.*)\"",a); print a[1]}' -} - - -# call like: set_dlib_version MAJOR 42 -set_dlib_version() -{ - sed -i -e 's/\(set(CPACK_PACKAGE_VERSION_'$1' *"\).*\(".*\)/\1'$2'\2/' ../dlib/CMakeLists.txt -} - -MAJOR_NUM=`get_dlib_version MAJOR` -MINOR_NUM=`get_dlib_version MINOR` -PATCH_NUM=`get_dlib_version PATCH` diff --git a/ml/dlib/docs/docs/algorithms.xml b/ml/dlib/docs/docs/algorithms.xml deleted file mode 100644 index 82c58f94a..000000000 --- a/ml/dlib/docs/docs/algorithms.xml +++ /dev/null @@ -1,1118 +0,0 @@ - - - - - Algorithms - - - - - -

- This page documents library components that are all basically just implementations of - mathematical functions or algorithms that don't fit in any of the other pages - of the dlib documentation. So this includes things like checksums, cryptographic hashes, - sorting, etc. -

- - - - - - - -
- Tools - bigint - disjoint_subsets - disjoint_subsets_sized - - Quantum Computing - - quantum_register - gate - - - hsort_array - isort_array - numeric_constants - put_in_range - qsort_array - split_array - integrate_function_adapt_simp - square_root - - Set Utilities - - set_intersection_size - set_intersection - set_union - set_difference - - -
- - - -
- Statistics - rand - median - running_stats - running_stats_decayed - running_scalar_covariance_decayed - running_gradient - running_scalar_covariance - mean_sign_agreement - correlation - covariance - r_squared - mean_squared_error - running_covariance - running_cross_covariance - random_subset_selector - randomly_subsample - find_upper_quantile - count_steps_without_decrease_robust - count_steps_without_decrease - count_steps_without_increase - - binomial_random_vars_are_different - event_correlation - max_scoring_element - min_scoring_element - -
- -
- Hashing - md5 - crc32 - hash - count_bits - hamming_distance - murmur_hash3 - murmur_hash3_128bit - gaussian_random_hash - uniform_random_hash - projection_hash - create_random_projection_hash - create_max_margin_projection_hash - hash_samples - hash_similar_angles_64 - hash_similar_angles_128 - hash_similar_angles_256 - hash_similar_angles_512 -
- -
- Filtering - kalman_filter - rls_filter - momentum_filter - rect_filter - find_optimal_rect_filter - find_optimal_momentum_filter -
- -
-
- - - - - - - - - - - hash_similar_angles_64 - dlib/lsh.h - dlib/lsh/hashes_abstract.h - - This object is a tool for computing locality sensitive hashes that give - vectors with small angles between each other similar hash values. In - particular, this object creates 64 random planes which pass though the - origin and uses them to create a 64bit hash. - - - - - - - - hash_similar_angles_128 - dlib/lsh.h - dlib/lsh/hashes_abstract.h - - This object is a tool for computing locality sensitive hashes that give - vectors with small angles between each other similar hash values. In - particular, this object creates 128 random planes which pass though the - origin and uses them to create a 128bit hash. - - - - - - - - - hash_similar_angles_256 - dlib/lsh.h - dlib/lsh/hashes_abstract.h - - This object is a tool for computing locality sensitive hashes that give - vectors with small angles between each other similar hash values. In - particular, this object creates 256 random planes which pass though the - origin and uses them to create a 256bit hash. - - - - - - - - - hash_similar_angles_512 - dlib/lsh.h - dlib/lsh/hashes_abstract.h - - This object is a tool for computing locality sensitive hashes that give - vectors with small angles between each other similar hash values. In - particular, this object creates 512 random planes which pass though the - origin and uses them to create a 512bit hash. - - - - - - - - hash_samples - dlib/graph_utils_threaded.h - dlib/graph_utils/find_k_nearest_neighbors_lsh_abstract.h - - This is a simple function for hashing a bunch of vectors using a - locality sensitive hashing object such as hash_similar_angles_128. - It is also capable of running in parallel on a multi-core CPU. - - - - - - - - bigint - dlib/bigint.h - dlib/bigint/bigint_kernel_abstract.h - - This object represents an arbitrary precision unsigned integer. It's pretty simple. - It's interface is just like a normal int, you don't have to tell it how much memory - to use or anything unusual. It just goes :) - - - - - bigint_kernel_1 - dlib/bigint/bigint_kernel_1.h - - This implementation is done using an array of unsigned shorts. It is also reference counted. - For further details see the above link. Also note that kernel_2 should be - faster in almost every case so you should really just use that version of the bigint object. - - - - - kernel_1a - is a typedef for bigint_kernel_1 - - - - - - - bigint_kernel_2 - dlib/bigint/bigint_kernel_2.h - - This implementation is basically the same as kernel_1 except it uses the - Fast Fourier Transform to perform multiplications much faster. - - - - - kernel_2a - is a typedef for bigint_kernel_2 - - - - - - - - - - - - - - crc32 - dlib/crc32.h - dlib/crc32/crc32_kernel_abstract.h - - This object represents the CRC-32 algorithm for calculating checksums. - - - - - - - - gaussian_random_hash - dlib/hash.h - dlib/general_hash/random_hashing_abstract.h - - This function uses hashing to generate Gaussian distributed random values - with mean 0 and variance 1. - - - - - - - - uniform_random_hash - dlib/hash.h - dlib/general_hash/random_hashing_abstract.h - - This function uses hashing to generate uniform random values in the range [0,1). - - - - - - - - murmur_hash3 - dlib/hash.h - dlib/general_hash/murmur_hash3_abstract.h - - This function takes a block of memory and returns a 32bit hash. The - hashing algorithm used is Austin Appleby's excellent - MurmurHash3. - - - - - - - - murmur_hash3_128bit - dlib/hash.h - dlib/general_hash/murmur_hash3_abstract.h - - This function takes a block of memory and returns a 128bit hash. The - hashing algorithm used is Austin Appleby's excellent - MurmurHash3. - - - - - - - - kalman_filter - dlib/filtering.h - dlib/filtering/kalman_filter_abstract.h - - This object implements the Kalman filter, which is a tool for - recursively estimating the state of a process given measurements - related to that process. To use this tool you will have to - be familiar with the workings of the Kalman filter. An excellent - introduction can be found in the paper: -
- An Introduction to the Kalman Filter - by Greg Welch and Gary Bishop -
-
-
- - - - - momentum_filter - dlib/filtering.h - dlib/filtering/kalman_filter_abstract.h - - This object is a simple tool for filtering a single scalar value that - measures the location of a moving object that has some non-trivial - momentum. Importantly, the measurements are noisy and the object can - experience sudden unpredictable accelerations. To accomplish this - filtering we use a simple Kalman filter with a - state transition model of: -
-
-   position_{i+1} = position_{i} + velocity_{i} 
-   velocity_{i+1} = velocity_{i} + some_unpredictable_acceleration
-
-
- - and a measurement model of: -
-
-   measured_position_{i} = position_{i} + measurement_noise
-
-
- - Where some_unpredictable_acceleration and measurement_noise are 0 mean Gaussian - noise sources. - - To allow for really sudden and large but infrequent accelerations, at each - step we check if the current measured position deviates from the predicted - filtered position by more than a user specified amount, - and if so we adjust the filter's state to keep it within these bounds. - This allows the moving object to undergo large unmodeled accelerations, far - in excess of what would be suggested by the basic Kalman filter's noise model, without - then experiencing a long lag time where the Kalman filter has to "catch - up" to the new position. -
-
- - - - - rect_filter - dlib/filtering.h - dlib/filtering/kalman_filter_abstract.h - - This object is just a momentum_filter applied to the - four corners of a rectangle. It allows - you to filter a stream of rectangles, for instance, bounding boxes from an object detector - applied to a video stream. - - - - - - - find_optimal_momentum_filter - dlib/filtering.h - dlib/filtering/kalman_filter_abstract.h - - This function finds the "optimal" settings of a momentum_filter - based on unfiltered measurement data. - - - - - - - find_optimal_rect_filter - dlib/filtering.h - dlib/filtering/kalman_filter_abstract.h - - This function finds the "optimal" settings of a rect_filter - based on unfiltered measurement data. - - - - - - - rls_filter - dlib/filtering.h - dlib/filtering/rls_filter_abstract.h - - This object is a tool for doing time series prediction using - linear recursive least squares. In particular, - this object takes a sequence of points from the user and, at each - step, attempts to predict the value of the next point. - - - - - - - - projection_hash - dlib/lsh.h - dlib/lsh/projection_hash_abstract.h - - This is a tool for hashing elements of a vector space into the integers. - It is intended to represent locality sensitive hashing functions such as - the popular random projection hashing method. - - - - - - - - create_random_projection_hash - dlib/lsh.h - dlib/lsh/create_random_projection_hash_abstract.h - - Creates a random projection based locality sensitive - hashing function. The projection matrix - is generated by sampling its elements from a Gaussian random number generator. - - - - - - - - create_max_margin_projection_hash - dlib/lsh.h - dlib/lsh/create_random_projection_hash_abstract.h - - Creates a random projection based locality sensitive - hashing function. - This is accomplished using a variation on the random hyperplane generation - technique from the paper: -
- Random Maximum Margin Hashing by Alexis Joly and Olivier Buisson -
- In particular, we use a linear support vector machine to generate planes. - We train it on randomly selected and randomly labeled points from - the data to be hashed. -
- -
- - - - - hash - dlib/hash.h - dlib/general_hash/hash_abstract.h - - This is a set of convenience functions for invoking murmur_hash3 - on std::strings, std::vectors, std::maps, or dlib::matrix objects. -

- As an aside, the hash() for matrix objects is defined here. - It has the same interface as all the others. -

-
- -
- - - - - count_bits - dlib/hash.h - dlib/general_hash/count_bits_abstract.h - - This function counts the number of bits in an unsigned integer which are - set to 1. - - - - - - - - hamming_distance - dlib/hash.h - dlib/general_hash/count_bits_abstract.h - - This function returns the hamming distance between two unsigned integers. - That is, it returns the number of bits which differer in the two integers. - - - - - - - - rand - dlib/rand.h - dlib/rand/rand_kernel_abstract.h - - This object represents a pseudorandom number generator. - - - - - - - - disjoint_subsets - dlib/disjoint_subsets.h - dlib/disjoint_subsets/disjoint_subsets_abstract.h - - This object represents a set of integers which is partitioned into - a number of disjoint subsets. It supports the two fundamental operations - of finding which subset a particular integer belongs to as well as - merging subsets. - - - - - - - - - disjoint_subsets_sized - dlib/disjoint_subsets.h - dlib/disjoint_subsets/disjoint_subsets_sized_abstract.h - - This object is just like disjoint_subsets except that it - also keeps track of the size of each set. - - - - - - - - - running_stats - dlib/statistics.h - dlib/statistics/statistics_abstract.h - - This object represents something that can compute the running mean, - variance, skewness, and kurtosis statistics of a stream of real numbers. - - - - running_stats_ex.cpp.html - kcentroid_ex.cpp.html - - - - - - - - - running_stats_decayed - dlib/statistics.h - dlib/statistics/statistics_abstract.h - - This object represents something that can compute the running mean and - variance of a stream of real numbers. It is similar to running_stats - except that it forgets about data it has seen after a certain period of - time. It does this by exponentially decaying old statistics. - - - - - - - - running_scalar_covariance_decayed - dlib/statistics.h - dlib/statistics/statistics_abstract.h - - This object represents something that can compute the running covariance of - a stream of real number pairs. It is essentially the same as - running_scalar_covariance except that it forgets about data it has seen - after a certain period of time. It does this by exponentially decaying old - statistics. - - - - - - - - running_gradient - dlib/statistics/running_gradient.h - dlib/statistics/running_gradient_abstract.h - - This object is a tool for estimating if a noisy sequence of numbers is - trending up or down and by how much. It does this by finding the least - squares fit of a line to the data and then allows you to perform a - statistical test on the slope of that line. - - - - - - - find_upper_quantile - dlib/statistics/running_gradient.h - dlib/statistics/running_gradient_abstract.h - - Finds and returns the scalar value such that a user specified percentage of - the values in a container are greater than said value. For example, 0.5 - would find the median value in a container while 0.1 would find the value - that lower bounded the 10% largest values in a container. - - - - - - - count_steps_without_increase - dlib/statistics/running_gradient.h - dlib/statistics/running_gradient_abstract.h - - Given a potentially noisy time series, this function returns a count of how - long the time series has gone without noticeably increasing in value. It does - this by adding the elements of the time series into a running_gradient object and counting how many - elements, starting with the most recent, you need to examine before you - are confident that the series has been increasing in value. - - - - - - - binomial_random_vars_are_different - dlib/statistics/statistic.h - dlib/statistics/statistics_abstract.h - - This function performs a simple statistical test to check if two binomially - distributed random variables have the same parameter (i.e. the chance of - "success"). It uses the simple likelihood ratio test discussed in - the following paper: -
- Dunning, Ted. "Accurate methods for the statistics of surprise and - coincidence." Computational linguistics 19.1 (1993): 61-74. -
- So for an extended discussion of the method see the above paper. -
-
- - - - - event_correlation - dlib/statistics/statistic.h - dlib/statistics/statistics_abstract.h - - This function does a statistical test to determine if two events co-occur in a - statistically significant way. It uses the simple likelihood ratio - test discussed in the following paper: -
- Dunning, Ted. "Accurate methods for the statistics of surprise and - coincidence." Computational linguistics 19.1 (1993): 61-74. -
- So for an extended discussion of the method see the above paper. -
-
- - - - - max_scoring_element - dlib/algs.h - dlib/algs.h - - This function finds the element of container that has the largest score, - according to a user supplied score function, and returns a std::pair containing - that maximal element along with the score. - - - - - - - min_scoring_element - dlib/algs.h - dlib/algs.h - - This function finds the element of container that has the smallest score, - according to a user supplied score function, and returns a std::pair containing - that minimal element along with the score. - - - - - - - count_steps_without_decrease - dlib/statistics/running_gradient.h - dlib/statistics/running_gradient_abstract.h - - Given a potentially noisy time series, this function returns a count of how - long the time series has gone without noticeably decreasing in value. It does - this by adding the elements of the time series into a running_gradient object and counting how many - elements, starting with the most recent, you need to examine before you - are confident that the series has been decreasing in value. - - - - - - - count_steps_without_decrease_robust - dlib/statistics/running_gradient.h - dlib/statistics/running_gradient_abstract.h - - This function behaves just like count_steps_without_decrease except - that it ignores times series values that are anomalously large. This makes it - robust to sudden noisy but transient spikes in the time series values. - - - - - - - running_covariance - dlib/statistics.h - dlib/statistics/statistics_abstract.h - - This object is a simple tool for computing the mean and - covariance of a sequence of vectors. - - - - - - - - running_cross_covariance - dlib/statistics.h - dlib/statistics/statistics_abstract.h - - This object is a simple tool for computing the mean and - cross-covariance matrices of a sequence of pairs of vectors. - - - - - - - - running_scalar_covariance - dlib/statistics.h - dlib/statistics/statistics_abstract.h - - This object is a simple tool for computing the covariance of a - sequence of scalar values. - - - - - - - mean_sign_agreement - dlib/statistics.h - dlib/statistics/statistics_abstract.h - - This is a function for computing the probability that - matching elements of two std::vectors have the same sign. - - - - - - - correlation - dlib/statistics.h - dlib/statistics/statistics_abstract.h - - This is a function for computing the correlation between - matching elements of two std::vectors. - - - - - - - covariance - dlib/statistics.h - dlib/statistics/statistics_abstract.h - - This is a function for computing the covariance between - matching elements of two std::vectors. - - - - - - - r_squared - dlib/statistics.h - dlib/statistics/statistics_abstract.h - - This is a function for computing the R squared coefficient between - matching elements of two std::vectors. - - - - - - - mean_squared_error - dlib/statistics.h - dlib/statistics/statistics_abstract.h - - This is a function for computing the mean squared error between - matching elements of two std::vectors. - - - - - - - random_subset_selector - dlib/statistics.h - dlib/statistics/random_subset_selector_abstract.h - - This object is a tool to help you select a random subset of a large body of data. - In particular, it is useful when the body of data is too large to fit into memory. - - - - - - - - - - randomly_subsample - dlib/statistics.h - dlib/statistics/random_subset_selector_abstract.h - - This is a set of convenience functions for - creating random subsets of data. - - - - - - - - hsort_array - dlib/sort.h - dlib/sort.h - - hsort_array is an implementation of the heapsort algorithm. It will sort anything that has an - array like operator[] interface. - - - - - - - - put_in_range - dlib/algs.h - dlib/algs.h - - This is a simple function that takes a range and a value and returns the given - value if it is within the range. If it isn't in the range then it returns the - end of range value that is closest. - - - - - - - - isort_array - dlib/sort.h - dlib/sort.h - - isort_array is an implementation of the insertion sort algorithm. It will sort anything that has an - array like operator[] interface. - - - - - - - - - numeric_constants - dlib/numeric_constants.h - dlib/numeric_constants.h - - This is just a header file containing definitions of common numeric constants such as pi and e. - - - - - - - qsort_array - dlib/sort.h - dlib/sort.h - - qsort_array is an implementation of the QuickSort algorithm. It will sort anything that has an array like - operator[] interface. If the quick sort becomes unstable then it switches to a heap sort. This - way sorting is guaranteed to take at most N*log(N) time. - - - - - - - - - split_array - dlib/array.h - dlib/array/array_tools_abstract.h - - This function is used to efficiently split array - like objects into two parts. It uses the global swap() function instead - of copying to move elements around, so it works on arrays of non-copyable - types. - - - - - - - integrate_function_adapt_simp - dlib/numerical_integration.h - dlib/numerical_integration/integrate_function_adapt_simpson_abstract.h - - Computes an approximation of the integral of a real valued function using the - adaptive Simpson method outlined in -
- Gander, W. and W. Gautshi, "Adaptive - Quadrature -- Revisited" BIT, Vol. 40, (2000), pp.84-101 -
-
- - integrate_function_adapt_simp_ex.cpp.html - - -
- - - - - - md5 - dlib/md5.h - dlib/md5/md5_kernel_abstract.h - - This is an implementation of The MD5 Message-Digest Algorithm as described in rfc1321. - - - - - - - - - - median - dlib/algs.h - dlib/algs.h - - This function takes three parameters and finds the median of the three. The median is swapped into - the first parameter and the first parameter ends up in one of the other two, unless the first parameter was - the median to begin with of course. - - - - - - - - square_root - dlib/algs.h - dlib/algs.h - - square_root is a function which takes an unsigned long and returns the square root of it or - if the root is not an integer then it is rounded up to the next integer. - - - - - - - - set_intersection - dlib/set_utils.h - dlib/set_utils/set_utils_abstract.h - - This function takes two set objects and - gives you their intersection. - - - - - - - - set_union - dlib/set_utils.h - dlib/set_utils/set_utils_abstract.h - - This function takes two set objects and - gives you their union. - - - - - - - - set_difference - dlib/set_utils.h - dlib/set_utils/set_utils_abstract.h - - This function takes two set objects and - gives you their difference. - - - - - - - - set_intersection_size - dlib/set_utils.h - dlib/set_utils/set_utils_abstract.h - - This function takes two set objects and tells you - how many items they have in common. - - - - - - - - quantum_register - dlib/quantum_computing.h - dlib/quantum_computing/quantum_computing_abstract.h - - This object represents a set of quantum bits. It can be used - with the quantum gate object to simulate - quantum algorithms. - - - - quantum_computing_ex.cpp.html - - - - - - - - gate - dlib/quantum_computing.h - dlib/quantum_computing/quantum_computing_abstract.h - - This object represents a quantum gate that operates on a - quantum_register. - - - quantum_computing_ex.cpp.html - - - - - - -
- - - - -
- diff --git a/ml/dlib/docs/docs/api.xml b/ml/dlib/docs/docs/api.xml deleted file mode 100644 index 2d6811b44..000000000 --- a/ml/dlib/docs/docs/api.xml +++ /dev/null @@ -1,1289 +0,0 @@ - - - - - API Wrappers - - - - - -

- - These wrappers provide a portable object oriented interface for networking, multithreading, - GUI development, and file browsing. - Programs written using them can be compiled under POSIX or MS Windows platforms without changing the code. -

- - - - - - - - - -
- API - - - - - gui_widgets - - - widgets - - - draggable - dlib/gui_widgets/base_widgets_abstract.h.html#draggable - - - tooltip - dlib/gui_widgets/base_widgets_abstract.h.html#tooltip - - - popup_menu_region - dlib/gui_widgets/base_widgets_abstract.h.html#popup_menu_region - - - button_action - dlib/gui_widgets/base_widgets_abstract.h.html#button_action - - - scrollable_region - dlib/gui_widgets/base_widgets_abstract.h.html#scrollable_region - - - zoomable_region - dlib/gui_widgets/base_widgets_abstract.h.html#zoomable_region - - - mouse_over_event - dlib/gui_widgets/base_widgets_abstract.h.html#mouse_over_event - - - scroll_bar - dlib/gui_widgets/base_widgets_abstract.h.html#scroll_bar - - - widget_group - dlib/gui_widgets/base_widgets_abstract.h.html#widget_group - - - image_widget - dlib/gui_widgets/base_widgets_abstract.h.html#image_widget - - - popup_menu - dlib/gui_widgets/base_widgets_abstract.h.html#popup_menu - - - menu_item - dlib/gui_widgets/base_widgets_abstract.h.html#menu_item - - - menu_item_text - dlib/gui_widgets/base_widgets_abstract.h.html#menu_item_text - - - menu_item_separator - dlib/gui_widgets/base_widgets_abstract.h.html#menu_item_separator - - - menu_item_submenu - dlib/gui_widgets/base_widgets_abstract.h.html#menu_item_submenu - - - named_rectangle - dlib/gui_widgets/widgets_abstract.h.html#named_rectangle - - - menu_bar - dlib/gui_widgets/widgets_abstract.h.html#menu_bar - - - perspective_window - dlib/gui_widgets/widgets_abstract.h.html#perspective_window - - - perspective_display - dlib/gui_widgets/widgets_abstract.h.html#perspective_display - - - image_window - dlib/gui_widgets/widgets_abstract.h.html#image_window - - - image_display - dlib/gui_widgets/widgets_abstract.h.html#image_display - - - message_box - dlib/gui_widgets/widgets_abstract.h.html#message_box - - - message_box_blocking - dlib/gui_widgets/widgets_abstract.h.html#message_box_blocking - - - open_file_box - dlib/gui_widgets/widgets_abstract.h.html#open_file_box - - - open_existing_file_box - dlib/gui_widgets/widgets_abstract.h.html#open_existing_file_box - - - save_file_box - dlib/gui_widgets/widgets_abstract.h.html#save_file_box - - - label - dlib/gui_widgets/widgets_abstract.h.html#label - - - button - dlib/gui_widgets/base_widgets_abstract.h.html#button - - - toggle_button - dlib/gui_widgets/widgets_abstract.h.html#toggle_button - - - text_grid - dlib/gui_widgets/widgets_abstract.h.html#text_grid - - - directed_graph_drawer - dlib/gui_widgets/widgets_abstract.h.html#directed_graph_drawer - - - list_box - dlib/gui_widgets/widgets_abstract.h.html#list_box - - - check_box - dlib/gui_widgets/widgets_abstract.h.html#check_box - - - radio_button - dlib/gui_widgets/widgets_abstract.h.html#radio_button - - - text_field - dlib/gui_widgets/widgets_abstract.h.html#text_field - - - text_box - dlib/gui_widgets/widgets_abstract.h.html#text_box - - - tabbed_display - dlib/gui_widgets/widgets_abstract.h.html#tabbed_display - - - mouse_tracker - dlib/gui_widgets/widgets_abstract.h.html#mouse_tracker - - - - - styles - - - button_style - dlib/gui_widgets/style_abstract.h.html#button_style - - - button_style_default - dlib/gui_widgets/style_abstract.h.html#button_style_default - - - button_style_arrow - dlib/gui_widgets/style_abstract.h.html#button_style_arrow - - - button_style_toolbar1 - dlib/gui_widgets/style_abstract.h.html#button_style_toolbar1 - - - button_style_toolbar_icon1 - dlib/gui_widgets/style_abstract.h.html#button_style_toolbar_icon1 - - - - - toggle_button_style - dlib/gui_widgets/style_abstract.h.html#toggle_button_style - - - toggle_button_style_default - dlib/gui_widgets/style_abstract.h.html#toggle_button_style_default - - - toggle_button_style_check_box - dlib/gui_widgets/style_abstract.h.html#toggle_button_style_check_box - - - toggle_button_style_radio_button - dlib/gui_widgets/style_abstract.h.html#toggle_button_style_radio_button - - - - - scroll_bar_style - dlib/gui_widgets/style_abstract.h.html#scroll_bar_style - - - scroll_bar_style_default - dlib/gui_widgets/style_abstract.h.html#scroll_bar_style_default - - - - - scrollable_region_style - dlib/gui_widgets/style_abstract.h.html#scrollable_region_style - - - scrollable_region_style_default - dlib/gui_widgets/style_abstract.h.html#scrollable_region_style_default - - - - - list_box_style - dlib/gui_widgets/style_abstract.h.html#list_box_style - - - list_box_style_default - dlib/gui_widgets/style_abstract.h.html#list_box_style_default - - - - - text_field_style - dlib/gui_widgets/style_abstract.h.html#text_field_style - - - text_field_style_default - dlib/gui_widgets/style_abstract.h.html#text_field_style_default - - - - - text_box_style - dlib/gui_widgets/style_abstract.h.html#text_box_style - - - text_box_style_default - dlib/gui_widgets/style_abstract.h.html#text_box_style_default - - - - - canvas drawing functions - - - draw_line - dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_line - - - draw_rectangle - dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_rectangle - - - draw_circle - dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_circle - - - draw_pixel - dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_pixel - - - draw_solid_circle - dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_solid_circle - - - draw_solid_convex_polygon - dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_solid_convex_polygon - - - draw_button_down - dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_button_down - - - draw_sunken_rectangle - dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_sunken_rectangle - - - draw_button_up - dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_button_up - - - draw_checkered - dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_checkered - - - draw_image - dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_image - - - fill_rect - dlib/gui_widgets/canvas_drawing_abstract.h.html#fill_rect - - - fill_rect_with_vertical_gradient - dlib/gui_widgets/canvas_drawing_abstract.h.html#fill_rect_with_vertical_gradient - - - fill_gradient_rounded - dlib/gui_widgets/canvas_drawing_abstract.h.html#fill_gradient_rounded - - - draw_rounded_rectangle - dlib/gui_widgets/canvas_drawing_abstract.h.html#draw_rounded_rectangle - - - - - drawable - dlib/gui_widgets/drawable_abstract.h.html#drawable - - - set_main_font - dlib/gui_widgets/drawable_abstract.h.html#set_main_font - - - main_font - dlib/gui_widgets/drawable_abstract.h.html#main_font - - - z_order - dlib/gui_widgets/drawable_abstract.h.html#z_order - - - next_free_user_event_number - dlib/gui_widgets/drawable_abstract.h.html#next_free_user_event_number - - - set_z_order - dlib/gui_widgets/drawable_abstract.h.html#set_z_order - - - shape - - - get_rect - dlib/gui_widgets/drawable_abstract.h.html#get_rect - - - bottom - dlib/gui_widgets/drawable_abstract.h.html#bottom - - - top - dlib/gui_widgets/drawable_abstract.h.html#top - - - left - dlib/gui_widgets/drawable_abstract.h.html#left - - - right - dlib/gui_widgets/drawable_abstract.h.html#right - - - width - dlib/gui_widgets/drawable_abstract.h.html#width - - - height - dlib/gui_widgets/drawable_abstract.h.html#height - - - - - set_pos - dlib/gui_widgets/drawable_abstract.h.html#set_pos - - - is_enabled - dlib/gui_widgets/drawable_abstract.h.html#is_enabled - - - enable - dlib/gui_widgets/drawable_abstract.h.html#enable - - - disable - dlib/gui_widgets/drawable_abstract.h.html#disable - - - is_hidden - dlib/gui_widgets/drawable_abstract.h.html#is_hidden - - - show - dlib/gui_widgets/drawable_abstract.h.html#show - - - hide - dlib/gui_widgets/drawable_abstract.h.html#hide - - - parent_window - dlib/gui_widgets/drawable_abstract.h.html#parent_window - - - enable_events - dlib/gui_widgets/drawable_abstract.h.html#enable_events - - - events_are_enabled - dlib/gui_widgets/drawable_abstract.h.html#events_are_enabled - - - disable_events - dlib/gui_widgets/drawable_abstract.h.html#disable_events - - - events - - - on_window_resized - dlib/gui_widgets/drawable_abstract.h.html#on_window_resized - - - on_window_moved - dlib/gui_widgets/drawable_abstract.h.html#on_window_moved - - - on_focus_gained - dlib/gui_widgets/drawable_abstract.h.html#on_focus_gained - - - on_focus_lost - dlib/gui_widgets/drawable_abstract.h.html#on_focus_lost - - - on_mouse_up - dlib/gui_widgets/drawable_abstract.h.html#on_mouse_up - - - on_mouse_move - dlib/gui_widgets/drawable_abstract.h.html#on_mouse_move - - - on_mouse_enter - dlib/gui_widgets/drawable_abstract.h.html#on_mouse_enter - - - on_mouse_leave - dlib/gui_widgets/drawable_abstract.h.html#on_mouse_leave - - - on_mouse_down - dlib/gui_widgets/drawable_abstract.h.html#on_mouse_down - - - on_wheel_up - dlib/gui_widgets/drawable_abstract.h.html#on_wheel_up - - - on_wheel_down - dlib/gui_widgets/drawable_abstract.h.html#on_wheel_down - - - on_keydown - dlib/gui_widgets/drawable_abstract.h.html#on_keydown - - - on_string_put - dlib/gui_widgets/drawable_abstract.h.html#on_string_put - - - on_user_event - dlib/gui_widgets/drawable_abstract.h.html#on_user_event - - - draw - dlib/gui_widgets/drawable_abstract.h.html#draw - - - - - - - drawable_window - dlib/gui_widgets/drawable_abstract.h.html#drawable_window - - - fonts - - - letter - dlib/gui_widgets/fonts_abstract.h.html#letter - - - font - dlib/gui_widgets/fonts_abstract.h.html#font - - - default_font - dlib/gui_widgets/fonts_abstract.h.html#default_font - - - get_native_font - dlib/gui_widgets/fonts_abstract.h.html#get_native_font - - - bdf_font - dlib/gui_widgets/fonts_abstract.h.html#bdf_font - - - - - - - - gui_core - - - base_window - dlib/gui_core/gui_core_kernel_abstract.h.html#base_window - - - canvas - dlib/gui_core/gui_core_kernel_abstract.h.html#canvas - - - get_from_clipboard - dlib/gui_core/gui_core_kernel_abstract.h.html#get_from_clipboard - - - put_on_clipboard - dlib/gui_core/gui_core_kernel_abstract.h.html#put_on_clipboard - - - - - - dir_nav - - - get_filesystem_roots - dlib/dir_nav/dir_nav_kernel_abstract.h.html#get_filesystem_roots - - - file - dlib/dir_nav/dir_nav_kernel_abstract.h.html#file - - - directory - dlib/dir_nav/dir_nav_kernel_abstract.h.html#directory - - - get_files_in_directory_tree - dlib/dir_nav/dir_nav_extensions_abstract.h.html#get_files_in_directory_tree - - - get_parent_directory - dlib/dir_nav/dir_nav_extensions_abstract.h.html#get_parent_directory - - - file_exists - dlib/dir_nav/dir_nav_extensions_abstract.h.html#file_exists - - - select_oldest_file - dlib/dir_nav/dir_nav_extensions_abstract.h.html#select_oldest_file - - - select_newest_file - dlib/dir_nav/dir_nav_extensions_abstract.h.html#select_newest_file - - - - - misc_api - - - sleep - dlib/misc_api/misc_api_kernel_abstract.h.html#sleep - - - get_current_dir - dlib/misc_api/misc_api_kernel_abstract.h.html#get_current_dir - - - set_current_dir - dlib/misc_api/misc_api_kernel_abstract.h.html#set_current_dir - - - locally_change_current_dir - dlib/misc_api/misc_api_kernel_abstract.h.html#locally_change_current_dir - - - create_directory - dlib/misc_api/misc_api_kernel_abstract.h.html#create_directory - - - timestamper - dlib/misc_api/misc_api_kernel_abstract.h.html#timestamper - - - - - threads - - - extensions - - thread_specific_data - create_new_thread_extension - rsignaler - rmutex - read_write_mutex - auto_mutex - auto_mutex_readonly - auto_unlock - auto_unlock_readonly - threaded_object - thread_pool - async - default_thread_pool - parallel_for - - future - dlib/threads/thread_pool_extension_abstract.h.html#future - - thread_function - multithreaded_object - - - - is_dlib_thread - dlib/threads/threads_kernel_abstract.h.html#is_dlib_thread - - - create_new_thread - dlib/threads/threads_kernel_abstract.h.html#create_new_thread - - - mutex - dlib/threads/threads_kernel_abstract.h.html#mutex - - - unregister_thread_end_handler - dlib/threads/threads_kernel_abstract.h.html#unregister_thread_end_handler - - - register_thread_end_handler - dlib/threads/threads_kernel_abstract.h.html#register_thread_end_handler - - - signaler - dlib/threads/threads_kernel_abstract.h.html#signaler - - - get_thread_id - dlib/threads/threads_kernel_abstract.h.html#get_thread_id - - - - - sockets - - - extensions - - - network_address - dlib/sockets/sockets_extensions_abstract.h.html#network_address - - - connect - dlib/sockets/sockets_extensions_abstract.h.html#connect - - - is_ip_address - dlib/sockets/sockets_extensions_abstract.h.html#is_ip_address - - - close_gracefully - dlib/sockets/sockets_extensions_abstract.h.html#close_gracefully - - - - - objects - - - connection - dlib/sockets/sockets_kernel_abstract.h.html#connection - - - listener - dlib/sockets/sockets_kernel_abstract.h.html#listener - - - - - functions - - - create_connection - dlib/sockets/sockets_kernel_abstract.h.html#create_connection - - - create_listener - dlib/sockets/sockets_kernel_abstract.h.html#create_listener - - - get_local_hostname - dlib/sockets/sockets_kernel_abstract.h.html#get_local_hostname - - - hostname_to_ip - dlib/sockets/sockets_kernel_abstract.h.html#hostname_to_ip - - - ip_to_hostname - dlib/sockets/sockets_kernel_abstract.h.html#ip_to_hostname - - - - - -
-
-
- - - - - - - - - dir_nav - dlib/dir_nav.h - dlib/dir_nav/dir_nav_kernel_abstract.h - - This is a set of objects that provide an easy and portable way to traverse a directory tree. - - - - dir_nav_ex.cpp.html - - - - - dir_nav_kernel_1 - dlib/dir_nav/dir_nav_kernel_1.h - - MS Windows implementation - - - - - dir_nav_kernel_2 - dlib/dir_nav/dir_nav_kernel_2.h - - POSIX implementation - - - - - - - - dir_nav_extensions - dlib/dir_nav/dir_nav_extensions_abstract.h - - This is just some miscellaneous extensions to the dir_nav component. - - - - - - - - - - - gui_core - dlib/gui_core.h - dlib/gui_core/gui_core_kernel_abstract.h - - This is a set of objects and functions which provide a very basic - framework for manipulating windows. It is intended to provide a portable - interface which can be used to build a more complex windowing toolkit. - - - - - gui_core_kernel_1 - dlib/gui_core/gui_core_kernel_1.h - - MS Windows implementation - - - - - gui_core_kernel_2 - dlib/gui_core/gui_core_kernel_2.h - - X Windows implementation - - - - - - - - - - - - - misc_api - dlib/misc_api.h - dlib/misc_api/misc_api_kernel_abstract.h - - This is just a collection of miscellaneous APIs that were small/simple - enough not to warrant their own module. - - - - - misc_api_kernel_1 - dlib/misc_api/misc_api_kernel_1.h - - MS Windows implementation - - - - - misc_api_kernel_2 - dlib/misc_api/misc_api_kernel_2.h - - POSIX implementation - - - - - - - - - - - - - sockets - dlib/sockets.h - dlib/sockets/sockets_kernel_abstract.h - - This is a set of objects that provides an easy to use and object oriented - interface for dealing with TCP networking. There are currently two implementations, - one for UNIX and another for all versions of Windows after Windows95. - Both provide the exact same interface so programs written with them can be - recompiled on either platform without a problem. -

- You also may want to take note of the timeout object. - It provides a mechanism which you can use to add a timeout to a network operation. -

-
- - - iosockstream_ex.cpp.html - sockets_ex.cpp.html - sockstreambuf_ex.cpp.html - server_http_ex.cpp.html - server_iostream_ex.cpp.html - - - - - sockets_kernel_1 - dlib/sockets/sockets_kernel_1.h - - MS Windows implementation - - - - - sockets_kernel_2 - dlib/sockets/sockets_kernel_2.h - - POSIX implementation - - - - - - - - - sockets_extensions - dlib/sockets/sockets_extensions_abstract.h - - This is just some miscellaneous extensions to the socket api. - - - - - - -
- - - - - - - threads - dlib/threads.h - dlib/threads/threads_kernel_abstract.h - - This is a set of objects that provides an easy to use and object oriented interface - for creating multi-threaded programs. There are currently two implementations, one - for UNIX and another for any variant of MS Windows after Windows 95. Both provide - the exact same interface so programs written with them can be recompiled on either - platform without a problem. -

- You also probably want to take note of the pipe object. - It provides an easy to use typesafe mechanism to send messages between threads. -

-
- - - threads_ex.cpp.html - logger_ex_2.cpp.html - pipe_ex.cpp.html - multithreaded_object_ex.cpp.html - threaded_object_ex.cpp.html - thread_function_ex.cpp.html - thread_pool_ex.cpp.html - - - - - threads_kernel_1 - dlib/threads/threads_kernel_1.h - - MS Windows implementation - - - - - threads_kernel_2 - dlib/threads/threads_kernel_2.h - - POSIX implementation - - - - - - - - - rsignaler - dlib/threads/rsignaler_extension_abstract.h - - This extension adds a signaler object that can be used with the rmutex object. - Also note that this extension is included by dlib/threads.h so you don't have to include - anything extra to get it. - - - - - - thread_specific_data - dlib/threads/thread_specific_data_extension_abstract.h - - This extension adds the ability to easily create thread specific data. - - - - - - rmutex - dlib/threads/rmutex_extension_abstract.h - - This extension adds a mutex object that can handle recursive calls - to lock(). - Also note that this extension is included by dlib/threads.h so you don't have to include - anything extra to get it. - - - - - read_write_mutex - dlib/threads/read_write_mutex_extension_abstract.h - - This extension adds a mutex object that can perform both normal "write locks" as well as "readonly locks". - See the specification for details. - Also note that this extension is included by dlib/threads.h so you don't have to include - anything extra to get it. - - - - - create_new_thread_extension - dlib/threads/create_new_thread_extension_abstract.h - - This extension adds some templated overloads to the - create_new_thread() function. They allow you to create new threads using member functions from a class. - Also note that this extension is included by dlib/threads.h so you don't have to include - anything extra to get it. - - - - - - - auto_mutex - dlib/threads/auto_mutex_extension_abstract.h - - This extension adds a mechanism to automatically lock and unlock a mutex. - Also note that this extension is included by dlib/threads.h so you don't have to include - anything extra to get it. - - - - threads_ex.cpp.html - - - - - - auto_mutex_readonly - dlib/threads/auto_mutex_extension_abstract.h - - This extension adds a mechanism to automatically perform a readonly lock and unlock - of a read_write_mutex. - Also note that this extension is included by dlib/threads.h so you don't have to include - anything extra to get it. - - - - - auto_unlock_readonly - dlib/threads/auto_unlock_extension_abstract.h - - This extension adds a mechanism to automatically remove a readonly unlock from a read_write_mutex. - Also note that this extension is included by dlib/threads.h so you don't have to include - anything extra to get it. - - - - - thread_function - dlib/threads/thread_function_extension_abstract.h - - This object represents a thread on a global C++ function. That is, it allows you - to run a global function in its own thread. - - - - thread_function_ex.cpp.html - - - - - - - threaded_object - dlib/threads/threaded_object_extension_abstract.h - - This extension represents a simple threaded object. It provides a convenient - mechanism to create an object that contains a thread. - - - - threaded_object_ex.cpp.html - - - - - - - thread_pool - dlib/threads/thread_pool_extension_abstract.h - -

- This object represents a fixed size group of threads which you can - submit tasks to and then wait for those tasks to be completed. It also - provides a future object - that provides a container which allows you to safely pass objects into the tasks. -

- The implementation of this extension can be found - here. It is - implemented such that no memory allocations occur after the thread pool - has been constructed so long as the user doesn't call - any of the add_task_by_value() routines. The future object also doesn't - perform any memory allocations or contain any system resources such as mutex objects. -
- - - thread_pool_ex.cpp.html - -
- - - default_thread_pool - dlib/threads/async_abstract.h - - This function returns a reference to a global thread_pool. If the DLIB_NUM_THREADS - environment variable is set to an integer then the thread pool will contain - DLIB_NUM_THREADS threads, otherwise it will contain - std::thread::hardware_concurrency() threads. - - - - - async - dlib/threads/async_abstract.h - - This function behaves just like std::async() - except that instead of spawning a new thread to process each task it submits - the task to a dlib::thread_pool. Therefore, dlib::async() is - guaranteed to use a bounded number of threads unlike std::async(). This also - means that calls to dlib::async() will block if there aren't any free threads - in the thread pool. - - - - - parallel_for - dlib/threads/parallel_for_extension_abstract.h - - This is a set of functions for executing the contents of a for loop in parallel. - It is useful for taking advantage of multi-processor systems. - - - parallel_for_ex.cpp.html - - - - - multithreaded_object - dlib/threads/multithreaded_object_extension_abstract.h - - This object represents a multithreaded object. It is similar to - the threaded_object except it allows you to have many threads in a - single object rather than just one. - - - - multithreaded_object_ex.cpp.html - pipe_ex.cpp.html - - - - - auto_unlock - dlib/threads/auto_unlock_extension_abstract.h - - This extension adds a mechanism to automatically unlock a mutex. - Also note that this extension is included by dlib/threads.h so you don't have to include - anything extra to get it. - - - - -
- - - -
- - - - - - - - gui_widgets - dlib/gui_widgets.h - -

- This component is a collection of various windowing widgets such as buttons, - labels, text boxes, and so on. It also includes the drawable - interface, drawable_window, and font handling objects. - dlib/gui_widgets/widgets_abstract.h - defines all of the high level graphical widgets provided by this - component that can appear in a drawable_window. To view the specifications for the other members of this - component look at dlib/gui_widgets/fonts_abstract.h, - dlib/gui_widgets/drawable_abstract.h, - and dlib/gui_widgets/base_widgets_abstract.h. -

-

This component isn't actually a wrapper on top of OS APIs. Rather, it is - implemented on top of the gui_core - component. I put it on this page just because I expect that people would - look here when searching for the sort of functionality provided by this component. -

- - -

Primary widgets

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- -
- - - gui_api_ex.cpp.html - image_ex.cpp.html - 3d_point_cloud_ex.cpp.html - surf_ex.cpp.html - bayes_net_gui_ex.cpp.html - -
- - - - - -
- - - - -
diff --git a/ml/dlib/docs/docs/bayes.xml b/ml/dlib/docs/docs/bayes.xml deleted file mode 100644 index 2ed11fe1d..000000000 --- a/ml/dlib/docs/docs/bayes.xml +++ /dev/null @@ -1,377 +0,0 @@ - - - - - Bayesian Networks - - - - - -

- This page documents all the tools within the dlib library that relate - to the construction and evaluation of Bayesian networks. If you want - a quick introduction to the tools then you should consult the - Bayesian Net example program. - -

-

- The - library also comes with a graphical application to assist in the - creation of bayesian networks. This application is one of the - example programs, so to use it - you have to compile it yourself. -

- - - - - - - -
- Tools - assignment - joint_probability_table - conditional_probability_table - bayes_node - bayesian_network_gibbs_sampler - bayesian_network_join_tree - -
- -
- Node Utilities - set_node_value - node_value - node_is_evidence - set_node_as_evidence - set_node_as_nonevidence - set_node_num_values - node_num_values - node_probability - set_node_probability - node_first_parent_assignment - node_next_parent_assignment - node_cpt_filled_out - -
- -
-
- - - - - - - - - - - bayesian_network_join_tree - dlib/bayes_utils.h - dlib/bayes_utils/bayes_utils_abstract.h - - This object represents an implementation of the join tree algorithm - (a.k.a. the junction tree algorithm) - for inference in bayesian networks. - - - bayes_net_ex.cpp.html - bayes_net_gui_ex.cpp.html - bayes_net_from_disk_ex.cpp.html - - - - - - - - bayesian_network_gibbs_sampler - dlib/bayes_utils.h - dlib/bayes_utils/bayes_utils_abstract.h - - This object performs Markov Chain Monte Carlo sampling of a bayesian - network using the Gibbs sampling technique. - - - bayes_net_ex.cpp.html - - - - - - - - bayes_node - dlib/bayes_utils.h - dlib/bayes_utils/bayes_utils_abstract.h - - This object represents a node in a bayesian network. It is - intended to be used inside the directed_graph object to - represent bayesian networks. - - - - bayes_net_ex.cpp.html - bayes_net_gui_ex.cpp.html - - - - - - - conditional_probability_table - dlib/bayes_utils.h - dlib/bayes_utils/bayes_utils_abstract.h - - This object represents a conditional probability table. - - - - - - - - joint_probability_table - dlib/bayes_utils.h - dlib/bayes_utils/bayes_utils_abstract.h - - This object represents a joint probability table. - - - - - - - - assignment - dlib/bayes_utils.h - dlib/bayes_utils/bayes_utils_abstract.h - - This object models an assignment of random variables to particular values. - It is used with the joint_probability_table and - conditional_probability_table - objects to represent assignments of various random variables to actual values. - - - bayes_net_ex.cpp.html - bayes_net_gui_ex.cpp.html - - - - - - - - set_node_probability - dlib/bayes_utils.h - dlib/bayes_utils/bayes_utils_abstract.h - - This is a function declared in the dlib::bayes_node_utils namespace. It - is a convenience function that allows you to easily set the probability of a - bayes_node given its parents when it is inside - a directed_graph object. - - - bayes_net_ex.cpp.html - - - - - - - - node_first_parent_assignment - dlib/bayes_utils.h - dlib/bayes_utils/bayes_utils_abstract.h - - This is a function declared in the dlib::bayes_node_utils namespace. It - is a convenience function that allows you to easily obtain an assignment - that contains all the parents of a node in a bayesian network. - - - bayes_net_gui_ex.cpp.html - - - - - - - - node_next_parent_assignment - dlib/bayes_utils.h - dlib/bayes_utils/bayes_utils_abstract.h - - This is a function declared in the dlib::bayes_node_utils namespace. It - is a convenience function that allows you to easily loop through all the parent assignments - of a node in a bayesian network. - - - bayes_net_gui_ex.cpp.html - - - - - - - - node_cpt_filled_out - dlib/bayes_utils.h - dlib/bayes_utils/bayes_utils_abstract.h - - This is a function declared in the dlib::bayes_node_utils namespace. It - is a convenience function that allows you to easily verify that a node - in a bayesian network has its conditional_probability_table - completely filled out. - - - bayes_net_gui_ex.cpp.html - - - - - - - - - node_probability - dlib/bayes_utils.h - dlib/bayes_utils/bayes_utils_abstract.h - - This is a function declared in the dlib::bayes_node_utils namespace. It - is a convenience function that allows you to easily obtain the probability of a - bayes_node given its parents when it is inside - a directed_graph object. - - - - - - - - node_num_values - dlib/bayes_utils.h - dlib/bayes_utils/bayes_utils_abstract.h - - This is a function declared in the dlib::bayes_node_utils namespace. It - is a convenience function that allows you to easily obtain the number of values of a - bayes_node when it is inside - a directed_graph object. - - - - - - - - set_node_num_values - dlib/bayes_utils.h - dlib/bayes_utils/bayes_utils_abstract.h - - This is a function declared in the dlib::bayes_node_utils namespace. It - is a convenience function that allows you to easily set the number of values of a - bayes_node when it is inside - a directed_graph object. - - - bayes_net_ex.cpp.html - - - - - - - - set_node_as_nonevidence - dlib/bayes_utils.h - dlib/bayes_utils/bayes_utils_abstract.h - - This is a function declared in the dlib::bayes_node_utils namespace. It - is a convenience function that allows you to easily remove the evidence flag of a - bayes_node when it is inside - a directed_graph object. - - - bayes_net_ex.cpp.html - - - - - - - - set_node_as_evidence - dlib/bayes_utils.h - dlib/bayes_utils/bayes_utils_abstract.h - - This is a function declared in the dlib::bayes_node_utils namespace. It - is a convenience function that allows you to easily set the evidence flag of a - bayes_node when it is inside - a directed_graph object. - - - bayes_net_ex.cpp.html - - - - - - - - node_is_evidence - dlib/bayes_utils.h - dlib/bayes_utils/bayes_utils_abstract.h - - This is a function declared in the dlib::bayes_node_utils namespace. It - is a convenience function that allows you to easily determine if a - bayes_node is evidence when it is inside - a directed_graph object. - - - - - - - - node_value - dlib/bayes_utils.h - dlib/bayes_utils/bayes_utils_abstract.h - - This is a function declared in the dlib::bayes_node_utils namespace. It - is a convenience function that allows you to easily obtain the value of a - bayes_node when it is inside a - directed_graph object. - - - - - - - - set_node_value - dlib/bayes_utils.h - dlib/bayes_utils/bayes_utils_abstract.h - - This is a function declared in the dlib::bayes_node_utils namespace. It - is a convenience function that allows you to easily modify the value of a - bayes_node when it is inside a - directed_graph object. - - - bayes_net_ex.cpp.html - - - - - - - - - - - -
- - diff --git a/ml/dlib/docs/docs/bayesopt_vs_lipo.svg b/ml/dlib/docs/docs/bayesopt_vs_lipo.svg deleted file mode 100644 index f88f4ab5a..000000000 --- a/ml/dlib/docs/docs/bayesopt_vs_lipo.svg +++ /dev/null @@ -1,21764 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0 - - - 20 - - - 40 - - - 60 - - - 80 - - - 100 - - - 120 - - - 140 - - - 160 - - - 180 - - - 200 - - - Objective Function Calls - - - - - - - - - - - - - - - - - - - - - -25 - - - -20 - - - -15 - - - -10 - - - -5 - - - 0 - - - 5 - - - log10(error) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BayesOpt - - - - - - - - - - - - - - - - - - - MaxLIPO+TR - - - - - - - - - - - - - - - - - - - Solving Holder Table Function: BayesOpt vs. MaxLIPO+TR - diff --git a/ml/dlib/docs/docs/bigminus.gif b/ml/dlib/docs/docs/bigminus.gif deleted file mode 100644 index aea8e5c01..000000000 Binary files a/ml/dlib/docs/docs/bigminus.gif and /dev/null differ diff --git a/ml/dlib/docs/docs/bigplus.gif b/ml/dlib/docs/docs/bigplus.gif deleted file mode 100644 index 6bee68e21..000000000 Binary files a/ml/dlib/docs/docs/bigplus.gif and /dev/null differ diff --git a/ml/dlib/docs/docs/books.xml b/ml/dlib/docs/docs/books.xml deleted file mode 100644 index cda81bd86..000000000 --- a/ml/dlib/docs/docs/books.xml +++ /dev/null @@ -1,306 +0,0 @@ - - - - - Suggested Books - - - - - - - -

- One of the major goals of dlib is to have documentation that enables - someone to easily make use of its various components. Ideally, - you would read a short description of something, understand it immediately, - and begin using it in your application without any difficulty. Obviously, this - depends partly on the background of the user. For example, if you have - never written C++ software before then it probably isn't going to be this easy. -

-

- This page is meant to complement the main library documentation by providing - references to books, along with my commentary, which explain most of - the background material needed to understand the various parts of the library. - In most cases these are the books I learned from during the process - of creating dlib. As always, if you disagree with anything or think I have left out - an important text then shoot me an email. -

-

- - -

General Programming

-
    -

    C++

    -
      -
    • Programming: Principles and Practice Using C++ by Bjarne Stroustrup -
        This is the sort of book you would use in a freshman introduction-to-programming class. - So if you are just beginning to study programming and are interested in C++ then I think - it is probably safe to say this is one of the best books you could read.

      -
    • -
    • Accelerated C++: Practical Programming by Example by Andrew Koenig and Barbara E. Moo -
        If you are new to C++ but already know how to program then this is a great book. It's also - about one fourth the size of the Stroustrup book.

      -
    • -
    • Effective C++: 55 Specific Ways to Improve Your Programs and Designs (3rd Edition) by Scott Meyers -
        This is a great intermediate level C++ book. Most people have heard the jokes about - how easy it is to shoot yourself in the foot with C++. This book explains many things you - need to know about the language to avoid doing so on a regular basis. So if you are - writing C++ software then this is a must-read. I would even claim that - you are a danger to the C++ software you touch unless you know what is in this book. - I'm not kidding. Finally, the book isn't just about the quirks of C++. It also discusses many general - software engineering ideas which have wide applicability. So in this - respect it is a great book for any software developer to read. -

      -
    • -
    • More Effective C++: 35 New Ways to Improve Your Programs and Designs by Scott Meyers -
        Consider this an expansion to Effective C++. If you are going to read the above - book then you would almost certainly benefit from reading this one as well. -

      -
    • -
    • The C++ Standard Library: A Tutorial and Reference by Nicolai M. Josuttis -
        If you are going to buy a reference book on the C++ standard library then this - is the one to get. I think you - will find it is better than any of the available online references. So if you find - yourself frustrated with the online resources, then this is the book for you. -

      -
    • -
    • Online C++ Standard Library Reference -
        What I said aside, this is a good online reference. I often find myself referring to it - when I do not have the Josuttis book on hand. -

      -
    • -
    - - -

    Multithreading

    -
      -
    • Programming with POSIX Threads by David R. Butenhof -
        When I was an undergrad, this book was my main resource for learning about multithreading. - It was enjoyable to read, as are all the books on this list, and covered everything - in great depth without becoming overbearing. Also, despite what the title may suggest, - this book is useful for understanding multithreading broadly, not just multithreading - on POSIX systems. -

      -
    • -
    - -

    Network Programming

    -
      -
    • Unix Network Programming, Volume 1: The Sockets Networking API (3rd Edition) - by W. Richard Stevens -
        A lot of people call this book the network programming Bible and - this praise is well deserved. If you want a deep understanding of how computer networks - function, including the Internet, then this is the book to read. As with - the Butenhof book above, this is an excellent choice even for people who do not - intend to write software for Unix systems. -

      -
    • -
    - -

    WIN32 Programming

    - It has been a long time since I needed to refer to these two books. However, - they contained information I couldn't find elsewhere no matter - how hard I looked. So I recommend them in case you need to create or understand - some low level win32 code. -
    -
    -
      -
    • Win32 Programming by Brent E. Rector and Joseph M. Newcomer
    • -
    • Programming Windows by Charles Petzold
    • -
    • MSDN Library -
        This is Microsoft's online reference documentation. It is very large and sometimes - confusing. But at the end of the day you should be able to find the documentation - for just about every function in the entire Windows API. -

      -
    • -
    -
- - - - - -

Computer Science: Algorithms and Data Structures

-
    -
  • Introduction to Algorithms by Cormen, Leiserson, Rivest and Stein -
      You should get this book if you are looking for a good discussion of the classic computer science - algorithms and data structures (e.g. most of the components on the containers - page). -

    -
  • -
  • Algorithms in C++, Parts 1-4: Fundamentals, Data Structure, Sorting, Searching - (3rd Edition) by Robert Sedgewick -
      This is another good algorithms book. If you are going to get only one book on this - subject then get the one above. However, when I was learning about these topics I - used both these books and on many occasions I found it helpful to read the description - of an algorithm or data structure in both. Where one description was a little vague or - confusing the other generally filled in the gaps. -

    -
  • -
- - - -

Lossless Data Compression

-
    -
  • Text Compression by Bell, Cleary, and Witten -
      When I was studying data compression this was my most useful - resource. If you are looking to understand how lossless data compression - algorithms work then this is the book you want. It is completely self-contained - and an absolute joy to read. Note that contrary to one of the reviews on - amazon.com, the book Managing Gigabytes is not the second edition of this book; - if this topic interests you then be sure you get the 318 page - book published in 1990. -

    -
  • -
- - - -

General Math

- -
    -
  • Linear Algebra Done Right by Sheldon Jay Axler -
      If a matrix seems like an arbitrary grid of numbers or you find that - you are confused by vectors, matrices, and the various things - that get done with them then this book will change your whole view of this subject. - It doesn't teach you any algorithms. Instead, it will give you a general - framework in which to think about all this stuff. Once you have that down - everything else will start to make a lot more sense. If all goes well - you will even start to agree with the following: linear algebra is beautiful. :) -

    -
  • -
  • Numerical Linear Algebra by Trefethen and Bau -
      While Linear Algebra Done Right is fairly abstract, this book by - Trefethen and Bau will - explain some of the actual algorithms that are often used. - This is a great second book if you find that you want to know more about - the SVD, LU decomposition, or various other algorithms involving linear algebra. -

    -
  • -
  • Calculus: Single and Multivariable by Hughes-Hallett, Gleason, and McCallum -
      - Some of the books below will require and understanding of basic calculus. So - I'm recommending this book. It was the book I used as an undergrad and I - remember it being alright. That isn't exactly a glowing review so if you - are really considering buying a calculus book you may want to check out - other reviews before picking this one. -

    -
  • -
  • Introduction to Real Analysis (third edition) by Bartle and Sherbert -
      At some level real analysis is like a really rigorous repeat of calculus. - So if you already have an undergraduate education in calculus and - you are reading things that seem reminiscent of calculus but involve - stuff you haven't seen before (e.g. sup, inf, "sets of numbers", sequences of points) - then you may be in need of a real analysis book. This one is quite good and should - be accessible to someone with the usual undergraduate computer science math background. -

    -
  • -
- - - - - -

Optimization

- - The subject of linear algebra is fundamental to optimization. So you must be familiar - with the contents of a book like Linear Algebra Done Right if you are going to study - this area. You will also need to know how to find the derivative of a function and - understand what a derivative is all about. So you will need to know a little bit of - calculus. Finally, once in a while you will need to know a little bit about real - analysis. Ultimately, what you need all depends on how deep you want to go. - -
    -
  • Practical Methods of Optimization (second edition) by R. Fletcher 1987 -
      I love this book. When I got it I literally spent my weekends sitting around - reading it for hours. It is a fascinating and well written introduction to - the subject of optimization. This has been my most valuable resource for - learning the fundamentals of optimization and I cannot recommend it highly enough. -

    -
  • -
  • Numerical Optimization by Jorge Nocedal and Stephen Wright 2006 -
      This is a more recent text on optimization that is also very good. It - covers many algorithms not covered by the above book. -

    -
  • -
  • Introduction to Derivative-Free Optimization by Conn, Scheinberg, and Vicente -
      If you want to understand algorithms like BOBYQA - then this is a good recent book on the subject. Note that a book like Practical Methods of Optimization - is almost certainly a prerequisite for reading this book. As an aside, BOBYQA is not discussed in this book but - its predecessor, NEWUOA is. -

    -
  • -
- - - - -

Machine Learning

- -
    -
  • Artificial Intelligence: A Modern Approach (3rd Edition) by Stuart Russell and Peter Norvig -
      This book is about the much broader field of AI but it contains an excellent introduction - to machine learning and it also covers other useful topics like bayesian networks. - Moreover, it is very well written and self-contained. So you don't need any particular - background to be able to learn from it apart from a typical undergraduate background - in computer science. -

    -
  • -
  • Learning with Kernels: Support Vector Machines, Regularization, Optimization, and Beyond - by Bernhard Schlkopf and Alexander J. Smola -
      Most of the machine learning tools in dlib are implementations of various kernel methods. - So if you want a book that covers this topic in great depth as well as breadth then this is - probably the book for you. The most important prerequisite for this book is linear - algebra. Virtually everything in this book depends on linear algebra in a fundamental way. -

      - The second important subject is optimization. Whenever you see the text - mention the KKT conditions, duality, "primal variables", or quadratic programming it - is talking about ideas from optimization. A good book which will explain all this to you - is Practical Methods of Optimization. Note that this book calls the KKT conditions - just the "KT" conditions. It is talking about the same thing. Also, duality - is something that comes up a lot in optimization but in the context of machine learning - usually people are talking about a particular form known as the Wolfe Dual. -

      - It would also be good (but maybe not critical depending on which parts you want to read) to - be familiar with real analysis. -

    -
  • -
  • Kernel Methods for Pattern Analysis by John Shawe-Taylor and Nello Cristianini -
      This is another good book about kernel methods. If you have to choose between - this book and Learning with Kernels I would go with Learning with Kernels. However, it is - good to have both since reading different presentations of difficult subjects - usually makes learning them easier. -

    -
  • - -
  • Structured Prediction and Learning in Computer Vision by Sebastian Nowozin and Christoph H. Lampert 2011 -
      If you are looking for a book discussing the background material necessary - for understanding things like the Structural SVM - tools in dlib then this is a good book. It is also available online - in PDF form. -

    -
  • - -
- -

Image Processing

-
    -
  • Digital Image Processing by Rafael C. Gonzalez and Richard E. Woods -
      This is a terrific introduction to digital image processing. - By and large this book doesn't require any special prerequisites. Sometimes - calculus shows up, but not too much. -

    -
  • -
- - - - - - - - -
- diff --git a/ml/dlib/docs/docs/boost.png b/ml/dlib/docs/docs/boost.png deleted file mode 100644 index b4d51fcd5..000000000 Binary files a/ml/dlib/docs/docs/boost.png and /dev/null differ diff --git a/ml/dlib/docs/docs/change_log.xml b/ml/dlib/docs/docs/change_log.xml deleted file mode 100644 index 6088c869e..000000000 --- a/ml/dlib/docs/docs/change_log.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - Change Log - -
-
Old Change Logs
-
- -
diff --git a/ml/dlib/docs/docs/chm/READ THE README. DO NOT EDIT THE TABLE OF CONTENTS FILE b/ml/dlib/docs/docs/chm/READ THE README. DO NOT EDIT THE TABLE OF CONTENTS FILE deleted file mode 100644 index e69de29bb..000000000 diff --git a/ml/dlib/docs/docs/chm/READ THE README. DO NOT EDIT THE TABLE OF CONTENTS FILE2 b/ml/dlib/docs/docs/chm/READ THE README. DO NOT EDIT THE TABLE OF CONTENTS FILE2 deleted file mode 100644 index e69de29bb..000000000 diff --git a/ml/dlib/docs/docs/chm/READ THE README. DO NOT EDIT THE TABLE OF CONTENTS FILE3 b/ml/dlib/docs/docs/chm/READ THE README. DO NOT EDIT THE TABLE OF CONTENTS FILE3 deleted file mode 100644 index e69de29bb..000000000 diff --git a/ml/dlib/docs/docs/chm/README.txt b/ml/dlib/docs/docs/chm/README.txt deleted file mode 100644 index ce1e21ee1..000000000 --- a/ml/dlib/docs/docs/chm/README.txt +++ /dev/null @@ -1,5 +0,0 @@ -The Table of Contents.hhc file is auto generated by the toc.xml and htmlhelp_stylesheet.xsl files. -You really can edit it if you want but I suggest you use the stylesheet to auto generate it instead. - -If you want to regenerate the table of contents file you can do so with -the command "msxsl toc.xml htmlhelp_stylesheet.xsl" if you are using msxsl.exe. \ No newline at end of file diff --git a/ml/dlib/docs/docs/chm/documentation.html b/ml/dlib/docs/docs/chm/documentation.html deleted file mode 100644 index 2a03451c7..000000000 --- a/ml/dlib/docs/docs/chm/documentation.html +++ /dev/null @@ -1,20 +0,0 @@ - - -dlib C++ library - - - - - - - - -

- -click here to go to the documentation -

- - - \ No newline at end of file diff --git a/ml/dlib/docs/docs/chm/htmlhelp/hha.dll b/ml/dlib/docs/docs/chm/htmlhelp/hha.dll deleted file mode 100644 index 07518f2c1..000000000 Binary files a/ml/dlib/docs/docs/chm/htmlhelp/hha.dll and /dev/null differ diff --git a/ml/dlib/docs/docs/chm/htmlhelp/hhc.exe b/ml/dlib/docs/docs/chm/htmlhelp/hhc.exe deleted file mode 100644 index 9a1f31de1..000000000 Binary files a/ml/dlib/docs/docs/chm/htmlhelp/hhc.exe and /dev/null differ diff --git a/ml/dlib/docs/docs/chm/htmlhelp/htmlhelp.reg b/ml/dlib/docs/docs/chm/htmlhelp/htmlhelp.reg deleted file mode 100644 index 3d91e08b0..000000000 --- a/ml/dlib/docs/docs/chm/htmlhelp/htmlhelp.reg +++ /dev/null @@ -1,5 +0,0 @@ -REGEDIT4 - - -[HKEY_CURRENT_USER\Software\Wine\AppDefaults\hhc.exe\DllOverrides] -"itss"="native" diff --git a/ml/dlib/docs/docs/chm/htmlhelp/itcc.dll b/ml/dlib/docs/docs/chm/htmlhelp/itcc.dll deleted file mode 100644 index 5e78ebb8e..000000000 Binary files a/ml/dlib/docs/docs/chm/htmlhelp/itcc.dll and /dev/null differ diff --git a/ml/dlib/docs/docs/chm/htmlhelp/itircl.dll b/ml/dlib/docs/docs/chm/htmlhelp/itircl.dll deleted file mode 100644 index 85d1ec9ae..000000000 Binary files a/ml/dlib/docs/docs/chm/htmlhelp/itircl.dll and /dev/null differ diff --git a/ml/dlib/docs/docs/chm/htmlhelp/itss.dll b/ml/dlib/docs/docs/chm/htmlhelp/itss.dll deleted file mode 100644 index da3293be4..000000000 Binary files a/ml/dlib/docs/docs/chm/htmlhelp/itss.dll and /dev/null differ diff --git a/ml/dlib/docs/docs/chm/htmlhelp/setup_htmlhelp.sh b/ml/dlib/docs/docs/chm/htmlhelp/setup_htmlhelp.sh deleted file mode 100755 index 020f83b1a..000000000 --- a/ml/dlib/docs/docs/chm/htmlhelp/setup_htmlhelp.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh - -cp *.dll ~/.wine/drive_c/windows/system32/ - -# Setup the registry -wine regedit htmlhelp.reg - -wine regsvr32 itcc.dll -wine regsvr32 itircl.dll - diff --git a/ml/dlib/docs/docs/chm/htmlhelp_stylesheet.xsl b/ml/dlib/docs/docs/chm/htmlhelp_stylesheet.xsl deleted file mode 100644 index 8b101f986..000000000 --- a/ml/dlib/docs/docs/chm/htmlhelp_stylesheet.xsl +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - - - - - - abcdefghijklmnopqrstuvwxyz - ABCDEFGHIJKLMNOPQRSTUVWXYZ - - - - - - - -
    - - - - - - - - - - -
- -
- - - - - - - - - - - - - - -
  • - - -
  • -
      - - - - - - - -
    -
    - - - - - - - - - -
    -
    - - - - - - - - - - - - - - - - - - - - -
  • - - - - - - - - - - - - - -
  • - - - -
      - - - - - - - -
    -
    - -
      - - - - -
    -
    -
    -
    - - - -
  • - - - -
  • - - - -
      - - - -
    • - - - -
    • -
      - -
    • - - - -
    • -
      -
      -
      - - - - -
    • - - - -
    • -
      - -
    • - - - -
    • -
      -
      -
      -
      - -
    • - - - -
    • -
      - -
    • - - -
    • -
        - -
      • - - - -
      • -
        -
      -
      -
    -
    -
    -
    -
    -
    - - - -
      - - - - -
    -
    - - - - -
    diff --git a/ml/dlib/docs/docs/chm/lib.hhp b/ml/dlib/docs/docs/chm/lib.hhp deleted file mode 100644 index de5633f1d..000000000 --- a/ml/dlib/docs/docs/chm/lib.hhp +++ /dev/null @@ -1,77 +0,0 @@ -[OPTIONS] -Binary TOC=Yes -Compatibility=1.1 or later -Compiled file=help.chm -Contents file=Table of Contents.hhc -Default topic=docs/index.html -Display compile progress=Yes -Full-text search=Yes -Language=0x409 English (United States) -Title=dLib - - -[FILES] -docs/guipics/button.png -docs/guipics/check_box.png -docs/guipics/directed_graph_drawer.png -docs/guipics/image_window.jpg -docs/guipics/label.png -docs/guipics/list_box.png -docs/guipics/menu_bar.png -docs/guipics/message_box.png -docs/guipics/mouse_tracker.png -docs/guipics/named_rectangle.png -docs/guipics/open_existing_file_box.png -docs/guipics/open_file_box.png -docs/guipics/popup_menu.png -docs/guipics/radio_button.png -docs/guipics/save_file_box.png -docs/guipics/scroll_bar.png -docs/guipics/tabbed_display.png -docs/guipics/text_box.png -docs/guipics/text_field.png -docs/guipics/text_grid.png -docs/api.html -docs/dlib/test/makefile -docs/right.gif -docs/down.gif -docs/plus.gif -docs/minus.gif -docs/change_log.html -docs/compile.html -docs/compress_stream_ex.cpp.html -docs/compression.html -docs/containers.html -docs/dir_nav_ex.cpp.html -docs/gui_api_ex.cpp.html -docs/index.html -docs/intro.html -docs/optimization.html -docs/kernel_1a.html -docs/kernel_1b.html -docs/kernel_1c.html -docs/kernel_1da.html -docs/kernel_1db.html -docs/kernel_1ea.html -docs/kernel_1eb.html -docs/kernel_1ec.html -docs/kernel_2a.html -docs/kernel_3a.html -docs/kernel_3b.html -docs/license.html -docs/network.html -docs/other.html -docs/metaprogramming.html -docs/imaging.html -docs/parsing.html -docs/queue_ex.cpp.html -docs/release_notes.html -docs/old_release_notes.html -docs/sockets_ex.cpp.html -docs/faq.html -docs/rbf_normal.gif -docs/rbf_big_gamma.gif -docs/rbf_small_gamma.gif - -[INFOTYPES] - diff --git a/ml/dlib/docs/docs/chm/toc.xml b/ml/dlib/docs/docs/chm/toc.xml deleted file mode 100644 index 37593b1ed..000000000 --- a/ml/dlib/docs/docs/chm/toc.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - docs - ../main_menu.xml - false - - - diff --git a/ml/dlib/docs/docs/compile.xml b/ml/dlib/docs/docs/compile.xml deleted file mode 100644 index bb21b3fa9..000000000 --- a/ml/dlib/docs/docs/compile.xml +++ /dev/null @@ -1,227 +0,0 @@ - - - - - How to compile - - - - - - - - - -

    Compiling C++ Example Programs on Any Operating System Using CMake

    - The best way to compile a program that uses dlib is to use CMake. For - example, the following commands will compile the example programs on any operating - system: - -cd examples -mkdir build -cd build -cmake .. -cmake --build . --config Release - -Note that you also need to have a C++11 compiler installed on your system. There are free C++11 compilers -for most operating systems. For example, Visual Studio is free on Windows and GCC is free and -works well on Mac OS X and Linux systems. If you have multiple compilers/IDEs installed then you can -tell CMake which one you want it to use via the -G option. -

    - The examples/CMakeLists.txt file tells CMake how to build - the examples. You can create your own projects by starting with this file and editing it however you like. - You can also perform additional configuration of a cmake project using the cmake-gui or ccmake tool. For example, - if you are using dlib's face detector then you should turn on either SSE4 or AVX instructions since this - makes it run much faster (also see this FAQ). -

    -

    - Finally, note that when using Visual Studio, CMake will by default generate a 32bit executable. - This means the programs you compile will only be able to use 2GB of RAM. To avoid this, you need - to tell CMake to generate a 64bit executable. You do this by using a command like - cmake -G "Visual Studio 14 2015 Win64" -T host=x64 .. instead of cmake .. - You can see the list of valid arguments to -G by running cmake with no options. Note also the -T host=x64 - option, which tells Visual Studio to let the compiler use more than 2GB of RAM. That is important if you don't want the compiler to - crash from running out of RAM in some situations. -

    - - -
    -

    Compiling Dlib's Python Interface

    -

    - Go to the base folder of the dlib repository and run python setup.py install. That - should compile and install the dlib python API on your system. -

    -

    - Alternatively, if you want to add more python bindings to dlib's - python interface then you probably want to avoid the setup.py file - and work directly using CMake. In particular, dlib's python API is - built by the CMake project in the tools/python folder. You build - this project using the usual CMake commands and when compiled it - outputs the dlib shared library that defines the python API for dlib. -

    -
    - - -

    Compiling C++ Examples Without CMake

    - -

    - In most cases, to use this library all you have to do is extract it somewhere, make - sure the folder containing the dlib folder is in your include path, and - finally add dlib/all/source.cpp to your - project. It is worth noting that most of dlib is "header-only" which means that, in - many cases, you don't actually have to build dlib/all/source.cpp into your - application. So if you don't get linker errors when you exclude dlib/all/source.cpp - from your project then you don't need it. -

    -

    - An example makefile that uses this library can be found here: dlib/test/makefile. It is the makefile used to build - the regression test suite for this library. -

    -

    - Again, note that you should not add the dlib folder itself to your compiler's include path. - Doing so will cause the - build to fail because of name collisions (e.g. dlib/string.h with string.h from the standard library). - Instead you should add the folder that contains the dlib folder to your include search path and then use - include statements of the form #include <dlib/queue.h>. This will ensure that everything - builds correctly. -

    -

    - Note also that if you want to work with jpeg/png/gif files using dlib then you will - need to link your program with libjpeg, libpng, and/or libgif. You also need to tell dlib - about this by defining the DLIB_JPEG_SUPPORT, DLIB_PNG_SUPPORT, and DLIB_GIF_SUPPORT preprocessor directives. - How you "link to libjpeg/libpng/libgif" varies from platform to platform. On UNIX machines you - usually just add a -ljpeg, -lpng, or -lgif switch to your compiler (after installing the libraries). - On windows it's less well defined. So dlib comes with a copy of libjpeg and libpng in the dlib/external - folder so you can statically compile them into your application if no system wide version - is available on your machine. If all this talk about linking is confusing to you then - just use CMake. It will set this all up for you. -

    -

    - Dlib is also capable of using any optimized BLAS or LAPACK libraries that are - installed on your system. Linking to these libraries will make many things run - faster. To do this you define the DLIB_USE_BLAS and/or DLIB_USE_LAPACK preprocessor - directives and then link your program with whatever BLAS or LAPACK libraries you - have. If you use CMake it will set this up automatically. -

    - - - - -

    Compiling on Linux From Command Line

    - From within the examples folder, you can compile nearly all of the examples with a single command like so: - -g++ -std=c++11 -O3 -I.. ../dlib/all/source.cpp -lpthread -lX11 example_program_name.cpp - - Note that not all examples require this much work. For example, the svm_ex.cpp example - can be compiled with just: - -g++ -std=c++11 -O3 -I.. svm_ex.cpp - - -On non-Linux systems like Solaris, you might have to link to other libraries. For example, I have seen systems -where it was also necessary to supply -lnsl or -lsocket options to g++. Additionally, the X11 development -library isn't installed on Ubuntu by default. So if you require it and are using Ubuntu you can install -it by typing: - -sudo apt-get install libx11-dev - - -

    Compiling on Windows Using GCC

    -

    - The commands for gcc on windows are the same as above but you may also have to link - (via the -l option) to the following libraries: gdi32, comctl32, user32, winmm, ws2_32, or imm32. -

    - -

    Compiling on Windows Using Visual Studio 2015 or Newer

    -

    - All you need to do is create an empty console project. Then add dlib/all/source.cpp to it and add the - folder containing the dlib folder to the #include search path. Then you can compile any example program - by adding it to your project. -

    -

    - Again, note that dlib will only be able to work with jpeg and png files if you link - in libjpeg and libpng. In Visual Studio, the easiest way to do this is to add all the - libjpeg, libpng, and zlib source files in the dlib/external folder into your project and also define the - DLIB_PNG_SUPPORT and DLIB_JPEG_SUPPORT preprocessor directives. If you don't know - how to configure Visual Studio then you should use CMake as shown above since it will - take care of everything automatically. -

    - - -
    -

    Miscellaneous Preprocessor Directives

    - -

    - In addition to the preprocessor directives mentioned above, there - are a few more you can supply during the build process to cause the - library to build in various optional ways. By default, the library - will always do something reasonable, but they are listed here in - the event that you need to use them. -

    - - - ENABLE_ASSERTS -

    #define ENABLE_ASSERTS

    -

    - Defining this directive causes all the DLIB_ASSERT macros to - be active. If you are using Visual Studio or CMake then ENABLE_ASSERTS will be automatically enabled - for you when you compile in debug mode. However, if you are using a different build system then you - might have to manually enable it if you want to turn the asserts on. -

    - - DLIB_ISO_CPP_ONLY -

    #define DLIB_ISO_CPP_ONLY

    -

    - This is a #define directive that you can set to cause the library to exclude all non ISO C++ code (The things in the API wrappers section and any objects that depend on those wrappers). - This is useful if you are trying to build on a system that isn't fully supported by the library or if you - just decide you don't want any of that stuff compiled into your program for your own reasons. -

    - DLIB_NO_GUI_SUPPORT -

    #define DLIB_NO_GUI_SUPPORT

    -

    - This is just like the DLIB_ISO_CPP_ONLY option except that it excludes only the GUI part of the library. - An example of when you might want to use this would be if you don't need GUI support and you are building - on a UNIX platform that doesn't have the X11 headers installed. -

    - NO_MAKEFILE -

    #define NO_MAKEFILE

    -

    - This preprocessor directive causes the dlib headers to pull in all the - code that would normally be built in dlib/all/source.cpp. Thus if you #define NO_MAKEFILE you won't - have to add dlib/all/source.cpp to your project. The only time this is useful is when your - project consists of a single translation unit (i.e. a single cpp file). In this instance NO_MAKEFILE - allows you to easily build your project on the command line by saying something like g++ -DNO_MAKEFILE - project.cpp. But again, this is only for single cpp file projects. If you use NO_MAKEFILE with projects - that contain more than one cpp file you will get linker errors about multiply defined symbols. -

    -

    - Also note that if you use this macro then the stack trace - functionality in the library will be disabled. -

    - DLIB_THREAD_POOL_TIMEOUT -

    #define DLIB_THREAD_POOL_TIMEOUT <time-in-milliseconds>

    -

    - If you use dlib to create your threads then you receive the benefit of the dlib dynamic thread pool (Note that the - dlib::thread_pool object is something else unrelated to this so don't confuse - the two). This pool - enables dlib to spawn new threads very rapidly since it draws threads back out of its thread pool when - the pool isn't empty. -

    -

    - Thus, when a thread that was created by dlib ends it actually goes back into the dlib thread pool - and waits DLIB_THREAD_POOL_TIMEOUT milliseconds before totally terminating and releasing its resources back - to the operating system. The default timeout used by this library is 30,000 milliseconds (30 seconds). You - may however change this to whatever you like by defining DLIB_THREAD_POOL_TIMEOUT to some new value. -

    - - - - - - - - - - -
    diff --git a/ml/dlib/docs/docs/compression.xml b/ml/dlib/docs/docs/compression.xml deleted file mode 100644 index a5b3897b2..000000000 --- a/ml/dlib/docs/docs/compression.xml +++ /dev/null @@ -1,881 +0,0 @@ - - - - - Data Compression - - - - -

    - This page contains a bunch of objects that implement various parts of compression algorithms. - They can be put together in different ways to construct many different algorithms. - Note that the compress_stream object contains complete compression algorithms. So if you - just want to compress some data then you can easily use that object and not bother with the others. -

    -

    - In the column to the right you can see benchmark data for each of the compress_stream - typedefs. The times measured are the time it takes to compress and then - decompress each file. It was run on a 3.0ghz P4. For reference see the Canterbury corpus - web site. -

    - - - - - - - - - -
    - Objects - compress_stream - conditioning_class - entropy_decoder - entropy_encoder - entropy_decoder_model - entropy_encoder_model - lz77_buffer - lzp_buffer -
    - - - - -
    - Benchmarks - - kernel_1a - kernel_1a.html - - - kernel_1b - kernel_1b.html - - - kernel_1c - kernel_1c.html - - - kernel_1da - kernel_1da.html - - - kernel_1db - kernel_1db.html - - - kernel_1ea - kernel_1ea.html - - - kernel_1eb - kernel_1eb.html - - - kernel_1ec - kernel_1ec.html - - - kernel_2a - kernel_2a.html - - - kernel_3a - kernel_3a.html - - - kernel_3b - kernel_3b.html - -
    -
    -
    - - - - - - - - - - - - compress_stream - dlib/compress_stream.h - dlib/compress_stream/compress_stream_kernel_abstract.h - - This object is pretty straight forward. It has no state and just - contains the functions compress and decompress. - They do just what their names imply to iostream objects. - - - - compress_stream_ex.cpp.html - file_to_code_ex.cpp.html - - - - - compress_stream_kernel_1 - dlib/compress_stream/compress_stream_kernel_1.h - - This implementation is done using the entropy_encoder_model and - entropy_decoder_model objects. - - - - - - kernel_1a - is a typedef for compress_stream_kernel_1 which uses entropy_decoder_model_kernel_1b and entropy_decoder_model_kernel_1b - - - kernel_1b - is a typedef for compress_stream_kernel_1 which uses entropy_decoder_model_kernel_2b and entropy_decoder_model_kernel_2b - - - kernel_1c - is a typedef for compress_stream_kernel_1 which uses entropy_decoder_model_kernel_3b and entropy_decoder_model_kernel_3b - - - kernel_1da - is a typedef for compress_stream_kernel_1 which uses entropy_decoder_model_kernel_4a and entropy_decoder_model_kernel_4a - - - kernel_1db - is a typedef for compress_stream_kernel_1 which uses entropy_decoder_model_kernel_4b and entropy_decoder_model_kernel_4b - - - kernel_1ea - is a typedef for compress_stream_kernel_1 which uses entropy_decoder_model_kernel_5a and entropy_decoder_model_kernel_5a - - - kernel_1eb - is a typedef for compress_stream_kernel_1 which uses entropy_decoder_model_kernel_5b and entropy_decoder_model_kernel_5b - - - kernel_1ec - is a typedef for compress_stream_kernel_1 which uses entropy_decoder_model_kernel_5c and entropy_decoder_model_kernel_5c - - - - - - - compress_stream_kernel_2 - dlib/compress_stream/compress_stream_kernel_2.h - - This implementation is done using the entropy_encoder_model and - entropy_decoder_model objects. It also uses the - lz77_buffer object. It uses the entropy coder models to - encode symbols when there is no match found by the lz77_buffer. - - - - - - kernel_2a - is a typedef for compress_stream_kernel_2 which uses entropy_encoder_model_kernel_2b, entropy_decoder_model_kernel_2b, and lz77_buffer_kernel_2a. - - - - - - - - compress_stream_kernel_3 - dlib/compress_stream/compress_stream_kernel_3.h - - This implementation is done using the lzp_buffer object and - crc32 object. It does not use any sort of entropy coding, instead - a byte aligned output method is used. - - - - - - kernel_3a - is a typedef for compress_stream_kernel_3 which uses lzp_buffer_kernel_1. - - - kernel_3b - is a typedef for compress_stream_kernel_3 which uses lzp_buffer_kernel_2. - - - - - - - - - - - - - - conditioning_class - dlib/conditioning_class.h - dlib/conditioning_class/conditioning_class_kernel_abstract.h - - This object represents a conditioning class used for arithmetic style - compression. It maintains the cumulative counts which are needed - by the entropy_encoder and entropy_decoder objects below. - - - - - conditioning_class_kernel_1 - dlib/conditioning_class/conditioning_class_kernel_1.h - - This implementation is done using an array to store all the counts and they are summed - whenever the cumulative counts are requested. It's pretty straight forward. - - - - - kernel_1a - is a typedef for conditioning_class_kernel_1 - - - - - - conditioning_class_kernel_2 - dlib/conditioning_class/conditioning_class_kernel_2.h - - This implementation is done using a binary tree where each node in the tree represents one symbol and - contains that symbols count and the sum of all the counts for the nodes to the left. This way - when you request a cumulative count it can be computed by visiting log n nodes where n is the - size of the alphabet. - - - - - kernel_2a - is a typedef for conditioning_class_kernel_2 - - - - - - - conditioning_class_kernel_3 - dlib/conditioning_class/conditioning_class_kernel_3.h - - This implementation is done using an array to store all the counts and they are - summed whenever the cumulative counts are requested. The counts are also kept in - semi-sorted order to speed up the calculation of the cumulative count. - - - - - kernel_3a - is a typedef for conditioning_class_kernel_3 - - - - - - - conditioning_class_kernel_4 - dlib/conditioning_class/conditioning_class_kernel_4.h - - This implementation is done using a linked list to store all the counts and they are - summed whenever the cumulative counts are requested. The counts are also kept in - semi-sorted order to speed up the calculation of the cumulative count. This implementation - also uses the memory_manager component to create a - memory pool of linked list nodes. This implementation is especially useful for high order - contexts and/or very large and sparse alphabets. - - - - - - kernel_4a - is a typedef for conditioning_class_kernel_4 with a memory pool of 10,000 nodes. - - - kernel_4b - is a typedef for conditioning_class_kernel_4 with a memory pool of 100,000 nodes. - - - kernel_4c - is a typedef for conditioning_class_kernel_4 with a memory pool of 1,000,000 nodes. - - - kernel_4d - is a typedef for conditioning_class_kernel_4 with a memory pool of 10,000,000 nodes. - - - - - - - - - - - - - entropy_decoder - dlib/entropy_decoder.h - dlib/entropy_decoder/entropy_decoder_kernel_abstract.h - - This object represents an entropy decoder. E.g. the decoding part of - an arithmetic coder. - - - - - entropy_decoder_kernel_1 - dlib/entropy_decoder/entropy_decoder_kernel_1.h - - This object is implemented using arithmetic coding and is done in the - straight forward way using integers and fixed precision math. - - - - - kernel_1a - is a typedef for entropy_decoder_kernel_1 - - - - - - entropy_decoder_kernel_2 - dlib/entropy_decoder/entropy_decoder_kernel_2.h - - This object is implemented using "range" coding and is done - in the straight forward way using integers and fixed precision math. - - - - - kernel_2a - is a typedef for entropy_decoder_kernel_2 - - - - - - - - - - - - - - entropy_encoder - dlib/entropy_encoder.h - dlib/entropy_encoder/entropy_encoder_kernel_abstract.h - - This object represents an entropy encoder. E.g. the encoding part of - an arithmetic coder. - - - - - entropy_encoder_kernel_1 - dlib/entropy_encoder/entropy_encoder_kernel_1.h - - This object is implemented using arithmetic coding and is done in the - straight forward way using integers and fixed precision math. - - - - - kernel_1a - is a typedef for entropy_encoder_kernel_1 - - - - - - entropy_encoder_kernel_2 - dlib/entropy_encoder/entropy_encoder_kernel_2.h - - This object is implemented using "range" coding and is done - in the straight forward way using integers and fixed precision math. - - - - - kernel_2a - is a typedef for entropy_encoder_kernel_2 - - - - - - - - - - - - - - entropy_decoder_model - dlib/entropy_decoder_model.h - dlib/entropy_decoder_model/entropy_decoder_model_kernel_abstract.h - - This object represents some kind of statistical model. You - can use it to read symbols from an entropy_decoder and it will calculate - the cumulative counts/probabilities and manage contexts for you. - - - - - entropy_decoder_model_kernel_1 - dlib/entropy_decoder_model/entropy_decoder_model_kernel_1.h - - This object is implemented using the conditioning_class component. - It implements an order-0 finite context model and uses lazy exclusions and update exclusions. - The escape method used is method D. - - - - - kernel_1a - is a typedef for entropy_decoder_model_kernel_1 that uses conditioning_class_kernel_1a - - - kernel_1b - is a typedef for entropy_decoder_model_kernel_1 that uses conditioning_class_kernel_2a - - - kernel_1c - is a typedef for entropy_decoder_model_kernel_1 that uses conditioning_class_kernel_3a - - - - - - - entropy_decoder_model_kernel_2 - dlib/entropy_decoder_model/entropy_decoder_model_kernel_2.h - - This object is implemented using the conditioning_class component. - It implements an order-1-0 finite context model and uses lazy exclusions and update exclusions. - The escape method used is method D. - - - - - kernel_2a - is a typedef for entropy_decoder_model_kernel_2 that uses conditioning_class_kernel_1a - - - kernel_2b - is a typedef for entropy_decoder_model_kernel_2 that uses conditioning_class_kernel_2a - - - kernel_2c - is a typedef for entropy_decoder_model_kernel_2 that uses conditioning_class_kernel_3a - - - kernel_2d - is a typedef for entropy_decoder_model_kernel_2 that uses conditioning_class_kernel_2a for its order-0 - context and conditioning_class_kernel_4b for its order-1 context. - - - - - - - entropy_decoder_model_kernel_3 - dlib/entropy_decoder_model/entropy_decoder_model_kernel_3.h - - This object is implemented using the conditioning_class component. - It implements an order-2-1-0 finite context model and uses lazy exclusions and update exclusions. - The escape method used is method D. - - - - - kernel_3a - is a typedef for entropy_decoder_model_kernel_3 that uses conditioning_class_kernel_1a for orders 0 and 1 - and conditioning_class_kernel_4b for order-2. - - - kernel_3b - is a typedef for entropy_decoder_model_kernel_3 that uses conditioning_class_kernel_2a for orders 0 and 1 - and conditioning_class_kernel_4b for order-2. - - - kernel_3c - is a typedef for entropy_decoder_model_kernel_3 that uses conditioning_class_kernel_3a for orders 0 and 1 - and conditioning_class_kernel_4b for order-2. - - - - - - - entropy_decoder_model_kernel_4 - dlib/entropy_decoder_model/entropy_decoder_model_kernel_4.h - - This object is implemented using a variation of the PPM algorithm described by Alistair Moffat in his paper "Implementing - the PPM data compression scheme." - It provides template arguments to select the maximum order and maximum memory to use. For speed, - exclusions are not used. The escape method used is method D. - - - - - kernel_4a - is a typedef for entropy_decoder_model_kernel_4 with the max order set to 4 and the max number - of nodes set to 200,000 - - - kernel_4b - is a typedef for entropy_decoder_model_kernel_4 with the max order set to 5 and the max number - of nodes set to 1,000,000 - - - - - - - entropy_decoder_model_kernel_5 - dlib/entropy_decoder_model/entropy_decoder_model_kernel_5.h - - This object is implemented using a variation of the PPM algorithm described by Alistair Moffat in his paper "Implementing - the PPM data compression scheme." - It provides template arguments to select the maximum order and maximum memory to use. Exclusions are used. The escape method used is method D. - This implementation is very much like kernel_4 except it is tuned for higher compression rather than speed. - This also uses Dmitry Shkarin's Information Inheritance scheme. - - - - - kernel_5a - is a typedef for entropy_decoder_model_kernel_5 with the max order set to 4 and the max number - of nodes set to 200,000 - - - kernel_5b - is a typedef for entropy_decoder_model_kernel_5 with the max order set to 5 and the max number - of nodes set to 1,000,000 - - - kernel_5c - is a typedef for entropy_decoder_model_kernel_5 with the max order set to 7 and the max number - of nodes set to 2,500,000 - - - - - - - entropy_decoder_model_kernel_6 - dlib/entropy_decoder_model/entropy_decoder_model_kernel_6.h - - This object just assigns every symbol the same probability. I.e. it uses an order-(-1) model. - - - - - kernel_6a - is a typedef for entropy_decoder_model_kernel_6 - - - - - - - - - - - - - - - entropy_encoder_model - dlib/entropy_encoder_model.h - dlib/entropy_encoder_model/entropy_encoder_model_kernel_abstract.h - - This object represents some kind of statistical model. You - can use it to write symbols to an entropy_encoder and it will calculate - the cumulative counts/probabilities and manage contexts for you. - - - - - entropy_encoder_model_kernel_1 - dlib/entropy_encoder_model/entropy_encoder_model_kernel_1.h - - This object is implemented using the conditioning_class component. - It implements an order-0 finite context model and uses lazy exclusions and update exclusions. - The escape method used is method D. - - - - - kernel_1a - is a typedef for entropy_encoder_model_kernel_1 that uses conditioning_class_kernel_1a - - - kernel_1b - is a typedef for entropy_encoder_model_kernel_1 that uses conditioning_class_kernel_2a - - - kernel_1c - is a typedef for entropy_encoder_model_kernel_1 that uses conditioning_class_kernel_3a - - - - - - - entropy_encoder_model_kernel_2 - dlib/entropy_encoder_model/entropy_encoder_model_kernel_2.h - - This object is implemented using the conditioning_class component. - It implements an order-1-0 finite context model and uses lazy exclusions and update exclusions. - The escape method used is method D. - - - - - kernel_2a - is a typedef for entropy_encoder_model_kernel_2 that uses conditioning_class_kernel_1a - - - kernel_2b - is a typedef for entropy_encoder_model_kernel_2 that uses conditioning_class_kernel_2a - - - kernel_2c - is a typedef for entropy_encoder_model_kernel_2 that uses conditioning_class_kernel_3a - - - kernel_2d - is a typedef for entropy_encoder_model_kernel_2 that uses conditioning_class_kernel_2a for its order-0 - context and conditioning_class_kernel_4b for its order-1 context. - - - - - - - entropy_encoder_model_kernel_3 - dlib/entropy_encoder_model/entropy_encoder_model_kernel_3.h - - This object is implemented using the conditioning_class component. - It implements an order-2-1-0 finite context model and uses lazy exclusions and update exclusions. - The escape method used is method D. - - - - - kernel_3a - is a typedef for entropy_encoder_model_kernel_3 that uses conditioning_class_kernel_1a for orders 0 and 1 - and conditioning_class_kernel_4b for order-2. - - - kernel_3b - is a typedef for entropy_encoder_model_kernel_3 that uses conditioning_class_kernel_2a for orders 0 and 1 - and conditioning_class_kernel_4b for order-2. - - - kernel_3c - is a typedef for entropy_encoder_model_kernel_3 that uses conditioning_class_kernel_3a for orders 0 and 1 - and conditioning_class_kernel_4b for order-2. - - - - - - - entropy_encoder_model_kernel_4 - dlib/entropy_encoder_model/entropy_encoder_model_kernel_4.h - - This object is implemented using a variation of the PPM algorithm described by Alistair Moffat in his paper "Implementing - the PPM data compression scheme." - It provides template arguments to select the maximum order and maximum memory to use. For speed, - exclusions are not used. The escape method used is method D. - - - - - kernel_4a - is a typedef for entropy_encoder_model_kernel_4 with the max order set to 4 and the max number - of nodes set to 200,000 - - - kernel_4b - is a typedef for entropy_encoder_model_kernel_4 with the max order set to 5 and the max number - of nodes set to 1,000,000 - - - - - - - entropy_encoder_model_kernel_5 - dlib/entropy_encoder_model/entropy_encoder_model_kernel_5.h - - This object is implemented using a variation of the PPM algorithm described by Alistair Moffat in his paper "Implementing - the PPM data compression scheme." - It provides template arguments to select the maximum order and maximum memory to use. Exclusions are used. The escape method used is method D. - This implementation is very much like kernel_4 except it is tuned for higher compression rather than speed. - This also uses Dmitry Shkarin's Information Inheritance scheme. - - - - - kernel_5a - is a typedef for entropy_encoder_model_kernel_5 with the max order set to 4 and the max number - of nodes set to 200,000 - - - kernel_5b - is a typedef for entropy_encoder_model_kernel_5 with the max order set to 5 and the max number - of nodes set to 1,000,000 - - - kernel_5c - is a typedef for entropy_encoder_model_kernel_5 with the max order set to 7 and the max number - of nodes set to 2,500,000 - - - - - - - entropy_encoder_model_kernel_6 - dlib/entropy_encoder_model/entropy_encoder_model_kernel_6.h - - This object just assigns every symbol the same probability. I.e. it uses an order-(-1) model. - - - - - kernel_6a - is a typedef for entropy_encoder_model_kernel_6 - - - - - - - - - - - - - - - lz77_buffer - dlib/lz77_buffer.h - dlib/lz77_buffer/lz77_buffer_kernel_abstract.h - - This object represents a pair of buffers (history and lookahead buffers) - used during lz77 style compression. - - - - - lz77_buffer_kernel_1 - dlib/lz77_buffer/lz77_buffer_kernel_1.h - - This object is implemented using the sliding_buffer and it - just does simple linear searches of the history buffer to find matches. - - - - - kernel_1a - is a typedef for lz77_buffer_kernel_1 that uses sliding_buffer_kernel_1 - - - - - - lz77_buffer_kernel_2 - dlib/lz77_buffer/lz77_buffer_kernel_2.h - - This object is implemented using the sliding_buffer. It - finds matches by using a hash table. - - - - - kernel_2a - is a typedef for lz77_buffer_kernel_2 that uses sliding_buffer_kernel_1 - - - - - - - - - - - - - - lzp_buffer - dlib/lzp_buffer.h - dlib/lzp_buffer/lzp_buffer_kernel_abstract.h - - This object represents some variation on the LZP algorithm - described by Charles Bloom in his paper "LZP: a new data - compression algorithm" - - - - - lzp_buffer_kernel_1 - dlib/lzp_buffer/lzp_buffer_kernel_1.h - - This object is implemented using the sliding_buffer and uses - an order-3 model to predict matches. - - - - - kernel_1a - is a typedef for lzp_buffer_kernel_1 that uses sliding_buffer_kernel_1 - - - - - - lzp_buffer_kernel_2 - dlib/lzp_buffer/lzp_buffer_kernel_2.h - - This object is implemented using the sliding_buffer and uses - an order-5-4-3 model to predict matches. - - - - - kernel_2a - is a typedef for lzp_buffer_kernel_2 that uses sliding_buffer_kernel_1 - - - - - - - - - - - - - - - - -
    diff --git a/ml/dlib/docs/docs/containers.xml b/ml/dlib/docs/docs/containers.xml deleted file mode 100644 index 8409b6907..000000000 --- a/ml/dlib/docs/docs/containers.xml +++ /dev/null @@ -1,1201 +0,0 @@ - - - - - Containers - - - - -

    - Many of these containers were inspired by the work of the Reusable - Software Research Group at Ohio State. As such, many of the objects do not support - copying in any form, only swapping is allowed. That is, when objects - are added or removed from most of these containers they are swapped in - and out, not copied. -

    - -

    - This allows you to do things like have containers of containers of - containers without encountering the overhead of the massive copying - that would likely result if you did the same thing with the STL. It - also means you can store objects that are not copyable inside these - containers, which is not something you can do with the STL prior to C++11. -

    - -

    - Note that it is assumed by these containers that swap() and - operator< do not throw. They may not function correctly if this - assumption is broken. Also note that the built in types (int, long, - char, etc.) and std::string will not cause operator< or swap() to - throw. -

    - -

    - Note also that most of the containers inherit from the - enumerable interface. Thus, all the - member functions inherited from enumerable are defined in the - enumerable class and their documentation is not repeated in each - container's documentation. This includes the size() member - function in each container. -

    - - - - - - - - -
    - Objects - static_set - any - any_trainer - any_function - any_decision_function - array - array2d - binary_search_tree - hash_map - hash_set - hash_table - directed_graph - graph - map - queue - reference_counter - type_safe_union - unordered_pair - sequence - set - stack - std_vector_c - static_map - sliding_buffer - circular_buffer - tuple - reference_wrapper - -
    - -
    - Interfaces - map_pair - enumerable - - remover - - - remover - dlib/interfaces/remover.h.html#remover - - - asc_remover - dlib/interfaces/remover.h.html#asc_remover - - - pair_remover - dlib/interfaces/remover.h.html#pair_remover - - - asc_pair_remover - dlib/interfaces/remover.h.html#asc_pair_remover - - - -
    -
    -
    - - - - - - - - - array - dlib/array.h - dlib/array/array_kernel_abstract.h - - This object represents a 1-Dimensional array of objects. - - - - - - - sliding_buffer - dlib/sliding_buffer.h - dlib/sliding_buffer/sliding_buffer_kernel_abstract.h - - This object represents an array with the ability to rotate its contents - left or right. Note that the size of this object is always a power of two. - If you need arbitrary sized objects then use a circular_buffer. - - - - - sliding_buffer_kernel_1 - dlib/sliding_buffer/sliding_buffer_kernel_1.h - - This object is implemented using a C style array in the obvious way. See the code for details. - - - - - kernel_1a - is a typedef for sliding_buffer_kernel_1 - - - - - - - - - - - - - - circular_buffer - dlib/sliding_buffer.h - dlib/sliding_buffer/circular_buffer_abstract.h - - This object represents a simple sliding buffer which can contain - and arbitrary number of elements. - - - - - - - - array2d - dlib/array2d.h - dlib/array2d/array2d_kernel_abstract.h - - This object represents a 2-Dimensional array of objects. - - - - image_ex.cpp.html - - - - - - - - binary_search_tree - dlib/binary_search_tree.h - dlib/binary_search_tree/binary_search_tree_kernel_abstract.h - - This object represents a data dictionary that is built on top of some kind of binary search tree. - - - - - binary_search_tree_kernel_1 - dlib/binary_search_tree/binary_search_tree_kernel_1.h - - This implementation is done using an AVL binary search tree. It uses the - memory_manager for all memory allocations. - - - - - kernel_1a - is a typedef for binary_search_tree_kernel_1 - - - - - - binary_search_tree_kernel_2 - dlib/binary_search_tree/binary_search_tree_kernel_2.h - - This implementation is done using a red-black binary search tree. It uses the - memory_manager for all memory allocations. - - - - kernel_2a - is a typedef for binary_search_tree_kernel_2 - - - - - - - - - - - - - - hash_map - dlib/hash_map.h - dlib/hash_map/hash_map_kernel_abstract.h - - This object represents a hashed mapping of items of type domain onto items of type range. - - - - - hash_map_kernel_1 - dlib/hash_map/hash_map_kernel_1.h - - This implementation is done using a hash_table object. It uses the - memory_manager for all memory allocations. - - - - - - - kernel_1a - is a typedef for hash_map_kernel_1 that uses hash_table_kernel_1a - - - kernel_1b - is a typedef for hash_map_kernel_1 that uses hash_table_kernel_2a - - - kernel_1c - is a typedef for hash_map_kernel_1 that uses hash_table_kernel_2b - - - - - - - - - - - - - - - - hash_set - dlib/hash_set.h - dlib/hash_set/hash_set_kernel_abstract.h - - This object represents a hashed unordered and unaddressed collection of unique items. - - - - - hash_set_kernel_1 - dlib/hash_set/hash_set_kernel_1.h - - This implementation is done using a hash_table object. It uses the - memory_manager for all memory allocations. - - - - - - - kernel_1a - is a typedef for hash_set_kernel_1 that uses hash_table_kernel_1a - - - kernel_1b - is a typedef for hash_set_kernel_1 that uses hash_table_kernel_2a - - - kernel_1c - is a typedef for hash_set_kernel_1 that uses hash_table_kernel_2b - - - - - - - - - - - - - - - - hash_table - dlib/hash_table.h - dlib/hash_table/hash_table_kernel_abstract.h - - This object represents a data dictionary that is built on top of some kind of - hash table. - - - - - hash_table_kernel_1 - dlib/hash_table/hash_table_kernel_1.h - - This implementation is done using singly linked lists as hashing buckets. It uses the - memory_manager for all memory allocations. - - - - - - kernel_1a - is a typedef for hash_table_kernel_1. - - - - - - - hash_table_kernel_2 - dlib/hash_table/hash_table_kernel_2.h - - This implementation is done using - binary_search_tree objects as hashing buckets. It uses the - memory_manager for all memory allocations. - - - - - - - kernel_2a - is a typedef for hash_table_kernel_2 that uses binary_search_tree_kernel_1 - - - kernel_2b - is a typedef for hash_table_kernel_2 that uses binary_search_tree_kernel_2 - - - - - - - - - - - - - - - - - map - dlib/map.h - dlib/map/map_kernel_abstract.h - - This object represents a mapping of items of type domain onto items of type range. - - - - - map_kernel_1 - dlib/map/map_kernel_1.h - - This is implemented using the binary_search_tree component. It uses the - memory_manager for all memory allocations. - - - - - - - kernel_1a - is a typedef for map_kernel_1 that uses binary_search_tree_kernel_1 - - - kernel_1b - is a typedef for map_kernel_1 that uses binary_search_tree_kernel_2 - - - - - - - - - - - - - - - - - enumerable - dlib/interfaces/enumerable.h - dlib/interfaces/enumerable.h - - This object is an abstract class which represents an interface for iterating over - all the elements of a container. - - - - - - - - - - map_pair - dlib/interfaces/map_pair.h - dlib/interfaces/map_pair.h - - This object is an abstract class which represents an interface for accessing a - pair from a container such as the map, hash_table, etc. - - - - - - - - - - remover - dlib/interfaces/remover.h - dlib/interfaces/remover.h - - This is a set of interfaces which gives the ability to remove all the items in a - container without actually knowing what kind of container contains them. - - - - - - - - - - type_safe_union - dlib/type_safe_union.h - dlib/type_safe_union/type_safe_union_kernel_abstract.h - - This object is a type safe analogue of the classic C union object. - The type_safe_union, unlike a union, can contain non-POD types such - as std::string. -

    It is also implemented without performing any - heap memory allocations and instead it stores everything on the stack.

    -
    - - - pipe_ex_2.cpp.html - bridge_ex.cpp.html - - -
    - - - - - unordered_pair - dlib/unordered_pair.h - dlib/unordered_pair.h - - This object is very similar to the std::pair struct except unordered_pair - is only capable of representing an unordered set of two items rather than - an ordered list of two items like std::pair. - - - - - - - - any - dlib/any.h - dlib/any/any_abstract.h - - This object is basically a type-safe version of a void*. In particular, - it is a container which can contain only one object but the object may - be of any type. - -

    - It is somewhat like the type_safe_union except you don't have to declare - the set of possible content types beforehand. So in some sense this is - like a less type-strict version of the type_safe_union. -

    -
    -
    - - - - - any_decision_function - dlib/any.h - dlib/any/any_decision_function_abstract.h - - This object is a version of dlib::any that is restricted to containing - elements which are some kind of function object with an operator() with - the following signature: - result_type operator()(const sample_type&) const - -

    - It is intended to be used to contain dlib::decision_function - objects and other types which represent learned decision functions. It allows you - to write code which contains and processes these decision functions - without needing to know the specific types of decision functions used. -

    -
    -
    - - - - - any_function - dlib/any.h - dlib/any/any_function_abstract.h - - This object is a version of dlib::any that is restricted to containing - elements which are some kind of function or function object. - - - - - - - any_trainer - dlib/any.h - dlib/any/any_trainer_abstract.h - - This object is a version of dlib::any that is restricted to containing - elements which are some kind of object with a .train() method compatible - with the following signature: -
     decision_function train(
    -      const std::vector<sample_type>& samples,
    -      const std::vector<scalar_type>& labels
    -   ) const
    -
    - Where decision_function is a type capable of being stored in an - any_decision_function object. - -

    - any_trainer is intended to be used to contain objects such as the svm_nu_trainer - and other similar types which represent supervised machine learning algorithms. - It allows you to write code which contains and processes these trainer objects - without needing to know the specific types of trainer objects used. -

    -
    -
    - - - - - tuple - dlib/tuple.h - dlib/tuple/tuple_abstract.h - - This is an implementation of a very simple templated container object. - It contains between 0 and 31 objects where each object is listed - explicitly in the tuple's template arguments. - -

    - Note that there is only one implementation of this object so there aren't any - different kernels to choose from when you create instances of the tuple object. - So for example, you - could declare a tuple of 3 ints using the following statement: - dlib::tuple<int,int,int> t; -

    -
    - -
    - - - - - reference_wrapper - dlib/ref.h - dlib/ref.h - - This is a simple object that just holds a reference to another object. - It is useful because it can serve as a kind of "copyable reference". - - - thread_function_ex.cpp.html - - - - - - - - graph - dlib/graph.h - dlib/graph/graph_kernel_abstract.h - - This object represents a graph which is a set of nodes with undirected - edges connecting various nodes. - - - - - graph_kernel_1 - dlib/graph/graph_kernel_1.h - - This is implemented using std::vector to contain all the nodes and edges. - - - - - kernel_1a - is a typedef for graph_kernel_1 - - - - - - - - - - - - directed_graph - dlib/directed_graph.h - dlib/directed_graph/directed_graph_kernel_abstract.h - - This object represents a directed graph which is a set of nodes with directed - edges connecting various nodes. - - - - - directed_graph_kernel_1 - dlib/directed_graph/directed_graph_kernel_1.h - - This is implemented using std::vector to contain all the nodes and edges. - - - - - kernel_1a - is a typedef for directed_graph_kernel_1 - - - - - - - - - - - - - queue - dlib/queue.h - dlib/queue/queue_kernel_abstract.h - - This object represents a first in first out queue. - - - - queue_ex.cpp.html - - - - - queue_kernel_1 - dlib/queue/queue_kernel_1.h - - This is implemented in the obvious way using a singly linked list. It does not use the - memory_manager at all. - - - - - kernel_1a - is a typedef for queue_kernel_1 - - - - - - queue_kernel_2 - dlib/queue/queue_kernel_2.h - - This is implemented using a singly linked list and each node in the list - contains block_size (a template parameter) elements. It uses the - memory_manager for all memory allocations. - - - - - kernel_2a - is a typedef for queue_kernel_2 with a block_size of 20 - - - kernel_2b - is a typedef for queue_kernel_2 with a block_size of 100 - - - - - - - - - queue_sort - dlib/queue/queue_sort_abstract.h - - This extension gives a queue the ability to sort its contents. - - - - - queue_sort_1 - dlib/queue/queue_sort_1.h - - This is a version of the QuickSort algorithm. - - - - - sort_1a - is a typedef for queue_kernel_1a extended by queue_sort_1 - - - sort_1b - is a typedef for queue_kernel_2a extended by queue_sort_1 - - - sort_1c - is a typedef for queue_kernel_2b extended by queue_sort_1 - - - - - - - - - - - - - - - - - - - reference_counter - dlib/reference_counter.h - dlib/reference_counter/reference_counter_kernel_abstract.h - - This object represents a container for an object and provides reference counting - capabilities for the object it contains. - - - - - reference_counter_kernel_1 - dlib/reference_counter/reference_counter_kernel_1.h - - This implementation is done using pointers in the obvious way. - - - - - kernel_1a - is a typedef for reference_counter_kernel_1 - - - - - - - - - - - - - - - sequence - dlib/sequence.h - dlib/sequence/sequence_kernel_abstract.h - - This object represents an ordered sequence of items, each item is - associated with an integer value. The items are numbered from 0 to the number of items in the - sequence minus 1. - - - - - sequence_kernel_1 - dlib/sequence/sequence_kernel_1.h - - This is implemented as an AVL binary search tree. - Accessing(or adding or removing) an element always takes O(log n) time. - It uses the memory_manager for all memory allocations. - - - - - kernel_1a - is a typedef for sequence_kernel_1 - - - - - - sequence_kernel_2 - dlib/sequence/sequence_kernel_2.h - - This implementation is done using a doubly linked list in the shape of a ring. - It will remember the last element accessed(or added or removed) and give O(1) - access time to the elements just left and right of it. Aside from that, - accessing(or adding or removing) a random element will take O(n) and in the worst - case it will take time proportional to the size of the sequence/2. -

    - It does not use the - memory_manager at all. -

    - -
    - - - - kernel_2a - is a typedef for sequence_kernel_2 - - - -
    -
    - - - - - sequence_sort - dlib/sequence/sequence_sort_abstract.h - - This extension gives a sequence the ability to sort its contents. - - - - - sequence_sort_1 - dlib/sequence/sequence_sort_1.h - - This is a version of the QuickSort algorithm and it sorts sequences of less - than 30 elements with a selection sort. This implementation is fastest when - used with sequence_kernel_2 and fairly slow when used with sequence_kernel_1 - - - - - sort_1a - is a typedef for sequence_kernel_2a extended by sequence_sort_1 - - - - - - sequence_sort_2 - dlib/sequence/sequence_sort_2.h - - This is a version of the QuickSort algorithm. This implementation of sort is - the best to use with sequence_kernel_1 objects but gives extremely poor performance - with sequence_kernel_2 objects. - - - - - sort_2a - is a typedef for sequence_kernel_1a extended by sequence_sort_2 - - - - - - - - - - sequence_compare - dlib/sequence/sequence_compare_abstract.h - - This extension gives sequences the ability to compare themselves using - operator< and operator==. Thus they can be used in the other container classes - that require this ability. (maps, sets, etc.) - - - - - sequence_compare_1 - dlib/sequence/sequence_compare_1.h - - The implementation is obvious. Click on the sequence_compare_1 link if you want to see. - - - - - compare_1a - is a typedef for sequence_kernel_1a extended by sequence_compare_1 - - - compare_1b - is a typedef for sequence_kernel_2a extended by sequence_compare_1 - - - - - - - - - - - -
    - - - - - - - set - dlib/set.h - dlib/set/set_kernel_abstract.h - - This object represents an unordered and unaddressed collection of unique items. - - - - - set_kernel_1 - dlib/set/set_kernel_1.h - - This is implemented using the binary_search_tree component. It uses the - memory_manager for all memory allocations. - - - - - - kernel_1a - is a typedef for set_kernel_1 that uses binary_search_tree_kernel_1 - - - kernel_1b - is a typedef for set_kernel_1 that uses binary_search_tree_kernel_2 - - - - - - - - - - - set_compare - dlib/set/set_compare_abstract.h - - This extension gives sets the ability to compare themselves using operator< and - operator==. Thus they can be used in the other container classes that require - this ability. (maps, sets, etc.) - - - - - set_compare_1 - dlib/set/set_compare_1.h - - The implementation is obvious. Click on the set_compare_1 link if you want to see. - - - - - compare_1a - is a typedef for set_kernel_1a extended by set_compare_1 - - - compare_1b - is a typedef for set_kernel_1b extended by set_compare_1 - - - - - - - - - - - - - - - - - - stack - dlib/stack.h - dlib/stack/stack_kernel_abstract.h - - This object represents a last in first out stack. - - - - - stack_kernel_1 - dlib/stack/stack_kernel_1.h - - This implementation is done in the obvious way using a singly linked list. It uses the - memory_manager for all memory allocations. - - - - - - kernel_1a - is a typedef for stack_kernel_1 - - - - - - - - - - - - - - static_map - dlib/static_map.h - dlib/static_map/static_map_kernel_abstract.h - - This object represents a mapping of items of type domain onto items of type range. - The difference between this object and the normal map object is that it does not support adding - or removing individual objects from itself. This allows implementations to focus on using less memory and - achieving faster searching. - - - - - static_map_kernel_1 - dlib/static_map/static_map_kernel_1.h - - This implementation is just a sorted array which can be searched using a binary search. - - - - - kernel_1a - is a typedef for static_map_kernel_1 - - - - - - - - - - - - - - static_set - dlib/static_set.h - dlib/static_set/static_set_kernel_abstract.h - - This object represents an unordered and unaddressed collection of items. - The difference between this object and the normal set object is that it does not support adding - or removing individual objects from itself. This allows implementations to focus on using less memory and - achieving faster searching. - - - - - static_set_kernel_1 - dlib/static_set/static_set_kernel_1.h - - This implementation is just a sorted array which can be searched using a binary search. - - - - - kernel_1a - is a typedef for static_set_kernel_1 - - - - - - - - - - - static_set_compare - dlib/static_set/static_set_compare_abstract.h - - This extension gives static_sets the ability to compare themselves using operator< and - operator==. Thus they can be used in the other container classes that require - this ability. (maps, static_sets, etc.) - - - - - static_set_compare_1 - dlib/static_set/static_set_compare_1.h - - The implementation is obvious. Click on the static_set_compare_1 link if you want to see. - - - - - compare_1a - is a typedef for static_set_kernel_1a extended by static_set_compare_1 - - - - - - - - - - - - - - - - - std_vector_c - dlib/stl_checked.h - dlib/stl_checked/std_vector_c_abstract.h - - This object is a simple wrapper around the std::vector object. It - provides an identical interface but also checks the preconditions of - each member function. That is, if you violate a requires - clause the dlib::fatal_error exception is thrown. - - - - - -
    - - - - -
    diff --git a/ml/dlib/docs/docs/dlib-icon-30x32.png b/ml/dlib/docs/docs/dlib-icon-30x32.png deleted file mode 100644 index 6e7732b9f..000000000 Binary files a/ml/dlib/docs/docs/dlib-icon-30x32.png and /dev/null differ diff --git a/ml/dlib/docs/docs/dlib-icon-32.png b/ml/dlib/docs/docs/dlib-icon-32.png deleted file mode 100644 index 0c6684fa9..000000000 Binary files a/ml/dlib/docs/docs/dlib-icon-32.png and /dev/null differ diff --git a/ml/dlib/docs/docs/dlib-icon-48.png b/ml/dlib/docs/docs/dlib-icon-48.png deleted file mode 100644 index af5c0fb4f..000000000 Binary files a/ml/dlib/docs/docs/dlib-icon-48.png and /dev/null differ diff --git a/ml/dlib/docs/docs/dlib-icon-64.png b/ml/dlib/docs/docs/dlib-icon-64.png deleted file mode 100644 index 056dc7d13..000000000 Binary files a/ml/dlib/docs/docs/dlib-icon-64.png and /dev/null differ diff --git a/ml/dlib/docs/docs/dlib-icon.ico b/ml/dlib/docs/docs/dlib-icon.ico deleted file mode 100644 index 31d431509..000000000 Binary files a/ml/dlib/docs/docs/dlib-icon.ico and /dev/null differ diff --git a/ml/dlib/docs/docs/dlib-logo-and-icons.svg b/ml/dlib/docs/docs/dlib-logo-and-icons.svg deleted file mode 100644 index 8a552c464..000000000 --- a/ml/dlib/docs/docs/dlib-logo-and-icons.svg +++ /dev/null @@ -1,1602 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - 16x16 icon - larger icon - - - - - - Download - - - - - - - - diff --git a/ml/dlib/docs/docs/dlib-logo-small.png b/ml/dlib/docs/docs/dlib-logo-small.png deleted file mode 100644 index 6abcc9dfe..000000000 Binary files a/ml/dlib/docs/docs/dlib-logo-small.png and /dev/null differ diff --git a/ml/dlib/docs/docs/dlib-logo.png b/ml/dlib/docs/docs/dlib-logo.png deleted file mode 100644 index 592227229..000000000 Binary files a/ml/dlib/docs/docs/dlib-logo.png and /dev/null differ diff --git a/ml/dlib/docs/docs/dlib.css b/ml/dlib/docs/docs/dlib.css deleted file mode 100644 index e7e9fb45c..000000000 --- a/ml/dlib/docs/docs/dlib.css +++ /dev/null @@ -1,369 +0,0 @@ - -/* - * Overall page layout stuff. It goes like: - * - * ============ page_header ============= - * | | - * ============ top_content ============= - * | | | | - * | main_menu | main_text | right_menu | - * | | | | - * ============ bottom_content ========== - * | | - * | . | - * | . | - * | . | - * | | - */ - -body -{ - margin:0px; - background-color: #EDF3EE; - width:62.0em; - margin-left: auto; - margin-right: auto; - font-size: 17px; -} - -h1,h2,h3 -{ - line-height:1.2; -} - -#page_header { - height:59px; - text-align: left; - margin-top: 0.4em; -} - -#top_content -{ - width: 100%; - height: 900px; - display: table; -} -#top_content > div -{ - display: table-cell; -} -#main_menu -{ - width: fit-content; - padding-bottom: 6em; /* So the menu_footer always has room. */ -} -#main_text -{ - background-color: white; - border: 1px solid rgb(102,102,102); - width: 100%; - line-height: 1.3em; -} -#main_text_title -{ - margin-top: 10px; - margin-bottom: 20px; - text-align: center; - font-size: 2.1em; - font-weight: bold; -} -#main_text_body -{ - vertical-align: top; - padding-top: 1px; - padding-left: 10px; - padding-right: 10px; -} - -#right_menu -{ - width: fit-content; - min-width: 9em; -} - -div.menu -{ - vertical-align: top; - position: relative; - background-color:#F5F5F5; - padding:7px; - border: 1px solid rgb(102,102,102); -} -div.menu_top { -} -div.menu_footer { - position: absolute; - bottom: 10px; -} - - -#bottom_content -{ - line-height: 1.3em; -} - -/* ============================================================= */ - -pre {margin:0px;} - -ul.tree li { list-style: none; margin-left:10px;} -ul.tree { margin:0px; padding:0px; margin-left:5px; font-size:0.95em; } -ul.tree li ul { margin-left:10px; padding:0px; } - -li#term { list-style: none; } - -div.include_file_more_details_wrapper -{ - margin-top: 1em; - margin-bottom: 5px; - overflow: auto; - width: 100%; - display: inline-block; -} -div.include_file -{ - font-size: 1.3em; - font-weight: bold; - font-family: monospace; - - float: right; - - padding: 0.4em; -} -a.more_details, a.more_details_extension -{ - font-size: 1.6em; - font-weight: bold; - float: left; - - - margin: 5px; - - font: 200 1.6em source-sans-pro, sans-serif; - text-align: center; - padding-left: 1.5em; - padding-right: 1.5em; - -webkit-font-smoothing: antialiased; - background-color: #f59820; - border-color: #d47c0a; - color: #fff; - - padding: 0.2em 1.5em 0.2em; - - -moz-box-shadow: 2px 2px 9px #777777; - -webkit-box-shadow: 2px 2px 9px #777777; - box-shadow: 1px 1px 5px #777777; - border-radius: 3px; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - - transition: 320ms; - display: inline-block; - -} -a.more_details:hover, a.more_details_extension:hover -{ - text-decoration: none; - -moz-box-shadow: 1px 1px 9px #77a777; - -webkit-box-shadow: 1px 1px 9px #77a777; - box-shadow: 1px 1px 5px #77a777; - color: #ffffff; - - background-color: #d5780a; -} - -a.more_details_extension -{ - margin-top: 10px; - padding: 0.1em 1.0em 0.1em; - display: block; - font-size: 1.3em; - float: none; - width: 160px; -} - -div.component { - background-color:white; - border: 2px solid rgb(102,102,102); - text-align:left; - margin-top: 1.5em; - padding: 0.7em; -} - -div.question { - background-color:white; - border: 2px solid rgb(102,102,102); - text-align:left; - margin-top: 1.5em; - margin-bottom: 90%; - padding: 0.7em; -} - -div.function { - background-color:white; - border: 2px solid rgb(102,102,255); - text-align:left; - margin-top: 0.3em; - padding: 0.3em; -} - -div.class { - background-color:white; - border: 2px solid rgb(255,102,102); - text-align:left; - margin-top: 0.3em; - padding: 0.3em; -} - -div.extension { - background-color:#FDFDFD; - border: 1px solid rgb(102,102,102); - text-align:left; - margin-top: 1.0em; - padding: 0.7em; -} - -div.logb { - text-align:left; - padding: 0.0em; - float: left; - background-color:#c0c0c0; - border: double ; - margin: 0.5em; -} - -div.name { - float: left; -} -div.line1 { - float:left; - width:100%; - background-color:#dfdfdf; -} -div.line2 { - float:left; - width:100%; -} -div.inc { - float: right; -} - -video -{ - border: black dotted 1px; - border-bottom: black solid 2px; -} - -.code_box -{ - color: black; - margin: 1em 0.25in; - padding: 0.5em; - background: rgb(240,240,240); - border-top: black dotted 1px; - border-left: black dotted 1px; - border-right: black solid 2px; - border-bottom: black solid 2px; -} - -tt -{ - padding: 0.3em; - font-size:13px; - font-family: monospace; - background: rgb(240,240,240); - color: black; -} - - - -.bdotted {border-bottom: 1px dotted} -.bdashed {border-bottom: 1px dashed} -.bsolid {border-bottom: 1px solid} -.bdouble {border-bottom: 1px double} -.bgroove {border-bottom: 1px groove} -.bridge {border-bottom: 1px ridge} -.binset {border-bottom: 1px inset} -.boutset {border-bottom: 1px outset} - -div.row1 { - background-color:#dfdfdf; -} -div.row2 { - background-color:#f2f2f2; -} - -div.typedefs { - margin-left: 1.5em; - margin-top: 0.2em; - border: 1px dotted; - width: 52em; -} - -div.tdn { - width: 10em; -} - -.fullhr { - clear: both; -} - - -a { - text-decoration: none; - font-family: sans-serif; -} -a:hover{ - text-decoration: underline; -} -a.menu{ - white-space: nowrap; -} -a.sub{ - cursor: pointer; - margin-left:-9px; - color: green; -} -#download_button { - font: 200 16px source-sans-pro, sans-serif; - text-align: center; - padding-left: 1.5em; - padding-right: 1.5em; - -webkit-font-smoothing: antialiased; - background-color: #2098f5; - border-color: #0a7cd4; - color: #fff; - - padding: 0.7em 1em 0.8em; - - -moz-box-shadow: 2px 2px 9px #777777; - -webkit-box-shadow: 2px 2px 9px #777777; - box-shadow: 1px 1px 5px #777777; - border-radius: 3px; - -moz-border-radius: 3px; - -webkit-border-radius: 3px; - - transition: 320ms; - display: inline-block; -} -#download_button:hover { - text-decoration: none; - -moz-box-shadow: 1px 1px 9px #77a777; - -webkit-box-shadow: 1px 1px 9px #77a777; - box-shadow: 1px 1px 5px #77a777; - color: #ffffff; - background-color: #0a7cd4; -} - -div { - display:block; -} - -#dlib_version { - color: #fff; - display: block; - font-size: 0.8em; - font-weight: 400; - margin: 0; -} - diff --git a/ml/dlib/docs/docs/dlib.js b/ml/dlib/docs/docs/dlib.js deleted file mode 100644 index 025bbf996..000000000 --- a/ml/dlib/docs/docs/dlib.js +++ /dev/null @@ -1,94 +0,0 @@ - -function init_page() -{ - if (navigator.appVersion.indexOf("Win")!=-1) - { - var a = document.getElementById("download_button"); - a.href = a.href.replace("tar.bz2", "zip"); - } -} -window.onload = init_page; - -// -------------------------------------------------------------- -// Tree collapse stuff -// -------------------------------------------------------------- - -function Toggle(node) -{ - // Unfold the branch if it isn't visible - var next_node = node.nextSibling; - if (next_node.style.display == 'none') - { - // Change the image (if there is an image) - if (node.childNodes.length > 0) - { - if (node.childNodes.length > 0) - { - if (node.childNodes.item(0).nodeName == "IMG") - { - node.childNodes.item(0).src = "minus.gif"; - } - } - } - - next_node.style.display = 'block'; - } - // Collapse the branch if it IS visible - else - { - // Change the image (if there is an image) - if (node.childNodes.length > 0) - { - if (node.childNodes.length > 0) - { - if (node.childNodes.item(0).nodeName == "IMG") - { - node.childNodes.item(0).src = "plus.gif"; - } - } - } - - next_node.style.display = 'none'; - } - -} -function BigToggle(node) -{ - // Unfold the branch if it isn't visible - var next_node = node.nextSibling; - if (next_node.style.display == 'none') - { - // Change the image (if there is an image) - if (node.childNodes.length > 0) - { - if (node.childNodes.length > 0) - { - if (node.childNodes.item(0).nodeName == "IMG") - { - node.childNodes.item(0).src = "bigminus.gif"; - } - } - } - - next_node.style.display = 'block'; - } - // Collapse the branch if it IS visible - else - { - // Change the image (if there is an image) - if (node.childNodes.length > 0) - { - if (node.childNodes.length > 0) - { - if (node.childNodes.item(0).nodeName == "IMG") - { - node.childNodes.item(0).src = "bigplus.gif"; - } - } - } - - next_node.style.display = 'none'; - } - -} - diff --git a/ml/dlib/docs/docs/down.gif b/ml/dlib/docs/docs/down.gif deleted file mode 100644 index 5d7bb6467..000000000 Binary files a/ml/dlib/docs/docs/down.gif and /dev/null differ diff --git a/ml/dlib/docs/docs/enable_if.html b/ml/dlib/docs/docs/enable_if.html deleted file mode 100644 index 09cc2d4d2..000000000 --- a/ml/dlib/docs/docs/enable_if.html +++ /dev/null @@ -1,387 +0,0 @@ - - -enable_if - - - - - - - - - - -
    -
    - - -

    -enable_if

    -
    -
    -Copyright 2003 Jaakko Järvi, Jeremiah Willcock, Andrew Lumsdaine.
    -
    - - -

    1  Introduction

    - - -The enable_if family of templates is a set of tools to allow a function template or a class template specialization -to include or exclude itself from a set of matching functions or specializations -based on properties of its template arguments. -For example, one can define function templates that -are only enabled for, and thus only match, an arbitrary set of types -defined by a traits class. The enable_if templates can also be -applied to enable class template specializations. Applications of -enable_if are discussed in length -in [1] and [2].
    -
    - - -

    1.1  Synopsis

    - - -
    namespace boost {
    -  template <class Cond, class T = void> struct enable_if;
    -  template <class Cond, class T = void> struct disable_if;
    -  template <class Cond, class T> struct lazy_enable_if;
    -  template <class Cond, class T> struct lazy_disable_if;
    -
    -  template <bool B, class T = void> struct enable_if_c;
    -  template <bool B, class T = void> struct disable_if_c;
    -  template <bool B, class T> struct lazy_enable_if_c;
    -  template <bool B, class T> struct lazy_disable_if_c;
    -}
    -
    - - -

    1.2  Background

    - - -Sensible operation of template function overloading in C++ relies -on the SFINAE (substitution-failure-is-not-an-error) -principle [3]: if an invalid argument -or return type is formed during the instantiation of a function -template, the instantiation is removed from the overload resolution -set instead of causing a compilation error. The following example, -taken from [1], -demonstrates why this is important: -
    int negate(int i) { return -i; }
    -
    -template <class F>
    -typename F::result_type negate(const F& f) { return -f(); }
    -
    -
    -Suppose the compiler encounters the call negate(1). The first -definition is obviously a better match, but the compiler must -nevertheless consider (and instantiate the prototypes) of both -definitions to find this out. Instantiating the latter definition with -F as int would result in: -
    int::result_type negate(const int&);
    -
    -
    -where the return type is invalid. If this was an error, adding an unrelated function template -(that was never called) could break otherwise valid code. -Due to the SFINAE principle the above example is not, however, erroneous. -The latter definition of negate is simply removed from the overload resolution set.
    -
    -The enable_if templates are tools for controlled creation of the SFINAE -conditions.
    -
    - - -

    2  The enable_if templates

    - - -The names of the enable_if templates have three parts: an optional lazy_ tag, -either enable_if or disable_if, and an optional _c tag. -All eight combinations of these parts are supported. -The meaning of the lazy_ tag is described in Section 3.3. -The second part of the name indicates whether a true condition argument should -enable or disable the current overload. -The third part of the name indicates whether the condition argument is a bool value -(_c suffix), or a type containing a static bool constant named value (no suffix). -The latter version interoperates with Boost.MPL.
    -
    -The definitions of enable_if_c and enable_if are as follows (we use enable_if templates -unqualified but they are in the boost namespace). -
    template <bool B, class T = void>
    -struct enable_if_c {
    -  typedef T type;
    -};
    -
    -template <class T>
    -struct enable_if_c<false, T> {};
    -
    -template <class Cond, class T = void>
    -struct enable_if : public enable_if_c<Cond::value, T> {};
    -
    -
    -An instantiation of the enable_if_c template with the parameter -B as true contains a member type type, defined -to be T. If B is -false, no such member is defined. Thus -enable_if_c<B, T>::type is either a valid or an invalid type -expression, depending on the value of B. -When valid, enable_if_c<B, T>::type equals T. -The enable_if_c template can thus be used for controlling when functions are considered for -overload resolution and when they are not. -For example, the following function is defined for all arithmetic types (according to the -classification of the Boost type_traits library): -
    template <class T>
    -typename enable_if_c<boost::is_arithmetic<T>::value, T>::type 
    -foo(T t) { return t; }
    -
    -
    -The disable_if_c template is provided as well, and has the -same functionality as enable_if_c except for the negated condition. The following -function is enabled for all non-arithmetic types. -
    template <class T>
    -typename disable_if_c<boost::is_arithmetic<T>::value, T>::type 
    -bar(T t) { return t; }
    -
    -
    -For easier syntax in some cases and interoperation with Boost.MPL we provide versions of -the enable_if templates taking any type with a bool member constant named -value as the condition argument. -The MPL bool_, and_, or_, and not_ templates are likely to be -useful for creating such types. Also, the traits classes in the Boost.Type_traits library -follow this convention. -For example, the above example function foo can be alternatively written as: -
    template <class T>
    -typename enable_if<boost::is_arithmetic<T>, T>::type 
    -foo(T t) { return t; }
    -
    -
    - - -

    3  Using enable_if

    - - -The enable_if templates are defined in -boost/utility/enable_if.hpp, which is included by boost/utility.hpp.
    -
    -The enable_if template can be used either as the return type, or as an -extra argument. For example, the foo function in the previous section could also be written -as: -
    template <class T>
    -T foo(T t, typename enable_if<boost::is_arithmetic<T> >::type* dummy = 0); 
    -
    -
    Hence, an extra parameter of type void* is added, but it is given -a default value to keep the parameter hidden from client code. -Note that the second template argument was not given to enable_if, as the default -void gives the desired behavior.
    -
    -Whether to write the enabler as an argument or within the return type is -largely a matter of taste, but for certain functions, only one -alternative is possible: - - - -

    3.1  Enabling template class specializations

    - - -Class template specializations can be enabled or disabled with enable_if. -One extra template parameter needs to be added for the enabler expressions. -This parameter has the default value void. -For example: -
    template <class T, class Enable = void> 
    -class A { ... };
    -
    -template <class T>
    -class A<T, typename enable_if<is_integral<T> >::type> { ... };
    -
    -template <class T>
    -class A<T, typename enable_if<is_float<T> >::type> { ... };
    -
    -
    Instantiating A with any integral type matches the first specialization, -whereas any floating point type matches the second one. All other types -match the primary template. -The condition can be any compile-time boolean expression that depends on the -template arguments of the class. -Note that again, the second argument to enable_if is not needed; the default (void) -is the correct value.
    -
    - - -

    3.2  Overlapping enabler conditions

    - - -Once the compiler has examined the enabling conditions and included the -function into the overload resolution set, normal C++ overload resolution -rules are used to select the best matching function. -In particular, there is no ordering between enabling conditions. -Function templates with enabling conditions that are not mutually exclusive can -lead to ambiguities. For example: -
    template <class T>
    -typename enable_if<boost::is_integral<T>, void>::type 
    -foo(T t) {}
    -
    -template <class T>
    -typename enable_if<boost::is_arithmetic<T>, void>::type 
    -foo(T t) {}
    -
    -
    -All integral types are also arithmetic. Therefore, say, for the call foo(1), -both conditions are true and both functions are thus in the overload resolution set. -They are both equally good matches and thus ambiguous. -Of course, more than one enabling condition can be simultaneously true as long as -other arguments disambiguate the functions.
    -
    -The above discussion applies to using enable_if in class template -partial specializations as well.
    -
    - - -

    3.3  Lazy enable_if

    - - -In some cases it is necessary to avoid instantiating part of a -function signature unless an enabling condition is true. For example: -
    template <class T, class U> class mult_traits;
    -
    -template <class T, class U>
    -typename enable_if<is_multipliable<T, U>, typename mult_traits<T, U>::type>::type
    -operator*(const T& t, const U& u) { ... }
    -
    -
    Assume the class template mult_traits is a traits class defining -the resulting type of a multiplication operator. The is_multipliable traits -class specifies for which types to enable the operator. Whenever -is_multipliable<A, B>::value is true for some types A and B, -then mult_traits<A, B>::type is defined.
    -
    -Now, trying to invoke (some other overload) of operator* with, say, operand types C and D -for which is_multipliable<C, D>::value is false -and mult_traits<C, D>::type is not defined is an error on some compilers. -The SFINAE principle is not applied because -the invalid type occurs as an argument to another template. The lazy_enable_if -and lazy_disable_if templates (and their _c versions) can be used in such -situations: -
    template<class T, class U>
    -typename lazy_enable_if<is_multipliable<T, U>, mult_traits<T, U> >::type
    -operator*(const T& t, const U& u) { ... }
    -
    -
    The second argument of lazy_enable_if must be a class type -that defines a nested type named type whenever the first -parameter (the condition) is true.
    -
    - - -
    Note
    - -Referring to one member type or static constant in a traits class -causes all of the members (type and static constant) of that -specialization to be instantiated. Therefore, if your traits classes -can sometimes contain invalid types, you should use two distinct -templates for describing the conditions and the type mappings. In the -above example, is_multipliable<T, U>::value defines when -mult_traits<T, U>::type is valid.
    -
    - - -

    3.4  Compiler workarounds

    - - -Some compilers flag functions as ambiguous if the only distinguishing factor is a different -condition in an enabler (even though the functions could never be ambiguous). For example, -some compilers (e.g. GCC 3.2) diagnose the following two functions as ambiguous: -
    template <class T>
    -typename enable_if<boost::is_arithmetic<T>, T>::type 
    -foo(T t);
    -
    -template <class T>
    -typename disable_if<boost::is_arithmetic<T>, T>::type 
    -foo(T t);
    -
    -
    Two workarounds can be applied: - - - -

    4  Acknowledgements

    - -We are grateful to Howard Hinnant, Jason Shirk, Paul Mensonides, and Richard -Smith whose findings have influenced the library.
    -
    - - -

    References

    -
    [1]
    -Jaakko Järvi, Jeremiah Willcock, Howard Hinnant, and Andrew Lumsdaine. -Function overloading based on arbitrary properties of types. -C/C++ Users Journal, 21(6):25--32, June 2003.
    -
    -
    [2]
    -Jaakko Järvi, Jeremiah Willcock, and Andrew Lumsdaine. -Concept-controlled polymorphism. -In Frank Pfennig and Yannis Smaragdakis, editors, Generative - Programming and Component Engineering, volume 2830 of LNCS, pages - 228--244. Springer Verlag, September 2003.
    -
    -
    [3]
    -David Vandevoorde and Nicolai M. Josuttis. -C++ Templates: The Complete Guide. -Addison-Wesley, 2002.
    - - - - - -
    - -Contributed by:
    -Jaakko Järvi, Jeremiah Willcock and Andrew Lumsdaine
    -{jajarvi|jewillco|lums}@osl.iu.edu
    -Indiana University
    -Open Systems Lab - - - -
    -
    This document was translated from LATEX by -HEVEA. -
    - - diff --git a/ml/dlib/docs/docs/face_landmarking_example.png b/ml/dlib/docs/docs/face_landmarking_example.png deleted file mode 100644 index 27f70ecbf..000000000 Binary files a/ml/dlib/docs/docs/face_landmarking_example.png and /dev/null differ diff --git a/ml/dlib/docs/docs/faq.xml b/ml/dlib/docs/docs/faq.xml deleted file mode 100644 index dbec1b847..000000000 --- a/ml/dlib/docs/docs/faq.xml +++ /dev/null @@ -1,547 +0,0 @@ - - - - - Frequently Asked Questions - - - - - - You are getting this error because you are not compiling all the C++ - code in your program with consistent settings. This is a violation of - C++'s One Definition Rule. - In this case, you are compiling some translation units with dlib's - assert macros enabled and others with them disabled. -

    - For reference, the code that generates this error is: - dlib/test_for_odr_violations.h and - dlib/test_for_odr_violations.cpp. -

    -
    - - - - You are getting this error because you are not compiling all the C++ - code in your program with consistent settings. This is a violation of - C++'s One Definition Rule. - In this case, you compiled a standalone copy of dlib with CMake and instead of using make install - or cmake --build . --target install to copy the resulting build files somewhere you went - and cherry picked files manually and messed it up. In particular, CMake compiled dlib - with a bunch of settings recorded in the CMake generated config.h file but you instead - are now trying to build more dlib related code with the - dlib/config.h from source control. -

    - For reference, the code that generates this error is: - dlib/test_for_odr_violations.h and - dlib/test_for_odr_violations.cpp. -

    -
    - - - Do not post a question like "I'm using dlib, and it doesn't work?" or - "I'm using the object detector and it doesn't work, what do I do?". - If this is all you say then I have no idea what is wrong. 99% of the - time it's some kind of user error. 1% of the time it's some problem - in dlib. But again, without more information it's impossible to know. - So please don't post questions like this. - -

    - If you think you found some kind of bug or problem in dlib then feel - free to submit a dlib issue on github. - But include the version of dlib you are using, what you - are trying, what happened, what you expected to have happened instead, etc. -

    - -

    - On the other hand, if you haven't found a bug or problem in dlib, but - instead are looking for machine learning/computer vision/programming - help then post your question to stack overflow with the dlib tag. -

    -
    - - -

    - First, note that you need a version of Visual Studio with decent - C++11 support. This means you need Visual Studio 2015 or newer. -

    - There are instructions on the How to Compile page. - If you do not understand the instructions in the "Compiling on Windows Using Visual Studio" section - or are getting errors then follow the instructions in the "Compiling on Any Operating System Using CMake" - section. In particular, install CMake and then type - these exact commands from within the root of the dlib distribution: - -cd examples -mkdir build -cd build -del /F /S /Q * -cmake .. -cmake --build . --config Release - - That should compile the dlib examples in visual studio. The output executables will appear in the Release folder. - The del /F /S /Q * command is to make sure you clear out any extraneous files you might have placed in - the build folder and is not necessary if build begins empty. -
    - - - - - Dlib isn't slow. I get this question many times a week and 95% of the time it's from someone - using Visual Studio who has compiled their program in Debug mode rather than the optimized - Release mode. So if you are using Visual Studio then realize that Visual Studio has these two modes. - The default is Debug. The mode is selectable via a drop down: -

    - Debug mode disables compiler optimizations. So the program will be very slow if you run it in Debug mode. - So click the drop down, -

    - and select Release. -

    - Then when you compile the program it will appear in a folder named Release rather than in a folder named Debug. - -
    -
    - Finally, you can enable either SSE4 or AVX instruction use. These will make certain operations much faster (e.g. face detection). - You do this using CMake's cmake-gui tool. For example, if you execute - these commands you will get the cmake-gui screen: - -cd examples -mkdir build -cd build -cmake .. -cmake-gui . - - Which looks like this: -

    - Where you can select SSE4 or AVX instruction use. Then you click configure and then generate. After that - when you build your visual studio project some things will be faster. - - Finally, note that AVX is a little bit faster than SSE4 but if your computer is fairly old it might - not support it. In that case, either buy a new computer or use SSE4 - instructions. -
    - - - - - - - If you use dlib in your research then please use the following citation: -
    -
    -Davis E. King. Dlib-ml: A Machine Learning Toolkit. - Journal of Machine Learning Research 10, pp. 1755-1758, 2009 -
    -
    -
    -@Article{dlib09,
    -  author = {Davis E. King},
    -  title = {Dlib-ml: A Machine Learning Toolkit},
    -  journal = {Journal of Machine Learning Research},
    -  year = {2009},
    -  volume = {10},
    -  pages = {1755-1758},
    -}
    -         
    -
    - - - - - - - Here are the possibilities: -
      -
    • You are using a file stream and forgot to put it into binary mode. - You need to do something like this: - -std::ifstream fin("myfile", std::ios::binary); - -or - -std::ofstream fout("myfile", std::ios::binary); - - -If you don't give std::ios::binary then the iostream will mess with the binary data and cause serialization -to not work right. -
    • - -
      -
    • The iostream is in a bad state. You can check the state by calling mystream.good(). - If it returns false then the stream is in an error state such as end-of-file or maybe it failed - to do the I/O. Also note that if you close a file stream and reopen it you might have to call - mystream.clear() to clear out the error flags. -
    • -
    - -
    - - - - Long answer, read the matrix example program. -

    - Short answer, here are some examples: - -matrix<double> mat; -mat.set_size(4,5); - -matrix<double,0,1> column_vect; -column_vect.set_size(6); - -matrix<double,0,1> column_vect2(6); // give size to constructor - -matrix<double,1> row_vect; -row_vect.set_size(5); - - -
    - - - - If you can't find something then check the index. -

    - Also, the bulk of the documentation can be found by following the - links. -
    - - - - - - There should never be anything in dlib that prevents you from using or - interacting with other libraries. Moreover, there are some additional tools - in dlib to make some interactions easier: - -
      -
    • BLAS and LAPACK libraries are used by the matrix - automatically if you #define DLIB_USE_BLAS and/or DLIB_USE_LAPACK and link against - the appropriate library files. Note that the CMakeLists.txt file that comes with dlib will - do this for you automatically in many instances.

    • - -
    • Armadillo and Eigen libraries have matrix objects which can be converted into - dlib matrix objects by calling dlib::mat() on them.

    • - -
    • OpenCV image objects can be converted into a form usable by dlib routines - by using cv_image. You can also convert from a - dlib matrix or image to an OpenCV Mat using dlib::toMat().

    • - -
    • Google Protocol Buffers can be serialized by the dlib - serialization routines. - This means that, for example, you can pass protocol buffer objects through a - bridge. -

    • - -
    • libpng and libjpeg are used by load_image whenever - DLIB_PNG_SUPPORT and DLIB_JPEG_SUPPORT are defined respectively. - You must also tell your compiler to link against these libraries to - use them. However, CMake will try to link against them - automatically if they are installed.

    • - - - -
    • SQLite is used by the database object. In - fact, it is just a wrapper around SQLite's C interface which simplifies its use (e.g. - makes resource management use RAII).
    • - -
    -
    - -
    - - - - - - - - - - The optimization algorithm is somewhat unpredictable. Sometimes it is fast and - sometimes it is slow. What usually makes it really slow is if you use a radial basis - kernel and you set the gamma parameter to something too large. This causes the - algorithm to start using a whole lot of relevance vectors (i.e. basis vectors) which - then makes it slow. The algorithm is only fast as long as the number of relevance vectors - remains small but it is hard to know beforehand if that will be the case. -

    - You should try kernel ridge regression instead since it - also doesn't take any parameters but is always very fast. -

    - -
    - - - - - This function makes a copy of your training data for each thread. So you are probably running out - of memory. To avoid this, use the randomly_subsample function - to reduce the amount of data you are using or use fewer threads. -

    - For example, you could reduce the amount of data by saying this: - -// reduce to only 1000 samples -cross_validate_trainer_threaded(trainer, - randomly_subsample(samples, 1000), - randomly_subsample(labels, 1000), - 4, // num folds - 4); // num threads - -

    -
    - - - - - See the Using Custom Kernels example program. - - - - - -

    - Picking the right kernel all comes down to understanding your data, and obviously this is - highly dependent on your problem. -

    - -

    - One thing that's sometimes useful is to plot each feature against the target value. You can get an idea of - what your overall feature space looks like and maybe tell if a linear kernel is the right solution. But - this still hides important information from you. For example, imagine you have two diagonal lines which - are very close together and are both the same length. Suppose one line is of the +1 class and the other is the -1 - class. Each feature (the x or y coordinate values) by itself tells you almost nothing about which class - a point belongs to but together they tell you everything you need to know. -

    - -

    - On the other hand, if you know something about the data you are working with then you can also try and - generate your own features. So for example, if your data is a bunch of images and you know that one - of your classes contains a lot of lines then you can make a feature that attempts to measure the number - of lines in an image using a hough transform or sobel edge filter or whatever. Generally, try and - think up features which should be highly correlated with your target value. A good way to do this is - to try and actually hand code N solutions to the problem using whatever you know about your data or - domain. If you do a good job then you will have N really great features and a linear or rbf kernel - will probably do very well when using them. -

    - -

    - Or you can just try a whole bunch of kernels, kernel parameters, and training algorithm options while - using cross validation. I.e. when in doubt, use brute force :) There is an example of that kind of - thing in the model selection example program. -

    -
    - - - - - This happens when you use the radial_basis_kernel and you set the gamma value to - something highly inappropriate. To understand what's happening lets imagine your - data has just one feature and its value ranges from 0 to 7. Then what you want is a - gamma value that gives nice Gaussian bumps like the one in this graph:
    - -
    - -
    - However, if you make gamma really huge you will get this (it's zero everywhere except for one place): -
    -
    - -
    - Or if you make gamma really small then it will be 1.0 everywhere: -
    -
    - -

    - So you need to pick the gamma value so that it is scaled reasonably to your data. A good rule of - thumb (i.e. not the optimal gamma, just a heuristic guess) is the following: -

    - const double gamma = 1.0/compute_mean_squared_distance(randomly_subsample(samples, 2000)); - -
    - - - -
    - - - - - - - There are three general mistakes people make when trying to train an object detector with dlib. -
      -
    • Not labeling all the objects in each image

      - The tools for training object detectors in dlib use the Max-Margin Object Detection - loss. This loss optimizes the performance of the detector on the whole image, not on some subset of windows cropped from the training data. - That means it counts the number of missed detections and false alarms for each of the training images and tries to find a way - to minimize the sum of these two error metrics. For this to be possible, you must label all the objects in each training image. - If you leave unannotated objects in some of your training images then the loss will think any detections on these unannotated objects - are false alarms, and will therefore try to find a detector that doesn't detect them. If you have enough unannotated objects, the - most accurate detector will be the one that never detects anything. That's obviously not what you want. So make sure you annotate all the - objects in each image. -

      - Sometimes annotating all the objects in each image is too - onerous, or there are ambiguous objects you don't care about. - In these cases you should annotate these objects you don't - care about with ignore boxes so that the MMOD loss knows to - ignore them. You can do this with dlib's imglab tool by - selecting a box and pressing i. Moreover, there are two ways - the code treats ignore boxes. When a detector generates a - detection it compares it against any ignore boxes and ignores - it if the boxes "overlap". Deciding if they overlap is based - on either their intersection over union or just basic percent - coverage of one by another. You have to think about what - mode you want when you annotate things and configure the - training code appropriately. The default behavior is to use - intersection over union to measure overlap. However, if you - wanted to simply mask out large parts of an image you - wouldn't want to use intersection over union to measure - overlap since small boxes contained entirely within the large - ignored region would have small IoU with the big ignore region and thus not "overlap" - the ignore region. In this case you should change the - settings to reflect this before training. The available configuration - options are discussed in great detail in parts of dlib's documentation. -

      -
    • - -
    • Using training images that don't look like the testing images

      - This should be obvious, but needs to be pointed out. If there - is some clear difference between your training and testing - images then you have messed up. You need to show the training - algorithm real images so it can learn what to do. If instead - you only show it images that look obviously different from your - testing images don't be surprised if, when you run the detector - on the testing images, it doesn't work. As a rule of thumb, - a human should not be able to tell if an image came from the training dataset or testing dataset. - -

      - Here are some examples of bad datasets: -

        -
      • A training dataset where objects always appear with - some specific orientation but the testing images have a - diverse set of orientations.
      • -
      • A training dataset where objects are tightly cropped, but testing images that are uncropped.
      • -
      • A training dataset where objects appear only on a perfectly white background with nothing else present, but testing images where objects appear in a normal environment like living rooms or in natural scenes.
      • -
      -

      - -

      - Another way you can mess this up is when using the random_cropper to jitter your training data, which is - common when training a CNN or other deep model. In general, the random_cropper finds images - that are more or less centered on your objects of interest and it also scales the images so - the object has some user specified minimum size. That's all fine. But what can happen is - you train a model that gets 0 training error but when you go and use it it doesn't detect - any objects. Why is that? It's probably because all the objects in your normal images, the - ones you give to the random_cropper, are really small. Smaller than the min size you told - the cropper to make them. So now your testing images are really different from your training - images. Moreover, in general object detectors have some minimum size they scan and if - objects are smaller than that they will never be found. Another related issue is all your - uncropped images might show objects at the very border of the image. But the random_cropper - will center the objects in the crops, by padding with zeros if necessary. Again, make your - testing images look like the training images. Pad the edges of your images with zeros if - needed. -

      -
    • - -
    • Using a HOG based detector but not understanding the limits of HOG templates

      - The HOG detector is very fast and generally easy to train. However, you - have to be aware that HOG detectors are essentially rigid templates that are scanned over an image. So a single HOG detector - isn't going to be able to detect objects that appear in a wide range of orientations or undergo complex deformations or have complex - articulation. -

      - For example, a HOG detector isn't going to be able to learn to detect human faces that are upright as well as faces rotated 90 degrees. - If you wanted to deal with that you would be best off training 2 detectors. One for upright faces and another for 90 degree rotated faces. - You can efficiently run multiple HOG detectors at once using the evaluate_detectors function, so it's not a huge deal to do this. Dlib's imglab tool also has a --cluster option that will help you split a training dataset into clusters that can - be detected by a single HOG detector. You will still need to manually review and clean the dataset after applying --cluster, but it makes - the process of splitting a dataset into coherent poses, from the point of view of HOG, a lot easier. -

      -

      - A related issue arises because HOG is a rigid template, which is that the boxes in your training data need to all have essentially the same - aspect ratio. For instance, a single HOG filter can't possibly detect objects that are both 100x50 pixels and 50x100 pixels. To do this you - would need to split your dataset into two parts, objects with a 2:1 aspect ratio and objects with a 1:2 aspect ratio and then train two separate - HOG detectors, one for each aspect ratio. -

      -

      - However, it should be emphasized that even using multiple HOG detectors will only get you so far. So at some point you should consider - using a CNN based detection method since CNNs can generally deal with arbitrary - rotations, poses, and deformations with one unified - detector. -

      -
    • -
    -
    -
    - - - - - - You can, but you need to use Visual Studio 2015 Update 3 or newer since prior versions - had bad C++11 support. To make this as confusing as possible, - Microsoft has released multiple different versions of "Visual Studio - 2015 Update 3". As of October 2016, the version available from the - Microsoft web page has good enough C++11 support to compile the DNN - tools in dlib. So make sure you have a version no older than October - 2016. -

    - To make this even more complicated, Visual Studio 2017 had - regressions in its C++11 support. So all versions of Visual Studio - 2017 prior to December 2017 would just hang if you tried to compile - the DNN examples. Happily, the newest versions of Visual Studio - 2017 appear to have good C++11 support and will compile the DNN - codes without any issue. So make sure your Visual Studio is - fully updated. -

    -

    - Finally, it should be noted that you should give the -T host=x64 - cmake option when generating a Visual Studio project. If you don't - do this then you will get the default Visual Studio toolchain, - which runs the compiler in 32bit mode, restricting it to 2GB of - RAM, leading to compiler crashes due to it running out of RAM in some - cases. This isn't the 1990s anymore, so you should probably - run your compiler in 64bit mode so it can use your computer's RAM. - Giving -T host=x64 will let Visual Studio use as much RAM - as it needs. -

    -
    - - - A major design goal of this API is to let users create new loss - layers, computational layers, and solvers without needing to - understand or even look at the dlib internals. A lot of the API - decisions are based on what makes the interface a user needs to - implement to create new layers as simple as possible. In particular, - designing the API in this compile-time static way makes it simple for - these use cases. -

    - Here is an example of one problem it addresses. Since dlib - exposes the entire network architecture to the C++ type system we - can get automatic serialization of networks. Without this, we - would have to resort to the kind of hacky global layer registry - used in other tools that compose networks entirely at runtime. -

    -

    - Another nice feature is that we get to use C++11 alias template - statements to create network sub-blocks, which we can then use to easily - define very large networks. There are examples of this in this example program. It - should also be pointed out that it takes days or even weeks to - train one network. So it isn't as if you will be writing a - program that loops over large numbers of networks and trains them - all. This makes the time needed to recompile a program to change - the network irrelevant compared to the entire training time. - Moreover, there are plenty of compile time constructs in C++ you - can use to enumerate network architectures (e.g. loop - over filter widths) if you really wanted to do so. -

    -

    - All that said, if you think you found a compelling use case that isn't supported - by the current API feel free to post a github issue. -

    -
    -
    - - - - -
    diff --git a/ml/dlib/docs/docs/find_max_global_example.mp4 b/ml/dlib/docs/docs/find_max_global_example.mp4 deleted file mode 100644 index 2514abe19..000000000 Binary files a/ml/dlib/docs/docs/find_max_global_example.mp4 and /dev/null differ diff --git a/ml/dlib/docs/docs/find_max_global_example.png b/ml/dlib/docs/docs/find_max_global_example.png deleted file mode 100644 index 42b2eb2b6..000000000 Binary files a/ml/dlib/docs/docs/find_max_global_example.png and /dev/null differ diff --git a/ml/dlib/docs/docs/find_max_global_example.webm b/ml/dlib/docs/docs/find_max_global_example.webm deleted file mode 100644 index 64556b345..000000000 Binary files a/ml/dlib/docs/docs/find_max_global_example.webm and /dev/null differ diff --git a/ml/dlib/docs/docs/find_max_global_results_table.svg b/ml/dlib/docs/docs/find_max_global_results_table.svg deleted file mode 100644 index 8bdc46531..000000000 --- a/ml/dlib/docs/docs/find_max_global_results_table.svg +++ /dev/null @@ -1,3398 +0,0 @@ - - - -image/svg+xmlProblemHolderTableComplexHolderRosenbrockSphereDebN.1 -MaxLIPO+TR50 -( -± -28) -148 -( -± -90)23( -± -10)39( -± -8)169( -± -161) -PRS+TR -91( -± -96)1589( -± -2941) -19 -( -± -9)44( -± -9)168( -± -150) -LIPO+TR -56( -± -41)213( -± -130) -19 -( -± -9) -35 -( -± -7) -166 -( -± -126) -LIPO -140( -± -71)245( -± -116)61( -± -55)53( -± -16)- -PRS -1842( -± -1751)36421( -± -37249)118( -± -114)198274( -± -199449)529251( -± -538740) -target99% -MaxLIPO+TR51 -( -± -27) -150 -( -± -89) -149 -( -± -84) -23 -( -± -5)138( -± -160) -PRS+TR -92( -± -96)1590( -± -2942)172( -± -90)28( -± -6)139( -± -149) -LIPO+TR -58( -± -42)207( -± -131)163( -± -92) -23 -( -± -5) -135 -( -± -124) -LIPO -161( -± -81)264( -± -119)-38( -± -14)- -PRS -3043( -± -2901)75589( -± -76490)108873( -± -112572)1929( -± -2034)3933( -± -3869) - -=0 -. -1 -MaxLIPO+TR54 -( -± -27) -156 -( -± -89) -189 -( -± -88) -57 -( -± -9)175( -± -161) -PRS+TR -91( -± -91)1590( -± -3106)221( -± -99)62( -± -11) -174 -( -± -137) -LIPO+TR -61( -± -45)216( -± -129)210( -± -98)57( -± -10)181( -± -166) -LIPO ------ -PRS -31351( -± -31805)730957( -± -703887)3 -. -7 -× -10 -6 -( -± -3 -. -7 -× -10 -6 -)2 -× -10 -7 -( -± -2 -× -10 -7 -)1 -. -6 -× -10 -6 -( -± -1 -. -6 -× -10 -6 -) - -=0 -. -01 -MaxLIPO+TR57 -( -± -28) -165 -( -± -87) -219 -( -± -89)92( -± -15)199( -± -171) -PRS+TR -94( -± -87)1776( -± -3437)236( -± -97)99( -± -17)202( -± -174) -LIPO+TR -63( -± -43)221( -± -132)232( -± -103) -91 -( -± -15) -198 -( -± -152) -LIPO ------ -PRS ------ - -=0 -. -001 -MaxLIPO+TR66 -( -± -27) -169 -( -± -89) -238 -( -± -88) -400 -( -± -49)236( -± -162) -PRS+TR -102( -± -92)1548( -± -2989)264( -± -96)411( -± -52)236( -± -168) -LIPO+TR -73( -± -43)230( -± -130)260( -± -100)400( -± -53) -232 -( -± -165) -LIPO ------ -PRS ------ - -=10 -− -9 - \ No newline at end of file diff --git a/ml/dlib/docs/docs/graph_tools.xml b/ml/dlib/docs/docs/graph_tools.xml deleted file mode 100644 index 89770fca0..000000000 --- a/ml/dlib/docs/docs/graph_tools.xml +++ /dev/null @@ -1,678 +0,0 @@ - - - - - Graph Tools - - - - - -

    - In dlib, there are two types of graph representations. On the one - hand, there are graphs based on an object which encapsulates the whole - graph, such as the graph and - directed_graph objects. On the - other hand, there are graphs which are represented as simple vectors - of edges. In this case, we use vectors of sample_pair - or ordered_sample_pair objects for undirected - and directed graphs respectively. -

    - - - - - - - - -
    - Graph Object Based Graphs - graph_contains_directed_cycle - graph_has_symmetric_edges - graph_contains_undirected_cycle - create_moral_graph - triangulate_graph_and_find_cliques - graph_contains_length_one_cycle - find_connected_nodes - graph_is_connected - is_clique - is_maximal_clique - copy_graph_structure - copy_graph - edge - is_join_tree - create_join_tree -
    - - -
    - Creating Edge List Based Graphs - sample_pair - ordered_sample_pair - find_percent_shortest_edges_randomly - find_k_nearest_neighbors - find_k_nearest_neighbors_lsh - find_approximate_k_nearest_neighbors - - Distance Functions - - negative_dot_product_distance - squared_euclidean_distance - cosine_distance - - -
    - -
    - Using Edge List Based Graphs - remove_short_edges - remove_duplicate_edges - remove_long_edges - remove_percent_longest_edges - remove_percent_shortest_edges - use_weights_of_one - use_gaussian_weights - is_ordered_by_index - find_neighbor_ranges - convert_unordered_to_ordered - order_by_index - order_by_distance - order_by_descending_distance - order_by_distance_and_index - contains_duplicate_pairs - max_index_plus_one -
    -
    -
    - - - - - - - - - - - order_by_index - dlib/graph_utils.h - dlib/graph_utils/sample_pair_abstract.h - - This function provides a total ordering of sample_pair - or ordered_sample_pair - objects that will cause pairs that represent the same edge to be adjacent - when sorted. So for example, this function can be used - with std::sort() to first sort a sequence of sample_pair objects and then - find duplicate edges. - - - - - - - order_by_distance - dlib/graph_utils.h - dlib/graph_utils/sample_pair_abstract.h - - This function provides a total ordering of sample_pair - or ordered_sample_pair objects that causes - pairs with smallest distance to be the first in a sorted list. This function - can be used with std::sort(). - - - - - - - order_by_descending_distance - dlib/graph_utils.h - dlib/graph_utils/sample_pair_abstract.h - - This function provides a total ordering of sample_pair - or ordered_sample_pair objects that causes - pairs with largest distance to be the first in a sorted list. This function - can be used with std::sort(). - - - - - - - order_by_distance_and_index - dlib/graph_utils.h - dlib/graph_utils/sample_pair_abstract.h - - This function provides a total ordering of sample_pair or - ordered_sample_pair objects that causes pairs - with smallest distance to be the first in a sorted list but also orders - samples with equal distances according to order_by_index(). This function - can be used with std::sort(). - - - - - - - contains_duplicate_pairs - dlib/graph_utils.h - dlib/graph_utils/edge_list_graphs_abstract.h - - This function checks if a std::vector of sample_pair or - ordered_sample_pair objects - contains any edge more than once. - - - - - - - max_index_plus_one - dlib/graph_utils.h - dlib/graph_utils/edge_list_graphs_abstract.h - - This function finds the number that is one greater than the largest index - value in a std::vector of sample_pair or - ordered_sample_pair objects. Therefore, - it is useful for finding out how many nodes are in an edge list graph (assuming - the graph contains all node indices from 0 to the largest index indicated - by an edge). - - - - - - - sample_pair - dlib/graph_utils.h - dlib/graph_utils/sample_pair_abstract.h - - This object is intended to represent an edge in an undirected graph - which has data samples at its vertices. Therefore, it is the undirected version - of ordered_sample_pair. - - - - linear_manifold_regularizer_ex.cpp.html - - - - - - - - ordered_sample_pair - dlib/graph_utils.h - dlib/graph_utils/ordered_sample_pair_abstract.h - - This object is intended to represent an edge in a directed graph - which has data samples at its vertices. Therefore, it is the directed version - of sample_pair. - - - - - - - find_percent_shortest_edges_randomly - dlib/graph_utils.h - dlib/graph_utils/edge_list_graphs_abstract.h - - This function is a simple approximate form of find_k_nearest_neighbors. - Instead of checking all possible edges it randomly samples a large number of them and - then returns the best ones. - - - - linear_manifold_regularizer_ex.cpp.html - - - - - - - - find_k_nearest_neighbors - dlib/graph_utils.h - dlib/graph_utils/edge_list_graphs_abstract.h - - This is a function which finds all the k nearest neighbors of a set of points and outputs - the result as a vector of sample_pair objects. It takes O(n^2) time where - n is the number of data samples. A faster approximate version is provided by - find_approximate_k_nearest_neighbors - and find_k_nearest_neighbors_lsh. - - - - - - - - find_k_nearest_neighbors_lsh - dlib/graph_utils_threaded.h - dlib/graph_utils/find_k_nearest_neighbors_lsh_abstract.h - - This function is a simple approximate form of find_k_nearest_neighbors. - It uses locality sensitive hashing - to speed up the nearest neighbor computation and is also capable of using a multi-core CPU. - - - - - - - - find_approximate_k_nearest_neighbors - dlib/graph_utils.h - dlib/graph_utils/edge_list_graphs_abstract.h - - This function is a simple approximate form of find_k_nearest_neighbors. - Instead of checking all possible edges it randomly samples a large number of them and then performs - exact k-nearest-neighbors on that randomly selected subset. - - - - - - - remove_short_edges - dlib/graph_utils.h - dlib/graph_utils/edge_list_graphs_abstract.h - - This is a simple function for removing edges with a small distance value from - a vector of sample_pair or ordered_sample_pair objects. - - - - - - - - remove_duplicate_edges - dlib/graph_utils.h - dlib/graph_utils/edge_list_graphs_abstract.h - - This is a simple function for removing duplicate edges (i.e. edges that compare equal - according to ==) from - a vector of sample_pair or ordered_sample_pair objects. - - - - - - - remove_long_edges - dlib/graph_utils.h - dlib/graph_utils/edge_list_graphs_abstract.h - - This is a simple function for removing edges with a large distance value from - a vector of sample_pair or ordered_sample_pair objects. - - - - - - - - remove_percent_longest_edges - dlib/graph_utils.h - dlib/graph_utils/edge_list_graphs_abstract.h - - This is a simple function for removing edges with a large distance value from - a vector of sample_pair or ordered_sample_pair objects. - - - - - - - - remove_percent_shortest_edges - dlib/graph_utils.h - dlib/graph_utils/edge_list_graphs_abstract.h - - This is a simple function for removing edges with a small distance value from - a vector of sample_pair or ordered_sample_pair objects. - - - - - - - - squared_euclidean_distance - dlib/graph_utils.h - dlib/graph_utils/function_objects_abstract.h - - This is a simple function object that computes squared euclidean distance - between two matrix objects. - - - linear_manifold_regularizer_ex.cpp.html - - - - - - - - cosine_distance - dlib/graph_utils.h - dlib/graph_utils/function_objects_abstract.h - - This is a simple function object that computes cosine of the angle between - two vectors. - - - - - - - negative_dot_product_distance - dlib/graph_utils.h - dlib/graph_utils/function_objects_abstract.h - - This is a simple function object that computes -dot(v1,v2) for two - vectors v1 and v2. - - - - - - - use_weights_of_one - dlib/graph_utils.h - dlib/graph_utils/function_objects_abstract.h - - This is a simple function object that takes a single argument - and always returns 1 - - - - - - - - use_gaussian_weights - dlib/graph_utils.h - dlib/graph_utils/function_objects_abstract.h - - This is a simple function object that takes a single argument - which should be an object similar to sample_pair. - - - linear_manifold_regularizer_ex.cpp.html - - - - - - - - is_ordered_by_index - dlib/graph_utils.h - dlib/graph_utils/edge_list_graphs_abstract.h - - This function checks if a vector of sample_pair or - ordered_sample_pair objects is in sorted - order according to their index values. - - - - - - - find_neighbor_ranges - dlib/graph_utils.h - dlib/graph_utils/edge_list_graphs_abstract.h - - This function takes a graph, defined by a vector of - ordered_sample_pair objects, and finds the - ranges that contain the edges for each node in the graph. The output therefore - lets you easily locate the neighbors of any node in the graph. - - - - - - - convert_unordered_to_ordered - dlib/graph_utils.h - dlib/graph_utils/edge_list_graphs_abstract.h - - This function takes a graph, defined by a vector of - sample_pair objects and converts it into the equivalent - graph defined by a vector of ordered_sample_pair objects. - - - - - - - edge - dlib/graph_utils.h - dlib/graph_utils/graph_utils_abstract.h - - This function takes a graph or - directed_graph object and a - pair of indices. It returns a reference to the edge object between the two nodes - with the given indices. - - - - - - - - is_join_tree - dlib/graph_utils.h - dlib/graph_utils/graph_utils_abstract.h - - This function takes two graph objects and - checks if the second of the two graphs is a valid join tree (aka tree decomposition) - of the first graph. - - - - - - - - create_join_tree - dlib/graph_utils.h - dlib/graph_utils/graph_utils_abstract.h - - This function takes a graph object and - creates a join tree for that graph. Or in other words, this function finds a - tree decomposition of the given graph. - - - - - - - - graph_contains_directed_cycle - dlib/graph_utils.h - dlib/graph_utils/graph_utils_abstract.h - - This function checks a directed_graph for directed cycles. - - - - - - - - graph_has_symmetric_edges - dlib/graph_utils.h - dlib/graph_utils/graph_utils_abstract.h - - This function checks if a directed_graph - has a pair of nodes with just one edge between them. If so then it - does not have symmetric edges. - - - - - - - - triangulate_graph_and_find_cliques - dlib/graph_utils.h - dlib/graph_utils/graph_utils_abstract.h - - This function takes a graph and - turns it into a chordal graph. It also returns a - set that contains - all the cliques present in the chordal graph. - - - - - - - - create_moral_graph - dlib/graph_utils.h - dlib/graph_utils/graph_utils_abstract.h - - This function takes a directed_graph - and returns the moralized version of the graph in the form of a - graph object. - - - - - - - - graph_contains_length_one_cycle - dlib/graph_utils.h - dlib/graph_utils/graph_utils_abstract.h - - This function takes a graph - or directed_graph object and - returns true if and only if the graph contains a node that has an edge that - links back to itself. - - - - - - - - find_connected_nodes - dlib/graph_utils.h - dlib/graph_utils/graph_utils_abstract.h - - This function takes a node from a graph - or directed_graph object and a - set of unsigned longs. It finds all the - nodes in the given graph that are connected to the given node by an - undirected path and returns them in the set (also note that the - original query node is also returned in this set). - - - - - - - - graph_is_connected - dlib/graph_utils.h - dlib/graph_utils/graph_utils_abstract.h - - This function takes a graph or - directed_graph object and - determines if the graph is connected. That is, it returns true if and only if - there is an undirected path between any two nodes in the given graph. - - - - - - - - is_clique - dlib/graph_utils.h - dlib/graph_utils/graph_utils_abstract.h - - This function takes a graph and a - set of node index values and checks - if the specified set of nodes is a clique in the graph. - - - - - - - - copy_graph - dlib/graph_utils.h - dlib/graph_utils/graph_utils_abstract.h - - This function takes a graph or - directed_graph and - makes a copy of it. - - - - - - - - copy_graph_structure - dlib/graph_utils.h - dlib/graph_utils/graph_utils_abstract.h - - This function takes a graph or - directed_graph and copies - its structure to another graph or directed_graph object. The only - restriction is that you can't copy the structure of a graph into a - directed_graph. The three other possible combinations are allowed - however. - - - - - - - - is_maximal_clique - dlib/graph_utils.h - dlib/graph_utils/graph_utils_abstract.h - - This function takes a graph and a - set of node index values and checks - if the specified set of nodes is a maximal clique in the graph. - - - - - - - - graph_contains_undirected_cycle - dlib/graph_utils.h - dlib/graph_utils/graph_utils_abstract.h - - This function checks a directed_graph for undirected cycles. - - - - - - - - - - - - - - -
    - - - diff --git a/ml/dlib/docs/docs/guipics/button.png b/ml/dlib/docs/docs/guipics/button.png deleted file mode 100644 index 4b6b792b7..000000000 Binary files a/ml/dlib/docs/docs/guipics/button.png and /dev/null differ diff --git a/ml/dlib/docs/docs/guipics/check_box.png b/ml/dlib/docs/docs/guipics/check_box.png deleted file mode 100644 index 5dbf9181b..000000000 Binary files a/ml/dlib/docs/docs/guipics/check_box.png and /dev/null differ diff --git a/ml/dlib/docs/docs/guipics/directed_graph_drawer.png b/ml/dlib/docs/docs/guipics/directed_graph_drawer.png deleted file mode 100644 index 4a2caf57a..000000000 Binary files a/ml/dlib/docs/docs/guipics/directed_graph_drawer.png and /dev/null differ diff --git a/ml/dlib/docs/docs/guipics/image_window.jpg b/ml/dlib/docs/docs/guipics/image_window.jpg deleted file mode 100644 index ed19406c7..000000000 Binary files a/ml/dlib/docs/docs/guipics/image_window.jpg and /dev/null differ diff --git a/ml/dlib/docs/docs/guipics/label.png b/ml/dlib/docs/docs/guipics/label.png deleted file mode 100644 index 67be00024..000000000 Binary files a/ml/dlib/docs/docs/guipics/label.png and /dev/null differ diff --git a/ml/dlib/docs/docs/guipics/list_box.png b/ml/dlib/docs/docs/guipics/list_box.png deleted file mode 100644 index 305716645..000000000 Binary files a/ml/dlib/docs/docs/guipics/list_box.png and /dev/null differ diff --git a/ml/dlib/docs/docs/guipics/menu_bar.png b/ml/dlib/docs/docs/guipics/menu_bar.png deleted file mode 100644 index 0c7461a02..000000000 Binary files a/ml/dlib/docs/docs/guipics/menu_bar.png and /dev/null differ diff --git a/ml/dlib/docs/docs/guipics/message_box.png b/ml/dlib/docs/docs/guipics/message_box.png deleted file mode 100644 index 2decc1065..000000000 Binary files a/ml/dlib/docs/docs/guipics/message_box.png and /dev/null differ diff --git a/ml/dlib/docs/docs/guipics/mouse_tracker.png b/ml/dlib/docs/docs/guipics/mouse_tracker.png deleted file mode 100644 index dc96d5956..000000000 Binary files a/ml/dlib/docs/docs/guipics/mouse_tracker.png and /dev/null differ diff --git a/ml/dlib/docs/docs/guipics/named_rectangle.png b/ml/dlib/docs/docs/guipics/named_rectangle.png deleted file mode 100644 index 45137ff34..000000000 Binary files a/ml/dlib/docs/docs/guipics/named_rectangle.png and /dev/null differ diff --git a/ml/dlib/docs/docs/guipics/open_existing_file_box.png b/ml/dlib/docs/docs/guipics/open_existing_file_box.png deleted file mode 100644 index 19a3bb4fb..000000000 Binary files a/ml/dlib/docs/docs/guipics/open_existing_file_box.png and /dev/null differ diff --git a/ml/dlib/docs/docs/guipics/open_file_box.png b/ml/dlib/docs/docs/guipics/open_file_box.png deleted file mode 100644 index 3277bac24..000000000 Binary files a/ml/dlib/docs/docs/guipics/open_file_box.png and /dev/null differ diff --git a/ml/dlib/docs/docs/guipics/perspective_window.png b/ml/dlib/docs/docs/guipics/perspective_window.png deleted file mode 100644 index 13c01f2e2..000000000 Binary files a/ml/dlib/docs/docs/guipics/perspective_window.png and /dev/null differ diff --git a/ml/dlib/docs/docs/guipics/popup_menu.png b/ml/dlib/docs/docs/guipics/popup_menu.png deleted file mode 100644 index 8e2bc0286..000000000 Binary files a/ml/dlib/docs/docs/guipics/popup_menu.png and /dev/null differ diff --git a/ml/dlib/docs/docs/guipics/radio_button.png b/ml/dlib/docs/docs/guipics/radio_button.png deleted file mode 100644 index e5d7a635e..000000000 Binary files a/ml/dlib/docs/docs/guipics/radio_button.png and /dev/null differ diff --git a/ml/dlib/docs/docs/guipics/save_file_box.png b/ml/dlib/docs/docs/guipics/save_file_box.png deleted file mode 100644 index a1d66c6b1..000000000 Binary files a/ml/dlib/docs/docs/guipics/save_file_box.png and /dev/null differ diff --git a/ml/dlib/docs/docs/guipics/scroll_bar.png b/ml/dlib/docs/docs/guipics/scroll_bar.png deleted file mode 100644 index c08df7524..000000000 Binary files a/ml/dlib/docs/docs/guipics/scroll_bar.png and /dev/null differ diff --git a/ml/dlib/docs/docs/guipics/tabbed_display.png b/ml/dlib/docs/docs/guipics/tabbed_display.png deleted file mode 100644 index 6ab0417ce..000000000 Binary files a/ml/dlib/docs/docs/guipics/tabbed_display.png and /dev/null differ diff --git a/ml/dlib/docs/docs/guipics/text_box.png b/ml/dlib/docs/docs/guipics/text_box.png deleted file mode 100644 index c00d008f9..000000000 Binary files a/ml/dlib/docs/docs/guipics/text_box.png and /dev/null differ diff --git a/ml/dlib/docs/docs/guipics/text_field.png b/ml/dlib/docs/docs/guipics/text_field.png deleted file mode 100644 index ff917c576..000000000 Binary files a/ml/dlib/docs/docs/guipics/text_field.png and /dev/null differ diff --git a/ml/dlib/docs/docs/guipics/text_grid.png b/ml/dlib/docs/docs/guipics/text_grid.png deleted file mode 100644 index 8b823af72..000000000 Binary files a/ml/dlib/docs/docs/guipics/text_grid.png and /dev/null differ diff --git a/ml/dlib/docs/docs/heatmap.png b/ml/dlib/docs/docs/heatmap.png deleted file mode 100644 index d4bb4cab4..000000000 Binary files a/ml/dlib/docs/docs/heatmap.png and /dev/null differ diff --git a/ml/dlib/docs/docs/howto_contribute.xml b/ml/dlib/docs/docs/howto_contribute.xml deleted file mode 100644 index 3cf4a4209..000000000 --- a/ml/dlib/docs/docs/howto_contribute.xml +++ /dev/null @@ -1,604 +0,0 @@ - - - - - How to Contribute - - - - - - - - - - -

    Contributing Money

    - - The simplest way to contribute is to donate money via Zelle or PayPal - to davis@dlib.net. Any amount is appreciated :) - - -

    Contributing Code

    - - Code contributions are welcome and can be done by submitting a pull request - to dlib's github page. - -

    If you want to make a big change or feature addition, it's probably a good idea to talk to me about it first. - Additionally, you should read over the coding guidelines below - and try to follow them. It is also probably a good idea to read the books Effective C++ and - More Effective C++ by Scott Meyers. -

    - - -

    Coding Guidelines

    - - 1. Use Design by Contract
    - 2. Use spaces instead of tabs.
    - 3. Use the standard C++ naming convention
    - 4. Use RAII
    - 5. Don't use pointers
    - 6. Don't use #define for constants.
    - 7. Don't use stack based arrays.
    - 8. Use exceptions, but don't abuse them
    - 9. Write portable code
    - 10. Setup regression tests
    - 11. Use the Boost Software License
    - - -
      - - 1 -
    • Apply Design by Contract to Your Code

      -

        - The most important part of a software library isn't the code, it is the set - of interfaces the library exposes to the user. These interfaces need to be easy - to use right, and hard to use wrong. The only way this - happens is if the interfaces are documented in a simple, consistent, and precise way. -

        -

        - The name for the way I design and document these interfaces is known as - Design by Contract. There is a lot that can be said about Design by Contract, in fact, - whole books have been written about it, and programming languages exist which - use Design by Contract as a central element. Here I will just go over some - of the basic ways it is used in dlib as well as some of the reasons why it is a - Good Thing. -

        -
      • Functions should have documented preconditions which are programmatically verifiable -
          -

          - Many functions have a set of requirements or preconditions that need to be satisfied - if they are to be used. If these requirements are not satisfied - when a function is called then the function will not do what it is supposed to do. Moreover, - any piece of software that calls a function but doesn't make sure all preconditions - are satisfied contains a bug, by definition. -

          -

          - This means all functions must precisely document their preconditions if they are to be - usable. In fact, all preconditions should be programmatically verifiable. Doing this - has a number of benefits. First, it means they are unambiguous. English - can be confusing and vague, but saying "some_predicate == true" uses a - formal language, C++, that we all should understand quite well. Second, it means - you can put checks into the code that will catch all usage errors. -

          -

          - These checks should always be implemented using - DLIB_ASSERT or - DLIB_CASSERT and they should always - cover all preconditions. - These macros take a boolean argument and if it is false they throw dlib::fatal_error. So - you can use them to check that all your preconditions are true. Also, don't forget that - a violated function precondition indicates a bug in a program. - That is, when dlib::fatal_error is thrown it means a bug has been found and the only thing - an application can do at that point is print an error message and terminate. - In fact, dlib::fatal_error has checks in it to make sure someone doesn't catch the - exception and ignore it. These checks will abruptly terminate any program that attempts - to ignore fatal errors. -

          -

          - The above considerations bring me to my next bit of advice. Developers new to Design by Contract - often confuse input validation requirements with function preconditions. When I tell them - to consider any violation of a function's preconditions a bug and terminate their application - with an error message they complain that this is not at all what an application should do when - it receives invalid user inputs. - - They are right, that would be a bad thing - and you should not write software that behaves that way. The way out of this problem is, of - course, to not consider invalid input as a bug. Instead, you should perform explicit input validation - on any - data coming into your program before it gets to any functions that have preconditions - which demand the validated inputs. Moreover, if you make your preconditions programmatically verifiable - then it should be easy to validate any inputs by simply using whatever it is you - use to check your preconditions. -

          -

          - Consider the function cross_validate_trainer as an - example. One of its requirements is that the input forms a valid binary classification problem. - This is documented in the list of preconditions as - "is_binary_classification_problem(x,y) == true". This precondition is just saying - that when you call - the is_binary_classification_problem - function on the x and y inputs it had better return true - if you want to use those inputs with the cross_validate_trainer function. - Given this information it is trivial to perform input validation. All you have to do is - call is_binary_classification_problem on your input data and you are done. -

          -

          - Using the above technique you have validated your inputs, documented your preconditions, and are - buffered by DLIB_ASSERT statements that will catch you if you accidentally forget to validate any - inputs. -

          -

          The thing to understand here is that - a violation of a function's preconditions means you have a bug on your hands. Or in other words, - you should never intentionally violate any function preconditions. But of course - it will happen from time to time because bugs are unavoidable. But at least with - this approach you will get a detailed error message early in development rather than a - mysterious segmentation fault days or weeks later. -

          -
      • -
      • Functions should have documented postconditions -

          - I don't have nearly as much to say about postconditions as I did about function requirements. You should - strive to write programmatically verifiable postconditions because that makes your postconditions - more precise. However, it is sometimes the case that this isn't practical and that is fine. - But whatever you do write needs to clearly communicate to the - user what it is your function does. -

      • -

        - Now you may be wondering why this is called Design by Contract and not Documentation - by Contract. The reason is that the process of writing down all these detailed descriptions - of what your code does becomes part of how you design software. For example, often you - will find that when you go to write down the requirements for calling a function you are unable - to do so. This may be because the requirements are so complex you can't think of a way - to describe them, or you may realize that you don't even know what they are. Alternatively, - you may know what they are but discover there isn't any way to verify them programmatically. All these - things are symptoms of a bad design and the reason you became aware of this design problem - was by attempting to apply Design by Contract. -

        -

        - After you get enough practice with this way of writing software you begin to think a lot - more about questions like "how can I design this class such that every member function - has a very simple set of requirements and postconditions?" Once you start doing this - you are well on your way to creating software components that are easy to use right, and - hard to use wrong. -

        -

        - The notation dlib uses to document preconditions and postconditions is described in - the introduction. All code that goes into dlib - must document itself using this notation. You should also separate the implementation - and specification of a component into two separate files as described in the introduction. This - way users aren't confused or distracted by implementation details when they look at the documentation. -

        -
      -
    • - - - - 2 -
    • Use spaces instead of tabs.

      -

        This is just generally good advice but - it is especially important in dlib since everything is viewable - as pretty-printed HTML. Tabs show up as 8 characters in most browsers - and this results in the HTML version being difficult to read. So - don't use tabs. Additionally, please use 4 spaces for each tab level.

        -
    • - - - - - 3 -
    • Don't use capitol letters in the names of variables, functions, or - classes. Use the _ character to separate words.

      -
        -

        - The reason dlib uses this style is because it is the style used by the - C++ standard library. But more importantly, dlib currently provides - an interface to users that has a consistent look and feel and it is - important to continue to do so. -

        -

        - As for constants, they should usually contain all upper case letters - but all lowercase is ok sometimes. -

        -
    • - - - 4 -
    • Don't use manual resource management. Use RAII - instead.

      -

        - You should not be calling new and delete in your own code. You should instead - be using objects like the std::vector, std::shared_ptr, - or any number of other objects that manage resources such as memory for you. If you want - an array use std::vector (or the checked std_vector_c). - If you want to make a lookup table use a map. If you want - a two dimensional array use matrix or - array2d. -

        -

        - These container objects are examples of what is called RAII (Resource Acquisition Is Initialization) - in C++. It is essentially a name for the fact that, in C++, you can have totally automated and - deterministic resource management by always associating resource acquisition with the construction - of an object and resource release with the destruction of an object. I say resource management - here rather than memory management - because, unlike Java, RAII can be used for more than memory management. For example, when - you use a mutex you first lock - it, do something, and then you need to remember to unlock it. The RAII way of doing this is - to use the auto_mutex which will lock a mutex and automatically - unlock it for you. Or suppose you have made a TCP connection - to another machine and you want to be certain the resources associated with that connection - are always released. You can easily accomplish this with RAII by using the std::unique_ptr as - shown in this example program. -

        -

        - RAII is a trivial technique to use. All you have to do is not call new and delete and - you will never have another memory leak. Just use the appropriate container - instead. Finally, if you don't use RAII then your code is almost certainly not exception safe. -

        -
      -
    • - - - 5 -
    • Don't use pointers

      -

        - There are a number of reasons to not use pointers. First, if you are using pointers then - you are probably not using RAII. Second, pointers are ambiguous. When I see a pointer - I don't know if it is a pointer to a single item, a pointer to nothing, or - a pointer to an array of who knows how many things. On the other hand, when I see a - std::vector I know with certainty that I'm dealing with a kind of array. Or if I see a - reference to something then I know I'm dealing with exactly one instance of some object. -

        -

        - Most importantly, it is impossible to validate the state of a pointer. Consider two - functions: - -double compute_sum_of_array_elements(const double* array, int array_size); -double compute_sum_of_array_elements(const std::vector<double>& array); - - The first function is inherently unsafe. If the user accidentally passes in an invalid pointer - or sets the size argument incorrectly then their program may crash and this will turn into a - potentially hard to find bug. This is because there is absolutely nothing you can do inside - the first function to tell the difference between a valid pointer and size pair and an invalid - pointer and size pair. Nothing. The second function has none of these difficulties. -

        -

        - If you absolutely need pointer semantics then you can usually use a smart pointer like - std::unique_ptr or std::shared_ptr. - If that still isn't good enough for you and you really need to use a normal C style pointer - then isolate your pointers inside a class or function so that they are contained in a small area of the code. - However, in practice the container classes in dlib and the STL are more than sufficient in nearly - every case where pointers would otherwise be used. -

        -
      -
    • - - - 6 -
    • Don't use #define for constants.

      -

        - dlib is meant to be integrated into other people's projects. Because of this everything - in dlib is contained inside the dlib namespace to avoid naming conflicts with user's code. - #defines don't respect namespaces at all. For example, if you #define a constant called SIZE then it - will cause a conflict with any piece of code anywhere that contains the identifier SIZE. - This means that #define based constants must be avoided and constants should be created using the - const keyword instead. -

        -
      -
    • - - - 7 -
    • Don't use stack based arrays.

      -

        - A stack based array, or C style array, is an array declared like this: - int array[200]; - Most of my criticisms of pointers also apply to stack based arrays. In particular, - if you are passing a stack based array to a function then that means you are probably - using functions similar to the unsafe compute_sum_of_array_elements() example above. -

        -

        - The only time it is OK to use this kind of array is when you use it for simple - tasks and you don't start passing pointers to the array to other parts of your code. You - should also use a constant to store the array size and use that constant in your loops - rather than hard coding the size in numerous places. -

        -

        - But even still, you should use a container class instead and preferably one with the ability to do range - checking such as the std_vector_c.

        -

        - Consider the following two bits of code: - -for (int i = 0; i < array_size; ++i) - my_c_array[i] = 4; - -for (int i = 0; i < my_std_vector.size(); ++i) - my_std_vector[i] = 4; - - The second loop clearly doesn't overflow the bounds of the my_std_vector. On the other - hand, just by looking at the code in the first loop, we can not tell if it overflows - my_c_array. We have to assume that array_size is the appropriate constant but we could be wrong. -

        -

        - Buffer overflows are probably the most common kind of bug in C and C++ code. These bugs also - lead to serious exploitable security holes in software. So please try to avoid stack based arrays. -

        -
      -
    • - - - - - 8 -
    • Use exceptions, but don't abuse them.

      -
        -

        - Exceptions are one of the great features of modern programming languages. Some - people, however, consider that to be a contentious statement. But if you accept - the notion that a software library should be hard to use wrong then it - becomes difficult to reject exceptions. -

        -

        - Most of the complaints I hear about exceptions are actually complaints - about their misuse rather than objections to the basic idea. - So before I begin to defend the above - paragraph I would like to lay out more clearly when it is appropriate to - use exceptions and when it is not. -

        -

        - There are two basic questions you should ask yourself when deciding whether to - throw an exception in response to some event. The first is (1) "should this event - occur in the normal use of my library component?" The second question is (2) "if this event - were to occur, is it likely that the user will want to place the code for dealing - with the event near the invocations of my library component?" -

        -

        - If your answers to the above two questions are "no" then you should probably - throw an exception in response to the event. On the other hand, if you answer - "yes" to either of these questions then you should probably not throw an exception. -

        - -

        - A good example of an event worth throwing exceptions for is running out of memory. - (1) It doesn't happen very often, and (2) when it does happen it is hardly ever the case that - you want to deal with the out of memory event right next to the place where you are - attempting to allocate memory. -

        -

        - Alternatively, an example of an event that shouldn't throw an exception comes to - us from the C++ I/O streams. This part of the standard library allows - you to read the contents of a file from disk. When you hit the end of file they - do not throw an exception. This is appropriate because (1) you usually want to - read a file in its entirety. So hitting EOF happens all the time. Additionally, (2) - when you hit EOF you usually want to break out of the loop you are in - and continue immediately into the next block of code. -

        -

        - Usually when someone tells me they don't like exceptions they give reasons like "they make - me put try/catch blocks all over the place and it makes the code hard to read." Or "it makes - it hard to understand the flow of a program with exceptions in it." Invariably they - have been working with bodies of software that disregard the above rules regarding questions - 1 and 2. Indeed, when exceptions are used for flow control the results are horrifying. Using - exceptions for events that occur in the normal use of a software component, especially when - the events need to be dealt with near where they happen result in a spaghetti-like mess - of throw statements and try/catch blocks. Clearly, exceptions should be used judiciously. - So please, take my advice regarding questions 1 and 2 to heart. -

        -

        - Now let's go back to my claim that exceptions are an important part of making - a library that is hard to use wrong. But first let's be honest about one thing, - many developers don't think very hard about error handling and they similarly aren't very - careful about checking function return codes. Moreover, even the most studious of - us can easily forget to add these checks. It is also easy to forget to add - appropriate exception catch blocks. -

        -

        - So what is so great about exceptions then? Well, let's imagine some error just occurred - and it caused an exception to be thrown. If you forgot to setup catch blocks to deal with - the error then your program will be aborted. Not exactly a great thing. But you will, however, - be able to easily find out what exception was thrown. Additionally, exceptions typically contain a - message telling you all about the error. Moreover, - any debugger worth its - salt will be able to show you a stack trace that lets you see exactly where the exception came from. - The exception forces you, the user, to - be aware of this potential error and to add a catch block to deal with it. - This is where the "hard to use wrong" comes from. -

        -

        - Now let's imagine that we are using return codes to communicate errors to the user and the - same error occurs. If you forgot to do all your return code checking then you will - simply be unaware of the error. Maybe your program will crash right away. But more likely, it - will continue to run for a while before crashing at some random place far away from the source - of the error. You and your debugger now get to spend a few hours of quality time - together trying to figure out what went wrong. -

        -

        - The above considerations are why I maintain that exceptions, when used properly, contribute to - the "hard to use wrong" factor of a library. There are also other reasons to use exceptions. - They free the user from needing to clutter up code with lots of return code checking. This makes - code easier to read and let's you focus more on the algorithm you are trying to implement and less - on the bookkeeping. -

        -

        - Finally, it is important to note that there is a place for return codes. When you answer "no" - to questions 1 and 2, I suggest using exceptions. However, if you answer "yes" to even one - of them then I would recommend pretty much anything other than throwing an exception. In this - case error codes are often an excellent idea. -

        - - -

        - As an aside, it is also important that your exception classes inherit from - dlib::error to maintain consistency with the rest of the library. -

        -
      -
    • - - - - 9 -
    • Write portable code

      -
        -
      • Don't complicate the build process -

          - One of dlib's design goals is to not require any installation - process before it can be used. A user should be able to copy - the dlib folder into their project and have it just work. -

          -

          - In particular, using dlib in a project should not make it difficult to - compile the project from the command line. For example, all the - example programs provided with dlib can be compiled using a single - statement on the command line. -

          -

          - Similarly, the user should be able to check the dlib folder into whatever - version control system they use without running into any difficulties. - The user should then be able to check out copies of the code on any - of the dlib supported platforms and have their project build without - needing to mess with anything. -

          -
      • -
      • Don't make assumptions about how objects are laid out in memory. -

          - If you have been following the prohibition against messing around with - pointers then this won't even be an issue for you. Moreover, just about the only - time this should even come up is when you are casting blocks of - memory into other types or dumping the contents of memory to an I/O channel. - All of these things are highly non-portable so don't do them. -

          -

          - If you want a portable way to write the state of an object to an - I/O channel then I recommend you use the serialization - capability in dlib. If that doesn't suit your needs then do - something else, but whatever you do don't just dump the contents of memory. - Convert your data into some portable format and then output that. -

          -

          - As an example of something else you might do: suppose you have a bunch of integers - you want to write to disk. Assuming all your integers are positive numbers representable - using 32 or fewer bits you could store all your numbers in - dlib::uint32 variables and then convert them - into either big or little endian byte order and then write them to an output stream. - You could do this using code similar to the following: - - -dlib::byte_orderer bo; -... -bo.host_to_big(my_uint); -my_out_stream.write((char*)&my_uint, sizeof(my_uint)); -... - -

          - There are three important things to understand about this process. First, you need - to pick variables that always have the same size on all platforms. This means you - can't use any of the built in C++ types like int, float, double, long, etc. All - of these types have different sizes depending on your platform and even compiler settings. - So you need to use something like dlib::uint32 to obtain a type of a known size. -

          -

          - Second, you need to convert each thing you write out into either big or little endian byte order. - The reason for this is, again, portability. If you don't explicitly convert to one - of these byte orders then you end up writing data out using whatever byte order - is used by your current machine. If you do this then only machines that have the same - byte order as yours will be able to read in your data. If you use the dlib::byte_orderer - object this is easy. It is very type safe. In fact, you should have a hard time even getting - it to compile if you use it wrong. -

          -

          - The third thing you should understand is that you need to write out each of your - variables one at a time. You can't write out an entire struct in a - single ostream.write() statement because the compiler is allowed to put any - kind of padding it feels like between the fields in a struct. -

          -

          - You may be aware that compilers usually provide #pragma directives that allow you - to explicitly control this padding. However, if you want to submit code to dlib - you will not use this feature. Not all compilers support it in the same way and, - more importantly, not all CPU architectures are even capable of running code that - has had the padding messed with. This is because it can result in the CPU attempting - to perform what is called an "unaligned load" which many CPUs (like the SPARC) are - incapable of doing. -

          -

          - So in summary, convert your data into a known type with a fixed size, then convert - into a specific byte order (like big endian), then write out each variable individually. - Or you could just use serialize and not worry about all - this horrible stuff. :) -

          - -

          -
        -
      • - -
      • All code that calls functions that aren't in dlib or the C++ - standard library must be isolated inside the API wrappers. -

          - If you want to contribute code to dlib which needs to use something that isn't - in the C++ standard then we need to introduce a new library component - in the API wrappers section. The new component would - provide whatever functionality you need. This new component would have - to provide at least POSIX and win32 implementations. -

          -

          - It is also worth pointing out that simple wrappers around operating system - specific calls are usually a bad solution. This is because there are - invariably subtle, if not huge, differences between what is available on different - operating systems. - So being truly portable takes a lot of work. It involves reading everything - you can find about all the APIs needed to implement the feature on each target platform. - In many cases there will be important details that are undocumented and you will - only be able to find out about them by searching the internet for other developers - complaining about bugs in API functions X, Y, and Z. All this stuff needs to be abstracted - away to put a portable and simple interface in front of it. So this is a task - that shouldn't be taken lightly. -

          -
        -
      • -
    • - - - - 10 -
    • Library components should have regression tests

      -
        -

        - dlib has a regression test suite located in - the dlib/test folder. Whenever possible, library components should have tests - associated with them. GUI components get a pass since it isn't very easy to setup - automatic tests for them but pretty much everything else should have some sort - of test. -

        -
      -
    • - - - 11 -
    • You must use the Boost Software License

      -
        -

        - Having the library use more than one open source license is confusing - so I ask that any code contributions be licensed under the Boost Software - License. -

        -
      -
    • - - -
    - - - - - - - - - - - - - - -
    - diff --git a/ml/dlib/docs/docs/imaging.xml b/ml/dlib/docs/docs/imaging.xml deleted file mode 100644 index 2fef49e73..000000000 --- a/ml/dlib/docs/docs/imaging.xml +++ /dev/null @@ -1,2608 +0,0 @@ - - - - - Image Processing - - - - - -

    - This page documents the functionality present in this library that deals with the - management and manipulation of images. One thing to note is that there is no - explicit image object. Instead, everything deals with - array2d objects that contain various kinds of pixels or user defined - generic image objects. -

    - - -

    -

    Pixel Types

    - Most image handling routines in dlib will accept images containing any pixel type. - This is made possible by defining a traits class, pixel_traits, for - each possible pixel type. This traits class enables image processing routines to determine - how to handle each kind of pixel and therefore only pixels which have a pixel_traits definition - may be used. The following list defines all the pixel types which come with pixel_traits definitions. -
      -
    • RGB -
        There are two RGB pixel types in dlib, rgb_pixel and bgr_pixel. - Each defines a 24bit RGB pixel type. The bgr_pixel is identical to rgb_pixel except that it lays - the color channels down in memory in BGR order rather than RGB order and is therefore useful - for interfacing with other image processing tools which expect this format (e.g. OpenCV).
      -
    • -
    • RGB Alpha -
        The rgb_alpha_pixel is an 8bit per channel RGB pixel with an 8bit alpha channel.
      -
    • -
    • HSI -
        The hsi_pixel is a 24bit pixel which represents a point in the Hue Saturation Intensity - (HSI) color space.
      -
    • -
    • LAB -
        The lab_pixel is a 24bit pixel which represents a point in the CIELab color space.
      -
    • -
    • Grayscale -
        Any built in scalar type may be used as a grayscale pixel type. For example, unsigned char, int, double, etc.
      -
    • -
    -

    - -

    -

    Object Detection

    - If you want to create object detectors then try the - scan_fhog_pyramid tool first. It is quite - easy to use and train and will, in many cases, give excellent results. If that - doesn't give good results then try the more powerful - convolutional neural network based detector. -

    - - - - - - - - -
    - Pixels - rgb_pixel - bgr_pixel - rgb_alpha_pixel - hsi_pixel - lab_pixel - pixel_traits - get_pixel_intensity - assign_pixel - assign_pixel_intensity -
    - -
    - Image I/O - jpeg_loader - load_bmp - load_dng - load_image - load_jpeg - load_png - png_loader - save_bmp - save_dng - save_png - save_jpeg -
    - -
    - Object Detection - get_frontal_face_detector - object_detector - evaluate_detectors - full_object_detection - mmod_rect - scan_image - scan_image_movable_parts - find_points_above_thresh - scan_image_pyramid - scan_image_boxes - scan_fhog_pyramid - scan_image_custom - find_candidate_object_locations - test_box_overlap - remove_unobtainable_rectangles - setup_hashed_features - correlation_tracker - - Scan Image Pyramid Tools - - compute_box_dimensions - create_single_box_detection_template - create_overlapped_2x2_detection_template - create_grid_detection_template - - determine_object_boxes - setup_grid_detection_templates - setup_grid_detection_templates_verbose - - -
    - -
    - Feature Extraction - get_surf_points - shape_predictor - - SURF Tools - - hessian_pyramid - compute_surf_descriptor - haar_x - haar_y - get_interest_points - interest_point - surf_point - compute_dominant_angle - draw_surf_points - - - - hog_image - extract_fhog_features - fine_hog_image - poly_image - hashed_feature_image - binned_vector_feature_image - nearest_neighbor_feature_image - randomly_sample_image_features - - make_uniform_lbp_image - extract_histogram_descriptors - extract_uniform_lbp_descriptors - extract_highdim_face_lbp_descriptors -
    - - -
    - Edges and Thresholds - edge_orientation - hysteresis_threshold - sobel_edge_detector - suppress_non_maximum_edges - threshold_image - auto_threshold_image - hough_transform -
    - -
    - Morphology - label_connected_blobs - segment_image - binary_dilation - binary_erosion - binary_open - binary_close - binary_intersection - binary_union - binary_difference - binary_complement - skeleton -
    - -
    - Filtering - gaussian_blur - spatially_filter_image - spatially_filter_image_separable - float_spatially_filter_image_separable - separable_3x3_filter_block_grayscale - separable_3x3_filter_block_rgb - sum_filter - sum_filter_assign - max_filter - spatially_filter_image_separable_down -
    - -
    - Scaling and Rotating - pyramid_up - pyramid_down - pyramid_disable - create_tiled_pyramid - - interpolate_nearest_neighbor - interpolate_bilinear - interpolate_quadratic - transform_image - rotate_image - resize_image - flip_image_left_right - flip_image_up_down - add_image_left_right_flips - add_image_rotations - upsample_image_dataset - flip_image_dataset_left_right - rotate_image_dataset - extract_image_chips - random_cropper - jitter_image - sub_image -
    - -
    - Visualization - randomly_color_image - heatmap - jet - render_face_detections - draw_line - draw_solid_circle - draw_surf_points - draw_rectangle - tile_images - draw_fhog - fill_rect -
    - -
    - Miscellaneous - cv_image - toMat - assign_image - assign_image_scaled - assign_all_pixels - assign_border_pixels - equalize_histogram - get_histogram - zero_border_pixels - integral_image - integral_image_generic - disturb_colors - random_color_transform - -
    - -
    -
    - - - - - - - - - - - hough_transform - dlib/image_transforms.h - dlib/image_transforms/hough_transform_abstract.h - - This object is a tool for computing the line finding version of - the Hough transform given some kind of edge detection image as - input. It also allows the edge pixels to be weighted such that - higher weighted edge pixels contribute correspondingly more to - the output of the Hough transform, allowing stronger edges to - create correspondingly stronger line detections in the final - Hough transform. - - - hough_transform_ex.cpp.html - - - - - - - - skeleton - dlib/image_transforms.h - dlib/image_transforms/morphological_operations_abstract.h - - This function computes the skeletonization of an image. That is, - given a binary image, we progressively thin the binary blobs - until only a single pixel wide skeleton of the original blobs - remains. - - - - - - - disturb_colors - dlib/image_transforms.h - dlib/image_transforms/random_color_transform_abstract.h - - Applies a random color transform an image. This is done by - creating a random_color_transform with the given parameters and then - transforming each pixel in the image with the resulting transform. - - - - - - - random_color_transform - dlib/image_transforms.h - dlib/image_transforms/random_color_transform_abstract.h - - This object generates a random color balancing and gamma correction - transform. It then allows you to apply that specific transform to as many - rgb_pixel objects as you like. - - - - - - - integral_image_generic - dlib/image_transforms.h - dlib/image_transforms/integral_image_abstract.h - - This object is an alternate way of representing image data - that allows for very fast computations of sums of pixels in - rectangular regions. To use this object you load it with a - normal image and then you can use the get_sum_of_area() - member function to compute sums of pixels in a given area in - constant time. - - - - - - - - integral_image - dlib/image_transforms.h - dlib/image_transforms/integral_image_abstract.h - - This is a specialization of the integral_image_generic - template for the case where sums of pixel values should be represented with - longs. E.g. if you use 8bit pixels in your original images then this is - the appropriate kind of integral image to use with them. - - - - - - - - haar_x - dlib/image_transforms.h - dlib/image_transforms/integral_image_abstract.h - - This is a function that operates on an integral_image - and allows you to compute the response of a Haar wavelet oriented along - the X axis. - - - - - - - - haar_y - dlib/image_transforms.h - dlib/image_transforms/integral_image_abstract.h - - This is a function that operates on an integral_image - and allows you to compute the response of a Haar wavelet oriented along - the Y axis. - - - - - - - - draw_surf_points - dlib/image_keypoint/draw_surf_points.h - dlib/image_keypoint/draw_surf_points_abstract.h - - This routine adds a bunch of surf_point objects onto - an image_window - object so they can be visualized. - - - surf_ex.cpp.html - - - - - - - - compute_dominant_angle - dlib/image_keypoint.h - dlib/image_keypoint/surf_abstract.h - - Computes and returns the dominant angle (i.e. the angle of the dominant gradient) - at a given point and scale in an image. This function is part of the - main processing of the SURF algorithm. - - - - - - - - get_surf_points - dlib/image_keypoint.h - dlib/image_keypoint/surf_abstract.h - - This function runs the complete SURF algorithm on an input image and - returns the points it found. For a description of what exactly - the SURF algorithm does you should read the following paper: -
    - SURF: Speeded Up Robust Features - By Herbert Bay, Tinne Tuytelaars, and Luc Van Gool -
    -

    - Also note that there are numerous flavors of the SURF algorithm - you can put together using the functions in dlib. The get_surf_points() - function is just an example of one way you might do so. -

    -
    - - surf_ex.cpp.html - - -
    - - - - - shape_predictor - dlib/image_processing.h - dlib/image_processing/shape_predictor_abstract.h - - This object is a tool that takes in an image region containing some object - and outputs a set of point locations that define the pose of the - object. The classic example of this is human face pose prediction, where - you take an image of a human face as input and are expected to identify the - locations of important facial landmarks such as the corners of the mouth - and eyes, tip of the nose, and so forth. For example, here is the output - of dlib's 68-face-landmark shape_predictor on an image from the HELEN dataset:

    - - -

    - - To create useful instantiations of this object you need to use the - shape_predictor_trainer object to train a - shape_predictor using a set of training images, each annotated with shapes you want to predict. - To do this, the shape_predictor_trainer uses the state-of-the-art method from the - paper: -
    - One Millisecond Face Alignment with an Ensemble of Regression Trees - by Vahid Kazemi and Josephine Sullivan, CVPR 2014 -
    -
    - - face_landmark_detection_ex.cpp.html - train_shape_predictor_ex.cpp.html - webcam_face_pose_ex.cpp.html - - train_shape_predictor.py.html - face_landmark_detection.py.html - face_alignment.py.html - - -
    - - - - - compute_surf_descriptor - dlib/image_keypoint.h - dlib/image_keypoint/surf_abstract.h - - Computes the 64 dimensional SURF descriptor vector of a box centered - at a given center point, tilted at a given angle, and sized according to - a given scale. - - - - - - - - hog_image - dlib/image_keypoint.h - dlib/image_keypoint/hog_abstract.h - - This object is a tool for performing the image feature extraction algorithm - described in the following paper: -
    - Histograms of Oriented Gradients for Human Detection - by Navneet Dalal and Bill Triggs -
    -
    - - object_detector_ex.cpp.html - train_object_detector.cpp.html - - -
    - - - - - extract_fhog_features - dlib/image_transforms.h - dlib/image_transforms/fhog_abstract.h - - This function implements the HOG feature extraction method described in - the paper: -
    - Object Detection with Discriminatively Trained Part Based Models by - P. Felzenszwalb, R. Girshick, D. McAllester, D. Ramanan - in IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 32, No. 9, Sep. 2010 -
    - This means that it takes an input image and outputs Felzenszwalb's - 31 dimensional version of HOG features. -
    - - fhog_ex.cpp.html - - -
    - - - - - fine_hog_image - dlib/image_keypoint.h - dlib/image_keypoint/fine_hog_image_abstract.h - - This object is a version of the hog_image that - allows you to extract HOG features at a finer resolution. - - - - - - - - poly_image - dlib/image_keypoint.h - dlib/image_keypoint/poly_image_abstract.h - - This object is a tool for extracting local feature descriptors from an image. - In particular, it fits polynomials to local pixel patches and - allows you to query the coefficients of these polynomials. - - - - - - - - hashed_feature_image - dlib/image_keypoint.h - dlib/image_keypoint/hashed_feature_image_abstract.h - - This object is a tool for performing image feature extraction. In - particular, it wraps another image feature extractor and converts - the wrapped image feature vectors into sparse indicator vectors. It does - this by hashing each feature vector and then returns a new vector - which is zero everywhere except for the position determined by the - hash. - -

    - The following feature extractors can be wrapped by the hashed_feature_image: - -
    - - object_detector_ex.cpp.html - train_object_detector.cpp.html - - -
    - - - - - binned_vector_feature_image - dlib/image_keypoint.h - dlib/image_keypoint/binned_vector_feature_image_abstract.h - - This object is a tool for performing image feature extraction. In - particular, it wraps another image feature extractor and converts the - wrapped image feature vectors into a high dimensional sparse vector. For - example, if the lower level feature extractor outputs the vector [3,4,5] - and this vector is hashed into the second bin of four bins then the output - sparse vector is: -
    - [0,0,0,0, 3,4,5,1, 0,0,0,0, 0,0,0,0]. -
    - That is, the output vector has a dimensionality that is equal to the number - of hash bins times the dimensionality of the lower level vector plus one. - The value in the extra dimension concatenated onto the end of the vector is - always a constant value of of 1 and serves as a bias value. This means - that, if there are N hash bins, these vectors are capable of representing N - different linear functions, each operating on the vectors that fall into - their corresponding hash bin. - -

    - The following feature extractors can be wrapped by the binned_vector_feature_image: - -
    -
    - - - - - nearest_neighbor_feature_image - dlib/image_keypoint.h - dlib/image_keypoint/nearest_neighbor_feature_image_abstract.h - - This object is a tool for performing image feature extraction. In - particular, it wraps another image feature extractor and converts - the wrapped image feature vectors into sparse indicator vectors. It does - this by finding the nearest neighbor for each feature vector and returning an - indicator vector that is zero everywhere except for the position indicated by - the nearest neighbor. - -

    - The following feature extractors can be wrapped by the nearest_neighbor_feature_image: - -
    - -
    - - - - - hessian_pyramid - dlib/image_keypoint.h - dlib/image_keypoint/hessian_pyramid_abstract.h - - This object represents an image pyramid where each level in the - pyramid holds determinants of Hessian matrices for the original - input image. This object can be used to find stable interest - points in an image. - -

    - This object is an implementation of the fast Hessian pyramid - as described in the paper: -
    - SURF: Speeded Up Robust Features - By Herbert Bay, Tinne Tuytelaars, and Luc Van Gool -
    - - This implementation was also influenced by the very well documented - OpenSURF library and its corresponding description of how the fast - Hessian algorithm functions: -
    Notes on the OpenSURF Library by Christopher Evans
    -
    - -
    - - - - - get_interest_points - dlib/image_keypoint.h - dlib/image_keypoint/hessian_pyramid_abstract.h - - This function extracts interest points from a hessian_pyramid. - - - - - - - - interest_point - dlib/image_keypoint.h - dlib/image_keypoint/hessian_pyramid_abstract.h - - This is a simple struct used to represent the interest points returned - by the get_interest_points function. - - - - - - - - surf_point - dlib/image_keypoint.h - dlib/image_keypoint/surf_abstract.h - - This is a simple struct used to represent the SURF points returned - by the get_surf_points function. - - - surf_ex.cpp.html - - - - - - - - pixel_traits - dlib/pixel.h - dlib/pixel.h - - As the name implies, this is a traits class for pixel types. It allows you - to determine what sort of pixel type you are dealing with. - - - - - - - - hsi_pixel - dlib/pixel.h - dlib/pixel.h - - This is a simple struct that represents a HSI colored graphical pixel. - - - - - - - - lab_pixel - dlib/pixel.h - dlib/pixel.h - - This is a simple struct that represents a CIELab colored graphical pixel. - - - - - - - - rgb_alpha_pixel - dlib/pixel.h - dlib/pixel.h - - This is a simple struct that represents an RGB colored graphical pixel with an - alpha channel. - - - - - - - - rgb_pixel - dlib/pixel.h - dlib/pixel.h - - This is a simple struct that represents an RGB colored graphical pixel. - - - - - - - - bgr_pixel - dlib/pixel.h - dlib/pixel.h - - This is a simple struct that represents a BGR colored graphical pixel. -

    - The difference between this object and the rgb_pixel - is just that this struct lays its pixels down in memory in BGR order rather - than RGB order. You only care about this if you are doing something like - using the cv_image object to map an OpenCV image - into a more object oriented form. -

    -
    - -
    - - - - - cv_image - dlib/opencv.h - dlib/opencv/cv_image_abstract.h - - This object is meant to be used as a simple wrapper around the OpenCV - IplImage struct or Mat object. Using this class template you can turn - an OpenCV image into something that looks like a normal dlib style - image object. - -

    - So you should be able to use cv_image objects with many of the image - processing functions in dlib as well as the GUI tools for displaying - images on the screen. -

    - -

    - Note that you can do the reverse conversion, from dlib to OpenCV, - using the toMat routine. -

    -
    - - webcam_face_pose_ex.cpp.html - - -
    - - - - - toMat - dlib/opencv.h - dlib/opencv/to_open_cv_abstract.h - - This routine converts a dlib style image into an instance of OpenCV's cv::Mat object. - This is done by setting up the Mat object to point to the same memory as the dlib image. -

    - Note that you can do the reverse conversion, from OpenCV to dlib, - using the cv_image object. -

    -
    - -
    - - - - - heatmap - dlib/image_transforms.h - dlib/image_transforms/colormaps_abstract.h - - Converts a grayscale image into a heatmap. This is useful if you want - to display a grayscale image with more than 256 values. In particular, - this function uses the following color mapping: -
    -
    - - image_ex.cpp.html - - -
    - - - - - jet - dlib/image_transforms.h - dlib/image_transforms/colormaps_abstract.h - - Converts a grayscale image into an image using the jet color - scheme. This is useful if you want to display a grayscale image - with more than 256 values. In particular, this function uses the - following color mapping: -
    -
    - -
    - - - - - randomly_color_image - dlib/image_transforms.h - dlib/image_transforms/colormaps_abstract.h - - Randomly generates a mapping from gray level pixel values - to the RGB pixel space and then uses this mapping to create - a colored version an image. -

    - This function is useful for displaying the results of some image - segmentation. For example, the output of label_connected_blobs - or segment_image. -

    -
    - -
    - - - - - assign_pixel - dlib/pixel.h - dlib/pixel.h - - assign_pixel() is a templated function that can assign any pixel type to another pixel type. - It will perform whatever conversion is necessary to make the assignment work. (E.g. color to - grayscale conversion) - - - - - - - - assign_pixel_intensity - dlib/pixel.h - dlib/pixel.h - - assign_pixel_intensity() is a templated function that can change the - intensity of a pixel. So if the pixel in question is a grayscale pixel - then it simply assigns that pixel the given value. However, if the - pixel is not a grayscale pixel then it converts the pixel to the - HSI color space and sets the I channel to the given intensity - and then converts this HSI value back to the original pixel's - color space. - - - - - - - - get_pixel_intensity - dlib/pixel.h - dlib/pixel.h - - get_pixel_intensity() is a templated function that - returns the grayscale intensity of a pixel. If the pixel isn't a grayscale - pixel then it converts the pixel to grayscale and returns that value. - - - - - - - - png_loader - dlib/image_io.h - dlib/image_loader/png_loader_abstract.h - - This object loads a Portable Network Graphics (PNG) image file into - an array2d of pixels. -

    - Note that you must define DLIB_PNG_SUPPORT if you want to use this object. You - must also set your build environment to link to the libpng library. However, - if you use CMake and dlib's default CMakeLists.txt file then it will get setup - automatically. -

    -
    - -
    - - - - - jpeg_loader - dlib/image_io.h - dlib/image_loader/jpeg_loader_abstract.h - - This object loads a JPEG image file into - an array2d of pixels. -

    - Note that you must define DLIB_JPEG_SUPPORT if you want to use this object. You - must also set your build environment to link to the libjpeg library. However, - if you use CMake and dlib's default CMakeLists.txt file then it will get setup - automatically. -

    -
    - -
    - - - - - load_jpeg - dlib/image_io.h - dlib/image_loader/jpeg_loader_abstract.h - - This function loads a JPEG image file into - an array2d of pixels. -

    - Note that you must define DLIB_JPEG_SUPPORT if you want to use this object. You - must also set your build environment to link to the libjpeg library. However, - if you use CMake and dlib's default CMakeLists.txt file then it will get setup - automatically. -

    -
    - -
    - - - - - load_dng - dlib/image_io.h - dlib/image_loader/image_loader_abstract.h - - This global function loads a dlib DNG file (a lossless compressed image format) into - an array2d of pixels. - - - - - - - - save_dng - dlib/image_io.h - dlib/image_saver/image_saver_abstract.h - - This global function saves an image as a dlib DNG file (a lossless - compressed image format). -

    - This routine can save images containing any type of pixel. However, the DNG format - can natively store only the following pixel types: rgb_pixel, hsi_pixel, - rgb_alpha_pixel, uint8, uint16, float, and double. - All other pixel types will be converted - into one of these types as appropriate before being saved to disk. -

    - -
    - -
    - - - - - save_png - dlib/image_io.h - dlib/image_saver/save_png_abstract.h - - This global function writes an image to disk as a PNG (Portable Network Graphics) file. -

    - Note that you must define DLIB_PNG_SUPPORT if you want to use this function. You - must also set your build environment to link to the libpng library. However, - if you use CMake and dlib's default CMakeLists.txt file then it will get setup - automatically. -

    -

    - This routine can save images containing any type of pixel. However, save_png() can - only natively store the following pixel types: rgb_pixel, - rgb_alpha_pixel, uint8, and uint16. All other pixel - types will be converted into one of these types as appropriate before being - saved to disk. -

    -
    - -
    - - - - - save_jpeg - dlib/image_io.h - dlib/image_saver/save_jpeg_abstract.h - - This global function writes an image to disk as a JPEG file. -

    - Note that you must define DLIB_JPEG_SUPPORT if you want to use this function. You - must also set your build environment to link to the libjpeg library. However, - if you use CMake and dlib's default CMakeLists.txt file then it will get setup - automatically. -

    -

    - This routine can save images containing any type of pixel. However, save_jpeg() can - only natively store the following pixel types: rgb_pixel - and uint8. All other pixel types will be converted into - one of these types as appropriate before being saved to disk. -

    -
    - -
    - - - - - load_image - dlib/image_io.h - dlib/image_loader/load_image_abstract.h - - This global function takes a file name, looks at its extension, and - then loads it into an array2d of - pixels using the appropriate image - loading routine. The supported types are BMP, PNG, JPEG, GIF, and the dlib DNG file format. - -

    - Note that you can only load PNG, JPEG, and GIF files if you link against - libpng, libjpeg, and libgif respectively. You will also need to #define - DLIB_PNG_SUPPORT, DLIB_JPEG_SUPPORT, and DLIB_GIF_SUPPORT. Or use CMake and - it will do all this for you. -

    -
    - - - image_ex.cpp.html - - -
    - - - - - load_bmp - dlib/image_io.h - dlib/image_loader/image_loader_abstract.h - - This global function loads a MS Windows BMP file into an array2d of - pixels. - - - - - - - - load_png - dlib/image_io.h - dlib/image_loader/png_loader_abstract.h - - This function loads a Portable Network Graphics (PNG) image file into - an array2d of pixels. -

    - Note that you must define DLIB_PNG_SUPPORT if you want to use this object. You - must also set your build environment to link to the libpng library. However, - if you use CMake and dlib's default CMakeLists.txt file then it will get setup - automatically. -

    -
    - -
    - - - - - save_bmp - dlib/image_io.h - dlib/image_saver/image_saver_abstract.h - - This global function saves an image as a MS Windows BMP file. - -

    - This routine can save images containing any type of pixel. However, it will - convert all color pixels into rgb_pixel and grayscale pixels into - uint8 type before saving to disk. -

    - -
    - -
    - - - - - draw_line - dlib/image_transforms.h - dlib/image_transforms/draw_abstract.h - - This global function draws a line on an image. - - - - - - - - draw_solid_circle - dlib/image_transforms.h - dlib/image_transforms/draw_abstract.h - - This global function draws a solid circle on an image. - - - - - - - - render_face_detections - dlib/image_processing/render_face_detections.h - dlib/image_processing/render_face_detections_abstract.h - - This function takes a set of full_object_detections - which represent human faces annotated with 68 facial landmarks (according to the iBUG 300-W - scheme) and converts them into a form suitable for display on an - image_window. - -

    - For example, it will take the output of a shape_predictor - that uses this facial landmarking scheme and will produce visualizations like this: -

    - - -
    - - face_landmark_detection_ex.cpp.html - webcam_face_pose_ex.cpp.html - - -
    - - - - - draw_rectangle - dlib/image_transforms.h - dlib/image_transforms/draw_abstract.h - - This global function draws a rectangle on an image. - - - - - - - - tile_images - dlib/image_transforms.h - dlib/image_transforms/draw_abstract.h - - This function takes an array of images and tiles them into a single large - square image and returns this new big tiled image. Therefore, it is a useful - method to visualize many small images at once. - - - - - - - - draw_fhog - dlib/image_transforms.h - dlib/image_transforms/fhog_abstract.h - - This function takes a FHOG feature map which was created by - extract_fhog_features and - converts it into an image suitable for display on the screen. In - particular, we draw all the hog cells into a grayscale image in a - way that shows the magnitude and orientation of the gradient - energy in each cell. - - - fhog_ex.cpp.html - fhog_object_detector_ex.cpp.html - - - - - - - - fill_rect - dlib/image_transforms.h - dlib/image_transforms/draw_abstract.h - - This global function draws a solid rectangle on an image. - - - - - - - - assign_border_pixels - dlib/image_transforms.h - dlib/image_transforms/assign_image_abstract.h - - This global function assigns all the pixels in the border of an image to - a specific value. - - - - - - - - - assign_all_pixels - dlib/image_transforms.h - dlib/image_transforms/assign_image_abstract.h - - This global function assigns all the pixels in an image a specific value. - - - - - - - - assign_image - dlib/image_transforms.h - dlib/image_transforms/assign_image_abstract.h - - This global function copies one image into another and performs any - necessary color space conversions to make it work right. - - - - - - - - assign_image_scaled - dlib/image_transforms.h - dlib/image_transforms/assign_image_abstract.h - - This global function copies one image into another and performs any - necessary color space conversions to make it work right. Additionally, - if the dynamic range of the source image is too big to fit into the destination image - then it will attempt to perform the appropriate scaling. - - - - - - - - get_histogram - dlib/image_transforms.h - dlib/image_transforms/equalize_histogram_abstract.h - - This global function computes an image's histogram and returns it in the - form of a column or row matrix object. - - - - - - - - edge_orientation - dlib/image_transforms.h - dlib/image_transforms/edge_detector_abstract.h - - This global function takes horizontal and vertical gradient magnitude - values and returns the orientation of the gradient. - - - - - - - - - equalize_histogram - dlib/image_transforms.h - dlib/image_transforms/equalize_histogram_abstract.h - - This global function performs histogram equalization on an image. - - - - - - - - hysteresis_threshold - dlib/image_transforms.h - dlib/image_transforms/thresholding_abstract.h - - This global function performs hysteresis thresholding on an image. - - - - - - - - sobel_edge_detector - dlib/image_transforms.h - dlib/image_transforms/edge_detector_abstract.h - - This global function performs spatial filtering on an image using the - sobel edge detection filters. - - - - image_ex.cpp.html - - - - - - - suppress_non_maximum_edges - dlib/image_transforms.h - dlib/image_transforms/edge_detector_abstract.h - - This global function performs non-maximum suppression on a gradient - image. - - - - image_ex.cpp.html - - - - - - - - zero_border_pixels - dlib/image_transforms.h - dlib/image_transforms/assign_image_abstract.h - - This global function zeros the pixels on the border of an image. - - - - - - - - spatially_filter_image - dlib/image_transforms.h - dlib/image_transforms/spatial_filtering_abstract.h - - This global function performs spatial filtering on an image with a user - supplied filter. - - - - - - - - gaussian_blur - dlib/image_transforms.h - dlib/image_transforms/spatial_filtering_abstract.h - - This global function blurs an image by convolving it with a Gaussian filter. - - - - - - - - spatially_filter_image_separable - dlib/image_transforms.h - dlib/image_transforms/spatial_filtering_abstract.h - - This global function performs spatial filtering on an image with a user - supplied separable filter. - - - - - - - - float_spatially_filter_image_separable - dlib/image_transforms.h - dlib/image_transforms/spatial_filtering_abstract.h - - This global function performs spatial filtering on an image with a user - supplied separable filter. It is optimized to work only on float valued - images with float valued filters. - - - - - - - - spatially_filter_image_separable_down - dlib/image_transforms.h - dlib/image_transforms/spatial_filtering_abstract.h - - This global function performs spatial filtering on an image with a user - supplied separable filter. Additionally, it produces a downsampled - output. - - - - - - - - max_filter - dlib/image_transforms.h - dlib/image_transforms/spatial_filtering_abstract.h - - This function slides a rectangle over an input image and outputs a new - image which contains the maximum valued pixel found inside the rectangle at each - position in the input image. - - - - - - - - sum_filter - dlib/image_transforms.h - dlib/image_transforms/spatial_filtering_abstract.h - - This function slides a rectangle over an input image and adds the sum - of pixel values in each rectangle location to another image. - - - - - - - - sum_filter_assign - dlib/image_transforms.h - dlib/image_transforms/spatial_filtering_abstract.h - - This function slides a rectangle over an input image and outputs a new - image which contains the sum of pixels inside the rectangle at each - position in the input image. - - - - - - - - separable_3x3_filter_block_grayscale - dlib/image_transforms.h - dlib/image_transforms/spatial_filtering_abstract.h - - This routine filters part of an image with a user supplied 3x3 separable filter. - The output is a grayscale sub-image. - - - - - - - - separable_3x3_filter_block_rgb - dlib/image_transforms.h - dlib/image_transforms/spatial_filtering_abstract.h - - This routine filters part of an image with a user supplied 3x3 separable filter. - The output is a RGB sub-image. - - - - - - - - create_tiled_pyramid - dlib/image_transforms.h - dlib/image_transforms/image_pyramid_abstract.h - - This function creates an image pyramid and packs the entire pyramid into - one big image. It does this by tiling the different pyramid layers together - and outputting the result. Here is an example: -
    - -
    - - Also, you can use the - image_to_tiled_pyramid() - and - tiled_pyramid_to_image() routines - to convert between the input image coordinate space and the tiled pyramid - coordinate space. -
    - -
    - - - - - pyramid_down - dlib/image_transforms.h - dlib/image_transforms/image_pyramid_abstract.h - - This is a simple function object to help create image pyramids. It - downsamples an image by a ratio of N to N-1 where N is supplied by the - user as a template argument. - - - - - - - - pyramid_disable - dlib/image_transforms.h - dlib/image_transforms/image_pyramid_abstract.h - - This object downsamples an image at a ratio of infinity to 1. That - means it always outputs an image of size zero. This is useful because - it can be supplied to routines which take a pyramid_down function object - and it will essentially disable pyramid processing. This way, a pyramid - oriented function can be turned into a regular routine which processes - just the original undownsampled image. - - - - - - - - interpolate_nearest_neighbor - dlib/image_transforms.h - dlib/image_transforms/interpolation_abstract.h - - This object is a tool for performing nearest neighbor interpolation - on an image. - - - - - - - interpolate_bilinear - dlib/image_transforms.h - dlib/image_transforms/interpolation_abstract.h - - This object is a tool for performing bilinear interpolation - on an image. - - - - - - - interpolate_quadratic - dlib/image_transforms.h - dlib/image_transforms/interpolation_abstract.h - - This object is a tool for performing quadratic interpolation - on an image. - - - - - - - transform_image - dlib/image_transforms.h - dlib/image_transforms/interpolation_abstract.h - - This routine is a tool for transforming images using some kind of point mapping - function (e.g. point_transform_affine) - and pixel interpolation tool (e.g. interpolate_quadratic). - An example application of this routine is for image rotation. Indeed, it is how - rotate_image is implemented. - - - - - - - rotate_image - dlib/image_transforms.h - dlib/image_transforms/interpolation_abstract.h - - This is a routine for rotating an image. - - - - - - - pyramid_up - dlib/image_transforms.h - dlib/image_transforms/interpolation_abstract.h - - This routine upsamples an image. In particular, it takes a - pyramid_down object (or an object with a - compatible interface) as an argument and performs an upsampling - which is the inverse of the supplied pyramid_down object. - - - - - - - resize_image - dlib/image_transforms.h - dlib/image_transforms/interpolation_abstract.h - - This is a routine capable of resizing or stretching an image. - - - - - - - extract_image_chips - dlib/image_transforms.h - dlib/image_transforms/interpolation_abstract.h - - This function extracts "chips" from an image. That is, it takes a list of - rectangular sub-windows (i.e. chips) within an image and extracts those - sub-windows, storing each into its own image. It also allows the user to - specify the scale and rotation for the chip. - - - face_landmark_detection_ex.cpp.html - - - - - - - random_cropper - dlib/image_transforms.h - dlib/image_transforms/random_cropper_abstract.h - - This object is a tool for extracting random crops of objects from a set of - images. The crops are randomly jittered in scale, translation, and - rotation but more or less centered on objects specified by mmod_rect - objects. - - - random_cropper_ex.cpp.html - dnn_mmod_ex.cpp.html - dnn_mmod_find_cars_ex.cpp.html - dnn_mmod_train_find_cars_ex.cpp.html - - - - - - - jitter_image - dlib/image_transforms.h - dlib/image_transforms/interpolation_abstract.h - - Randomly jitters an image by slightly rotating, scaling, and translating it. - There is also a 50% chance it will be mirrored left to right. - - - dnn_metric_learning_on_images_ex.cpp.html - dnn_face_recognition_ex.cpp.html - - - - - - - sub_image - dlib/image_transforms.h - dlib/image_transforms/interpolation_abstract.h - - This function returns a lightweight sub-image of another image. In particular, - the returned sub-image simply holds a pointer to the original image, meaning there - is no overhead for using or creating the sub-image. - - - - - - - add_image_left_right_flips - dlib/image_transforms.h - dlib/image_transforms/interpolation_abstract.h - - This routine takes a set of images and bounding boxes within those - images and doubles the size of the dataset by adding left/right - flipped copies of each image as well as the corresponding bounding - boxes. Therefore, this function is useful if you are training and - object detector and your objects have a left/right symmetry. - - - fhog_object_detector_ex.cpp.html - - - - - - - add_image_rotations - dlib/image_transforms.h - dlib/image_transforms/interpolation_abstract.h - - This routine takes a set of images and bounding boxes within those images and - grows the dataset by computing many different rotations of each image. It will - also adjust the positions of the bounding boxes so that they still fall on the - same objects in each rotated image. - - - - - - - rotate_image_dataset - dlib/image_transforms.h - dlib/image_transforms/interpolation_abstract.h - - This routine takes a set of images and bounding boxes within those - images and rotates the entire dataset by a user specified angle. - This means that all images are rotated and the bounding boxes are adjusted - so that they still sit on top of the same visual objects in the new rotated images. - - - - - - - flip_image_dataset_left_right - dlib/image_transforms.h - dlib/image_transforms/interpolation_abstract.h - - This routine takes a set of images and bounding boxes within those images and - mirrors the entire dataset left to right. This means that all images are - flipped left to right and the bounding boxes are adjusted so that they still - sit on top of the same visual objects in the new flipped images. - - - - - - - upsample_image_dataset - dlib/image_transforms.h - dlib/image_transforms/interpolation_abstract.h - - This routine takes a set of images and bounding boxes within those images and - upsamples the entire dataset. This means that all images are upsampled and the - bounding boxes are adjusted so that they still sit on top of the same visual - objects in the new images. - - - - - - - flip_image_left_right - dlib/image_transforms.h - dlib/image_transforms/interpolation_abstract.h - - This is a routine which can flip an image from left to right. (e.g. as - if viewed through a mirror). - - - - - - - flip_image_up_down - dlib/image_transforms.h - dlib/image_transforms/interpolation_abstract.h - - This routine flips an image upside down. - - - - - - - auto_threshold_image - dlib/image_transforms.h - dlib/image_transforms/thresholding_abstract.h - - This global function performs a simple binary thresholding on an image. - Instead of taking a user supplied threshold - it computes one from the image using k-means clustering. - - - - - - - - threshold_image - dlib/image_transforms.h - dlib/image_transforms/thresholding_abstract.h - - This global function performs a simple binary thresholding on an image with a user - supplied threshold. - - - - - - - - label_connected_blobs - dlib/image_transforms.h - dlib/image_transforms/label_connected_blobs_abstract.h - - This function labels each of the connected blobs in an image with a unique integer label. - - - - - - - - segment_image - dlib/image_transforms.h - dlib/image_transforms/segment_image_abstract.h - - Attempts to segment an image into regions which have some visual consistency to them. - In particular, this function implements the algorithm described in the paper: -
    - Efficient Graph-Based Image Segmentation by Felzenszwalb and Huttenlocher. -
    -
    - -
    - - - - - find_candidate_object_locations - dlib/image_transforms.h - dlib/image_transforms/segment_image_abstract.h - - This function takes an input image and generates a set of candidate - rectangles which are expected to bound any objects in the image. It does - this by running a version of the segment_image routine on the image and - then reports rectangles containing each of the segments as well as rectangles - containing unions of adjacent segments. The basic idea is described in the - paper: -
    - Segmentation as Selective Search for Object Recognition by Koen E. A. van de Sande, et al. -
    - Note that this function deviates from what is described in the paper slightly. - See the code for details. -
    - - find_candidate_object_locations.py.html - -
    - - - - - binary_dilation - dlib/image_transforms.h - dlib/image_transforms/morphological_operations_abstract.h - - This global function performs the morphological operation of dilation on an image. - - - - - - - - binary_erosion - dlib/image_transforms.h - dlib/image_transforms/morphological_operations_abstract.h - - This global function performs the morphological operation of erosion on an image. - - - - - - - - binary_open - dlib/image_transforms.h - dlib/image_transforms/morphological_operations_abstract.h - - This global function performs a morphological opening on an image. - - - - - - - - binary_close - dlib/image_transforms.h - dlib/image_transforms/morphological_operations_abstract.h - - This global function performs a morphological closing on an image. - - - - - - - - binary_intersection - dlib/image_transforms.h - dlib/image_transforms/morphological_operations_abstract.h - - This global function computes the intersection of two binary images. - - - - - - - - binary_union - dlib/image_transforms.h - dlib/image_transforms/morphological_operations_abstract.h - - This global function computes the union of two binary images. - - - - - - - - binary_difference - dlib/image_transforms.h - dlib/image_transforms/morphological_operations_abstract.h - - This global function computes the difference of two binary images. - - - - - - - - binary_complement - dlib/image_transforms.h - dlib/image_transforms/morphological_operations_abstract.h - - This global function computes the complement of a binary image. - - - - - - - - scan_image - dlib/image_processing.h - dlib/image_processing/scan_image_abstract.h - - This global function is a tool for sliding a set of rectangles - over an image space and finding the locations where the sum of pixels in - the rectangles exceeds a threshold. It is useful for implementing - certain kinds of sliding window classifiers. - - - - - - - - scan_image_movable_parts - dlib/image_processing.h - dlib/image_processing/scan_image_abstract.h - - This global function is a tool for sliding a set of rectangles - over an image space and finding the locations where the sum of pixels in - the rectangles exceeds a threshold. It is useful for implementing - certain kinds of sliding window classifiers. The behavior of this - routine is similar to scan_image except that - it can also handle movable parts in addition to rigidly placed parts - within the sliding window. - - - - - - - - find_points_above_thresh - dlib/image_processing.h - dlib/image_processing/scan_image_abstract.h - - This routine finds all points in an image with a pixel value above a - threshold. It also has the ability to produce an efficient random - subsample of such points if the number of them is very large. - - - - - - - - scan_image_pyramid - dlib/image_processing.h - dlib/image_processing/scan_image_pyramid_abstract.h - - This object is a tool for running a sliding window classifier over - an image pyramid. This object can also be understood as a general - tool for implementing the spatial pyramid models described in the paper: -
    - Beyond Bags of Features: Spatial Pyramid Matching for Recognizing - Natural Scene Categories by Svetlana Lazebnik, Cordelia Schmid, - and Jean Ponce -
    - It also includes the ability to represent movable part models. - -

    - The following feature extractors can be used with the scan_image_pyramid object: - -
    - - object_detector_ex.cpp.html - object_detector_advanced_ex.cpp.html - - -
    - - - - - scan_fhog_pyramid - dlib/image_processing.h - dlib/image_processing/scan_fhog_pyramid_abstract.h - - - This object is a tool for running a fixed sized sliding window classifier - over an image pyramid. In particular, it slides a linear classifier over - a HOG pyramid as discussed in the paper: -
    - Histograms of Oriented Gradients for Human Detection by Navneet Dalal - and Bill Triggs, CVPR 2005 -
    - However, we augment the method slightly to use the version of HOG features - from: -
    - Object Detection with Discriminatively Trained Part Based Models by - P. Felzenszwalb, R. Girshick, D. McAllester, D. Ramanan - IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 32, No. 9, Sep. 2010 -
    - Since these HOG features have been shown to give superior performance. -
    - - fhog_object_detector_ex.cpp.html - train_object_detector.py.html - - -
    - - - - - scan_image_boxes - dlib/image_processing.h - dlib/image_processing/scan_image_boxes_abstract.h - - This object is a tool for running a classifier over an image with the goal - of localizing each object present. The localization is in the form of the - bounding box around each object of interest. - -

    - Unlike the scan_image_pyramid object which scans a - fixed sized window over an image pyramid, the scan_image_boxes tool allows you to - define your own list of "candidate object locations" which should be evaluated. - This is simply a list of rectangle objects which might contain objects of - interest. The scan_image_boxes object will then evaluate the classifier at each - of these locations and return the subset of rectangles which appear to have - objects in them. -

    - - This object can also be understood as a general tool for implementing the spatial - pyramid models described in the paper: -
    - Beyond Bags of Features: Spatial Pyramid Matching for Recognizing - Natural Scene Categories by Svetlana Lazebnik, Cordelia Schmid, - and Jean Ponce -
    - -

    - The following feature extractors can be used with the scan_image_boxes object: - -
    - -
    - - - - - scan_image_custom - dlib/image_processing.h - dlib/image_processing/scan_image_custom_abstract.h - - This object is a tool for running a classifier over an image with the goal - of localizing each object present. The localization is in the form of the - bounding box around each object of interest. - -

    - Unlike the scan_image_pyramid - and scan_image_boxes objects, this image - scanner delegates all the work of constructing the object feature vector to - a user supplied feature extraction object. That is, scan_image_custom - simply asks the supplied feature extractor what boxes in the image we - should investigate and then asks the feature extractor for the complete - feature vector for each box. That is, scan_image_custom does not apply any - kind of pyramiding or other higher level processing to the features coming - out of the feature extractor. That means that when you use - scan_image_custom it is completely up to you to define the feature vector - used with each image box. -

    -
    - -
    - - - - - full_object_detection - dlib/image_processing.h - dlib/image_processing/full_object_detection_abstract.h - - This object represents the location of an object in an image along with the - positions of each of its constituent parts. - - - - - - - - mmod_rect - dlib/image_processing.h - dlib/image_processing/full_object_detection_abstract.h - - This is a simple struct that is used to give training data and receive detections - from the Max-Margin Object Detection loss layer. - - - - - - - - get_frontal_face_detector - dlib/image_processing/frontal_face_detector.h - dlib/image_processing/frontal_face_detector_abstract.h - - This function returns an object_detector that is - configured to find human faces that are looking more or less towards the camera. - It is created using the scan_fhog_pyramid - object. - - - face_detection_ex.cpp.html - face_detector.py.html - webcam_face_pose_ex.cpp.html - - - - - - - - object_detector - dlib/image_processing.h - dlib/image_processing/object_detector_abstract.h - - This object is a tool for detecting the positions of objects in an image. In - particular, it is a simple container to aggregate an instance of an image - scanner object (either scan_fhog_pyramid, - scan_image_pyramid, scan_image_boxes, or - scan_image_custom), the weight vector - needed by one of these image scanners, and finally an instance of - test_box_overlap. The test_box_overlap object - is used to perform non-max suppression on the output of the image scanner - object. - -

    - Note that you can use the - structural_object_detection_trainer - to learn the parameters of an object_detector. See the example programs for an introduction. -

    - -

    - Also note that dlib contains more powerful CNN based object detection - tooling, which will usually run slower but produce much - more general and accurate detectors. -

    - -
    - - fhog_object_detector_ex.cpp.html - face_detection_ex.cpp.html - object_detector_ex.cpp.html - object_detector_advanced_ex.cpp.html - train_object_detector.cpp.html - - face_detector.py.html - train_object_detector.py.html - - -
    - - - - - correlation_tracker - dlib/image_processing.h - dlib/image_processing/correlation_tracker_abstract.h - - This is a tool for tracking moving objects in a video stream. You give it - the bounding box of an object in the first frame and it attempts to track the - object in the box from frame to frame. - -

    - This tool is an implementation of the method described in the following paper: -

    - Danelljan, Martin, et al. "Accurate scale estimation for robust visual - tracking." Proceedings of the British Machine Vision Conference BMVC. 2014. -
    -

    -
    - - video_tracking_ex.cpp.html - correlation_tracker.py.html - - -
    - - - - - evaluate_detectors - dlib/image_processing.h - dlib/image_processing/scan_fhog_pyramid_abstract.h - - This function allows you to efficiently run a bunch of - scan_fhog_pyramid based - object_detectors - over an image. Importantly, this function is faster than running - each detector individually because it computes the HOG features - only once and then reuses them for each detector. - - - fhog_object_detector_ex.cpp.html - - - - - - - - test_box_overlap - dlib/image_processing.h - dlib/image_processing/box_overlap_testing_abstract.h - - This object is a simple function object for determining if two - rectangles overlap. - - - - - - - - remove_unobtainable_rectangles - dlib/image_processing.h - dlib/image_processing/remove_unobtainable_rectangles_abstract.h - - Recall that the scan_image_pyramid and - scan_image_boxes objects can't produce - all possible rectangles as object detections since they only - consider a limited subset of all possible object positions. - Therefore, when training an object detector that uses these tools - you must make sure the training data does not contain any object - locations that are unobtainable by the image scanning model. - The remove_unobtainable_rectangles() routine is a tool to filter out - these unobtainable rectangles from the training. - - - - - - - - compute_box_dimensions - dlib/image_processing.h - dlib/image_processing/detection_template_tools_abstract.h - - This function is a tool for computing a rectangle with a particular - width/height ratio and area. - - - - - - - - create_single_box_detection_template - dlib/image_processing.h - dlib/image_processing/detection_template_tools_abstract.h - - This function is a tool for creating a detection template usable by - the scan_image_pyramid object. This - particular function creates a detection template with exactly one feature - extraction region. - - - - - - - - create_overlapped_2x2_detection_template - dlib/image_processing.h - dlib/image_processing/detection_template_tools_abstract.h - - This function is a tool for creating a detection template usable by - the scan_image_pyramid object. This - particular function creates a detection template with four overlapping feature - extraction regions. - - - - - - - - create_grid_detection_template - dlib/image_processing.h - dlib/image_processing/detection_template_tools_abstract.h - - This function is a tool for creating a detection template usable by - the scan_image_pyramid object. This - particular function creates a detection template with a grid of feature - extraction regions. - - - - - - - - determine_object_boxes - dlib/image_processing.h - dlib/image_processing/scan_image_pyramid_tools_abstract.h - - The scan_image_pyramid object represents a sliding - window classifier system. For it to work correctly it needs to be given a set of - object boxes which define the size and shape of each sliding window and these windows - need to be able to match the sizes and shapes of targets the user wishes to detect. - Therefore, the determine_object_boxes() routine is a tool for computing a set of object boxes - which can meet this requirement. - - - - - - - - - setup_grid_detection_templates - dlib/image_processing.h - dlib/image_processing/scan_image_pyramid_tools_abstract.h - - This routine uses determine_object_boxes to obtain a set of - object boxes and then adds them to a scan_image_pyramid object - as detection templates. It also uses create_grid_detection_template - to create each feature extraction region. Therefore, the detection templates will extract - features from a regular grid inside each object box. - - - - - - - - setup_grid_detection_templates_verbose - dlib/image_processing.h - dlib/image_processing/scan_image_pyramid_tools_abstract.h - - This function is identical to setup_grid_detection_templates - except that it also outputs information regarding the selected detection templates - to standard out. - - - object_detector_ex.cpp.html - train_object_detector.cpp.html - - - - - - - setup_hashed_features - dlib/image_processing.h - dlib/image_processing/setup_hashed_features_abstract.h - - This is a tool for configuring the hashed_feature_image - or binned_vector_feature_image object - with a random projection hash. - - - object_detector_ex.cpp.html - train_object_detector.cpp.html - - - - - - - - randomly_sample_image_features - dlib/statistics.h - dlib/statistics/image_feature_sampling_abstract.h - - Given a feature extractor such as the hog_image, - this routine selects a random subsample of local image feature vectors - from a set of images. - - - - - - - - - make_uniform_lbp_image - dlib/image_transforms.h - dlib/image_transforms/lbp_abstract.h - - This function extracts the uniform local-binary-pattern feature at every pixel - of an image and stores the output in a new image object. - We use the idea of uniform LBPs from the paper: -
    - Face Description with Local Binary Patterns: Application to Face Recognition - by Ahonen, Hadid, and Pietikainen. -
    -
    -
    - - - - - extract_histogram_descriptors - dlib/image_transforms.h - dlib/image_transforms/lbp_abstract.h - - This function extracts histograms of pixel values from a set of windows in an - image and returns the histograms. - - - - - - - extract_uniform_lbp_descriptors - dlib/image_transforms.h - dlib/image_transforms/lbp_abstract.h - - Extracts histograms of uniform local-binary-patterns from an image. The - histograms are from densely tiled windows that do not overlap and cover all - of the image. - We use the idea of uniform LBPs from the paper: -
    - Face Description with Local Binary Patterns: Application to Face Recognition - by Ahonen, Hadid, and Pietikainen. -
    -
    -
    - - - - - extract_highdim_face_lbp_descriptors - dlib/image_transforms.h - dlib/image_transforms/lbp_abstract.h - - This function extracts the high-dimensional LBP feature described in the - paper: -
    - Blessing of Dimensionality: High-dimensional Feature and Its Efficient - Compression for Face Verification by Dong Chen, Xudong Cao, Fang Wen, and - Jian Sun -
    -
    -
    - - - -
    - - - - -
    - diff --git a/ml/dlib/docs/docs/index.xml b/ml/dlib/docs/docs/index.xml deleted file mode 100644 index 0a4b7fa53..000000000 --- a/ml/dlib/docs/docs/index.xml +++ /dev/null @@ -1,226 +0,0 @@ - - - - - - - - - -

    - Dlib is a modern C++ toolkit containing machine learning algorithms and - tools for creating complex software in C++ to solve real world problems. - It is used in both industry and academia in a wide range of domains - including robotics, embedded devices, mobile phones, and large high - performance computing environments. Dlib's open source licensing - allows you to use it in any application, free of charge. -

    - -

    - To follow or participate in the development of dlib subscribe to dlib on github. - Also be sure to read the how to contribute page if you intend to - submit code to the project. -

    - -
    - -

    -

    Major Features

    - - -

    - - - - - - -
    diff --git a/ml/dlib/docs/docs/intro.xml b/ml/dlib/docs/docs/intro.xml deleted file mode 100644 index bd21c7e5b..000000000 --- a/ml/dlib/docs/docs/intro.xml +++ /dev/null @@ -1,431 +0,0 @@ - - - - - Introduction - - - - - - - - - - - - - - - - -

    Overview

    - - - - -

    - Dlib is a general purpose cross-platform open source software library written in the C++ programming - language. Its design is heavily influenced by ideas from design by contract and component-based - software engineering. This means it is, first and foremost, a collection of independent - software components, each accompanied by extensive documentation and thorough debugging modes. -

    - - -

    - Davis King has been the primary - author of dlib since development began in 2002. In that time - dlib has grown to include a wide variety of tools. In particular, - it now contains software components for dealing with networking, - threads, graphical interfaces, complex data structures, linear - algebra, statistical machine learning, image processing, data - mining, XML and text parsing, numerical optimization, Bayesian - networks, and numerous other tasks. In - recent years, much of the development has been focused on creating - a broad set of statistical machine learning tools. However, dlib - remains a general purpose library and welcomes contributions of high - quality software components useful in any domain. -

    - -

    - Core to the development philosophy of dlib is a dedication to - portability and ease of use. Therefore, all code in dlib is designed - to be as portable as possible and similarly to not require a user to - configure or install anything. To help achieve this, all platform - specific code is confined inside the API wrappers. Everything else is - either layered on top of those wrappers or is written in pure ISO - standard C++. Currently the library is known to work on OS X, MS - Windows, Linux, Solaris, the BSDs, and HP-UX. It should work on any - POSIX platform but I haven't had the opportunity to test it on any - others (if you have access to other platforms and would like to help - increase this list then let me know). -

    -

    - The rest of this page explains everything you need to know to get started using the library. It - explains where to find the documentation for each object/function and how to interpret - what you find there. For help compiling with dlib check out the how to compile - page. Or if you are having trouble finding where a particular object's documentation is located you may - be able to find it by consulting the index.

    -

    - The library is also covered by the very liberal Boost Software License - so feel free to use it any way you like. However, if you use dlib in - your research then please cite its Journal of Machine Learning Research paper when - publishing. -

    -

    - Finally, I must give some credit to the Reusable - Software Research Group at Ohio State since they taught me much - of the software engineering techniques used in the creation of this library. -

    - - - - - -

    Notation

    -

    - For the most part I try to document my code in a way that any C++ programmer would understand, - but for the sake of brevity I use some of the following uncommon notation. -

    - -
      -
    • kernel, extension, and abstract -
        - Each component of the library has a specification which defines its core behavior and interface. This - specification defines what is called the component's kernel. Additionally, each component may have any number of - extensions. An extension is essentially a specification for something that layers functionality on top of the - kernel of a component. -
        -
        In the naming of files I use the word abstract to indicate that a file - contains a specification of a kernel component or extension rather than an actual implementation. -
      - - - - -
    • /*! comments like this !*/ -
        - This is just for "formal comments." Generally these appear after a function prototype and contain - the requires/ensures stuff or at the top of a class and tell you general things about the class. -
      - - - - -
    • requires/ensures/throws -
        - These words appear in the formal comment following function prototypes and have the following meanings. -

        requires: This defines a list of requirements for calling the function. These requirements - MUST be met or a call to the function has undefined results. (note that when the checking/debugging modes - are enabled on an object then it will throw the dlib::fatal_error exception with fatal_error::type == EBROKEN_ASSERT when the requires clause is - broken rather than causing "undefined results") - -

        ensures: This defines what the function does. It is a list of conditions that will be - true after the function finishes executing. Note that if an exception is thrown then nothing in the - ensures clause is guaranteed to be true. - -

        throws: This defines what exceptions may be thrown by this function. It generally - tells you why the exception might be thrown. It also tells you what the function does in this event: - Does it have no effect at all? Does it corrupt any objects? etc. - -
        -
        - Sometimes these blocks do not appear in the formal comment. The meanings in these cases are as follows: -
        missing requires: There are no requirements, you may put anything in the function arguments. -
        missing ensures: This means that the effects of the function are unspecified. This is often used - for call backs where the client programmer implements the actual function. -
        missing throws: This doesn't mean anything. A function without a throws block - might throw exceptions or it might not. - -
        -
        - So in summary, the requires clause must always be satisfied, the ensures clause tells you what the - function does when it does not throw or return an error, and the throws clause tells you what happens when the function - does throw. - -
      - - - -
    • meaning_of_hash meaning of # symbol -
        - I use this as a prefix on identifiers to make reference to the value of the identifier "after" - some event has occurred. -

        - The most common place I use this notation is inside the formal comment following a function prototype. - If the # symbol appears in a requires/ensures/throws block then it means the value of - the identifier after the function has finished, otherwise all references to an identifier - refer to its value before the function was called. -

        - An example will make it clear. - - - int funct( - int& something -); -/*! - requires - - something > 4 - ensures - - #some_other_function() == 9 - - #something == something + 1 - - returns something -!*/ - - - This says that funct() requires that "something" be greater than 4, that funct() will increment "something" - by 1, and funct() returns the original value of something. It also says that - after the call to funct() ends a call to some_other_function() will return the value 9. - -
      - -
    • CONVENTION CONVENTION -
        - This is a section of the formal comment which appears at the top of classes which are - actual implementations (as opposed to specifications). This section of the comment contains - a list of invariants that tell you what the member variables are used for. It also relates - the state of the member variables to the class interface. -
        -
        - For example, you might see a line in this section that says "my_size == size()". This just means - that the member variable my_size always contains the value returned by the size() function. -
      - - - - -
    • "initial value for its type" -
        - I frequently say that after a function executes some variable or argument will have an - initial value for its type. This makes sense for objects with a user defined constructor, - but for anything else not so much. Therefore the initial value of a type with no user defined - constructor is undefined. -
      - -
    - - - - - - -

    Organization

    - -

    - The library can be thought of as a collection of components. Each component always consists of - at least two separate files, a specification file and an implementation file. The specification - files are the ones that end with _abstract.h. Each of these specification files don't actually - contain any code and they even have preprocessor directives that prevent any of their contents from - being included. Their purpose is purely to document a component's interface in a file that isn't - cluttered with implementation details the user shouldn't need to know about. -

    - -

    - The next important concept in dlib organization is multi-implementation components. That is, - some components provide more than one implementation of what is defined in their specification. - When you use these components you have to identify them with names like dlib::component::kernel_1a. - Often these components will have just a debugging and non-debugging implementation. However, many components - provide a large number of alternate implementations. For example, the entropy_encoder_model - has 32 different implementations you can choose from. -

    - -
      - -
    • File organization for multi-implementation components -
        - Each component gets its own folder and one file in the root of the directory tree. -

        - I will use the queue object as a typical example and - explain what each of its files contain. - Below is the directory structure and all the files related to the queue component. - -

        -
        • file tree -
            -
          • dlib/ -
              -
            • queue.h -
            • queue/ -
                -
              • queue_kernel_abstract.h -
              • queue_kernel_1.h -
              • queue_kernel_2.h -
              • queue_kernel_c.h -
              • queue_sort_abstract.h -
              • queue_sort_1.h -
              -
            -
          - - -
          - -
        • queue.h -
            This file does not contain any executable code. All it does is define the typedefs such as - kernel_1a, kernel_1a_c, etc. for the queue object. See the Creating Objects - section to learn what these typedefs are for. -
          - -
        • queue_kernel_abstract.h -
            - This file does not contain any code. It even has preprocessor directives that prevent - any of its contents from being included. -
            -
            - The purpose of this file is to define exactly what a queue object does and what its - interface is. -
          - -
        • queue_sort_abstract.h -
            - This file also doesn't contain any code. Its only purpose is to define the sort - extension to queue objects. -
          - -
        • queue_kernel_1.h -
            - This file contains an implementation of the queue kernel specification found - in queue_kernel_abstract.h -
          - -
        • queue_kernel_2.h -
            - This file contains another implementation of the queue kernel specification found - in queue_kernel_abstract.h -
          - -
        • queue_sort_1.h -
            - This file contains an implementation of the queue sort extension specification found - in queue_sort_abstract.h -
          - -
        • queue_kernel_c.h -
            - This file contains a templated class which wraps any implementation of the queue kernel - specification. It is used during debugging to check that the requires clauses are never - violated. -
          -
        -
      -
    - - - - - - - - - - - creating_objects -

    Creating Objects

    - -

    - To create many of the objects in this library you need to choose which kernel implementation you would like and if you - want the checking version or any extensions. -

    -

    - To make this easy there are header files which define typedefs of all this stuff. For - example, to create a queue of ints using queue kernel implementation 1 you would type - dlib::queue<int>::kernel_1a my_queue;. Or to get the debugging/checking version you - would type dlib::queue<int>::kernel_1a_c my_queue;. -

    -

    - There can be a lot of different typedefs for each component. You can find a list of them - in the section for the component in question. For the queue component they can be found - here. -

    -

    - None of the above applies to the single-implementation components, that is, anything that doesn't have an "implementations" - section in its documentation. These tools are designed to have only one implementation and thus do not follow the - above naming convention. For example, to create a - logger object you would simply type dlib::logger mylog("name");. - For the purposes of object creation the API components also appear to be single-implementation. That is, there is no - need to specify which implementation you want since it is automatically determined by which platform you compile under. - Note also that there are no explicit checking versions of these components. However, there are - DLIB_ASSERT statements that perform checking and you can - enable them by #defining DEBUG or ENABLE_ASSERTS. -

    - - - - - -

    Assumptions

    - There are some restrictions on the behavior of certain objects or functions. - Rather than replicating these restrictions all over the place in my documentation they - are listed here. - -
      - -
    • global swap() -
        - It is assumed that this operator does not throw. Undefined behavior results if it does. - Note that std::swap() for all intrinsics and std::string does not throw. -
      - - - -
    • operator<() -
        - It is assumed that this operator (or std::less or any similar functor supplied by you to the library) - does not throw. Undefined behavior results if it does. -
      - - - -
    • dlib::general_hash -
        - It is assumed that general_hash does not throw. Undefined behavior results if it does. - This is actually noted in the general hash spec file but I'm listing it here also for good measure. - -
      - - - -
    - - - - - - - - - thread_safety -

    Thread Safety

    - -

    - In the library there are three kinds of objects with regards to threading: -

      -
    • Objects which are completely thread safe. This means that any pattern of access from - multiple threads is safe.
    • -
    • Objects which are safe to use if no threads touch the same instance, but require access - to a particular instance to be serialized via a mutex if it is shared among threads.
    • -
    • Objects which share some kind of global resource or are reference counted. This kind of object is - extremely thread unfriendly and can only be used in a threaded program with great care.
    • -
    -

    - -

    - How do you know which components/objects are thread safe and which aren't? The rule is that if - the specification for the component doesn't mention threading or thread safety then - it is ok to use as long as you serialize access to shared instances. If the component might have - some global resources or be reference counted then the specifications will tell you this. - Lastly if the component is completely thread safe then the specification will tell you this. -

    -

    - Also note that global functions in dlib are always thread safe. -

    - - - - - - - - -
    diff --git a/ml/dlib/docs/docs/jet.png b/ml/dlib/docs/docs/jet.png deleted file mode 100644 index 83bd2a71d..000000000 Binary files a/ml/dlib/docs/docs/jet.png and /dev/null differ diff --git a/ml/dlib/docs/docs/kernel_1a.txt b/ml/dlib/docs/docs/kernel_1a.txt deleted file mode 100644 index ff9ad371e..000000000 --- a/ml/dlib/docs/docs/kernel_1a.txt +++ /dev/null @@ -1,78 +0,0 @@ - - - - The Canterbury Corpus - -file size packed size bpb corruption - -text: 152089 86995 4.576 no -play: 125179 75430 4.82062 no -html: 24603 16209 5.27058 no -Csrc: 11150 7084 5.08269 no -list: 3721 2224 4.78151 no -Excl: 1029744 440758 3.42421 no -tech: 426754 248345 4.65552 no -poem: 481861 273394 4.53897 no -fax: 513216 75036 1.16966 no -SPRC: 38240 25660 5.3682 no -man: 4227 2663 5.03998 no - -average: 4.42981 - -time: 875ms - - - - The Calgary Corpus - -file size packed size bpb corruption - -bib: 111261 72533 5.21534 no -book1: 768771 435527 4.53219 no -book2: 610856 364597 4.7749 no -geo: 102400 72600 5.67188 no -news: 377109 244377 5.18422 no -obj1: 21504 16183 6.02046 no -obj2: 246814 189902 6.15531 no -paper1: 53161 33144 4.98772 no -paper2: 82199 47398 4.613 no -pic: 513216 75036 1.16966 no -progc: 39611 25885 5.22784 no -progl: 71646 42688 4.76655 no -progp: 49379 30180 4.88953 no -trans: 93695 64603 5.51603 no - -average: 4.9089 - -time: 1.11sec - - - - The Artificial Corpus - -file size packed size bpb corruption - -a: 1 7 56 no -aaa: 100000 20 0.0016 no -alphabet: 100000 58912 4.71296 no -random: 100000 75202 6.01616 no - -average: 16.6827 - -time: 93ms - - - - The Large Corpus - -file size packed size bpb corruption - -E.coli: 4638690 1162352 2.00462 no -bible: 4047392 2194059 4.33674 no -word: 2473400 1542086 4.98774 no - -average: 3.77637 - -time: 3.766sec - - \ No newline at end of file diff --git a/ml/dlib/docs/docs/kernel_1a.xml b/ml/dlib/docs/docs/kernel_1a.xml deleted file mode 100644 index 25aba2e14..000000000 --- a/ml/dlib/docs/docs/kernel_1a.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - kernel_1a - - - diff --git a/ml/dlib/docs/docs/kernel_1b.txt b/ml/dlib/docs/docs/kernel_1b.txt deleted file mode 100644 index 2d6ff74ff..000000000 --- a/ml/dlib/docs/docs/kernel_1b.txt +++ /dev/null @@ -1,77 +0,0 @@ - - - - The Canterbury Corpus - -file size packed size bpb corruption - -text: 152089 66165 3.48033 no -play: 125179 54572 3.48761 no -html: 24603 11661 3.79173 no -Csrc: 11150 4733 3.39587 no -list: 3721 1629 3.50228 no -Excl: 1029744 343447 2.66821 no -tech: 426754 188332 3.5305 no -poem: 481861 204240 3.39085 no -fax: 513216 54127 0.843731 no -SPRC: 38240 18307 3.82992 no -man: 4227 2100 3.97445 no - -average: 3.26323 - -time: 844ms - - - - The Calgary Corpus - -file size packed size bpb corruption - -bib: 111261 48130 3.46069 no -book1: 768771 346572 3.6065 no -book2: 610856 288605 3.77968 no -geo: 102400 61124 4.77531 no -news: 377109 196085 4.15975 no -obj1: 21504 12445 4.62984 no -obj2: 246814 127142 4.12106 no -paper1: 53161 25438 3.82807 no -paper2: 82199 37295 3.62973 no -pic: 513216 54127 0.843731 no -progc: 39611 19090 3.85549 no -progl: 71646 29773 3.32446 no -progp: 49379 20795 3.36904 no -trans: 93695 40922 3.49406 no - -average: 3.6341 - -time: 1.109sec - - - - The Artificial Corpus - -file size packed size bpb corruption - -a: 1 7 56 no -aaa: 100000 20 0.0016 no -alphabet: 100000 83 0.00664 no -random: 100000 77775 6.222 no - -average: 15.5576 - -time: 94ms - - - - The Large Corpus - -file size packed size bpb corruption - -E.coli: 4638690 1151913 1.98662 no -bible: 4047392 1651476 3.26428 no -word: 2473400 1133090 3.66488 no - -average: 2.97193 - -time: 3.672sec - \ No newline at end of file diff --git a/ml/dlib/docs/docs/kernel_1b.xml b/ml/dlib/docs/docs/kernel_1b.xml deleted file mode 100644 index 7642f0c14..000000000 --- a/ml/dlib/docs/docs/kernel_1b.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - kernel_1b - - - diff --git a/ml/dlib/docs/docs/kernel_1c.txt b/ml/dlib/docs/docs/kernel_1c.txt deleted file mode 100644 index 0e0a78d0d..000000000 --- a/ml/dlib/docs/docs/kernel_1c.txt +++ /dev/null @@ -1,78 +0,0 @@ - - - - The Canterbury Corpus - -file size packed size bpb corruption - -text: 152089 51810 2.72525 no -play: 125179 44002 2.8121 no -html: 24603 8602 2.79706 no -Csrc: 11150 3399 2.43874 no -list: 3721 1272 2.73475 no -Excl: 1029744 237165 1.84252 no -tech: 426754 147090 2.75737 no -poem: 481861 169981 2.82208 no -fax: 513216 54230 0.845336 no -SPRC: 38240 15190 3.17782 no -man: 4227 1763 3.33665 no - -average: 2.57179 - -time: 1.031sec - - - - The Calgary Corpus - -file size packed size bpb corruption - -bib: 111261 37264 2.67939 no -book1: 768771 280052 2.91428 no -book2: 610856 221616 2.90237 no -geo: 102400 62115 4.85273 no -news: 377109 155282 3.29416 no -obj1: 21504 11235 4.17969 no -obj2: 246814 97319 3.15441 no -paper1: 53161 19664 2.95916 no -paper2: 82199 29837 2.90388 no -pic: 513216 54230 0.845336 no -progc: 39611 14610 2.9507 no -progl: 71646 21637 2.41599 no -progp: 49379 14204 2.30122 no -trans: 93695 27848 2.37776 no - -average: 2.90936 - -time: 1.297sec - - - - The Artificial Corpus - -file size packed size bpb corruption - -a: 1 7 56 no -aaa: 100000 18 0.00144 no -alphabet: 100000 65 0.0052 no -random: 100000 90704 7.25632 no - -average: 15.8157 - -time: 203ms - - - - The Large Corpus - -file size packed size bpb corruption - -E.coli: 4638690 1141437 1.96855 no -bible: 4047392 1263237 2.49689 no -word: 2473400 876621 2.83536 no - -average: 2.4336 - -time: 3.391sec - - \ No newline at end of file diff --git a/ml/dlib/docs/docs/kernel_1c.xml b/ml/dlib/docs/docs/kernel_1c.xml deleted file mode 100644 index 1bab1d095..000000000 --- a/ml/dlib/docs/docs/kernel_1c.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - kernel_1c - - - diff --git a/ml/dlib/docs/docs/kernel_1da.txt b/ml/dlib/docs/docs/kernel_1da.txt deleted file mode 100644 index fde5871e0..000000000 --- a/ml/dlib/docs/docs/kernel_1da.txt +++ /dev/null @@ -1,78 +0,0 @@ - - - - The Canterbury Corpus - -file size packed size bpb corruption - -text: 152089 45580 2.39754 no -play: 125179 42432 2.71176 no -html: 24603 7745 2.51839 no -Csrc: 11150 3165 2.27085 no -list: 3721 1238 2.66165 no -Excl: 1029744 194875 1.51397 no -tech: 426754 111838 2.09653 no -poem: 481861 148110 2.45897 no -fax: 513216 56075 0.874096 no -SPRC: 38240 14248 2.98075 no -man: 4227 1736 3.28555 no - -average: 2.34273 - -time: 1.812sec - - - - The Calgary Corpus - -file size packed size bpb corruption - -bib: 111261 29161 2.09676 no -book1: 768771 235667 2.4524 no -book2: 610856 165032 2.16132 no -geo: 102400 67663 5.28617 no -news: 377109 128148 2.71853 no -obj1: 21504 10750 3.99926 no -obj2: 246814 82894 2.68685 no -paper1: 53161 17398 2.61816 no -paper2: 82199 26449 2.57414 no -pic: 513216 56075 0.874096 no -progc: 39611 13188 2.6635 no -progl: 71646 17135 1.9133 no -progp: 49379 11764 1.90591 no -trans: 93695 19602 1.67369 no - -average: 2.54458 - -time: 2.36sec - - - - The Artificial Corpus - -file size packed size bpb corruption - -a: 1 6 48 no -aaa: 100000 19 0.00152 no -alphabet: 100000 66 0.00528 no -random: 100000 89652 7.17216 no - -average: 13.7947 - -time: 375ms - - - - The Large Corpus - -file size packed size bpb corruption - -E.coli: 4638690 1130363 1.94945 no -bible: 4047392 871537 1.72266 no -word: 2473400 589688 1.9073 no - -average: 1.8598 - -time: 4.484sec - - \ No newline at end of file diff --git a/ml/dlib/docs/docs/kernel_1da.xml b/ml/dlib/docs/docs/kernel_1da.xml deleted file mode 100644 index 428e2e4d7..000000000 --- a/ml/dlib/docs/docs/kernel_1da.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - kernel_1da - - - diff --git a/ml/dlib/docs/docs/kernel_1db.txt b/ml/dlib/docs/docs/kernel_1db.txt deleted file mode 100644 index 648312723..000000000 --- a/ml/dlib/docs/docs/kernel_1db.txt +++ /dev/null @@ -1,78 +0,0 @@ - - - - The Canterbury Corpus - -file size packed size bpb corruption - -text: 152089 47843 2.51658 no -play: 125179 45069 2.88029 no -html: 24603 7914 2.57334 no -Csrc: 11150 3279 2.35265 no -list: 3721 1281 2.7541 no -Excl: 1029744 210286 1.6337 no -tech: 426754 115826 2.17129 no -poem: 481861 157348 2.61234 no -fax: 513216 56477 0.880362 no -SPRC: 38240 14466 3.02636 no -man: 4227 1780 3.36882 no - -average: 2.43362 - -time: 2.296sec - - - - The Calgary Corpus - -file size packed size bpb corruption - -bib: 111261 29758 2.13969 no -book1: 768771 247700 2.57762 no -book2: 610856 168694 2.20928 no -geo: 102400 67817 5.2982 no -news: 377109 126675 2.68729 no -obj1: 21504 10871 4.04427 no -obj2: 246814 82948 2.6886 no -paper1: 53161 18113 2.72576 no -paper2: 82199 27700 2.6959 no -pic: 513216 56477 0.880362 no -progc: 39611 13622 2.75115 no -progl: 71646 17263 1.92759 no -progp: 49379 12032 1.94933 no -trans: 93695 19505 1.6654 no - -average: 2.5886 - -time: 2.86sec - - - - The Artificial Corpus - -file size packed size bpb corruption - -a: 1 6 48 no -aaa: 100000 20 0.0016 no -alphabet: 100000 66 0.00528 no -random: 100000 88475 7.078 no - -average: 13.7712 - -time: 531ms - - - - The Large Corpus - -file size packed size bpb corruption - -E.coli: 4638690 1130433 1.94957 no -bible: 4047392 844807 1.66983 no -word: 2473400 504129 1.63056 no - -average: 1.74999 - -time: 5.266sec - - \ No newline at end of file diff --git a/ml/dlib/docs/docs/kernel_1db.xml b/ml/dlib/docs/docs/kernel_1db.xml deleted file mode 100644 index 9d8a10eff..000000000 --- a/ml/dlib/docs/docs/kernel_1db.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - kernel_1db - - - diff --git a/ml/dlib/docs/docs/kernel_1ea.txt b/ml/dlib/docs/docs/kernel_1ea.txt deleted file mode 100644 index 1697827d4..000000000 --- a/ml/dlib/docs/docs/kernel_1ea.txt +++ /dev/null @@ -1,78 +0,0 @@ - - - - The Canterbury Corpus - -file size packed size bpb corruption - -text: 152089 40695 2.14059 no -play: 125179 37421 2.39152 no -html: 24603 6859 2.2303 no -Csrc: 11150 2792 2.00323 no -list: 3721 1084 2.33056 no -Excl: 1029744 156897 1.21892 no -tech: 426754 102805 1.9272 no -poem: 481861 136664 2.26894 no -fax: 513216 51109 0.796686 no -SPRC: 38240 12590 2.63389 no -man: 4227 1530 2.89567 no - -average: 2.07614 - -time: 3.062sec - - - - The Calgary Corpus - -file size packed size bpb corruption - -bib: 111261 26039 1.87228 no -book1: 768771 218772 2.27659 no -book2: 610856 151985 1.99045 no -geo: 102400 59371 4.63836 no -news: 377109 115334 2.4467 no -obj1: 21504 9832 3.65774 no -obj2: 246814 75065 2.43309 no -paper1: 53161 15263 2.29687 no -paper2: 82199 23368 2.27429 no -pic: 513216 51109 0.796686 no -progc: 39611 11549 2.33248 no -progl: 71646 15297 1.70806 no -progp: 49379 10447 1.69254 no -trans: 93695 17677 1.50932 no - -average: 2.28039 - -time: 4.172sec - - - - The Artificial Corpus - -file size packed size bpb corruption - -a: 1 7 56 no -aaa: 100000 17 0.00136 no -alphabet: 100000 65 0.0052 no -random: 100000 82599 6.60792 no - -average: 15.6536 - -time: 672ms - - - - The Large Corpus - -file size packed size bpb corruption - -E.coli: 4638690 1130095 1.94899 no -bible: 4047392 848956 1.67803 no -word: 2473400 542983 1.75623 no - -average: 1.79442 - -time: 6.516sec - - \ No newline at end of file diff --git a/ml/dlib/docs/docs/kernel_1ea.xml b/ml/dlib/docs/docs/kernel_1ea.xml deleted file mode 100644 index 3117a5092..000000000 --- a/ml/dlib/docs/docs/kernel_1ea.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - kernel_1ea - - - diff --git a/ml/dlib/docs/docs/kernel_1eb.txt b/ml/dlib/docs/docs/kernel_1eb.txt deleted file mode 100644 index 0b46d59c3..000000000 --- a/ml/dlib/docs/docs/kernel_1eb.txt +++ /dev/null @@ -1,78 +0,0 @@ - - - - The Canterbury Corpus - -file size packed size bpb corruption - -text: 152089 40220 2.1156 no -play: 125179 37451 2.39344 no -html: 24603 6819 2.21729 no -Csrc: 11150 2770 1.98744 no -list: 3721 1085 2.33271 no -Excl: 1029744 158436 1.23088 no -tech: 426754 100243 1.87917 no -poem: 481861 136151 2.26042 no -fax: 513216 50374 0.785229 no -SPRC: 38240 12387 2.59142 no -man: 4227 1528 2.89189 no - -average: 2.06232 - -time: 4.875sec - - - - The Calgary Corpus - -file size packed size bpb corruption - -bib: 111261 25279 1.81764 no -book1: 768771 216389 2.25179 no -book2: 610856 146986 1.92498 no -geo: 102400 58768 4.59125 no -news: 377109 109292 2.31852 no -obj1: 21504 9819 3.6529 no -obj2: 246814 72662 2.3552 no -paper1: 53161 15128 2.27656 no -paper2: 82199 23186 2.25657 no -pic: 513216 50374 0.785229 no -progc: 39611 11434 2.30926 no -progl: 71646 14712 1.64274 no -progp: 49379 10210 1.65414 no -trans: 93695 16885 1.4417 no - -average: 2.23418 - -time: 5.421sec - - - - The Artificial Corpus - -file size packed size bpb corruption - -a: 1 7 56 no -aaa: 100000 17 0.00136 no -alphabet: 100000 64 0.00512 no -random: 100000 81881 6.55048 no - -average: 15.6392 - -time: 907ms - - - - The Large Corpus - -file size packed size bpb corruption - -E.coli: 4638690 1129161 1.94738 no -bible: 4047392 794809 1.571 no -word: 2473400 454450 1.46988 no - -average: 1.66275 - -time: 7.39sec - - \ No newline at end of file diff --git a/ml/dlib/docs/docs/kernel_1eb.xml b/ml/dlib/docs/docs/kernel_1eb.xml deleted file mode 100644 index e157438d3..000000000 --- a/ml/dlib/docs/docs/kernel_1eb.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - kernel_1eb - - - diff --git a/ml/dlib/docs/docs/kernel_1ec.txt b/ml/dlib/docs/docs/kernel_1ec.txt deleted file mode 100644 index 488004d48..000000000 --- a/ml/dlib/docs/docs/kernel_1ec.txt +++ /dev/null @@ -1,78 +0,0 @@ - - - - The Canterbury Corpus - -file size packed size bpb corruption - -text: 152089 40367 2.12334 no -play: 125179 37785 2.41478 no -html: 24603 6828 2.22022 no -Csrc: 11150 2710 1.94439 no -list: 3721 1084 2.33056 no -Excl: 1029744 162760 1.26447 no -tech: 426754 100488 1.88376 no -poem: 481861 139110 2.30955 no -fax: 513216 50276 0.783701 no -SPRC: 38240 12219 2.55628 no -man: 4227 1533 2.90135 no - -average: 2.06658 - -time: 5.484sec - - - - The Calgary Corpus - -file size packed size bpb corruption - -bib: 111261 25153 1.80858 no -book1: 768771 220128 2.2907 no -book2: 610856 146040 1.91259 no -geo: 102400 58737 4.58883 no -news: 377109 108774 2.30753 no -obj1: 21504 9823 3.65439 no -obj2: 246814 71148 2.30613 no -paper1: 53161 15116 2.27475 no -paper2: 82199 23346 2.27214 no -pic: 513216 50276 0.783701 no -progc: 39611 11351 2.29249 no -progl: 71646 14125 1.5772 no -progp: 49379 9966 1.61461 no -trans: 93695 16068 1.37194 no - -average: 2.21826 - -time: 6.188sec - - - - The Artificial Corpus - -file size packed size bpb corruption - -a: 1 7 56 no -aaa: 100000 17 0.00136 no -alphabet: 100000 65 0.0052 no -random: 100000 81869 6.54952 no - -average: 15.639 - -time: 1.109sec - - - - The Large Corpus - -file size packed size bpb corruption - -E.coli: 4638690 1160064 2.00068 no -bible: 4047392 760498 1.50319 no -word: 2473400 422419 1.36628 no - -average: 1.62338 - -time: 11.203sec - - \ No newline at end of file diff --git a/ml/dlib/docs/docs/kernel_1ec.xml b/ml/dlib/docs/docs/kernel_1ec.xml deleted file mode 100644 index 918273865..000000000 --- a/ml/dlib/docs/docs/kernel_1ec.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - kernel_1ec - - - diff --git a/ml/dlib/docs/docs/kernel_2a.txt b/ml/dlib/docs/docs/kernel_2a.txt deleted file mode 100644 index 3caff6866..000000000 --- a/ml/dlib/docs/docs/kernel_2a.txt +++ /dev/null @@ -1,78 +0,0 @@ - - - - The Canterbury Corpus - -file size packed size bpb corruption - -text: 152089 55655 2.9275 no -play: 125179 49648 3.17293 no -html: 24603 8345 2.71349 no -Csrc: 11150 3514 2.52126 no -list: 3721 1379 2.96479 no -Excl: 1029744 72617 0.564156 no -tech: 426754 145403 2.72575 no -poem: 481861 196109 3.25586 no -fax: 513216 49740 0.775346 no -SPRC: 38240 13253 2.77259 no -man: 4227 1857 3.51455 no - -average: 2.53711 - -time: 4.641sec - - - - The Calgary Corpus - -file size packed size bpb corruption - -bib: 111261 35687 2.566 no -book1: 768771 313140 3.2586 no -book2: 610856 210661 2.7589 no -geo: 102400 61070 4.77109 no -news: 377109 143307 3.04012 no -obj1: 21504 11004 4.09375 no -obj2: 246814 83289 2.69965 no -paper1: 53161 19433 2.9244 no -paper2: 82199 30671 2.98505 no -pic: 513216 49740 0.775346 no -progc: 39611 14142 2.85618 no -progl: 71646 17196 1.92011 no -progp: 49379 12045 1.95144 no -trans: 93695 19849 1.69478 no - -average: 2.73539 - -time: 4.89sec - - - - The Artificial Corpus - -file size packed size bpb corruption - -a: 1 6 48 no -aaa: 100000 58 0.00464 no -alphabet: 100000 87 0.00696 no -random: 100000 77815 6.2252 no - -average: 13.5592 - -time: 235ms - - - - The Large Corpus - -file size packed size bpb corruption - -E.coli: 4638690 1349400 2.32721 no -bible: 4047392 1206327 2.3844 no -word: 2473400 703195 2.27442 no - -average: 2.32868 - -time: 8.75sec - - \ No newline at end of file diff --git a/ml/dlib/docs/docs/kernel_2a.xml b/ml/dlib/docs/docs/kernel_2a.xml deleted file mode 100644 index 4b8c1182a..000000000 --- a/ml/dlib/docs/docs/kernel_2a.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - kernel_2a - - - diff --git a/ml/dlib/docs/docs/kernel_3a.txt b/ml/dlib/docs/docs/kernel_3a.txt deleted file mode 100644 index 927c4af7c..000000000 --- a/ml/dlib/docs/docs/kernel_3a.txt +++ /dev/null @@ -1,78 +0,0 @@ - - - - The Canterbury Corpus - -file size packed size bpb corruption - -text: 152089 118620 6.2395 no -play: 125179 103761 6.63121 no -html: 24603 14067 4.57408 no -Csrc: 11150 5805 4.16502 no -list: 3721 2142 4.60521 no -Excl: 1029744 390978 3.03748 no -tech: 426754 310347 5.81782 no -poem: 481861 435150 7.22449 no -fax: 513216 116298 1.81285 no -SPRC: 38240 23076 4.82762 no -man: 4227 3177 6.01278 no - -average: 4.99528 - -time: 547ms - - - - The Calgary Corpus - -file size packed size bpb corruption - -bib: 111261 68949 4.95764 no -book1: 768771 683415 7.11177 no -book2: 610856 435186 5.69936 no -geo: 102400 105111 8.2118 no -news: 377109 266382 5.65103 no -obj1: 21504 15714 5.84598 no -obj2: 246814 139671 4.52717 no -paper1: 53161 37476 5.63962 no -paper2: 82199 63198 6.15073 no -pic: 513216 116298 1.81285 no -progc: 39611 25398 5.12948 no -progl: 71646 31905 3.56252 no -progp: 49379 20943 3.39302 no -trans: 93695 34056 2.90782 no - -average: 5.04291 - -time: 610ms - - - - The Artificial Corpus - -file size packed size bpb corruption - -a: 1 9 72 no -aaa: 100000 3771 0.30168 no -alphabet: 100000 486 0.03888 no -random: 100000 112491 8.99928 no - -average: 20.335 - -time: 47ms - - - - The Large Corpus - -file size packed size bpb corruption - -E.coli: 4638690 4752396 8.1961 no -bible: 4047392 2649303 5.23656 no -word: 2473400 1452177 4.69694 no - -average: 6.0432 - -time: 2.5sec - - \ No newline at end of file diff --git a/ml/dlib/docs/docs/kernel_3a.xml b/ml/dlib/docs/docs/kernel_3a.xml deleted file mode 100644 index 2a95695e6..000000000 --- a/ml/dlib/docs/docs/kernel_3a.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - kernel_3a - - - diff --git a/ml/dlib/docs/docs/kernel_3b.txt b/ml/dlib/docs/docs/kernel_3b.txt deleted file mode 100644 index 69f25e132..000000000 --- a/ml/dlib/docs/docs/kernel_3b.txt +++ /dev/null @@ -1,78 +0,0 @@ - - - - The Canterbury Corpus - -file size packed size bpb corruption - -text: 152089 111537 5.86693 no -play: 125179 101457 6.48396 no -html: 24603 13914 4.52433 no -Csrc: 11150 5760 4.13274 no -list: 3721 2160 4.64391 no -Excl: 1029744 407466 3.16557 no -tech: 426754 291483 5.46419 no -poem: 481861 417897 6.93805 no -fax: 513216 114138 1.77918 no -SPRC: 38240 23184 4.85021 no -man: 4227 3159 5.97871 no - -average: 4.89343 - -time: 734ms - - - - The Calgary Corpus - -file size packed size bpb corruption - -bib: 111261 63729 4.58231 no -book1: 768771 655227 6.81844 no -book2: 610856 409392 5.36155 no -geo: 102400 108099 8.44523 no -news: 377109 259065 5.49581 no -obj1: 21504 15768 5.86607 no -obj2: 246814 138564 4.49128 no -paper1: 53161 35901 5.40261 no -paper2: 82199 60291 5.86781 no -pic: 513216 114138 1.77918 no -progc: 39611 24984 5.04587 no -progl: 71646 31113 3.47408 no -progp: 49379 20772 3.36532 no -trans: 93695 33093 2.82559 no - -average: 4.9158 - -time: 907ms - - - - The Artificial Corpus - -file size packed size bpb corruption - -a: 1 9 72 no -aaa: 100000 3771 0.30168 no -alphabet: 100000 486 0.03888 no -random: 100000 112509 9.00072 no - -average: 20.3353 - -time: 78ms - - - - The Large Corpus - -file size packed size bpb corruption - -E.coli: 4638690 4747257 8.18724 no -bible: 4047392 2466675 4.87558 no -word: 2473400 1301805 4.21058 no - -average: 5.7578 - -time: 3.25sec - - \ No newline at end of file diff --git a/ml/dlib/docs/docs/kernel_3b.xml b/ml/dlib/docs/docs/kernel_3b.xml deleted file mode 100644 index 9571ab419..000000000 --- a/ml/dlib/docs/docs/kernel_3b.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - kernel_3b - - - diff --git a/ml/dlib/docs/docs/license.xml b/ml/dlib/docs/docs/license.xml deleted file mode 100644 index c47ee788b..000000000 --- a/ml/dlib/docs/docs/license.xml +++ /dev/null @@ -1,36 +0,0 @@ - - - - - License -
    -
    -
    -Boost Software License - Version 1.0 - August 17th, 2003
    -
    -Permission is hereby granted, free of charge, to any person or organization
    -obtaining a copy of the software and accompanying documentation covered by
    -this license (the "Software") to use, reproduce, display, distribute,
    -execute, and transmit the Software, and to prepare derivative works of the
    -Software, and to permit third-parties to whom the Software is furnished to
    -do so, all subject to the following:
    -
    -The copyright notices in the Software and this entire statement, including
    -the above license grant, this restriction and the following disclaimer,
    -must be included in all copies of the Software, in whole or in part, and
    -all derivative works of the Software, unless such copies or derivative
    -works are solely in the form of machine-executable object code generated by
    -a source language processor.
    -
    -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
    -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
    -FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
    -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
    -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
    -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
    -DEALINGS IN THE SOFTWARE.
    -
    -
    -
    -   
    -
    diff --git a/ml/dlib/docs/docs/linear_algebra.xml b/ml/dlib/docs/docs/linear_algebra.xml deleted file mode 100644 index 4d228376b..000000000 --- a/ml/dlib/docs/docs/linear_algebra.xml +++ /dev/null @@ -1,1382 +0,0 @@ - - - - - Linear Algebra - - - - -

    - This page documents the core linear algebra tools included in dlib. - In particular, the three most important objects in this part of the library are the - matrix, vector, and - rectangle. All the other tools on this page - are functions for manipulating these three objects. A good example and introduction - can be found in - the matrix example program. -

    - -

    - Most of the linear algebra tools deal with dense matrices. However, there is also - a limited amount of support for working with sparse matrices and vectors. - In particular, the dlib tools represent sparse vectors using the containers - in the C++ STL. For details, see the notes at the top of - dlib/svm/sparse_vector_abstract.h. -

    -

    - Finally, note that all the dense matrix tools can be obtained by #including <dlib/matrix.h> - while the sparse vector tools can be obtained by #including <dlib/sparse_vector.h>. The - geometry tools can be used by #including <dlib/geometry.h>. -

    - - - - - - - - -
    - Dense Matrix Tools - matrix - - Basic Math Operators - - - exp - dlib/matrix/matrix_math_functions_abstract.h.html#exp - - - log10 - dlib/matrix/matrix_math_functions_abstract.h.html#log10 - - - log - dlib/matrix/matrix_math_functions_abstract.h.html#log - - - sqrt - dlib/matrix/matrix_math_functions_abstract.h.html#sqrt - - - pow - dlib/matrix/matrix_math_functions_abstract.h.html#pow - - - squared - dlib/matrix/matrix_math_functions_abstract.h.html#squared - - - cubed - dlib/matrix/matrix_math_functions_abstract.h.html#cubed - - - sigmoid - dlib/matrix/matrix_math_functions_abstract.h.html#sigmoid - - - abs - dlib/matrix/matrix_math_functions_abstract.h.html#abs - - - reciprocal - dlib/matrix/matrix_math_functions_abstract.h.html#reciprocal - - - reciprocal_max - dlib/matrix/matrix_math_functions_abstract.h.html#reciprocal_max - - - normalize - dlib/matrix/matrix_math_functions_abstract.h.html#normalize - - - round - dlib/matrix/matrix_math_functions_abstract.h.html#round - - - ceil - dlib/matrix/matrix_math_functions_abstract.h.html#ceil - - - floor - dlib/matrix/matrix_math_functions_abstract.h.html#floor - - - round_zeros - dlib/matrix/matrix_math_functions_abstract.h.html#round_zeros - - - conj - dlib/matrix/matrix_math_functions_abstract.h.html#conj - - - norm - dlib/matrix/matrix_math_functions_abstract.h.html#norm - - - imag - dlib/matrix/matrix_math_functions_abstract.h.html#imag - - - real - dlib/matrix/matrix_math_functions_abstract.h.html#real - - - complex_matrix - dlib/matrix/matrix_math_functions_abstract.h.html#complex_matrix - - - sin - dlib/matrix/matrix_math_functions_abstract.h.html#sin - - - cos - dlib/matrix/matrix_math_functions_abstract.h.html#cos - - - tan - dlib/matrix/matrix_math_functions_abstract.h.html#tan - - - asin - dlib/matrix/matrix_math_functions_abstract.h.html#asin - - - acos - dlib/matrix/matrix_math_functions_abstract.h.html#acos - - - atan - dlib/matrix/matrix_math_functions_abstract.h.html#atan - - - sinh - dlib/matrix/matrix_math_functions_abstract.h.html#sinh - - - cosh - dlib/matrix/matrix_math_functions_abstract.h.html#cosh - - - tanh - dlib/matrix/matrix_math_functions_abstract.h.html#tanh - - - - - Linear Algebra - - - inv - dlib/matrix/matrix_la_abstract.h.html#inv - - - pinv - dlib/matrix/matrix_la_abstract.h.html#pinv - - - svd - dlib/matrix/matrix_la_abstract.h.html#svd - - - svd2 - dlib/matrix/matrix_la_abstract.h.html#svd2 - - - svd3 - dlib/matrix/matrix_la_abstract.h.html#svd3 - - - svd_fast - dlib/matrix/matrix_la_abstract.h.html#svd_fast - - - orthogonalize - dlib/matrix/matrix_la_abstract.h.html#orthogonalize - - - det - dlib/matrix/matrix_la_abstract.h.html#det - - - trace - dlib/matrix/matrix_la_abstract.h.html#trace - - - dot - dlib/matrix/matrix_utilities_abstract.h.html#dot - - - length - dlib/matrix/matrix_utilities_abstract.h.html#length - - - length_squared - dlib/matrix/matrix_utilities_abstract.h.html#length_squared - - - trans - dlib/matrix/matrix_utilities_abstract.h.html#trans - - - diag - dlib/matrix/matrix_utilities_abstract.h.html#diag - - - diagm - dlib/matrix/matrix_utilities_abstract.h.html#diagm - - - lowerm - dlib/matrix/matrix_utilities_abstract.h.html#lowerm - - - upperm - dlib/matrix/matrix_utilities_abstract.h.html#upperm - - - chol - dlib/matrix/matrix_la_abstract.h.html#chol - - - inv_lower_triangular - dlib/matrix/matrix_la_abstract.h.html#inv_lower_triangular - - - inv_upper_triangular - dlib/matrix/matrix_la_abstract.h.html#inv_upper_triangular - - - lu_decomposition - dlib/matrix/matrix_la_abstract.h.html#lu_decomposition - - - qr_decomposition - dlib/matrix/matrix_la_abstract.h.html#qr_decomposition - - - cholesky_decomposition - dlib/matrix/matrix_la_abstract.h.html#cholesky_decomposition - - - eigenvalue_decomposition - dlib/matrix/matrix_la_abstract.h.html#eigenvalue_decomposition - - - real_eigenvalues - dlib/matrix/matrix_la_abstract.h.html#real_eigenvalues - - - - - Conversions - - mat - - matrix_cast - dlib/matrix/matrix_utilities_abstract.h.html#matrix_cast - - - pixel_to_vector - dlib/matrix/matrix_utilities_abstract.h.html#pixel_to_vector - - - vector_to_pixel - dlib/matrix/matrix_utilities_abstract.h.html#vector_to_pixel - - - - - Sub Matrix Expressions - - - range - dlib/matrix/matrix_subexp_abstract.h.html#range - - - subm - dlib/matrix/matrix_subexp_abstract.h.html#subm - - - subm_clipped - dlib/matrix/matrix_subexp_abstract.h.html#subm_clipped - - - rowm - dlib/matrix/matrix_subexp_abstract.h.html#rowm - - - colm - dlib/matrix/matrix_subexp_abstract.h.html#colm - - - set_ptrm - dlib/matrix/matrix_subexp_abstract.h.html#set_ptrm - - - set_subm - dlib/matrix/matrix_subexp_abstract.h.html#set_subm - - - set_colm - dlib/matrix/matrix_subexp_abstract.h.html#set_colm - - - set_rowm - dlib/matrix/matrix_subexp_abstract.h.html#set_rowm - - - - - Statistics - - - sum - dlib/matrix/matrix_utilities_abstract.h.html#sum - - - sum_rows - dlib/matrix/matrix_utilities_abstract.h.html#sum_rows - - - sum_cols - dlib/matrix/matrix_utilities_abstract.h.html#sum_cols - - - prod - dlib/matrix/matrix_utilities_abstract.h.html#prod - - - mean - dlib/matrix/matrix_utilities_abstract.h.html#mean - - - max - dlib/matrix/matrix_utilities_abstract.h.html#max - - - min - dlib/matrix/matrix_utilities_abstract.h.html#min - - - find_min_and_max - dlib/matrix/matrix_utilities_abstract.h.html#find_min_and_max - - - max_point - dlib/matrix/matrix_utilities_abstract.h.html#max_point - - - max_point_interpolated - dlib/matrix/matrix_utilities_abstract.h.html#max_point_interpolated - - - min_point - dlib/matrix/matrix_utilities_abstract.h.html#min_point - - - index_of_min - dlib/matrix/matrix_utilities_abstract.h.html#index_of_min - - - index_of_max - dlib/matrix/matrix_utilities_abstract.h.html#index_of_max - - - variance - dlib/matrix/matrix_utilities_abstract.h.html#variance - - - stddev - dlib/matrix/matrix_utilities_abstract.h.html#stddev - - - covariance - dlib/matrix/matrix_utilities_abstract.h.html#covariance - - - randm - dlib/matrix/matrix_utilities_abstract.h.html#randm - - - gaussian_randm - dlib/matrix/matrix_utilities_abstract.h.html#gaussian_randm - - - - - Other Utilities - - - csv - dlib/matrix/matrix_abstract.h.html#csv - - - fft - dlib/matrix/matrix_fft_abstract.h.html#fft - - - ifft - dlib/matrix/matrix_fft_abstract.h.html#ifft - - - is_col_vector - dlib/matrix/matrix_utilities_abstract.h.html#is_col_vector - - - is_row_vector - dlib/matrix/matrix_utilities_abstract.h.html#is_row_vector - - - is_vector - dlib/matrix/matrix_utilities_abstract.h.html#is_vector - - - is_finite - dlib/matrix/matrix_utilities_abstract.h.html#is_finite - - - const_temp_matrix - dlib/matrix/matrix_abstract.h.html#const_temp_matrix - - - symmetric_matrix_cache - dlib/matrix/symmetric_matrix_cache_abstract.h.html - - - conv - dlib/matrix/matrix_conv_abstract.h.html#conv - - - conv_same - dlib/matrix/matrix_conv_abstract.h.html#conv_same - - - conv_valid - dlib/matrix/matrix_conv_abstract.h.html#conv_valid - - - xcorr_fft - dlib/matrix/matrix_conv_abstract.h.html#xcorr_fft - - - xcorr - dlib/matrix/matrix_conv_abstract.h.html#xcorr - - - xcorr_same - dlib/matrix/matrix_conv_abstract.h.html#xcorr_same - - - xcorr_valid - dlib/matrix/matrix_conv_abstract.h.html#xcorr_valid - - - flip - dlib/matrix/matrix_utilities_abstract.h.html#flip - - - flipud - dlib/matrix/matrix_utilities_abstract.h.html#flipud - - - fliplr - dlib/matrix/matrix_utilities_abstract.h.html#fliplr - - - make_symmetric - dlib/matrix/matrix_utilities_abstract.h.html#make_symmetric - - - ones_matrix - dlib/matrix/matrix_utilities_abstract.h.html#ones_matrix - - - zeros_matrix - dlib/matrix/matrix_utilities_abstract.h.html#zeros_matrix - - - uniform_matrix - dlib/matrix/matrix_utilities_abstract.h.html#uniform_matrix - - - identity_matrix - dlib/matrix/matrix_utilities_abstract.h.html#identity_matrix - - - rotate - dlib/matrix/matrix_utilities_abstract.h.html#rotate - - - reshape_to_column_vector - dlib/matrix/matrix_utilities_abstract.h.html#reshape_to_column_vector - - - reshape - dlib/matrix/matrix_utilities_abstract.h.html#reshape - - - removerc - dlib/matrix/matrix_utilities_abstract.h.html#removerc - - - remove_row - dlib/matrix/matrix_utilities_abstract.h.html#remove_row - - - remove_col - dlib/matrix/matrix_utilities_abstract.h.html#remove_col - - - set_all_elements - dlib/matrix/matrix_utilities_abstract.h.html#set_all_elements - - - hash - dlib/matrix/matrix_utilities_abstract.h.html#hash - - - tmp - dlib/matrix/matrix_utilities_abstract.h.html#tmp - - - equal - dlib/matrix/matrix_utilities_abstract.h.html#equal - - - pointwise_multiply - dlib/matrix/matrix_utilities_abstract.h.html#pointwise_multiply - - - join_rows - dlib/matrix/matrix_utilities_abstract.h.html#join_rows - - - join_cols - dlib/matrix/matrix_utilities_abstract.h.html#join_cols - - - tensor_product - dlib/matrix/matrix_utilities_abstract.h.html#tensor_product - - - scale_columns - dlib/matrix/matrix_utilities_abstract.h.html#scale_columns - - - scale_rows - dlib/matrix/matrix_utilities_abstract.h.html#scale_rows - - - sort_columns - dlib/matrix/matrix_utilities_abstract.h.html#sort_columns - - - rsort_columns - dlib/matrix/matrix_utilities_abstract.h.html#rsort_columns - - - - clamp - dlib/matrix/matrix_utilities_abstract.h.html#clamp - - - lowerbound - dlib/matrix/matrix_utilities_abstract.h.html#lowerbound - - - upperbound - dlib/matrix/matrix_utilities_abstract.h.html#upperbound - - - linspace - dlib/matrix/matrix_utilities_abstract.h.html#linspace - - - linpiece - dlib/matrix/matrix_utilities_abstract.h.html#linpiece - - - logspace - dlib/matrix/matrix_utilities_abstract.h.html#logspace - - - cartesian_product - dlib/matrix/matrix_utilities_abstract.h.html#cartesian_product - - - -
    - -
    - 2D/3D Geometry - border_enumerator - rectangle - drectangle - vector - point - rotate_point - rotate_around_x - rotate_around_y - rotate_around_z - point_rotator - point_transform - camera_transform - point_transform_affine - rectangle_transform - point_transform_affine3d - find_affine_transform - find_similarity_transform - point_transform_projective - find_projective_transform - rotation_matrix - get_rect - centered_rect - set_aspect_ratio - set_rect_area - center - dcenter - shrink_rect - grow_rect - translate_rect - translate_point - resize_rect - resize_rect_width - resize_rect_height - move_rect - nearest_point - nearest_rect - distance_to_rect_edge - clip_line_to_rectangle - distance_to_line -
    - - -
    - Sparse Vector Tools - sparse_to_dense - - - dot - dlib/svm/sparse_vector_abstract.h.html#dot - - - distance_squared - dlib/svm/sparse_vector_abstract.h.html#distance_squared - - - distance - dlib/svm/sparse_vector_abstract.h.html#distance - - - assign - dlib/svm/sparse_vector_abstract.h.html#assign - - - length_squared - dlib/svm/sparse_vector_abstract.h.html#length_squared - - - length - dlib/svm/sparse_vector_abstract.h.html#length - - - scale_by - dlib/svm/sparse_vector_abstract.h.html#scale_by - - - add - dlib/svm/sparse_vector_abstract.h.html#add - - - subtract - dlib/svm/sparse_vector_abstract.h.html#subtract - - - max_index_plus_one - dlib/svm/sparse_vector_abstract.h.html#max_index_plus_one - - - add_to - dlib/svm/sparse_vector_abstract.h.html#add_to - - - subtract_from - dlib/svm/sparse_vector_abstract.h.html#subtract_from - - - min - dlib/svm/sparse_vector_abstract.h.html#min - - - max - dlib/svm/sparse_vector_abstract.h.html#max - - - make_sparse_vector - dlib/svm/sparse_vector_abstract.h.html#make_sparse_vector - - - make_sparse_vector_inplace - dlib/svm/sparse_vector_abstract.h.html#make_sparse_vector_inplace - - - sparse_matrix_vector_multiply - dlib/svm/sparse_vector_abstract.h.html#sparse_matrix_vector_multiply - -
    - -
    -
    - - - - - - - - - - - sparse_to_dense - dlib/sparse_vector.h - dlib/svm/sparse_vector_abstract.h - - This is a set of simple functions that take - sparse vectors - and converts them into equivalent dense vectors. - - - - - - - mat - dlib/matrix.h - dlib/matrix/matrix_mat_abstract.h - - This is a set of simple functions that take objects like std::vector or - array2d and convert them into - matrix objects. Note that the conversion is - done using template expressions so there is no runtime cost associated - with calling mat(). - - - - - - - - matrix - dlib/matrix.h - dlib/matrix/matrix_abstract.h - - This is a 2D matrix object that enables you to write code that deals with - matrices using a simple syntax similar to what can be written in MATLAB. It is implemented using - the expression templates technique which allows it to eliminate the - temporary matrix objects that would normally be returned from expressions - such as M = A+B+C+D; Normally each invocation of the + operator would - construct and return a temporary matrix object but using this technique - we can avoid creating all these temporary objects and receive a large speed boost. -

    - This object is also capable of using BLAS and LAPACK libraries such as ATLAS or the Intel - MKL when available. To enable BLAS support all you have to do is #define - DLIB_USE_BLAS and then make sure you link your application with your - BLAS library. Similarly, to enable LAPACK support just #define DLIB_USE_LAPACK and - link to your LAPACK library. Finally, 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. -

    -

    - Note that the cmake files that come with dlib will automatically link with ATLAS or the Intel - MKL if they are installed. So using cmake makes this easy, but by no means are you required - to use cmake or the dlib cmake files. -

    -

    - It is also worth noting that all the preconditions of every function - related to the matrix object are checked by DLIB_ASSERT - statements and thus can be enabled by #defining ENABLE_ASSERTS or DEBUG. Doing - this will cause your program to run slower but should catch any usage errors. -

    -
    - - - matrix_ex.cpp.html - matrix_expressions_ex.cpp.html - - - - - matrix_utilities - dlib/matrix/matrix_utilities_abstract.h - - This extension contains miscellaneous utility functions - for manipulating matrix objects. - - - - - matrix_la - dlib/matrix/matrix_la_abstract.h - - This extension contains linear algebra functions to calculate - QR, LU, Cholesky, eigenvalue, and singular value decompositions. It also - contains a few other miscellaneous functions that solve systems of - equations or calculate values derived from the above decompositions. - - - - - matrix_math_functions - dlib/matrix/matrix_math_functions_abstract.h - This extension contains mathematical functions that operate on each - element of a matrix independently. - - - - - matrix_sub_expressions - dlib/matrix/matrix_subexp_abstract.h - - This extension contains a number of functions for dealing with sub-matrices. - - - - -
    - - - - - border_enumerator - dlib/geometry.h - dlib/geometry/border_enumerator_abstract.h - - This object is an enumerator - over the border points of a - rectangle. - - - - - - - nearest_point - dlib/geometry.h - dlib/geometry/rectangle_abstract.h - - This function takes a rectangle and a - point and returns the point in the given - rectangle that is nearest to the given point. - - - - - - - - nearest_rect - dlib/geometry.h - dlib/geometry/rectangle_abstract.h - - This function takes a std::vector<rectangle> and a - point and identifies the rectangle that is nearest to the point. - - - - - - - - distance_to_rect_edge - dlib/geometry.h - dlib/geometry/rectangle_abstract.h - - This function takes a rectangle and a - point and returns the Manhattan distance between - the rectangle's edge and the point. - - - - - - - - distance_to_line - dlib/geometry.h - dlib/geometry/rectangle_abstract.h - - This function takes a line and a point - and returns the distance from the line to the point. - - - - - - - - clip_line_to_rectangle - dlib/geometry.h - dlib/geometry/rectangle_abstract.h - - This function takes a rectangle and a line segment and - returns the part of the line segment that is entirely contained within the - rectangle. - - - - - - - move_rect - dlib/geometry.h - dlib/geometry/rectangle_abstract.h - - This function takes a rectangle and moves - it so that it's upper left corner occupies the given location. - - - - - - - - resize_rect_height - dlib/geometry.h - dlib/geometry/rectangle_abstract.h - - This function takes a rectangle and - returns a new rectangle with the given height but otherwise with the - same edge points as the original rectangle. - - - - - - - - resize_rect_width - dlib/geometry.h - dlib/geometry/rectangle_abstract.h - - This function takes a rectangle and - returns a new rectangle with the given width but otherwise with the - same edge points as the original rectangle. - - - - - - - - resize_rect - dlib/geometry.h - dlib/geometry/rectangle_abstract.h - - This function takes a rectangle and - returns a new rectangle with the given size but with the same upper - left corner as the original rectangle. - - - - - - - - translate_rect - dlib/geometry.h - dlib/geometry/rectangle_abstract.h - - This function takes a rectangle and moves - it by a given number of units along the x and y axis relative to - where it was before the move. - - - - - - - - center - dlib/geometry.h - dlib/geometry/rectangle_abstract.h - - Returns the center point of a rectangle. - - - - - - - - dcenter - dlib/geometry.h - dlib/geometry/rectangle_abstract.h - - Returns the center point of a rectangle. This - is a version of center() which returns a double version - of the point rather than one which uses integers to represent the - result. Therefore, it is slightly more accurate. - - - - - - - - centered_rect - dlib/geometry.h - dlib/geometry/rectangle_abstract.h - - There are various overloads of this function but the basic idea is - that it returns a rectangle with a given - width and height and centered about a given point. - - - - - - - - set_aspect_ratio - dlib/geometry.h - dlib/geometry/rectangle_abstract.h - - This function reshapes a rectangle so that - it has a user specified aspect ratio. - - - - - - - - set_rect_area - dlib/geometry.h - dlib/geometry/rectangle_abstract.h - - This function reshapes a rectangle so that - it has a user specified area. - - - - - - - - shrink_rect - dlib/geometry.h - dlib/geometry/rectangle_abstract.h - - This function takes a rectangle object, - shrinks its borders by a given amount, and returns the result. - - - - - - - - grow_rect - dlib/geometry.h - dlib/geometry/rectangle_abstract.h - - This function takes a rectangle object, - grows its borders by a given amount, and returns the result. - - - - - - - - rotate_point - dlib/geometry.h - dlib/geometry/point_transforms_abstract.h - - This is a function that rotates a 2D vector or - point object about a given point. - - - - - - - - point_rotator - dlib/geometry.h - dlib/geometry/point_transforms_abstract.h - - This is an object that rotates a 2D vector or - point object about the origin. - - - - - - - - point_transform - dlib/geometry.h - dlib/geometry/point_transforms_abstract.h - - This is an object that rotates a 2D vector or - point object about the origin and then adds a - displacement vector. - - - - - - - - point_transform_affine - dlib/geometry.h - dlib/geometry/point_transforms_abstract.h - - This is an object that applies a 2D affine transformation to a vector or - point. Note that you can use find_affine_transform - to easily create affine transforms from sets of point correspondences. - - - - - - - - rectangle_transform - dlib/geometry.h - dlib/geometry/point_transforms_abstract.h - - This is an object that applies a 2D affine transformation - to a rectangle or drectangle. - - - - - - - - camera_transform - dlib/geometry.h - dlib/geometry/point_transforms_abstract.h - - This object maps 3D points into the image plane of a camera. Therefore, - you can use it to compute 2D representations of 3D data from the point of - view of some camera in 3D space. - - - - - - - - point_transform_affine3d - dlib/geometry.h - dlib/geometry/point_transforms_abstract.h - - This is an object that applies a 3D affine transformation to a vector. - - - - - - - - find_affine_transform - dlib/geometry.h - dlib/geometry/point_transforms_abstract.h - - This is a routine that takes in two sets of points and finds the - best affine transformation - that maps between them. - - - - - - - - find_similarity_transform - dlib/geometry.h - dlib/geometry/point_transforms_abstract.h - - This is a routine that takes in two sets of points and finds the - best affine transformation - that maps between them. However, it considers only rotations, translations, - and uniform scale changes in finding the mapping. Therefore, it finds - a similarity transformation rather than a general affine transform. - - - - - - - - point_transform_projective - dlib/geometry.h - dlib/geometry/point_transforms_abstract.h - - This is an object that applies a projective transformation to a vector or - point. Note that you can use find_projective_transform - to easily create projective transforms from sets of point correspondences. - - - - - - - - find_projective_transform - dlib/geometry.h - dlib/geometry/point_transforms_abstract.h - - This is a routine that takes in two sets of points and finds the - best projective transformation - that maps between them. - - - - - - - - rotation_matrix - dlib/geometry.h - dlib/geometry/point_transforms_abstract.h - - This is a method for creating 2D rotation matrices. - - - - - - - - rotate_around_x - dlib/geometry.h - dlib/geometry/point_transforms_abstract.h - - This is a method for creating a point_transform_affine3d - that rotates points around the x-axis. - - - - - - - rotate_around_y - dlib/geometry.h - dlib/geometry/point_transforms_abstract.h - - This is a method for creating a point_transform_affine3d - that rotates points around the y-axis. - - - - - - - rotate_around_z - dlib/geometry.h - dlib/geometry/point_transforms_abstract.h - - This is a method for creating a point_transform_affine3d - that rotates points around the z-axis. - - - - - - - translate_point - dlib/geometry.h - dlib/geometry/point_transforms_abstract.h - - This is a method for creating a point_transform_affine3d - that just translates points. - - - - - - - get_rect - dlib/geometry.h - dlib/geometry/rectangle_abstract.h - - This is a simple template function that returns a rectangle - representing the size of a 2D container (e.g. matrix or - array2d). - - - - - - - drectangle - dlib/geometry.h - dlib/geometry/drectangle_abstract.h - - This object represents a rectangular region inside a Cartesian - coordinate system. It is very similar to the rectangle - except that it uses double variables instead of longs to represent the location of the rectangle. - Therefore, it can position rectangles with sub-pixel accuracy. - - - - - - - rectangle - dlib/geometry.h - dlib/geometry/rectangle_abstract.h - - This object represents a rectangular region inside a Cartesian - coordinate system. It allows you to easily represent and manipulate - rectangles. - - - - - - - vector - dlib/geometry.h - dlib/geometry/vector_abstract.h - - This object represents a two or three dimensional vector. - -

    If you - want to work with general N-dimensional column vectors then you - should the matrix object. In particular, you - should usually use a matrix with this type: - dlib::matrix<double,0,1>.

    -
    -
    - - - - - point - dlib/geometry.h - dlib/geometry/vector_abstract.h - - This object represents a point inside a Cartesian coordinate system. - Note that a point is simply a typedef for a vector - that is 2D and uses longs to represent coordinate values. - - - - - - -
    - - - - -
    - diff --git a/ml/dlib/docs/docs/main_menu.xml b/ml/dlib/docs/docs/main_menu.xml deleted file mode 100644 index bbd91f975..000000000 --- a/ml/dlib/docs/docs/main_menu.xml +++ /dev/null @@ -1,665 +0,0 @@ - - - - - -
    - The Library - - Algorithms - algorithms.html - algorithms.xml - - - Graph Tools - graph_tools.html - graph_tools.xml - - - Optimization - optimization.html - optimization.xml - - - Machine Learning - ml.html - ml.xml - - - Linear Algebra - linear_algebra.html - linear_algebra.xml - - - Bayesian Nets - bayes.html - bayes.xml - - - Containers - containers.html - containers.xml - - - API Wrappers - api.html - api.xml - - - Networking - network.html - network.xml - - - Compression - compression.html - compression.xml - - - Parsing - parsing.html - parsing.xml - - - Image Processing - imaging.html - imaging.xml - - - Metaprogramming - metaprogramming.html - metaprogramming.xml - - - Miscellaneous - other.html - other.xml - -
    - - -
    - Help/Info - - - Home - index.html - - - - - Home - http://dlib.net - - - - Dlib Blog - http://blog.dlib.net - - - - Who uses dlib? - http://sourceforge.net/p/dclib/wiki/Known_users/ - - - - Introduction - intro.html - intro.xml - - - Python API - python/index.html - - - How to compile - compile.html - - - Suggested Books - books.html - - - License - license.html - - - How to contribute - howto_contribute.html - - - FAQ - faq.html - - - Index - term_index.html - - - Examples: Python - - - Global Optimization - global_optimization.py.html - - - Face Clustering - face_clustering.py.html - - - Face Jittering/Augmentation - face_jitter.py.html - - - Face Alignment - face_alignment.py.html - - - Video Object Tracking - correlation_tracker.py.html - - - Binary Classification - svm_binary_classifier.py.html - - - Face Landmark Detection - face_landmark_detection.py.html - - - Face Recognition - face_recognition.py.html - - - Find Candidate Object Locations - find_candidate_object_locations.py.html - - - Train Shape Predictor - train_shape_predictor.py.html - - - Face Detector - face_detector.py.html - - - CNN Face Detector - cnn_face_detector.py.html - - - Train Object Detector - train_object_detector.py.html - - - Sequence Segmenter - sequence_segmenter.py.html - - - Structural Support Vector Machines - svm_struct.py.html - - - SVM-Rank - svm_rank.py.html - - - Linear Assignment Problems - max_cost_assignment.py.html - - - - - Examples: C++ - - - Deep Learning Introduction Part 1 - dnn_introduction_ex.cpp.html - - - Deep Learning Introduction Part 2 - dnn_introduction2_ex.cpp.html - - - Deep Learning Imagenet Classifier - dnn_imagenet_ex.cpp.html - - - Deep Learning Imagenet Trainer - dnn_imagenet_train_ex.cpp.html - - - Deep Learning Inception - dnn_inception_ex.cpp.html - - - Deep Metric Learning Introduction - dnn_metric_learning_ex.cpp.html - - - Deep Metric Learning on Images - dnn_metric_learning_on_images_ex.cpp.html - - - Deep Face Recognition - dnn_face_recognition_ex.cpp.html - - - Deep Learning Semantic Segmentation Trainer - dnn_semantic_segmentation_train_ex.cpp.html - - - Deep Learning Semantic Segmentation - dnn_semantic_segmentation_ex.cpp.html - - - Deep Learning Vehicle Detection - dnn_mmod_find_cars_ex.cpp.html - - - Deep Learning Multi-Class Vehicle Detection - dnn_mmod_find_cars2_ex.cpp.html - - - Deep Learning Vehicle Detection Trainer - dnn_mmod_train_find_cars_ex.cpp.html - - - Deep Learning Face Detection - dnn_mmod_face_detection_ex.cpp.html - - - Deep Learning Dog Hipsterizer - dnn_mmod_dog_hipsterizer.cpp.html - - - Deep Learning Max-Margin Object Detection - dnn_mmod_ex.cpp.html - - - - Random Cropper - random_cropper_ex.cpp.html - - - - Linear Model Predictive Control - mpc_ex.cpp.html - - - Video Object Tracking - video_tracking_ex.cpp.html - - - SQLite - sqlite_ex.cpp.html - - - Hough Transform - hough_transform_ex.cpp.html - - - Webcam Face Pose Estimation - webcam_face_pose_ex.cpp.html - - - Linear Assignment Problems - max_cost_assignment_ex.cpp.html - - - Learning to Track - learning_to_track_ex.cpp.html - - - Structural Support Vector Machines - svm_struct_ex.cpp.html - - - Sequence Segmentation - sequence_segmenter_ex.cpp.html - - - Train Object Detector - train_object_detector.cpp.html - - - One Class Classifiers - one_class_classifiers_ex.cpp.html - - - Parallel For Loops - parallel_for_ex.cpp.html - - - Numerical Integration - integrate_function_adapt_simp_ex.cpp.html - - - SVM-Rank - svm_rank_ex.cpp.html - - - BSP - bsp_ex.cpp.html - - - Assignment Learning - assignment_learning_ex.cpp.html - - - Graph Labeling - graph_labeling_ex.cpp.html - - - Sequence Labeling - sequence_labeler_ex.cpp.html - - - Object Detector - object_detector_ex.cpp.html - - - Object Detector Advanced - object_detector_advanced_ex.cpp.html - - - Running Stats - running_stats_ex.cpp.html - - - Config File Reader - config_reader_ex.cpp.html - - - Member Function Pointer - member_function_pointer_ex.cpp.html - - - Empirical Kernel Map - empirical_kernel_map_ex.cpp.html - - - Linear Manifold Regularizer - linear_manifold_regularizer_ex.cpp.html - - - Kernel RLS Regression - krls_ex.cpp.html - - - Optimization - optimization_ex.cpp.html - - - Non-Linear Least Squares - least_squares_ex.cpp.html - - - Kernel RLS Filtering - krls_filter_ex.cpp.html - - - Kernel Centroid - kcentroid_ex.cpp.html - - - Kernel K-Means Clustering - kkmeans_ex.cpp.html - - - Matrix - matrix_ex.cpp.html - - - Matrix Expressions - matrix_expressions_ex.cpp.html - - - 3D Point Cloud - 3d_point_cloud_ex.cpp.html - - - Image - image_ex.cpp.html - - - FHOG Feature Extraction - fhog_ex.cpp.html - - - FHOG Object Detection - fhog_object_detector_ex.cpp.html - - - Face Detection - face_detection_ex.cpp.html - - - Face Landmark Detection - face_landmark_detection_ex.cpp.html - - - Train Shape Predictor - train_shape_predictor_ex.cpp.html - - - SURF - surf_ex.cpp.html - - - Rank Features - rank_features_ex.cpp.html - - - Relevance Vector Regression - rvm_regression_ex.cpp.html - - - Relevance Vector Classification - rvm_ex.cpp.html - - - Kernel Ridge Regression - krr_regression_ex.cpp.html - - - KRR Classification - krr_classification_ex.cpp.html - - - Nu-Support Vector Machine - svm_ex.cpp.html - - - C-Support Vector Machine - svm_c_ex.cpp.html - - - Using Custom Kernels - using_custom_kernels_ex.cpp.html - - - Support Vector Regression - svr_ex.cpp.html - - - Multiclass Classification - multiclass_classification_ex.cpp.html - - - Custom Trainers - custom_trainer_ex.cpp.html - - - Model Selection - model_selection_ex.cpp.html - - - Online SVM - svm_pegasos_ex.cpp.html - - - Sparse Vectors - svm_sparse_ex.cpp.html - - - Neural Network - mlp_ex.cpp.html - - - Bayesian Network From Disk - bayes_net_from_disk_ex.cpp.html - - - Bayesian Network GUI - bayes_net_gui_ex.cpp.html - - - Bayesian Network - bayes_net_ex.cpp.html - - - Std C++ Allocator - std_allocator_ex.cpp.html - - - HTTP Server - server_http_ex.cpp.html - - - Base64 Encoder - file_to_code_ex.cpp.html - - - Sockstreambuf - sockstreambuf_ex.cpp.html - - - IO Streams Server - server_iostream_ex.cpp.html - - - IO Socket Streams - iosockstream_ex.cpp.html - - - Logger - logger_ex.cpp.html - - - Logger Advanced - logger_ex_2.cpp.html - - - Logger Custom Output - logger_custom_output_ex.cpp.html - - - XML Parser - xml_parser_ex.cpp.html - - - Threads - threads_ex.cpp.html - - - Directory Navigation - dir_nav_ex.cpp.html - - - GUI - gui_api_ex.cpp.html - - - Sockets - sockets_ex.cpp.html - - - Queue - queue_ex.cpp.html - - - Quantum Computing - quantum_computing_ex.cpp.html - - - Bridge - bridge_ex.cpp.html - - - Pipe - pipe_ex.cpp.html - - - Pipe 2 - pipe_ex_2.cpp.html - - - Timer - timer_ex.cpp.html - - - Compress Stream - compress_stream_ex.cpp.html - - - Cmd Line Parser - compress_stream_ex.cpp.html#_top - - - Threaded Object - threaded_object_ex.cpp.html - - - Thread Pool - thread_pool_ex.cpp.html - - - Thread Function - thread_function_ex.cpp.html - - - Multithreaded Object - multithreaded_object_ex.cpp.html - - - -
    - -
    - Current Release - Version: - - Release Notes - release_notes.html - - - Change Log - change_log.html - - -
    - - - -
    Download dlib
    -
    ver.
    -
    - http://dlib.net/files/dlib-.tar.bz2 -
    -
    -
    - - - Last Modified:
    - -
    - -
    - -
    - diff --git a/ml/dlib/docs/docs/metaprogramming.xml b/ml/dlib/docs/docs/metaprogramming.xml deleted file mode 100644 index 93d095275..000000000 --- a/ml/dlib/docs/docs/metaprogramming.xml +++ /dev/null @@ -1,813 +0,0 @@ - - - - - Metaprogramming - - - - - -

    - This page documents library components that provide metaprogramming sorts of functionality. For - the most part they are useful for putting design by contract checks into code or doing various kinds of - clever things with templates. -

    -

    - For example, you might have a templated function that is templated on a type T and you want to - make sure that T is either a char or wchar_t type. You could place the following into your code - and it would cause the compile to error out when T was set to something other than char or wchar_t. -
    - COMPILE_TIME_ASSERT((is_same_type<T,char>::value || is_same_type<T,wchar_t>::value)); -

    - - - - - - - -
    - Objects - is_pointer_type - is_const_type - is_reference_type - is_same_type - is_float_type - is_convertible - is_complex - is_function - is_signed_type - is_unsigned_type - static_switch - noncopyable - enable_if - is_array2d - is_array - is_graph - is_rand - is_matrix - is_config_reader - is_std_vector - is_pair - is_directed_graph - is_built_in_scalar_type - promote - basic_type - unsigned_type - tabs - tmin - tmax - compile_time_integer_list - make_compile_time_integer_range -
    - -
    - Global Functions - DLIB_ASSERT - DLIB_STACK_TRACE - DLIB_STACK_TRACE_NAMED - get_stack_trace - DLIB_CASSERT - COMPILE_TIME_ASSERT - ASSERT_ARE_SAME_TYPE - DLIB_ASSERT_HAS_STANDARD_LAYOUT - ASSERT_ARE_NOT_SAME_TYPE - _dT - is_same_object - assign_zero_if_built_in_scalar_type - wrap_function - DLIB_MAKE_HAS_MEMBER_FUNCTION_TEST -
    - -
    - Other - portability_macros -
    - -
    -
    - - - - - - - - - - - tmin - dlib/algs.h - dlib/algs.h - - This is a template to compute the min of two values at compile time. - - - - - - - - tmax - dlib/algs.h - dlib/algs.h - - This is a template to compute the max of two values at compile time. - - - - - - - - compile_time_integer_list - dlib/metaprogramming.h - dlib/metaprogramming.h - - This is a variadic template that can represent a list of integers. - - - - - - - - make_compile_time_integer_range - dlib/metaprogramming.h - dlib/metaprogramming.h - - This is a variadic template that takes one number, MAX, as input - and creates a compile_time_integer_list - representing the range of integers [1,MAX] inclusive. - - - - - - - tabs - dlib/algs.h - dlib/algs.h - - This is a template to compute the absolute value a number at compile time. - - - - - - - - unsigned_type - dlib/uintn.h - dlib/uintn.h - - This is a template that allows you to obtain the unsigned version - of any integral type. For example, unsigned_type<signed short>::type == - unsigned short. - - - - - - - - static_switch - dlib/algs.h - dlib/algs.h - - To use this template you give it some number of boolean expressions and it - tells you which one of them is true. If more than one of them is true then - it causes a compile time error. It is useful for cases where you want to - specialize a template and you want to specialize it not by - the type of object it gets per say but instead according to the values of some - type traits associated with the various template arguments. A simple example of - this can be seen in the assign_pixel's - implementation which can be found at the bottom of the - dlib/pixel.h file. - - - - - - - - enable_if - dlib/enable_if.h - - This is a family of templates from the Boost C++ libraries that makes it somewhat easier to control - template specialization. For the details see - this page. Note that the header dlib/enable_if.h brings - these templates into the dlib namespace.
    -
    - -
    - - - - - noncopyable - dlib/noncopyable.h - dlib/noncopyable.h - - This is a simple class that makes it easy to declare a non-copyable object. - To use it to make your own class non-copyable just inherit from it. - - - - - - - - is_convertible - dlib/algs.h - dlib/algs.h - - This is a template that can be used to determine if one type is convertible - into another type. - - - - - - - - is_complex - dlib/matrix.h - dlib/matrix/matrix_utilities.h - - This is a template that can be used to determine if a type is a - specialization of std::complex. - - - - - - - - is_same_type - dlib/algs.h - dlib/algs.h - - This is a template where is_same_type<T,U>::value == true when T and U are - the same type and false otherwise. - - - - - - - - is_float_type - dlib/algs.h - dlib/algs.h - - This is a template where is_float_type<T>::value == true when T is - a floating point type (i.e. float, double, or long double) and false otherwise. - - - - - - - - is_same_object - dlib/algs.h - dlib/algs.h - - This is a templated function which checks if both of its arguments are actually - references to the same object. It returns true if they are and false otherwise. - - - - - - - - is_function - dlib/algs.h - dlib/algs.h - - This is a template where is_function<T>::value == true when T is - a function type. - - - - - - - - is_signed_type - dlib/algs.h - dlib/algs.h - - This is a template where is_signed_type<T>::value == true when T is - a signed scalar type and false when it is an unsigned scalar - type. - - - - - - - - is_unsigned_type - dlib/algs.h - dlib/algs.h - - This is a template where is_unsigned_type<T>::value == true when T is - an unsigned scalar type and false when it is a signed scalar - type. - - - - - - - - is_directed_graph - dlib/is_kind.h - dlib/is_kind.h - - This is a template where is_directed_graph<T>::value == true when T - is a directed_graph object. - - - - - - - - is_built_in_scalar_type - dlib/algs.h - dlib/algs.h - - This is a template where is_built_in_scalar_type<T>::value == true when T - is a built in scalar type such as int, char, float, etc. - - - - - - - - promote - dlib/algs.h - dlib/algs.h - - This is a template that takes one of the built in scalar types and gives you another - scalar type that should be big enough to hold sums of values from the original scalar - type. The new scalar type will also always be signed. - -

    - For example, promote<uint16>::type == int32 -

    -
    - -
    - - - - - basic_type - dlib/algs.h - dlib/algs.h - - This is a template that takes a type and strips off any const, volatile, or reference - qualifiers and gives you back the basic underlying type. - -

    - For example, promote<const int&>::type == int -

    -
    - -
    - - - - - - is_std_vector - dlib/is_kind.h - dlib/is_kind.h - - This is a template where is_std_vector<T>::value == true when T - is a std_vector_c or std::vector object. - - - - - - - - is_pair - dlib/is_kind.h - dlib/is_kind.h - - This is a template where is_pair<T>::value == true when T - is a std::pair object. - - - - - - - - - is_matrix - dlib/is_kind.h - dlib/is_kind.h - - This is a template where is_matrix<T>::value == true when T - is a matrix object or some kind - of matrix expression. - - - - - - - - is_config_reader - dlib/is_kind.h - dlib/is_kind.h - - This is a template where is_config_reader<T>::value == true when T - is a config_reader or - config_reader_thread_safe object. - - - - - - - - - is_graph - dlib/is_kind.h - dlib/is_kind.h - - This is a template where is_graph<T>::value == true when T - is a graph object. - - - - - - - - is_array2d - dlib/is_kind.h - dlib/is_kind.h - - This is a template where is_array2d<T>::value == true when T - is an array2d object. - - - - - - - - is_array - dlib/is_kind.h - dlib/is_kind.h - - This is a template where is_array<T>::value == true when T - is an array object. - - - - - - - - is_rand - dlib/is_kind.h - dlib/is_kind.h - - This is a template where is_rand<T>::value == true when T - is a rand object. - - - - - - - - is_reference_type - dlib/algs.h - dlib/algs.h - - This is a template where is_reference_type<T>::value == true when T is a reference - type and false otherwise. - - - - - - - - is_const_type - dlib/algs.h - dlib/algs.h - - This is a template where is_const_type<T>::value == true when T is a const - type and false otherwise. - - - - - - - - - is_pointer_type - dlib/algs.h - dlib/algs.h - - This is a template where is_pointer_type<T>::value == true when T is a pointer - type and false otherwise. - - - - - - - - ASSERT_ARE_NOT_SAME_TYPE - dlib/assert.h - dlib/assert.h - -

    - This is a macro function for debugging. Its form is ASSERT_ARE_NOT_SAME_TYPE(type1, type2). - If type1 and type2 are the same type then the compile will fail. This is sometimes useful - in validating template arguments. -

    -
    - -
    - - - - - ASSERT_ARE_SAME_TYPE - dlib/assert.h - dlib/assert.h - -

    - This is a macro function for debugging. Its form is ASSERT_ARE_SAME_TYPE(type1, type2). - If type1 and type2 are not the same type then the compile will fail. This is sometimes useful - in validating template arguments. -

    -
    - -
    - - - - - DLIB_ASSERT_HAS_STANDARD_LAYOUT - dlib/assert.h - dlib/assert.h - -

    - This macro is meant to cause a compiler error if a type doesn't have a simple - memory layout (like a C struct). In particular, types with simple layouts are - ones which can be copied via memcpy(). -

    - - This was called a POD type in C++03 and in C++0x we are looking to check if - it is a "standard layout type". Once we can use C++0x we can change this macro - to something that uses the std::is_standard_layout type_traits class. - See: http://www2.research.att.com/~bs/C++0xFAQ.html#PODs -
    - -
    - - - - - COMPILE_TIME_ASSERT - dlib/assert.h - dlib/assert.h - -

    - This is a macro function for debugging. Its form is COMPILE_TIME_ASSERT(condition that should - be true). The condition must be a compile time constant and if it is false then the compile - will fail. -

    -
    - -
    - - - - - DLIB_MAKE_HAS_MEMBER_FUNCTION_TEST - dlib/algs.h - dlib/algs.h - -

    - The DLIB_MAKE_HAS_MEMBER_FUNCTION_TEST() macro is used to define traits templates - that tell you if a class has a certain member function. For example, to make a - test to see if a class has a public method with the signature void print(int) you - would say: -

    -
    - DLIB_MAKE_HAS_MEMBER_FUNCTION_TEST(has_print, void, print, (int)) -
    - Then you can check if a class, T, has this method by looking at the boolean value: -
    - has_print<T>::value -
    - which will be true if the member function is in the T class. - -
    - -
    - - - - - - DLIB_CASSERT - dlib/assert.h - dlib/assert.h - -

    - This is a macro function that is identical to the DLIB_ASSERT macro - except that it is always enabled. Even if _DEBUG, DEBUG and ENABLE_ASSERTS are not defined. -

    -

    - Note that when this macro fails and throws an exception it also calls the global - C function dlib_assert_breakpoint(). This behavior makes it easy to set a debugging - tool to break when DLIB_CASSERT fails by setting a breakpoint on dlib_assert_breakpoint(). -

    -
    - -
    - - - - - - DLIB_ASSERT - dlib/assert.h - dlib/assert.h - -

    - This is a macro function for debugging. Its form is -DLIB_ASSERT(condition that should be true, error message) -or you can omit the error message and call it like: -DLIB_ASSERT(condition that should be true) - If the condition is false DLIB_ASSERT throws an exception of type - dlib::fatal_error with fatal_error::type == EBROKEN_ASSERT. An error message detailing - the nature of the problem is stored in the member variable info which is of type std::string. - Look in the following file for more details. The exception classes are defined - here. -

    -

    - This macro is only enabled if _DEBUG, DEBUG or ENABLE_ASSERTS is defined. Also, if this macro is - enabled then ENABLE_ASSERTS will be defined even if you didn't define it. -

    -

    - Note that when this macro fails and throws an exception it also calls the global - C function dlib_assert_breakpoint(). This behavior makes it easy to set a debugging - tool to break when DLIB_ASSERT fails by setting a breakpoint on dlib_assert_breakpoint(). -

    -
    - -
    - - - - - - DLIB_STACK_TRACE - dlib/assert.h - dlib/stack_trace.h - -

    - This is a preprocessor macro that allows you to tag a function so - that dlib will keep track of it in a function call stack. That is, - you will be able to see a stack trace by calling get_stack_trace - if you put this macro at the top of your functions. -

    -

    - This macro is only enabled if DLIB_ENABLE_STACK_TRACE is defined. If it isn't defined then - this macro doesn't do anything. Also note that when this macro is defined it will - cause DLIB_ASSERT and DLIB_CASSERT - to include a stack trace in their error messages. -

    -
    - -
    - - - - - - DLIB_STACK_TRACE_NAMED - dlib/assert.h - dlib/stack_trace.h - - This is a preprocessor macro just like DLIB_STACK_TRACE - except that it allows you to supply your own string to use as the function name - in the stack trace instead of the one deduced by DLIB_STACK_TRACE. -

    - This macro is only enabled if DLIB_ENABLE_STACK_TRACE is defined. -

    -
    - -
    - - - - - get_stack_trace - dlib/assert.h - dlib/stack_trace.h - - This function allows you to query the current stack trace. -

    - This macro is only enabled if DLIB_ENABLE_STACK_TRACE is defined. -

    -
    - -
    - - - - - - _dT - dlib/algs.h - dlib/algs.h - - This is a macro function for converting a string/character literal to either a char or wchar_t literal. - Its form is _dT(target character type,string or character literal) - - - - - - - - assign_zero_if_built_in_scalar_type - dlib/algs.h - dlib/algs.h - -

    - This function assigns its argument the value of 0 if it is a built in scalar - type according to the is_built_in_scalar_type - template. If it isn't a built in scalar type then it does nothing. -

    -

    - This function is useful for suppressing compiler warnings about uninitialized - types inside of templates that are designed to accept the built in types - as well as user defined classes. -

    - -
    - -
    - - - - - - wrap_function - dlib/algs.h - dlib/algs.h - - This is a template that allows you to turn a global function into a - function object. See the specs for more details. - - - - - - - - - portability_macros - dlib/platform.h - dlib/platform.h - - This file #defines various macros depending on the platform being compiled under. - See the file itself for the specifics. - - - - - - - -
    - - - - -
    - diff --git a/ml/dlib/docs/docs/minus.gif b/ml/dlib/docs/docs/minus.gif deleted file mode 100644 index 1deac2fe1..000000000 Binary files a/ml/dlib/docs/docs/minus.gif and /dev/null differ diff --git a/ml/dlib/docs/docs/ml.xml b/ml/dlib/docs/docs/ml.xml deleted file mode 100644 index f97e7da57..000000000 --- a/ml/dlib/docs/docs/ml.xml +++ /dev/null @@ -1,3957 +0,0 @@ - - - - - Machine Learning - - - - - - -
    -
    -

    - Dlib contains a wide range of machine learning algorithms. All - designed to be highly modular, quick to execute, and simple to use - via a clean and modern C++ API. It is used in a wide range of - applications including robotics, embedded devices, mobile phones, and large - high performance computing environments. If you use dlib in your - research please cite: -

    -
    -Davis E. King. Dlib-ml: A Machine Learning Toolkit. 
    -   Journal of Machine Learning Research, 2009
    -
    -@Article{dlib09,
    -  author = {Davis E. King},
    -  title = {Dlib-ml: A Machine Learning Toolkit},
    -  journal = {Journal of Machine Learning Research},
    -  year = {2009},
    -  volume = {10},
    -  pages = {1755-1758},
    -}
    -         
    - - - - - - - - -

    Primary Algorithms

    -
    - Binary Classification - svm_nu_trainer - svm_c_trainer - svm_c_linear_trainer - svm_c_linear_dcd_trainer - svm_c_ekm_trainer - rvm_trainer - svm_pegasos - train_probabilistic_decision_function -
    -
    - Multiclass Classification - one_vs_one_trainer - one_vs_all_trainer - svm_multiclass_linear_trainer -
    -
    - Regression - mlp - krls - rls - krr_trainer - rr_trainer - svr_trainer - svr_linear_trainer - rvm_regression_trainer - rbf_network_trainer - random_forest_regression_trainer -
    -
    - Structured Prediction - - Problem Instances - - structural_svm_sequence_labeling_problem - structural_svm_object_detection_problem - structural_svm_assignment_problem - structural_svm_graph_labeling_problem - - - - Core Tools - - structural_svm_problem - structural_svm_problem_threaded - svm_struct_controller_node - svm_struct_processing_node - - - structural_object_detection_trainer - structural_sequence_labeling_trainer - structural_sequence_segmentation_trainer - structural_assignment_trainer - structural_track_association_trainer - structural_graph_labeling_trainer - svm_rank_trainer - shape_predictor_trainer -
    -
    - Deep Learning - - - Core Tools - - dnn_trainer - add_layer - add_loss_layer - repeat - add_tag_layer - add_skip_layer - layer - test_layer - resizable_tensor - alias_tensor - - - - Input Layers - - input - input_rgb_image - input_rgb_image_sized - input_rgb_image_pyramid - - EXAMPLE_INPUT_LAYER - dlib/dnn/input_abstract.h.html#EXAMPLE_INPUT_LAYER - - - - - Computational Layers - - - EXAMPLE_COMPUTATIONAL_LAYER - dlib/dnn/layers_abstract.h.html#EXAMPLE_COMPUTATIONAL_LAYER_ - - - fc - dlib/dnn/layers_abstract.h.html#fc_ - - - con - dlib/dnn/layers_abstract.h.html#con_ - - - cont - dlib/dnn/layers_abstract.h.html#cont_ - - - scale - dlib/dnn/layers_abstract.h.html#scale_ - - - extract - dlib/dnn/layers_abstract.h.html#extract_ - - - mult_prev - dlib/dnn/layers_abstract.h.html#mult_prev_ - - - upsample - dlib/dnn/layers_abstract.h.html#upsample_ - - - l2normalize - dlib/dnn/layers_abstract.h.html#l2normalize_ - - - dropout - dlib/dnn/layers_abstract.h.html#dropout_ - - - multiply - dlib/dnn/layers_abstract.h.html#multiply_ - - - bn - dlib/dnn/layers_abstract.h.html#bn_ - - - affine - dlib/dnn/layers_abstract.h.html#affine_ - - - max_pool - dlib/dnn/layers_abstract.h.html#max_pool_ - - - avg_pool - dlib/dnn/layers_abstract.h.html#avg_pool_ - - - relu - dlib/dnn/layers_abstract.h.html#relu_ - - - concat - dlib/dnn/layers_abstract.h.html#concat_ - - - prelu - dlib/dnn/layers_abstract.h.html#prelu_ - - - sig - dlib/dnn/layers_abstract.h.html#sig_ - - - htan - dlib/dnn/layers_abstract.h.html#htan_ - - - softmax_all - dlib/dnn/layers_abstract.h.html#softmax_all_ - - - softmax - dlib/dnn/layers_abstract.h.html#softmax_ - - - add_prev - dlib/dnn/layers_abstract.h.html#add_prev_ - - - inception - dlib/dnn/layers_abstract.h.html#inception - - - - - Loss Layers - - - EXAMPLE_LOSS_LAYER - dlib/dnn/loss_abstract.h.html#EXAMPLE_LOSS_LAYER_ - - - loss_dot - dlib/dnn/loss_abstract.h.html#loss_dot_ - - - loss_epsilon_insensitive - dlib/dnn/loss_abstract.h.html#loss_epsilon_insensitive_ - - - loss_ranking - dlib/dnn/loss_abstract.h.html#loss_ranking_ - - - loss_binary_hinge - dlib/dnn/loss_abstract.h.html#loss_binary_hinge_ - - - loss_binary_log - dlib/dnn/loss_abstract.h.html#loss_binary_log_ - - - loss_multimulticlass_log - dlib/dnn/loss_abstract.h.html#loss_multimulticlass_log_ - - - loss_multiclass_log - dlib/dnn/loss_abstract.h.html#loss_multiclass_log_ - - - loss_multiclass_log_per_pixel - dlib/dnn/loss_abstract.h.html#loss_multiclass_log_per_pixel_ - - - loss_multiclass_log_per_pixel_weighted - dlib/dnn/loss_abstract.h.html#loss_multiclass_log_per_pixel_weighted_ - - - loss_mmod - #loss_mmod_ - - - loss_metric - #loss_metric_ - - - loss_mean_squared - #loss_mean_squared_ - - - loss_mean_squared_per_pixel - dlib/dnn/loss_abstract.h.html#loss_mean_squared_per_pixel_ - - - loss_mean_squared_multioutput - dlib/dnn/loss_abstract.h.html#loss_mean_squared_multioutput_ - - - - - Solvers - - - EXAMPLE_SOLVER - dlib/dnn/solvers_abstract.h.html#EXAMPLE_SOLVER - - - sgd - dlib/dnn/solvers_abstract.h.html#sgd - - - adam - dlib/dnn/solvers_abstract.h.html#adam - - - -
    - -
    - Clustering - pick_initial_centers - kkmeans - find_clusters_using_kmeans - find_clusters_using_angular_kmeans - nearest_center - newman_cluster - spectral_cluster - chinese_whispers - bottom_up_cluster - segment_number_line - modularity -
    -
    - Unsupervised - kcentroid - linearly_independent_subset_finder - empirical_kernel_map - svm_one_class_trainer - vector_normalizer - vector_normalizer_pca - sammon_projection - cca -
    -
    - Semi-Supervised/Metric Learning - linear_manifold_regularizer - discriminant_pca - vector_normalizer_frobmetric - compute_lda_transform -
    -
    - Reinforcement Learning - lspi -
    -
    - Feature Selection - rank_features - sort_basis_vectors - rank_unlabeled_training_samples -
    - -

    Other Tools

    -
    - Validation - cross_validate_trainer - cross_validate_object_detection_trainer - cross_validate_trainer_threaded - cross_validate_multiclass_trainer - cross_validate_regression_trainer - cross_validate_sequence_labeler - cross_validate_sequence_segmenter - cross_validate_assignment_trainer - cross_validate_track_association_trainer - cross_validate_graph_labeling_trainer - cross_validate_ranking_trainer - test_binary_decision_function - test_multiclass_decision_function - test_regression_function - test_object_detection_function - test_sequence_labeler - test_sequence_segmenter - test_assignment_function - test_track_association_function - test_graph_labeling_function - test_ranking_function - test_shape_predictor - average_precision - equal_error_rate - compute_roc_curve -
    - -
    - Trainer Adapters - reduced - reduced2 - batch - probabilistic - verbose_batch - batch_cached - verbose_batch_cached - null_trainer - roc_c1_trainer - roc_c2_trainer -
    - -
    - Kernels - radial_basis_kernel - polynomial_kernel - sigmoid_kernel - linear_kernel - histogram_intersection_kernel - offset_kernel - - sparse_radial_basis_kernel - sparse_polynomial_kernel - sparse_sigmoid_kernel - sparse_linear_kernel - sparse_histogram_intersection_kernel - -
    - -
    - Function Objects - random_forest_regression_function - decision_function - projection_function - distance_function - probabilistic_decision_function - probabilistic_function - normalized_function - one_vs_one_decision_function - multiclass_linear_decision_function - one_vs_all_decision_function - sequence_labeler - sequence_segmenter - assignment_function - track_association_function - graph_labeler - policy -
    - -
    - Data IO - load_image_dataset_metadata - load_image_dataset - save_image_dataset_metadata - load_libsvm_formatted_data - save_libsvm_formatted_data - fix_nonzero_indexing - make_bounding_box_regression_training_data -
    - -
    - Miscellaneous - simplify_linear_decision_function - fill_lisf - randomize_samples - is_binary_classification_problem - is_sequence_labeling_problem - is_sequence_segmentation_problem - is_graph_labeling_problem - is_assignment_problem - is_track_association_problem - is_forced_assignment_problem - approximate_distance_function - is_learning_problem - select_all_distinct_labels - find_gamma_with_big_centroid_gap - compute_mean_squared_distance - kernel_matrix - ranking_pair - is_ranking_problem - count_ranking_inversions - learn_platt_scaling - process_sample - - - -
    - -
    -
    - - - - - - - - - - - - add_layer - dlib/dnn.h - dlib/dnn/core_abstract.h - - In dlib, a deep neural network is composed of 3 main parts. An - input layer, a bunch of - computational layers, - and optionally a - loss layer. The add_layer - class is the central object which adds a computational layer onto an - input layer or an entire network. Therefore, deep neural networks are created - by stacking many layers on top of each other using the add_layer class. -

    - For a tutorial showing how this is accomplished read - the DNN Introduction part 1 and - DNN Introduction part 2. -

    -
    - - dnn_introduction_ex.cpp.html - dnn_introduction2_ex.cpp.html - dnn_inception_ex.cpp.html - dnn_imagenet_ex.cpp.html - dnn_imagenet_train_ex.cpp.html - dnn_mmod_ex.cpp.html - dnn_mmod_find_cars_ex.cpp.html - dnn_mmod_find_cars2_ex.cpp.html - dnn_mmod_train_find_cars_ex.cpp.html - dnn_mmod_face_detection_ex.cpp.html - dnn_mmod_dog_hipsterizer.cpp.html - dnn_metric_learning_ex.cpp.html - dnn_metric_learning_on_images_ex.cpp.html - dnn_face_recognition_ex.cpp.html - dnn_semantic_segmentation_ex.cpp.html - dnn_semantic_segmentation_train_ex.cpp.html - -
    - - - - - dnn_trainer - dlib/dnn.h - dlib/dnn/trainer_abstract.h - - This object is a tool training a deep neural network. -

    - For a tutorial showing how this is accomplished read - the DNN Introduction part 1 and - DNN Introduction part 2. -

    -
    - - dnn_introduction_ex.cpp.html - dnn_introduction2_ex.cpp.html - dnn_inception_ex.cpp.html - dnn_imagenet_ex.cpp.html - dnn_imagenet_train_ex.cpp.html - dnn_mmod_ex.cpp.html - dnn_mmod_train_find_cars_ex.cpp.html - dnn_metric_learning_ex.cpp.html - dnn_metric_learning_on_images_ex.cpp.html - dnn_semantic_segmentation_train_ex.cpp.html - -
    - - - - - add_loss_layer - dlib/dnn.h - dlib/dnn/core_abstract.h - - This object is a tool for stacking a loss layer - on the top of a deep neural network. - - - dnn_introduction_ex.cpp.html - dnn_introduction2_ex.cpp.html - dnn_inception_ex.cpp.html - dnn_imagenet_ex.cpp.html - dnn_imagenet_train_ex.cpp.html - dnn_mmod_ex.cpp.html - dnn_mmod_find_cars_ex.cpp.html - dnn_mmod_train_find_cars_ex.cpp.html - dnn_metric_learning_ex.cpp.html - dnn_metric_learning_on_images_ex.cpp.html - dnn_face_recognition_ex.cpp.html - dnn_mmod_face_detection_ex.cpp.html - dnn_mmod_dog_hipsterizer.cpp.html - dnn_semantic_segmentation_train_ex.cpp.html - - - - - - - repeat - dlib/dnn.h - dlib/dnn/core_abstract.h - - This object adds N copies of a computational layer onto a deep neural network. - It is essentially the same as using add_layer N times, - except that it involves less typing, and for large N, will compile much faster. - - - dnn_introduction2_ex.cpp.html - - - - - - - add_tag_layer - dlib/dnn.h - dlib/dnn/core_abstract.h - - This object is a tool for tagging layers in a deep neural network. These tags make it - easy to refer to the tagged layer in other parts of your code. - Specifically, this object adds a new layer onto a deep neural network. - However, this layer simply performs the identity transform. - This means it is a no-op and its presence does not change the - behavior of the network. It exists solely to be used by add_skip_layer or layer() to reference a - particular part of a network. - -

    - For a tutorial showing how to use tagging see the - dnn_introduction2_ex.cpp - example program. -

    -
    - - dnn_introduction2_ex.cpp.html - -
    - - - - - add_skip_layer - dlib/dnn.h - dlib/dnn/core_abstract.h - - This object adds a new layer to a deep neural network which draws its input - from a tagged layer rather than from - the immediate predecessor layer as is normally done. - -

    - For a tutorial showing how to use tagging see the - dnn_introduction2_ex.cpp - example program. -

    -
    -
    - - - - - layer - dlib/dnn.h - dlib/dnn/core_abstract.h - - This global function references a tagged layer - inside a deep neural network object. - -

    - For a tutorial showing how to use tagging see the - dnn_introduction2_ex.cpp - example program. -

    -
    - - dnn_introduction2_ex.cpp.html - -
    - - - - - input - dlib/dnn.h - dlib/dnn/input_abstract.h - - This is a simple input layer type for use in a deep neural network which - takes some kind of image as input and loads it into a network. - - - dnn_introduction_ex.cpp.html - dnn_introduction2_ex.cpp.html - dnn_inception_ex.cpp.html - dnn_imagenet_ex.cpp.html - dnn_imagenet_train_ex.cpp.html - - - - - - - input_rgb_image - dlib/dnn.h - dlib/dnn/input_abstract.h - - This is a simple input layer type for use in a deep neural network - which takes an RGB image as input and loads it into a network. It - is very similar to the input layer except that - it allows you to subtract the average color value from each color - channel when converting an image to a tensor. - - - - - - - input_rgb_image_sized - dlib/dnn.h - dlib/dnn/input_abstract.h - - This layer has an interface and behavior identical to input_rgb_image - except that it requires input images to have a particular size. - - - - - - - input_rgb_image_pyramid - dlib/dnn.h - dlib/dnn/input_abstract.h - - This input layer works with RGB images of type matrix<rgb_pixel>. It is - identical to input_rgb_image except that it - outputs a tensor containing a tiled image pyramid - of each input image rather than a simple copy of each image. - This input layer is meant to be used with a loss layer such as the MMOD loss layer. - - - dnn_mmod_ex.cpp.html - dnn_mmod_find_cars_ex.cpp.html - dnn_mmod_find_cars2_ex.cpp.html - dnn_mmod_train_find_cars_ex.cpp.html - dnn_mmod_face_detection_ex.cpp.html - dnn_mmod_dog_hipsterizer.cpp.html - - - - - - - loss_mmod_ - dlib/dnn.h - dlib/dnn/loss_abstract.h - - This object is a loss layer - for a deep neural network. In particular, it implements the Max Margin Object Detection - loss defined in the paper: -
    Max-Margin Object Detection by Davis E. King.
    - - This means you use this loss if you want to detect the locations of objects - in images. For example, here are some videos that uses loss_mmod to find cars: - -
    -
    -
    - -
    - - dnn_mmod_ex.cpp.html - dnn_mmod_find_cars_ex.cpp.html - dnn_mmod_find_cars2_ex.cpp.html - dnn_mmod_train_find_cars_ex.cpp.html - dnn_mmod_face_detection_ex.cpp.html - dnn_mmod_dog_hipsterizer.cpp.html - cnn_face_detector.py.html - -
    - - - - - loss_metric_ - dlib/dnn.h - dlib/dnn/loss_abstract.h - - This object is a loss layer - for a deep neural network. In particular, it allows you to learn to map objects - into a vector space where objects sharing the same class label are close to - each other, while objects with different labels are far apart. - - - dnn_metric_learning_ex.cpp.html - dnn_metric_learning_on_images_ex.cpp.html - dnn_face_recognition_ex.cpp.html - face_recognition.py.html - face_clustering.py.html - - - - - - - loss_mean_squared_ - dlib/dnn.h - dlib/dnn/loss_abstract.h - - This object is a loss layer - for a deep neural network. In particular, it implements the mean squared loss, which is - appropriate for regression problems. - - - - - - - loss_mean_squared_multioutput_ - dlib/dnn.h - dlib/dnn/loss_abstract.h - - This object is a loss layer - for a deep neural network. In particular, it implements the mean squared loss, which is - appropriate for regression problems. It is identical to the loss_mean_squared_ - loss except this version supports multiple output values. - - - - - - - test_layer - dlib/dnn.h - dlib/dnn/core_abstract.h - - This is a function which tests if a layer object correctly implements - the documented contract - for a computational layer in a deep neural network. - - - - - - - resizable_tensor - dlib/dnn.h - dlib/dnn/tensor_abstract.h - - This object represents a 4D array of float values, all stored contiguously - in memory. Importantly, it keeps two copies of the floats, one on the host - CPU side and another on the GPU device side. It automatically performs the - necessary host/device transfers to keep these two copies of the data in - sync. - -

    - All transfers to the device happen asynchronously with respect to the - default CUDA stream so that CUDA kernel computations can overlap with data - transfers. However, any transfers from the device to the host happen - synchronously in the default CUDA stream. Therefore, you should perform - all your CUDA kernel launches on the default stream so that transfers back - to the host do not happen before the relevant computations have completed. -

    - -

    - If DLIB_USE_CUDA is not #defined then this object will not use CUDA at all. - Instead, it will simply store one host side memory block of floats. -

    - -

    - Finally, the convention in dlib code is to interpret the tensor as a set of - num_samples() 3D arrays, each of dimension k() by nr() by nc(). Also, - while this class does not specify a memory layout, the convention is to - assume that indexing into an element at coordinates (sample,k,nr,nc) can be - accomplished via: - host()[((sample*t.k() + k)*t.nr() + nr)*t.nc() + nc] -

    - -
    -
    - - - - - alias_tensor - dlib/dnn.h - dlib/dnn/tensor_abstract.h - - This object is a tensor that - aliases another tensor. That is, it doesn't have its own block of - memory but instead simply holds pointers to the memory of another - tensor object. It therefore allows you to efficiently break a tensor - into pieces and pass those pieces into functions. - - - - - - - modularity - dlib/clustering.h - dlib/clustering/modularity_clustering_abstract.h - - This function computes the modularity of a particular graph clustering. This - is a number that tells you how good the clustering is. In particular, it - is the measure optimized by the newman_cluster - routine. - - - - - - - - newman_cluster - dlib/clustering.h - dlib/clustering/modularity_clustering_abstract.h - - This function performs the clustering algorithm described in the paper -
    Modularity and community structure in networks by M. E. J. Newman.
    - In particular, this is a method for automatically clustering the nodes in a - graph into groups. The method is able to automatically determine the number - of clusters and does not have any parameters. In general, it is a very good - clustering technique. -
    - -
    - - - - - spectral_cluster - dlib/clustering.h - dlib/clustering/spectral_cluster_abstract.h - - This function performs the clustering algorithm described in the paper -
    On spectral clustering: Analysis and an algorithm by Ng, Jordan, and Weiss.
    -
    - - kkmeans_ex.cpp.html - - -
    - - - - - bottom_up_cluster - dlib/clustering.h - dlib/clustering/bottom_up_cluster_abstract.h - - This function runs a bottom up agglomerative clustering algorithm. - - - - - - - - segment_number_line - dlib/clustering.h - dlib/clustering/bottom_up_cluster_abstract.h - - This routine clusters real valued scalars in essentially linear time. - It uses a combination of bottom up clustering and a simple greedy scan - to try and find the most compact set of ranges that contain all - given scalar values. - - - - - - - - chinese_whispers - dlib/clustering.h - dlib/clustering/chinese_whispers_abstract.h - - This function performs the clustering algorithm described in the paper -
    Chinese Whispers - an Efficient Graph Clustering Algorithm and its - Application to Natural Language Processing Problems by Chris Biemann.
    - In particular, this is a method for automatically clustering the nodes in a - graph into groups. The method is able to automatically determine the number - of clusters. -
    - - dnn_face_recognition_ex.cpp.html - face_clustering.py.html - - -
    - - - - - find_clusters_using_kmeans - dlib/clustering.h - dlib/svm/kkmeans_abstract.h - - This is a simple linear kmeans clustering implementation. - It uses Euclidean distance to compare samples. - - - - - - - - find_clusters_using_angular_kmeans - dlib/clustering.h - dlib/svm/kkmeans_abstract.h - - This is a simple linear kmeans clustering implementation. - To compare a sample to a cluster, it measures the angle between them - with respect to the origin. Therefore, it tries to find clusters - of points that all have small angles between each cluster member. - - - - - - - - nearest_center - dlib/clustering.h - dlib/svm/kkmeans_abstract.h - - This function takes a list of cluster centers and a query vector - and identifies which cluster center is nearest to the query vector. - - - - - - - pick_initial_centers - dlib/clustering.h - dlib/svm/kkmeans_abstract.h - - This is a function that you can use to seed data clustering algorithms - like the kkmeans clustering method. What it - does is pick reasonable starting points for clustering by basically - trying to find a set of points that are all far away from each other. - - - kkmeans_ex.cpp.html - - - - - - - - ranking_pair - dlib/svm.h - dlib/svm/ranking_tools_abstract.h - - This object is used to contain a ranking example. Therefore, ranking_pair - objects are used to represent training examples for learning-to-rank tasks, - such as those used by the svm_rank_trainer. - - - svm_rank_ex.cpp.html - svm_rank.py.html - - - - - - - - kernel_matrix - dlib/svm.h - dlib/svm/kernel_matrix_abstract.h - - This is a simple set of functions that makes it easy to turn a kernel - object and a set of samples into a kernel matrix. It takes these two - things and returns a matrix expression - that represents the kernel matrix. - - - - - - - - is_ranking_problem - dlib/svm.h - dlib/svm/ranking_tools_abstract.h - - This function takes a set of training data for a learning-to-rank problem - and reports back if it could possibly be a well formed problem. - - - - - - - - count_ranking_inversions - dlib/svm.h - dlib/svm/ranking_tools_abstract.h - - Given two sets of objects, X and Y, and an ordering relationship defined - between their elements, this function counts how many times we see an element - in the set Y ordered before an element in the set X. Additionally, this - routine executes efficiently in O(n*log(n)) time via the use of quick sort. - - - - - - - - mlp - dlib/mlp.h - dlib/mlp/mlp_kernel_abstract.h - -

    - This object represents a multilayer layer perceptron network that is - trained using the back propagation algorithm. The training algorithm also - incorporates the momentum method. That is, each round of back propagation - training also adds a fraction of the previous update. This fraction - is controlled by the momentum term set in the constructor. -

    -

    - It is worth noting that a MLP is, in general, very inferior to modern - kernel algorithms such as the support vector machine. So if you haven't - tried any other techniques with your data you really should. -

    -
    - - - mlp_ex.cpp.html - - - - - mlp_kernel_1 - dlib/mlp/mlp_kernel_1.h - - This is implemented in the obvious way. - - - - - kernel_1a - is a typedef for mlp_kernel_1 - - - - - - - -
    - - - - - krls - dlib/svm.h - dlib/svm/krls_abstract.h - - This is an implementation of the kernel recursive least squares algorithm - described in the paper The Kernel Recursive Least Squares Algorithm by Yaakov Engel. -

    - The long and short of this algorithm is that it is an online kernel based - regression algorithm. You give it samples (x,y) and it learns the function - f(x) == y. For a detailed description of the algorithm read the above paper. -

    -

    - Note that if you want to use the linear kernel then you would - be better off using the rls object as it - is optimized for this case. -

    -
    - - - krls_ex.cpp.html - krls_filter_ex.cpp.html - - -
    - - - - - rls - dlib/svm.h - dlib/svm/rls_abstract.h - - This is an implementation of the linear version of the recursive least - squares algorithm. It accepts training points incrementally and, at - each step, maintains the solution to the following optimization problem: -
    - find w minimizing: 0.5*dot(w,w) + C*sum_i(y_i - trans(x_i)*w)^2 -
    - Where (x_i,y_i) are training pairs. x_i is some vector and y_i is a target - scalar value. -
    - -
    - - - - - svm_pegasos - dlib/svm.h - dlib/svm/pegasos_abstract.h - - This object implements an online algorithm for training a support - vector machine for solving binary classification problems. - -

    - The implementation of the Pegasos algorithm used by this object is based - on the following excellent paper: -

    - Pegasos: Primal estimated sub-gradient solver for SVM (2007) - by Shai Shalev-Shwartz, Yoram Singer, Nathan Srebro - In ICML -
    -

    -

    - This SVM training algorithm has two interesting properties. First, the - pegasos algorithm itself converges to the solution in an amount of time - unrelated to the size of the training set (in addition to being quite fast - to begin with). This makes it an appropriate algorithm for learning from - very large datasets. Second, this object uses the kcentroid object - to maintain a sparse approximation of the learned decision function. - This means that the number of support vectors in the resulting decision - function is also unrelated to the size of the dataset (in normal SVM - training algorithms, the number of support vectors grows approximately - linearly with the size of the training set). -

    -

    - However, if you are considering using svm_pegasos, you should also try the - svm_c_linear_trainer for linear - kernels or svm_c_ekm_trainer for non-linear - kernels since these other trainers are, usually, faster and easier to use - than svm_pegasos. -

    -
    - - - svm_pegasos_ex.cpp.html - svm_sparse_ex.cpp.html - svm_binary_classifier.py.html - -
    - - - - - - kkmeans - dlib/clustering.h - dlib/svm/kkmeans_abstract.h - - This is an implementation of a kernelized k-means clustering algorithm. - It performs k-means clustering by using the kcentroid object. -

    - If you want to use the linear kernel (i.e. do a normal k-means clustering) then you - should use the find_clusters_using_kmeans routine. -

    -
    - - - kkmeans_ex.cpp.html - - -
    - - - - - - vector_normalizer - dlib/statistics.h - dlib/statistics/statistics_abstract.h - - This object represents something that can learn to normalize a set - of column vectors. In particular, normalized column vectors should - have zero mean and a variance of one. - - - - svm_ex.cpp.html - - - - - - - - vector_normalizer_frobmetric - dlib/statistics.h - dlib/statistics/vector_normalizer_frobmetric_abstract.h - - This object is a tool for performing the FrobMetric distance metric - learning algorithm described in the following paper: -
    - A Scalable Dual Approach to Semidefinite Metric Learning - By Chunhua Shen, Junae Kim, Lei Wang, in CVPR 2011 -
    - Therefore, this object is a tool that takes as input training triplets - (anchor, near, far) of vectors and attempts to learn a linear - transformation T such that: -
    length(T*anchor-T*near) + 1 < length(T*anchor - T*far)
    - That is, you give a bunch of anchor vectors and for each anchor vector you - specify some vectors which should be near to it and some that should be far - form it. This object then tries to find a transformation matrix that makes - the "near" vectors close to their anchors while the "far" vectors are - farther away. -
    -
    - - - - - compute_lda_transform - dlib/statistics.h - dlib/statistics/lda_abstract.h - - This function performs the dimensionality reducing version of linear - discriminant analysis. That is, you give it a set of labeled vectors and it - returns a linear transform that maps the input vectors into a new space that - is good for distinguishing between the different classes. - - - - - - - discriminant_pca - dlib/statistics.h - dlib/statistics/dpca_abstract.h - - This object implements the Discriminant PCA technique described in the paper: -
    - A New Discriminant Principal Component Analysis Method with Partial Supervision (2009) - by Dan Sun and Daoqiang Zhang -
    - This algorithm is basically a straightforward generalization of the classical PCA - technique to handle partially labeled data. It is useful if you want to learn a linear - dimensionality reduction rule using a bunch of data that is partially labeled. -
    - -
    - - - - - sammon_projection - dlib/statistics.h - dlib/statistics/sammon_abstract.h - - This is a function object that computes the Sammon projection of a set - of N points in a L-dimensional vector space onto a d-dimensional space - (d < L), according to the paper: -
    - A Nonlinear Mapping for Data Structure Analysis (1969) by J.W. Sammon -
    -
    - -
    - - - - - cca - dlib/statistics.h - dlib/statistics/cca_abstract.h - - This function performs a canonical correlation analysis between two sets - of vectors. Additionally, it is designed to be very fast, even for large - datasets of over a million high dimensional vectors. - - - - - - - - vector_normalizer_pca - dlib/statistics.h - dlib/statistics/statistics_abstract.h - - This object represents something that can learn to normalize a set - of column vectors. In particular, normalized column vectors should - have zero mean and a variance of one. - - This object also uses principal component analysis for the purposes - of reducing the number of elements in a vector. - - - - - - - - linearly_independent_subset_finder - dlib/svm.h - dlib/svm/linearly_independent_subset_finder_abstract.h - -

    - This is an implementation of an online algorithm for recursively finding a - set (aka dictionary) of linearly independent vectors in a kernel induced - feature space. To use it you decide how large you would like the dictionary - to be and then you feed it sample points. -

    -

    - The implementation uses the Approximately Linearly Dependent metric described - in the paper The Kernel Recursive Least Squares Algorithm by Yaakov Engel to - decide which points are more linearly independent than others. The metric is - simply the squared distance between a test point and the subspace spanned by - the set of dictionary vectors. -

    -

    - Each time you present this object with a new sample point - it calculates the projection distance and if it is sufficiently large then this - new point is included into the dictionary. Note that this object can be configured - to have a maximum size. Once the max dictionary size is reached each new point - kicks out a previous point. This is done by removing the dictionary vector that - has the smallest projection distance onto the others. That is, the "least linearly - independent" vector is removed to make room for the new one. -

    -
    - - empirical_kernel_map_ex.cpp.html - - -
    - - - - - - fill_lisf - dlib/svm.h - dlib/svm/linearly_independent_subset_finder_abstract.h - - This is a simple function for filling a - linearly_independent_subset_finder - with data points by using random sampling. - - - empirical_kernel_map_ex.cpp.html - - - - - - - - - sort_basis_vectors - dlib/svm.h - dlib/svm/sort_basis_vectors_abstract.h - - A kernel based learning method ultimately needs to select a set of basis functions - represented by a particular choice of kernel and a set of basis vectors. - sort_basis_vectors() is a function which attempts to perform supervised - basis set selection. In particular, you give it a candidate set of basis - vectors and it sorts them according to how useful they are for solving - a particular decision problem. - - - - - - - - rank_unlabeled_training_samples - dlib/svm.h - dlib/svm/active_learning_abstract.h - - This routine implements an active learning method for selecting the most - informative data sample to label out of a set of unlabeled samples. - In particular, it implements the MaxMin Margin and Ratio Margin methods - described in the paper: -
    - Support Vector Machine Active Learning with Applications to Text Classification - by Simon Tong and Daphne Koller. -
    -
    -
    - - - - - - linear_manifold_regularizer - dlib/manifold_regularization.h - dlib/manifold_regularization/linear_manifold_regularizer_abstract.h - -

    - Many learning algorithms attempt to minimize a function that, at a high - level, looks like this: -

    -   f(w) == complexity + training_set_error
    -
    -

    - -

    - The idea is to find the set of parameters, w, that gives low error on - your training data but also is not "complex" according to some particular - measure of complexity. This strategy of penalizing complexity is - usually called regularization. -

    - -

    - In the above setting, all the training data consists of labeled samples. - However, it would be nice to be able to benefit from unlabeled data. - The idea of manifold regularization is to extract useful information from - unlabeled data by first defining which data samples are "close" to each other - (perhaps by using their 3 nearest neighbors) - and then adding a term to - the above function that penalizes any decision rule which produces - different outputs on data samples which we have designated as being close. -

    - -

    - It turns out that it is possible to transform these manifold regularized learning - problems into the normal form shown above by applying a certain kind of - preprocessing to all our data samples. Once this is done we can use a - normal learning algorithm, such as the svm_c_linear_trainer, - on just the - labeled data samples and obtain the same output as the manifold regularized - learner would have produced. -

    - -

    - The linear_manifold_regularizer is a tool for creating this preprocessing - transformation. In particular, the transformation is linear. That is, it - is just a matrix you multiply with all your samples. For a more detailed - discussion of this topic you should consult the following paper. In - particular, see section 4.2. This object computes the inverse T matrix - described in that section. -

    - Linear Manifold Regularization for Large Scale Semi-supervised Learning - by Vikas Sindhwani, Partha Niyogi, and Mikhail Belkin -
    -

    - -
    - - linear_manifold_regularizer_ex.cpp.html - -
    - - - - - - empirical_kernel_map - dlib/svm.h - dlib/svm/empirical_kernel_map_abstract.h - -

    - This object represents a map from objects of sample_type (the kind of object - a kernel function - operates on) to finite dimensional column vectors which - represent points in the kernel feature space defined by whatever kernel - is used with this object. -

    - -

    - To use the empirical_kernel_map you supply it with a particular kernel and a set of - basis samples. After that you can present it with new samples and it will project - them into the part of kernel feature space spanned by your basis samples. -

    - -

    - This means the empirical_kernel_map is a tool you can use to very easily kernelize - any algorithm that operates on column vectors. All you have to do is select a - set of basis samples and then use the empirical_kernel_map to project all your - data points into the part of kernel feature space spanned by those basis samples. - Then just run your normal algorithm on the output vectors and it will be effectively - kernelized. -

    - -

    - Regarding methods to select a set of basis samples, if you are working with only a - few thousand samples then you can just use all of them as basis samples. - Alternatively, the - linearly_independent_subset_finder - often works well for selecting a basis set. I also find that picking a - random subset typically works well. -

    -
    - - empirical_kernel_map_ex.cpp.html - linear_manifold_regularizer_ex.cpp.html - -
    - - - - - - - kcentroid - dlib/svm.h - dlib/svm/kcentroid_abstract.h - - - This object represents a weighted sum of sample points in a kernel induced - feature space. It can be used to kernelize any algorithm that requires only - the ability to perform vector addition, subtraction, scalar multiplication, - and inner products. - -

    - An example use of this object is as an online algorithm for recursively estimating - the centroid of a sequence of training points. This object then allows you to - compute the distance between the centroid and any test points. So you can use - this object to predict how similar a test point is to the data this object has - been trained on (larger distances from the centroid indicate dissimilarity/anomalous - points). -

    - -

    - The object internally keeps a set of "dictionary vectors" - that are used to represent the centroid. It manages these vectors using the - sparsification technique described in the paper The Kernel Recursive Least - Squares Algorithm by Yaakov Engel. This technique allows us to keep the - number of dictionary vectors down to a minimum. In fact, the object has a - user selectable tolerance parameter that controls the trade off between - accuracy and number of stored dictionary vectors. -

    - -
    - - - kcentroid_ex.cpp.html - - -
    - - - - - - train_probabilistic_decision_function - dlib/svm.h - dlib/svm/svm_abstract.h - -

    - Trains a probabilistic_function using - some sort of binary classification trainer object such as the svm_nu_trainer or - krr_trainer. -

    - The probability model is created by using the technique described in the following papers: -
    - Probabilistic Outputs for Support Vector Machines and - Comparisons to Regularized Likelihood Methods by - John C. Platt. March 26, 1999 -
    -
    - A Note on Platt's Probabilistic Outputs for Support Vector Machines - by Hsuan-Tien Lin, Chih-Jen Lin, and Ruby C. Weng -
    -
    - - svm_ex.cpp.html - - -
    - - - - - learn_platt_scaling - dlib/svm.h - dlib/svm/svm_abstract.h - - -

    - This function is an implementation of the algorithm described in the following - papers: -

    - Probabilistic Outputs for Support Vector Machines and Comparisons to - Regularized Likelihood Methods by John C. Platt. March 26, 1999 -
    -
    - A Note on Platt's Probabilistic Outputs for Support Vector Machines - by Hsuan-Tien Lin, Chih-Jen Lin, and Ruby C. Weng -
    -

    -

    - This function is the tool used to implement the - train_probabilistic_decision_function routine. -

    - -
    - -
    - - - - - probabilistic - dlib/svm.h - dlib/svm/svm_abstract.h - - This is a trainer adapter which simply runs the trainer it is given though the - train_probabilistic_decision_function - function. - - - - - - - - rbf_network_trainer - dlib/svm.h - dlib/svm/rbf_network_abstract.h - - Trains a radial basis function network and outputs a decision_function. - This object can be used for either regression or binary classification problems. - It's worth pointing out that this object is essentially an unregularized version - of kernel ridge regression. This means - you should really prefer to use kernel ridge regression instead. - - - - - - - random_forest_regression_trainer - dlib/random_forest.h - dlib/random_forest/random_forest_regression_abstract.h - - This object implements Breiman's classic random forest regression - algorithm. - - - - - - - random_forest_regression_function - dlib/random_forest.h - dlib/random_forest/random_forest_regression_abstract.h - - This object represents a random forest that maps objects to real numbers. You - can learn its parameters using the random_forest_regression_trainer. - - - - - - - rvm_regression_trainer - dlib/svm.h - dlib/svm/rvm_abstract.h - -

    - Trains a relevance vector machine for solving regression problems. - Outputs a decision_function that represents the learned - regression function. -

    - The implementation of the RVM training algorithm used by this library is based - on the following paper: -
    - Tipping, M. E. and A. C. Faul (2003). Fast marginal likelihood maximisation - for sparse Bayesian models. In C. M. Bishop and B. J. Frey (Eds.), Proceedings - of the Ninth International Workshop on Artificial Intelligence and Statistics, - Key West, FL, Jan 3-6. -
    -
    - - rvm_regression_ex.cpp.html - - -
    - - - - - - rvm_trainer - dlib/svm.h - dlib/svm/rvm_abstract.h - -

    - Trains a relevance vector machine for solving binary classification problems. - Outputs a decision_function that represents the learned classifier. -

    - The implementation of the RVM training algorithm used by this library is based - on the following paper: -
    - Tipping, M. E. and A. C. Faul (2003). Fast marginal likelihood maximisation - for sparse Bayesian models. In C. M. Bishop and B. J. Frey (Eds.), Proceedings - of the Ninth International Workshop on Artificial Intelligence and Statistics, - Key West, FL, Jan 3-6. -
    -
    - - rvm_ex.cpp.html - - -
    - - - - - krr_trainer - dlib/svm.h - dlib/svm/krr_trainer_abstract.h - -

    - Performs kernel ridge regression and outputs a decision_function that - represents the learned function. -

    - The implementation is done using the empirical_kernel_map and - linearly_independent_subset_finder to kernelize - the rr_trainer object. Thus it allows you to run the algorithm on large - datasets and obtain sparse outputs. It is also capable of automatically estimating its - regularization parameter using leave-one-out cross-validation. -
    - - krr_regression_ex.cpp.html - krr_classification_ex.cpp.html - - -
    - - - - - - rr_trainer - dlib/svm.h - dlib/svm/rr_trainer_abstract.h - -

    - Performs linear ridge regression and outputs a decision_function that - represents the learned function. In particular, this object can only be used with - the linear_kernel. It is optimized for the linear case where - the number of features in each sample vector is small (i.e. on the order of 1000 or less since the - algorithm is cubic in the number of features.). - If you want to use a nonlinear kernel then you should use the krr_trainer. -

    - This object is capable of automatically estimating its regularization parameter using - leave-one-out cross-validation. -
    - -
    - - - - - svr_trainer - dlib/svm.h - dlib/svm/svr_trainer_abstract.h - -

    - This object implements a trainer for performing epsilon-insensitive support - vector regression. It is implemented using the SMO algorithm, - allowing the use of non-linear kernels. - If you are interested in performing support vector regression with a linear kernel and you - have a lot of training data then you should use the svr_linear_trainer - which is highly optimized for this case. -

    - The implementation of the eps-SVR training algorithm used by this object is based - on the following paper: - -
    - - svr_ex.cpp.html - - -
    - - - - - svr_linear_trainer - dlib/svm.h - dlib/svm/svr_linear_trainer_abstract.h - - This object implements a trainer for performing epsilon-insensitive support - vector regression. It uses the oca - optimizer so it is very efficient at solving this problem when - linear kernels are used, making it suitable for use with large - datasets. - - - - - - - svm_nu_trainer - dlib/svm.h - dlib/svm/svm_nu_trainer_abstract.h - -

    - Trains a nu support vector machine for solving binary classification problems and - outputs a decision_function. - It is implemented using the SMO algorithm. -

    - The implementation of the nu-svm training algorithm used by this library is based - on the following excellent papers: -
      -
    • Chang and Lin, Training {nu}-Support Vector Classifiers: Theory and Algorithms
    • -
    • Chih-Chung Chang and Chih-Jen Lin, LIBSVM : a library for support vector - machines, 2001. Software available at - http://www.csie.ntu.edu.tw/~cjlin/libsvm
    • -
    -
    - - svm_ex.cpp.html - model_selection_ex.cpp.html - - -
    - - - - - svm_one_class_trainer - dlib/svm.h - dlib/svm/svm_one_class_trainer_abstract.h - -

    - Trains a one-class support vector classifier and outputs a decision_function. - It is implemented using the SMO algorithm. -

    - The implementation of the one-class training algorithm used by this library is based - on the following paper: - -
    - - one_class_classifiers_ex.cpp.html - - -
    - - - - - svm_c_trainer - dlib/svm.h - dlib/svm/svm_c_trainer_abstract.h - -

    - Trains a C support vector machine for solving binary classification problems - and outputs a decision_function. - It is implemented using the SMO algorithm. -

    - The implementation of the C-SVM training algorithm used by this library is based - on the following paper: - -
    - - svm_c_ex.cpp.html - - -
    - - - - - svm_c_linear_dcd_trainer - dlib/svm.h - dlib/svm/svm_c_linear_dcd_trainer_abstract.h - - This object represents a tool for training the C formulation of - a support vector machine to solve binary classification problems. - It is optimized for the case where linear kernels are used and - is implemented using the method described in the - following paper: -
    - A Dual Coordinate Descent Method for Large-scale Linear SVM - by Cho-Jui Hsieh, Kai-Wei Chang, and Chih-Jen Lin -
    - - This trainer has the ability to disable the bias term and also - to force the last element of the learned weight vector to be 1. - Additionally, it can be warm-started from the solution to a previous - training run. -
    - - one_class_classifiers_ex.cpp.html - -
    - - - - - svm_c_linear_trainer - dlib/svm.h - dlib/svm/svm_c_linear_trainer_abstract.h - - This object represents a tool for training the C formulation of - a support vector machine to solve binary classification problems. - It is optimized for the case where linear kernels are used and - is implemented using the oca - optimizer and uses the exact line search described in the - following paper: -
    - Optimized Cutting Plane Algorithm for Large-Scale Risk Minimization - by Vojtech Franc, Soren Sonnenburg; Journal of Machine Learning - Research, 10(Oct):2157--2192, 2009. -
    - - This trainer has the ability to restrict the learned weights to non-negative - values. -
    - - svm_sparse_ex.cpp.html - - -
    - - - - - svm_rank_trainer - dlib/svm.h - dlib/svm/svm_rank_trainer_abstract.h - - This object represents a tool for training a ranking support vector machine - using linear kernels. In particular, this object is a tool for training - the Ranking SVM described in the paper: -
    - Optimizing Search Engines using Clickthrough Data by Thorsten Joachims -
    - Finally, note that the implementation of this object is done using the - oca optimizer and - count_ranking_inversions method. - This means that it runs in O(n*log(n)) time, making it suitable for use - with large datasets. -
    - - svm_rank_ex.cpp.html - svm_rank.py.html - - -
    - - - - - shape_predictor_trainer - dlib/image_processing.h - dlib/image_processing/shape_predictor_trainer_abstract.h - - This object is a tool for training shape_predictors - based on annotated training images. Its implementation uses the algorithm described in: -
    - One Millisecond Face Alignment with an Ensemble of Regression Trees - by Vahid Kazemi and Josephine Sullivan, CVPR 2014 -
    - It is capable of learning high quality shape models. For example, this is an example output - for one of the faces in the HELEN face dataset:

    - - -
    - - train_shape_predictor_ex.cpp.html - train_shape_predictor.py.html - - -
    - - - - - svm_c_ekm_trainer - dlib/svm.h - dlib/svm/svm_c_ekm_trainer_abstract.h - - This object represents a tool for training the C formulation of - a support vector machine for solving binary classification problems. - It is implemented using the empirical_kernel_map - to kernelize the svm_c_linear_trainer. This makes it a very fast algorithm - capable of learning from very large datasets. - - - - - - - - - normalized_function - dlib/svm.h - dlib/svm/function_abstract.h - - This object represents a container for another function - object and an instance of the vector_normalizer object. - - It automatically normalizes all inputs before passing them - off to the contained function object. - - - svm_ex.cpp.html - - - - - - - - - probabilistic_decision_function - dlib/svm.h - dlib/svm/function_abstract.h - - This object represents a binary decision function for use with - kernel-based learning-machines. It returns an - estimate of the probability that a given sample is in the +1 class. - - - svm_ex.cpp.html - - - - - - - - probabilistic_function - dlib/svm.h - dlib/svm/function_abstract.h - - This object represents a binary decision function for use with - any kind of binary classifier. It returns an - estimate of the probability that a given sample is in the +1 class. - - - - - - - distance_function - dlib/svm.h - dlib/svm/function_abstract.h - - This object represents a point in kernel induced feature space. - You may use this object to find the distance from the point it - represents to points in input space as well as other points - represented by distance_functions. - - - - - - - - decision_function - dlib/svm.h - dlib/svm/function_abstract.h - - This object represents a classification or regression function that was - learned by a kernel based learning algorithm. Therefore, it is a function - object that takes a sample object and returns a scalar value. - - - svm_ex.cpp.html - - - - - - - - one_vs_one_decision_function - dlib/svm.h - dlib/svm/one_vs_one_decision_function_abstract.h - - This object represents a multiclass classifier built out - of a set of binary classifiers. Each binary classifier - is used to vote for the correct multiclass label using a - one vs. one strategy. Therefore, if you have N classes then - there will be N*(N-1)/2 binary classifiers inside this object. - - - multiclass_classification_ex.cpp.html - custom_trainer_ex.cpp.html - - - - - - - - one_vs_one_trainer - dlib/svm_threaded.h - dlib/svm/one_vs_one_trainer_abstract.h - - This object is a tool for turning a bunch of binary classifiers - into a multiclass classifier. It does this by training the binary - classifiers in a one vs. one fashion. That is, if you have N possible - classes then it trains N*(N-1)/2 binary classifiers which are then used - to vote on the identity of a test sample. - - - multiclass_classification_ex.cpp.html - custom_trainer_ex.cpp.html - - - - - - - - one_vs_all_decision_function - dlib/svm.h - dlib/svm/one_vs_all_decision_function_abstract.h - - This object represents a multiclass classifier built out - of a set of binary classifiers. Each binary classifier - is used to vote for the correct multiclass label using a - one vs. all strategy. Therefore, if you have N classes then - there will be N binary classifiers inside this object. - - - - - - - - sequence_labeler - dlib/svm.h - dlib/svm/sequence_labeler_abstract.h - - This object is a tool for doing sequence labeling. In particular, - it is capable of representing sequence labeling models such as - those produced by Hidden Markov SVMs or Conditional Random fields. - See the following papers for an introduction to these techniques: -
    - Hidden Markov Support Vector Machines by - Y. Altun, I. Tsochantaridis, T. Hofmann -
    - Shallow Parsing with Conditional Random Fields by - Fei Sha and Fernando Pereira -
    -
    - - sequence_labeler_ex.cpp.html - - -
    - - - - - sequence_segmenter - dlib/svm.h - dlib/svm/sequence_segmenter_abstract.h - - This object is a tool for segmenting a sequence of objects into a set of - non-overlapping chunks. An example sequence segmentation task is to take - English sentences and identify all the named entities. In this example, - you would be using a sequence_segmenter to find all the chunks of - contiguous words which refer to proper names. - -

    - Internally, the sequence_segmenter uses the BIO (Begin, Inside, Outside) or - BILOU (Begin, Inside, Last, Outside, Unit) sequence tagging model. - Moreover, it is implemented using a sequence_labeler - object and therefore sequence_segmenter objects are examples of - chain structured conditional random field style sequence - taggers. -

    -
    - - sequence_segmenter.py.html - sequence_segmenter_ex.cpp.html - -
    - - - - - assignment_function - dlib/svm.h - dlib/svm/assignment_function_abstract.h - - This object is a tool for solving the optimal assignment problem given a - user defined method for computing the quality of any particular assignment. - - - assignment_learning_ex.cpp.html - - - - - - - - track_association_function - dlib/svm.h - dlib/svm/track_association_function_abstract.h - - This object is a tool that helps you implement an object tracker. So for - example, if you wanted to track people moving around in a video then this - object can help. In particular, imagine you have a tool for detecting the - positions of each person in an image. Then you can run this person - detector on the video and at each time step, i.e. at each frame, you get a - set of person detections. However, that by itself doesn't tell you how - many people there are in the video and where they are moving to and from. - To get that information you need to figure out which detections match each - other from frame to frame. This is where the track_association_function - comes in. It performs the detection to track association. It will also do - some of the track management tasks like creating a new track when a - detection doesn't match any of the existing tracks. - -

    - Internally, this object is implemented using the - assignment_function object. - In fact, it's really just a thin wrapper around assignment_function and - exists just to provide a more convenient interface to users doing detection - to track association. -

    -
    - - learning_to_track_ex.cpp.html - -
    - - - - - lspi - dlib/control.h - dlib/control/lspi_abstract.h - - This object is an implementation of the reinforcement learning algorithm - described in the following paper: -
    - Lagoudakis, Michail G., and Ronald Parr. "Least-squares policy - iteration." The Journal of Machine Learning Research 4 (2003): - 1107-1149. -
    - -
    -
    - - - - - policy - dlib/control.h - dlib/control/approximate_linear_models_abstract.h - - This is a policy (i.e. a control law) based on a linear function approximator. - You can use a tool like lspi to learn the parameters - of a policy. - - - - - - - process_sample - dlib/control.h - dlib/control/approximate_linear_models_abstract.h - - This object holds a training sample for a reinforcement learning algorithm - (e.g. lspi). - In particular, it contains a state, action, reward, next state sample from - some process. - - - - - - - graph_labeler - dlib/graph_cuts.h - dlib/graph_cuts/graph_labeler_abstract.h - - This object is a tool for labeling each node in a graph - with a value of true or false, subject to a labeling consistency constraint between - nodes that share an edge. In particular, this object is useful for - representing a graph labeling model learned via some machine learning - method, such as the structural_graph_labeling_trainer. - - - graph_labeling_ex.cpp.html - - - - - - - multiclass_linear_decision_function - dlib/svm.h - dlib/svm/function_abstract.h - - This object represents a multiclass classifier built out of a set of - binary classifiers. Each binary classifier is used to vote for the - correct multiclass label using a one vs. all strategy. Therefore, - if you have N classes then there will be N binary classifiers inside - this object. Additionally, this object is linear in the sense that - each of these binary classifiers is a simple linear plane. - - - - - - - - one_vs_all_trainer - dlib/svm_threaded.h - dlib/svm/one_vs_all_trainer_abstract.h - - This object is a tool for turning a bunch of binary classifiers - into a multiclass classifier. It does this by training the binary - classifiers in a one vs. all fashion. That is, if you have N possible - classes then it trains N binary classifiers which are then used - to vote on the identity of a test sample. - - - - - - - - svm_multiclass_linear_trainer - dlib/svm_threaded.h - dlib/svm/svm_multiclass_linear_trainer_abstract.h - - This object represents a tool for training a multiclass support - vector machine. It is optimized for the case where linear kernels - are used and implemented using the structural_svm_problem - object. - - - - - - - - projection_function - dlib/svm.h - dlib/svm/function_abstract.h - - This object represents a function that takes a data sample and projects - it into kernel feature space. The result is a real valued column vector that - represents a point in a kernel feature space. Instances of - this object are created using the - empirical_kernel_map. - - - linear_manifold_regularizer_ex.cpp.html - - - - - - - - offset_kernel - dlib/svm.h - dlib/svm/kernel_abstract.h - - This object represents a kernel with a fixed value offset - added to it. - - - - - - - - linear_kernel - dlib/svm.h - dlib/svm/kernel_abstract.h - - This object represents a linear function kernel for use with - kernel learning machines. - - - - - - - - histogram_intersection_kernel - dlib/svm.h - dlib/svm/kernel_abstract.h - - This object represents a histogram intersection kernel for use with - kernel learning machines. - - - - - - - - sigmoid_kernel - dlib/svm.h - dlib/svm/kernel_abstract.h - - This object represents a sigmoid kernel for use with - kernel learning machines. - - - - - - - - polynomial_kernel - dlib/svm.h - dlib/svm/kernel_abstract.h - - This object represents a polynomial kernel for use with - kernel learning machines. - - - - - - - - radial_basis_kernel - dlib/svm.h - dlib/svm/kernel_abstract.h - - This object represents a radial basis function kernel for use with - kernel learning machines. - - - svm_ex.cpp.html - - - - - - - - - sparse_histogram_intersection_kernel - dlib/svm.h - dlib/svm/sparse_kernel_abstract.h - - This object represents a histogram intersection kernel kernel for use with - kernel learning machines that operate on - sparse vectors. - - - - - - - - sparse_sigmoid_kernel - dlib/svm.h - dlib/svm/sparse_kernel_abstract.h - - This object represents a sigmoid kernel for use with - kernel learning machines that operate on - sparse vectors. - - - - - - - - sparse_linear_kernel - dlib/svm.h - dlib/svm/sparse_kernel_abstract.h - - This object represents a linear kernel for use with - kernel learning machines that operate on - sparse vectors. - - - - - - - - sparse_polynomial_kernel - dlib/svm.h - dlib/svm/sparse_kernel_abstract.h - - This object represents a polynomial kernel for use with - kernel learning machines that operate on - sparse vectors. - - - - - - - - sparse_radial_basis_kernel - dlib/svm.h - dlib/svm/sparse_kernel_abstract.h - - This object represents a radial basis function kernel for use with - kernel learning machines that operate on - sparse vectors. - - - - - - - - - is_binary_classification_problem - dlib/svm.h - dlib/svm/svm_abstract.h - - This function simply takes two vectors, the first containing feature vectors and - the second containing labels, and reports back if the two could possibly - contain data for a well formed classification problem. - - - - - - - - is_sequence_labeling_problem - dlib/svm.h - dlib/svm/svm_abstract.h - - This function takes a set of training data for a sequence labeling problem - and reports back if it could possibly be a well formed sequence labeling problem. - - - - - - - - is_sequence_segmentation_problem - dlib/svm.h - dlib/svm/svm_abstract.h - - This function takes a set of training data for a sequence segmentation problem - and reports back if it could possibly be a well formed sequence segmentation problem. - - - - - - - - is_assignment_problem - dlib/svm.h - dlib/svm/svm_abstract.h - - This function takes a set of training data for an assignment problem - and reports back if it could possibly be a well formed assignment problem. - - - - - - - - is_track_association_problem - dlib/svm.h - dlib/svm/svm_abstract.h - - This function takes a set of training data for a track association learning problem - and reports back if it could possibly be a well formed track association problem. - - - - - - - - is_graph_labeling_problem - dlib/svm_threaded.h - dlib/svm/structural_svm_graph_labeling_problem_abstract.h - - This function takes a set of training data for a graph labeling problem - and reports back if it could possibly be a well formed problem. - - - - - - - - is_forced_assignment_problem - dlib/svm.h - dlib/svm/svm_abstract.h - - This function takes a set of training data for a forced assignment problem - and reports back if it could possibly be a well formed forced assignment problem. - - - - - - - - is_learning_problem - dlib/svm.h - dlib/svm/svm_abstract.h - - This function simply takes two vectors, the first containing feature vectors and - the second containing labels, and reports back if the two could possibly - contain data for a well formed learning problem. In this case it just means - that the two vectors have the same length and aren't empty. - - - - - - - - select_all_distinct_labels - dlib/svm.h - dlib/svm/multiclass_tools_abstract.h - - This is a function which determines all distinct values present in a - std::vector and returns the result. - - - - - - - - simplify_linear_decision_function - dlib/svm.h - dlib/svm/simplify_linear_decision_function_abstract.h - - This is a set of functions that takes various forms of linear decision functions - and collapses them down so that they only compute a single dot product when invoked. - - - - - - - randomize_samples - dlib/svm.h - dlib/svm/svm_abstract.h - - Randomizes the order of samples in a column vector containing sample data. - - - svm_ex.cpp.html - - - - - - - - rank_features - dlib/svm.h - dlib/svm/feature_ranking_abstract.h - - Finds a ranking of the top N (a user supplied parameter) features in a set of data - from a two class classification problem. It - does this by computing the distance between the centroids of both classes in kernel defined - feature space. Good features are then ones that result in the biggest separation between - the two centroids. - - - rank_features_ex.cpp.html - - - - - - - - load_mnist_dataset - dlib/data_io.h - dlib/data_io/mnist_abstract.h - - Loads the MNIST dataset from disk. - - - - - - - load_image_dataset - dlib/data_io.h - dlib/data_io/load_image_dataset_abstract.h - - This is a function which loads the list of images indicated by an - image dataset metadata file - as well as the box locations for each image. It makes loading the - data necessary to train an object_detector - a little more convenient. - - - fhog_object_detector_ex.cpp.html - train_object_detector.cpp.html - - - - - - - - load_image_dataset_metadata - dlib/data_io.h - dlib/data_io/image_dataset_metadata.h - - dlib comes with a graphical tool for annotating images with - labeled rectangles. The tool produces an XML file containing these - annotations. Therefore, load_image_dataset_metadata() is a routine - for parsing these XML files. Note also that this is the metadata - format used by the image labeling tool included with dlib in the - tools/imglab folder. - - - - - - - - save_image_dataset_metadata - dlib/data_io.h - dlib/data_io/image_dataset_metadata.h - - This routine is a tool for saving labeled image metadata to an - XML file. In particular, this routine saves the metadata into a - form which can be read by the load_image_dataset_metadata - routine. Note also that this is the metadata - format used by the image labeling tool included with dlib in the - tools/imglab folder. - - - - - - - - load_libsvm_formatted_data - dlib/data_io.h - dlib/data_io/libsvm_io_abstract.h - - This is a function that loads the data from a file that uses - the LIBSVM format. It loads the data into a std::vector of - sparse vectors. - If you want to load data into dense vectors (i.e. - dlib::matrix objects) then you can use the sparse_to_dense - function to perform the conversion. Also, some LIBSVM formatted files number - their features beginning with 1 rather than 0. If this bothers you, then you - can fix it by using the fix_nonzero_indexing function - on the data after it is loaded. - - - - - - - - save_libsvm_formatted_data - dlib/data_io.h - dlib/data_io/libsvm_io_abstract.h - - This is actually a pair of overloaded functions. Between the two of them - they let you save sparse - or dense data vectors to file using the LIBSVM format. - - - - - - - make_bounding_box_regression_training_data - dlib/image_processing.h - dlib/image_processing/shape_predictor_trainer_abstract.h - - Suppose you have an object detector that can roughly locate objects in an - image. This means your detector draws boxes around objects, but these are - rough boxes in the sense that they aren't positioned super accurately. For - instance, HOG based detectors usually have a stride of 8 pixels. So the - positional accuracy is going to be, at best, +/-8 pixels. - -

    - If you want to get better positional accuracy one easy thing to do is train a - shape_predictor to give you the location - of the object's box. The make_bounding_box_regression_training_data() routine - helps you do this by creating an appropriate training dataset. -

    -
    -
    - - - - - fix_nonzero_indexing - dlib/data_io.h - dlib/data_io/libsvm_io_abstract.h - - This is a simple function that takes a std::vector of - sparse vectors - and makes sure they are zero-indexed (e.g. makes sure the first index value is zero). - - - - - - - find_gamma_with_big_centroid_gap - dlib/svm.h - dlib/svm/feature_ranking_abstract.h - - This is a function that tries to pick a reasonable default value for the - gamma parameter of the radial_basis_kernel. It - picks the parameter that gives the largest separation between the centroids, in - kernel feature space, of two classes of data. - - - rank_features_ex.cpp.html - - - - - - - - compute_mean_squared_distance - dlib/svm.h - dlib/svm/feature_ranking_abstract.h - - This is a function that simply finds the average squared distance between all - pairs of a set of data samples. It is often convenient to use the reciprocal - of this value as the estimate of the gamma parameter of the - radial_basis_kernel. - - - - - - - - batch - dlib/svm.h - dlib/svm/pegasos_abstract.h - - This is a convenience function for creating - batch_trainer objects. - - - svm_pegasos_ex.cpp.html - - - - - - - - verbose_batch - dlib/svm.h - dlib/svm/pegasos_abstract.h - - This is a convenience function for creating - batch_trainer objects. This function - generates a batch_trainer that will print status messages to standard - output so that you can observe the progress of a training algorithm. - - - svm_pegasos_ex.cpp.html - - - - - - - - batch_cached - dlib/svm.h - dlib/svm/pegasos_abstract.h - - This is a convenience function for creating - batch_trainer objects that are setup - to use a kernel matrix cache. - - - - - - - - verbose_batch_cached - dlib/svm.h - dlib/svm/pegasos_abstract.h - - This is a convenience function for creating - batch_trainer objects. This function - generates a batch_trainer that will print status messages to standard - output so that you can observe the progress of a training algorithm. - It will also be configured to use a kernel matrix cache. - - - - - - - - batch_trainer - dlib/svm.h - dlib/svm/pegasos_abstract.h - - This is a batch trainer object that is meant to wrap online trainer objects - that create decision_functions. It - turns an online learning algorithm such as svm_pegasos - into a batch learning object. This allows you to use objects like - svm_pegasos with functions (e.g. cross_validate_trainer) - that expect batch mode training objects. - - - - - - - - null_trainer_type - dlib/svm.h - dlib/svm/null_trainer_abstract.h - - This object is a simple tool for turning a decision_function - (or any object with an interface compatible with decision_function) - into a trainer object that always returns the original decision - function when you try to train with it. - -

    - dlib contains a few "training post processing" algorithms (e.g. - reduced and reduced2). These tools - take in a trainer object, - tell it to perform training, and then they take the output decision - function and do some kind of post processing to it. The null_trainer_type - object is useful because you can use it to run an already - learned decision function through the training post processing - algorithms by turning a decision function into a null_trainer_type - and then giving it to a post processor. -

    -
    - -
    - - - - - null_trainer - dlib/svm.h - dlib/svm/null_trainer_abstract.h - - This is a convenience function for creating - null_trainer_type - objects. - - - - - - - - roc_c1_trainer - dlib/svm.h - dlib/svm/roc_trainer_abstract.h - - This is a convenience function for creating - roc_trainer_type objects that are - setup to pick a point on the ROC curve with respect to the +1 class. - - - - - - - - roc_c2_trainer - dlib/svm.h - dlib/svm/roc_trainer_abstract.h - - This is a convenience function for creating - roc_trainer_type objects that are - setup to pick a point on the ROC curve with respect to the -1 class. - - - - - - - - roc_trainer_type - dlib/svm.h - dlib/svm/roc_trainer_abstract.h - - This object is a simple trainer post processor that allows you to - easily adjust the bias term in a trained decision_function object. - That is, this object lets you pick a point on the ROC curve and - it will adjust the bias term appropriately. - -

    - So for example, suppose you wanted to set the bias term so that - the accuracy of your decision function on +1 labeled samples was 99%. - To do this you would use an instance of this object declared as follows: - roc_trainer_type<trainer_type>(your_trainer, 0.99, +1); -

    -
    - -
    - - - - - reduced_decision_function_trainer - dlib/svm.h - dlib/svm/reduced_abstract.h - - This is a batch trainer object that is meant to wrap other batch trainer objects - that create decision_function objects. - It performs post processing on the output decision_function objects - with the intent of representing the decision_function with fewer - basis vectors. - - - - - - - - reduced - dlib/svm.h - dlib/svm/reduced_abstract.h - - This is a convenience function for creating - reduced_decision_function_trainer - objects. - - - - - - - - reduced2 - dlib/svm.h - dlib/svm/reduced_abstract.h - - This is a convenience function for creating - reduced_decision_function_trainer2 - objects. - - - svm_ex.cpp.html - - - - - - - - reduced_decision_function_trainer2 - dlib/svm.h - dlib/svm/reduced_abstract.h - -

    - This is a batch trainer object that is meant to wrap other batch trainer objects - that create decision_function objects. - It performs post processing on the output decision_function objects - with the intent of representing the decision_function with fewer - basis vectors. -

    -

    - It begins by performing the same post processing as - the reduced_decision_function_trainer - object but it also performs a global gradient based optimization - to further improve the results. The gradient based optimization is - implemented using the approximate_distance_function routine. -

    -
    - - svm_ex.cpp.html - - -
    - - - - - - approximate_distance_function - dlib/svm.h - dlib/svm/reduced_abstract.h - - This function attempts to find a distance_function object which is close - to a target distance_function. That is, it searches for an X such that target(X) is - minimized. Critically, X may be set to use fewer basis vectors than the target. - -

    The optimization begins with an initial guess supplied by the user - and searches for an X which locally minimizes target(X). Since - this problem can have many local minima the quality of the starting point - can significantly influence the results.

    -
    - -
    - - - - - test_binary_decision_function - dlib/svm.h - dlib/svm/svm_abstract.h - - Tests a decision_function that represents a binary decision function and - returns the test accuracy. - - - - - - - - - test_multiclass_decision_function - dlib/svm.h - dlib/svm/cross_validate_multiclass_trainer_abstract.h - - Tests a multiclass decision function (e.g. one_vs_one_decision_function) - and returns a confusion matrix describing the results. - - - multiclass_classification_ex.cpp.html - custom_trainer_ex.cpp.html - - - - - - - - - cross_validate_trainer_threaded - dlib/svm_threaded.h - dlib/svm/svm_threaded_abstract.h - - Performs k-fold cross validation on a user supplied binary classification trainer object such - as the svm_nu_trainer or rbf_network_trainer. - This function does the same thing as cross_validate_trainer - except this function also allows you to specify how many threads of execution to use. - So you can use this function to take advantage of a multi-core system to perform - cross validation faster. - - - - - - - cross_validate_trainer - dlib/svm.h - dlib/svm/svm_abstract.h - - Performs k-fold cross validation on a user supplied binary classification trainer object such - as the svm_nu_trainer or rbf_network_trainer. - - - svm_ex.cpp.html - model_selection_ex.cpp.html - - - - - - - - cross_validate_multiclass_trainer - dlib/svm.h - dlib/svm/cross_validate_multiclass_trainer_abstract.h - - Performs k-fold cross validation on a user supplied multiclass classification trainer object such - as the one_vs_one_trainer. The result is described by a - confusion matrix. - - - multiclass_classification_ex.cpp.html - custom_trainer_ex.cpp.html - - - - - - - - cross_validate_regression_trainer - dlib/svm.h - dlib/svm/cross_validate_regression_trainer_abstract.h - - Performs k-fold cross validation on a user supplied regression trainer object such - as the svr_trainer and returns the mean squared error - and R-squared value. - - - svr_ex.cpp.html - - - - - - - - cross_validate_sequence_labeler - dlib/svm.h - dlib/svm/cross_validate_sequence_labeler_abstract.h - - Performs k-fold cross validation on a user supplied sequence labeling trainer object such - as the structural_sequence_labeling_trainer - and returns a confusion matrix describing the results. - - - sequence_labeler_ex.cpp.html - - - - - - - - cross_validate_sequence_segmenter - dlib/svm.h - dlib/svm/cross_validate_sequence_segmenter_abstract.h - - Performs k-fold cross validation on a user supplied sequence segmentation trainer object such - as the structural_sequence_segmentation_trainer - and returns the resulting precision, recall, and F1-score. - - - sequence_segmenter.py.html - sequence_segmenter_ex.cpp.html - - - - - - - cross_validate_assignment_trainer - dlib/svm.h - dlib/svm/cross_validate_assignment_trainer_abstract.h - - Performs k-fold cross validation on a user supplied assignment trainer object such - as the structural_assignment_trainer - and returns the fraction of assignments predicted correctly. - - - assignment_learning_ex.cpp.html - - - - - - - - cross_validate_track_association_trainer - dlib/svm_threaded.h - dlib/svm/cross_validate_track_association_trainer_abstract.h - - Performs k-fold cross validation on a user supplied track association trainer object such - as the structural_track_association_trainer - and returns the fraction of detections which were correctly associated to their tracks. - - - learning_to_track_ex.cpp.html - - - - - - - cross_validate_graph_labeling_trainer - dlib/svm_threaded.h - dlib/svm/cross_validate_graph_labeling_trainer_abstract.h - - Performs k-fold cross validation on a user supplied graph labeling trainer object such - as the structural_graph_labeling_trainer - and returns the fraction of assignments predicted correctly. - - - graph_labeling_ex.cpp.html - - - - - - - - cross_validate_ranking_trainer - dlib/svm.h - dlib/svm/ranking_tools_abstract.h - - Performs k-fold cross validation on a user supplied ranking trainer object such - as the svm_rank_trainer - and returns the fraction of ranking pairs ordered correctly as well as the mean - average precision. - - - svm_rank_ex.cpp.html - svm_rank.py.html - - - - - - - - test_sequence_labeler - dlib/svm.h - dlib/svm/cross_validate_sequence_labeler_abstract.h - - Tests a sequence_labeler on a set of data - and returns a confusion matrix describing the results. - - - sequence_labeler_ex.cpp.html - - - - - - - - test_sequence_segmenter - dlib/svm.h - dlib/svm/cross_validate_sequence_segmenter_abstract.h - - Tests a sequence_segmenter on a set of data - and returns the resulting precision, recall, and F1-score. - - - sequence_segmenter.py.html - sequence_segmenter_ex.cpp.html - - - - - - - test_assignment_function - dlib/svm.h - dlib/svm/cross_validate_assignment_trainer_abstract.h - - Tests an assignment_function on a set of data - and returns the fraction of assignments predicted correctly. - - - assignment_learning_ex.cpp.html - - - - - - - - test_track_association_function - dlib/svm_threaded.h - dlib/svm/cross_validate_track_association_trainer_abstract.h - - Tests a track_association_function on a set of data - and returns the fraction of detections which were correctly associated to their tracks. - - - learning_to_track_ex.cpp.html - - - - - - - - test_graph_labeling_function - dlib/svm_threaded.h - dlib/svm/cross_validate_graph_labeling_trainer_abstract.h - - Tests a graph_labeler on a set of data - and returns the fraction of labels predicted correctly. - - - - - - - - average_precision - dlib/statistics.h - dlib/statistics/average_precision_abstract.h - - This function computes the average precision of a ranking. - - - - - - - equal_error_rate - dlib/statistics.h - dlib/statistics/lda_abstract.h - - This function finds a threshold that best separates the elements of two - vectors by selecting the threshold with equal error rate. It also reports - the value of the equal error rate. - - - - - - - compute_roc_curve - dlib/statistics.h - dlib/statistics/lda_abstract.h - - This function computes a ROC curve (receiver operating characteristic curve). - - - - - - - test_ranking_function - dlib/svm.h - dlib/svm/ranking_tools_abstract.h - - Tests a decision_function's ability to correctly - rank a dataset and returns the resulting ranking accuracy and mean average precision metrics. - - - svm_rank_ex.cpp.html - svm_rank.py.html - - - - - - - - test_shape_predictor - dlib/image_processing.h - dlib/image_processing/shape_predictor_abstract.h - - Tests a shape_predictor's ability to correctly - predict the part locations of objects. The output is the average distance (measured in pixels) between - each part and its true location. You can optionally normalize each distance using a - user supplied scale. For example, when performing face landmarking, you might want to - normalize the distances by the interocular distance. - - - train_shape_predictor_ex.cpp.html - train_shape_predictor.py.html - - - - - - - - cross_validate_object_detection_trainer - dlib/svm.h - dlib/svm/cross_validate_object_detection_trainer_abstract.h - - Performs k-fold cross validation on a user supplied object detection trainer such - as the structural_object_detection_trainer - and returns the precision and recall. - - - object_detector_ex.cpp.html - object_detector_advanced_ex.cpp.html - train_object_detector.cpp.html - - - - - - - - test_object_detection_function - dlib/svm.h - dlib/svm/cross_validate_object_detection_trainer_abstract.h - - Tests an object detector such - as the object_detector - and returns the precision and recall. - - - fhog_object_detector_ex.cpp.html - object_detector_ex.cpp.html - object_detector_advanced_ex.cpp.html - train_object_detector.cpp.html - dnn_mmod_ex.cpp.html - dnn_mmod_train_find_cars_ex.cpp.html - - - - - - - - test_regression_function - dlib/svm.h - dlib/svm/cross_validate_regression_trainer_abstract.h - - Tests a regression function (e.g. decision_function) - and returns the mean squared error and R-squared value. - - - - - - - - structural_svm_problem - dlib/svm.h - dlib/svm/structural_svm_problem_abstract.h - - This object, when used with the oca optimizer, is a tool - for solving the optimization problem associated - with a structural support vector machine. A structural SVM is a supervised - machine learning method for learning to predict complex outputs. This is - contrasted with a binary classifier which makes only simple yes/no - predictions. A structural SVM, on the other hand, can learn to predict - complex outputs such as entire parse trees or DNA sequence alignments. To - do this, it learns a function F(x,y) which measures how well a particular - data sample x matches a label y. When used for prediction, the best label - for a new x is given by the y which maximizes F(x,y). - -
    -
    - - For an introduction to structured support vector machines you should consult - the following paper: -
    - Predicting Structured Objects with Support Vector Machines by - Thorsten Joachims, Thomas Hofmann, Yisong Yue, and Chun-nam Yu -
    - - For a more detailed discussion of the particular algorithm implemented by this - object see the following paper: -
    - T. Joachims, T. Finley, Chun-Nam Yu, Cutting-Plane Training of Structural SVMs, - Machine Learning, 77(1):27-59, 2009. -
    - Note that this object is essentially a tool for solving the 1-Slack structural - SVM with margin-rescaling. Specifically, see Algorithm 3 in the above referenced - paper. - -

    - Finally, for a very detailed introduction to this subject, you should consider the book: -
    - Structured - Prediction and Learning in Computer Vision by Sebastian Nowozin and - Christoph H. Lampert -
    - -
    - - svm_struct.py.html - svm_struct_ex.cpp.html - - -
    - - - - - structural_svm_problem_threaded - dlib/svm_threaded.h - dlib/svm/structural_svm_problem_threaded_abstract.h - - This is just a version of the structural_svm_problem - which is capable of using multiple cores/threads at a time. You should use it if - you have a multi-core CPU and the separation oracle takes a long time to compute. Or even better, if you - have multiple computers then you can use the svm_struct_controller_node - to distribute the work across many computers. - - - svm_struct_ex.cpp.html - - - - - - - - structural_svm_object_detection_problem - dlib/svm_threaded.h - dlib/svm/structural_svm_object_detection_problem_abstract.h - - This object is a tool for learning the parameter vector needed to use - a scan_fhog_pyramid, - scan_image_pyramid, - scan_image_boxes, or - scan_image_custom object. - -

    - It learns the parameter vector by formulating the problem as a structural SVM problem. - The exact details of the method are described in the paper - Max-Margin Object Detection by Davis E. King. -

    -
    - -
    - - - - - structural_svm_sequence_labeling_problem - dlib/svm_threaded.h - dlib/svm/structural_svm_sequence_labeling_problem_abstract.h - - This object is a tool for learning the weight vector needed to use - a sequence_labeler object. - - It learns the parameter vector by formulating the problem as a - structural SVM problem. - The general approach is discussed in the paper: -
    - Hidden Markov Support Vector Machines by - Y. Altun, I. Tsochantaridis, T. Hofmann -
    - While the particular optimization strategy used is the method from: -
    - T. Joachims, T. Finley, Chun-Nam Yu, Cutting-Plane Training of - Structural SVMs, Machine Learning, 77(1):27-59, 2009. -
    -
    - -
    - - - - - structural_svm_assignment_problem - dlib/svm_threaded.h - dlib/svm/structural_svm_assignment_problem_abstract.h - - This object is a tool for learning the parameters needed to use - an assignment_function object. - It learns the parameters by formulating the problem as a - structural SVM problem. - - - - - - - - structural_svm_graph_labeling_problem - dlib/svm_threaded.h - dlib/svm/structural_svm_graph_labeling_problem_abstract.h - - This object is a tool for learning the weight vectors needed to use - a graph_labeler object. - It learns the parameter vectors by - formulating the problem as a structural SVM problem. - - - - - - - - structural_object_detection_trainer - dlib/svm_threaded.h - dlib/svm/structural_object_detection_trainer_abstract.h - - This object is a tool for learning to detect objects in images based on a set of labeled images. - The training procedure produces an object_detector which - can be used to predict the locations of objects in new images. - It learns the parameter vector by formulating the problem as a structural SVM problem. - The exact details of the method are described in the paper - Max-Margin Object Detection by Davis E. King. -

    - Note that this is just a convenience wrapper around the - structural_svm_object_detection_problem - to make it look similar to all the other trainers in dlib. -

    -
    - - fhog_object_detector_ex.cpp.html - object_detector_ex.cpp.html - object_detector_advanced_ex.cpp.html - train_object_detector.cpp.html - - train_object_detector.py.html - - -
    - - - - - structural_sequence_labeling_trainer - dlib/svm_threaded.h - dlib/svm/structural_sequence_labeling_trainer_abstract.h - - This object is a tool for learning to do sequence labeling based - on a set of training data. The training procedure produces a - sequence_labeler object which can - be use to predict the labels of new data sequences. -

    - Note that this is just a convenience wrapper around the - structural_svm_sequence_labeling_problem - to make it look similar to all the other trainers in dlib. -

    -
    - - sequence_labeler_ex.cpp.html - - -
    - - - - - structural_sequence_segmentation_trainer - dlib/svm_threaded.h - dlib/svm/structural_sequence_segmentation_trainer_abstract.h - - This object is a tool for learning to do sequence segmentation based on a - set of training data. The training procedure produces a sequence_segmenter - object which can be used to identify the sub-segments of new data sequences. -

    - This object internally uses the structural_sequence_labeling_trainer - to solve the learning problem. -

    -
    - - sequence_segmenter.py.html - sequence_segmenter_ex.cpp.html - - -
    - - - - - structural_graph_labeling_trainer - dlib/svm_threaded.h - dlib/svm/structural_graph_labeling_trainer_abstract.h - - This object is a tool for learning to solve a graph labeling problem based - on a training dataset of example labeled graphs. - The training procedure produces a graph_labeler object - which can be used to predict the labelings of new graphs. - -

    - To elaborate, a graph labeling problem is a task to learn a binary classifier which - predicts the label of each node in a graph. Additionally, we have information in - the form of edges between nodes where edges are present when we believe the - linked nodes are likely to have the same label. Therefore, part of a graph labeling - problem is to learn to score each edge in terms of how strongly the edge should enforce - labeling consistency between its two nodes. -

    - -

    - Note that this is just a convenience wrapper around the - structural_svm_graph_labeling_problem - to make it look similar to all the other trainers in dlib. You might also - consider reading the book - Structured - Prediction and Learning in Computer Vision by Sebastian - Nowozin and Christoph H. Lampert since it contains a good introduction to machine learning - methods such as the algorithm implemented by the structural_graph_labeling_trainer. -

    -
    - - graph_labeling_ex.cpp.html - - -
    - - - - - structural_assignment_trainer - dlib/svm_threaded.h - dlib/svm/structural_assignment_trainer_abstract.h - - This object is a tool for learning to solve an assignment problem based - on a training dataset of example assignments. The training procedure produces an - assignment_function object which can be used - to predict the assignments of new data. - - - Note that this is just a convenience wrapper around the - structural_svm_assignment_problem - to make it look similar to all the other trainers in dlib. - - - assignment_learning_ex.cpp.html - - - - - - - - structural_track_association_trainer - dlib/svm_threaded.h - dlib/svm/structural_track_association_trainer_abstract.h - - This object is a tool for learning to solve a track association problem. That - is, it takes in a set of training data and outputs a - track_association_function - you can use to do detection to track association. - - - learning_to_track_ex.cpp.html - - - - - - - svm_struct_controller_node - dlib/svm_threaded.h - dlib/svm/structural_svm_distributed_abstract.h - - This object is a tool for distributing the work involved in solving a - structural_svm_problem across many computers. - - - - - - - - svm_struct_processing_node - dlib/svm_threaded.h - dlib/svm/structural_svm_distributed_abstract.h - - This object is a tool for distributing the work involved in solving a - structural_svm_problem across many computers. - - - - - - -
    - - - - -
    - - diff --git a/ml/dlib/docs/docs/ml_guide.dia b/ml/dlib/docs/docs/ml_guide.dia deleted file mode 100644 index 1d66e5391..000000000 Binary files a/ml/dlib/docs/docs/ml_guide.dia and /dev/null differ diff --git a/ml/dlib/docs/docs/ml_guide.svg b/ml/dlib/docs/docs/ml_guide.svg deleted file mode 100644 index d971f5e89..000000000 --- a/ml/dlib/docs/docs/ml_guide.svg +++ /dev/null @@ -1,4345 +0,0 @@ - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - NO - - - - - - - - - - - - - - Do you want to detect - objects in images? - - - - - - - Predicting the labels - of nodes in a graph? - - - - - - - Binary labels on - nodes in a graph? - - - - - - - A chain structured graph? - (e.g. words in a sentence) - - - - - - - Are you trying to make - a BIO or BILOU tagger? - - - - - - - - - - - - Trying to solve an - assignment problem? - - - - YES - - - NO - - - NO - - - YES - - - NO - - - NO - - - YES - - - NO - - - YES - - - YES - - - YES - - - NO - - - - - - - - - - - - - - - - - - - - - - - - - - - - Structured Prediction - - - Markov Random Fields - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - YES - - - NO - - - - - - - - - - - Want to make - a tracker? - - - - - - - - structural_track_association_trainer - - - - - - - - - - YES - - - - - - - - NO - - - - - - - svm_rank_trainer - - - - - - - - - structural_object_detection_trainer - - - - - - - - - structural_sequence_segmentation_trainer - - - - - - - - - structural_sequence_labeling_trainer - - - - - - - - - structural_graph_labeling_trainer - - - - - - - - - structural_assignment_trainer - - - - - - - - - structural_svm_problem - (Used to build your own - structured precition tool!) - - - - - - - - - - - - - - - - - - - - - Predicting a - true or false label? - - - - - - - Predicting a - categorial label? - - - - - - - Predicting a - continuous quantity? - - - - - - - Do you have - labeled data? - - - - - - - Are you trying - to rank order - something? - - - - - - - Do you want - to transform - your data? - - - - YES - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Do you know how - many categories? - - - - TOO - SLOW - - - YES - - - NO - - - Clustering - - - - - - - - - - - - - - - - - - - - - - - - - - < 5K - Samples - - - - - - - - - - - - - - - - - - - YES - - - - - - - - - - - - - - - - - - - - - NO - - - - - - Do you have - a graph of "similar" - samples? - - - - - - - - - - - - - - - - - YES - - - NO - - - YES - - - NO - - - YES - - - NO - - - Data Transformations - - - - - - - - - - - - - - - Number of - features - < 100 - - - - NO - - - YES - - - - - - < 20K - Samples - - - - NOT - WORKING - - - YES - - - NO - - - NO - - - - - - - - - Do you have - labeled data? - - - - - - - Are you trying - to label things - as anomalous - vs. normal? - - - - - - - < 20K - Samples - - - - YES - - - - - - Go get - labels! - - - - NO - - - YES - - - NO - - - - - - Number of - features - < 100 - - - - NO - - - YES - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - YES - - - Classification - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - NOT - WORKING - - - - - - < 20K - Samples - - - - YES - - - NO - - - - - - Is this a time-series - or online prediction - problem? - - - - NO - - - - - - - - - - - - - - - - - - - - - - - - - - - - YES - - - Regression - - - - - - - - NO - - - YES - - - YES - - - NO - - - NO - - - YES - - - NO - - - YES - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - svm_c_trainer - with radial_basis_kernel or - histogram_intersection_kernel - - - - - - - - - svm_c_linear_trainer - - - - - - - - - svm_one_class_trainer - with radial_basis_kernel - - - - - - - - - svm_c_linear_dcd_trainer - (see one_class_classifiers_ex.cpp - example program) - - - - - - - - - svm_multiclass_linear_trainer - - - - - - - - - one_vs_one_trainer - with krr_trainer using - radial_basis_kernel - - - - - - - - - krr_trainer with - radial_basis_kernel - - - - - - - - - newman_cluster or - chinese_whispers - - - - - - - - - spectral_cluster or - find_clusters_using_kmeans - - - - - - - - - vector_normalizer_frobmetric - - - - - - - - - linear_manifold_regularizer - - - - - - - - - krr_trainer with - radial_basis_kernel - - - - - - - - - svr_trainer with - radial_basis_kernel or - histogram_intersection_kernel - - - - - - - - - svr_linear_trainer - - - - - - - - - sammon_projection - - - - - - - - - discriminant_pca - - - - - - - - - krls or rls - - - - - - - - - cca - - - - - - - - - - - - - - - - - - - - - - - - Learning a - distance metric? - - - - - - - - Do you have - two views of - your data? - - - diff --git a/ml/dlib/docs/docs/network.xml b/ml/dlib/docs/docs/network.xml deleted file mode 100644 index c632f977c..000000000 --- a/ml/dlib/docs/docs/network.xml +++ /dev/null @@ -1,259 +0,0 @@ - - - - - Networking - - - - -

    - This page documents tools built on top of the dlib sockets API. - Therefore, all these tools are focused on providing some kind of higher level networking - abstraction or service. -

    - - - - - - - -
    - Objects - linker - server - server_iostream - server_http - bridge - sockstreambuf - iosockstream -
    - -
    - BSP - bsp_connect - bsp_listen - bsp_listen_dynamic_port - bsp_context -
    - -
    - -
    - - - - - - - - - - - - linker - dlib/linker.h - dlib/linker/linker_kernel_abstract.h - - This object represents something that takes two connections and lets - them talk to each other. ie. any incoming data from one connection is - passed unaltered to the other and vice versa. - - - - - - - - bridge - dlib/bridge.h - dlib/bridge/bridge_abstract.h - - This object is a tool for bridging a pipe object between - two network connected applications. - -

    - The bridge object is designed to link two pipes together as efficiently as - possible. To demonstrate its speed, I ran two experiments where a bridge was - used to connect a desktop PC to a laptop, both running Ubuntu 12.04 and - connected via gigabit ethernet. The first experiment is to test its bulk - transfer speed while the second experiment measures how many separate objects - the bridge can transfer each second. -

    -

    - In the first experiment, 1-megapixel images, represented with - array<rgb_pixel> objects, were sent. The transfer rate was - 112 megabytes/second, saturating the gigabit ethernet link. The second - experiment used a pipe<char> and bridge to send individual - char variables over the network. In this experiment, I was able to - send 3.2 million objects a second (i.e. the receiving end was getting a char - back from pipe::dequeue() 3.2 million times each second). -

    -

    - For reference, these experiments were carried out on a desktop with a 2.67GHz - Intel Core-i7 CPU and a laptop with a 2.20GHz Intel Core-i7 CPU. -

    -
    - - bridge_ex.cpp.html - -
    - - - - - bsp_connect - dlib/bsp.h - dlib/bsp/bsp_abstract.h - - This function spawns a BSP job consisting of a number of network hosts - as well as the local host. - - - bsp_ex.cpp.html - - - - - - - bsp_listen - dlib/bsp.h - dlib/bsp/bsp_abstract.h - - This function listens for a TCP connection from the bsp_connect routine. - Once this connection is established, a user supplied function will be executed and it will - then be able to participate in a BSP computation as one of the processing - nodes. - - - bsp_ex.cpp.html - - - - - - - bsp_listen_dynamic_port - dlib/bsp.h - dlib/bsp/bsp_abstract.h - - This function listens for a TCP connection from the bsp_connect routine. - Once this connection is established, a user supplied function will be executed and it will - then be able to participate in a BSP computation as one of the processing - nodes. This function has the additional ability to select the listening TCP port - automatically from the set of available ports. - - - - - - - bsp_context - dlib/bsp.h - dlib/bsp/bsp_abstract.h - - This is a tool used to implement algorithms using the Bulk Synchronous - Parallel (BSP) computing model. In particular, this object defines - the API used for communication between BSP jobs. - - - bsp_ex.cpp.html - - - - - - - server - dlib/server.h - dlib/server/server_kernel_abstract.h - - This object represents a server that listens on a port and spawns new - threads to handle each new connection. It also manages the connections - and threads for you. - - - - sockets_ex.cpp.html - - - - - - - - server_iostream - dlib/server.h - dlib/server/server_iostream_abstract.h - - This is an extension of the server object that redefines - the on_connect() function so that instead of giving you a connection object you - get an istream and ostream object. - - - server_iostream_ex.cpp.html - - - - - - - server_http - dlib/server.h - dlib/server/server_http_abstract.h - - This is an extension of the server_iostream object which - turns it into a simple HTTP server. - - - - server_http_ex.cpp.html - - - - - - - iosockstream - dlib/iosockstream.h - dlib/iosockstream/iosockstream_abstract.h - - This is an iostream object that reads/writes from a TCP network connection. - - - - iosockstream_ex.cpp.html - - - - - - - - - sockstreambuf - dlib/sockstreambuf.h - dlib/sockstreambuf/sockstreambuf_abstract.h - - This object represents a stream buffer for connection objects. If you - are considering using this object then you should also take a look at - the iosockstream. - - - - sockstreambuf_ex.cpp.html - - - - - - - -
    - - - - -
    diff --git a/ml/dlib/docs/docs/old_change_log.xml b/ml/dlib/docs/docs/old_change_log.xml deleted file mode 100644 index bddb0b479..000000000 --- a/ml/dlib/docs/docs/old_change_log.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - Old Change Logs - - diff --git a/ml/dlib/docs/docs/old_release_notes.xml b/ml/dlib/docs/docs/old_release_notes.xml deleted file mode 100644 index e9e7c408b..000000000 --- a/ml/dlib/docs/docs/old_release_notes.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - Old Release Notes - - - - - diff --git a/ml/dlib/docs/docs/optimization.xml b/ml/dlib/docs/docs/optimization.xml deleted file mode 100644 index cd04ded75..000000000 --- a/ml/dlib/docs/docs/optimization.xml +++ /dev/null @@ -1,1338 +0,0 @@ - - - - - Optimization - - - - - -

    - This page documents library components that attempt to find the - minimum or maximum of a user supplied function. An introduction - to the general purpose non-linear optimizers in this section can be - found here. For an example - showing how to use the non-linear least squares routines look - here. -

    - - - - - - - -
    - General Purpose Optimizers - find_min - find_min_box_constrained - find_min_single_variable - find_min_using_approximate_derivatives - find_min_bobyqa - find_min_global - find_max - find_max_box_constrained - find_max_single_variable - find_max_using_approximate_derivatives - find_max_bobyqa - find_max_global - global_function_search - find_max_trust_region - find_min_trust_region -
    - -
    - Special Purpose Optimizers - find_gap_between_convex_hulls - solve_qp_box_constrained - solve_qp_box_constrained_blockdiag - solve_qp_using_smo - solve_qp2_using_smo - solve_qp3_using_smo - solve_qp4_using_smo - oca - mpc - solve_least_squares - solve_least_squares_lm - solve_trust_region_subproblem - solve_trust_region_subproblem_bounded - max_cost_assignment - max_sum_submatrix - find_max_factor_graph_nmplp - find_max_factor_graph_viterbi - find_max_factor_graph_potts - find_max_parse_cky - min_cut - elastic_net - isotonic_regression -
    - -
    - Strategies - cg_search_strategy - bfgs_search_strategy - newton_search_strategy - lbfgs_search_strategy - objective_delta_stop_strategy - gradient_norm_stop_strategy -
    - -
    - Helper Routines - derivative - negate_function - clamp_function - make_line_search_function - poly_min_extrap - lagrange_poly_min_extrap - line_search - backtracking_line_search - graph_cut_score - potts_model_score - parse_tree_to_string - find_trees_not_rooted_with_tag - upper_bound_function - call_function_and_expand_args -
    - -
    -
    - - - - - - - - - - - derivative - dlib/optimization.h - dlib/optimization/optimization_abstract.h - - This is a function that takes another function as input and returns - a function object that numerically computes the derivative of the input function. - - - - - - - - - negate_function - dlib/optimization.h - dlib/optimization/optimization_line_search_abstract.h - - This is a function that takes another function as input and returns - a function object that computes the negation of the input function. - - - - - - - - - clamp_function - dlib/optimization.h - dlib/optimization/optimization_abstract.h - - This is a function that takes another function, f(x), as input and - returns a new function object, g(x), such that - g(x) == f(clamp(x,x_lower,x_upper)) where x_lower and x_upper - are vectors of box constraints which are applied to x. - - - - - - - - make_line_search_function - dlib/optimization.h - dlib/optimization/optimization_line_search_abstract.h - - This is a function that takes another function f(x) as input and returns - a function object l(z) = f(start + z*direction). It is useful for - turning multi-variable functions into single-variable functions for - use with the line_search or - backtracking_line_search routines. - - - - - - - - - poly_min_extrap - dlib/optimization.h - dlib/optimization/optimization_line_search_abstract.h - - This function finds the 2nd or 3rd degree polynomial that interpolates a - set of points and returns the minimum of that polynomial. - - - - - - - - lagrange_poly_min_extrap - dlib/optimization.h - dlib/optimization/optimization_line_search_abstract.h - - This function finds the second order polynomial that interpolates a - set of points and returns the minimum of that polynomial. - - - - - - - - line_search - dlib/optimization.h - dlib/optimization/optimization_line_search_abstract.h - - Performs a gradient based line search on a given function and returns the input - that makes the function significantly smaller. This implements the classic - line search method using the strong Wolfe conditions with a bracketing and then - sectioning phase, both using polynomial interpolation. - - - - - - - - - backtracking_line_search - dlib/optimization.h - dlib/optimization/optimization_line_search_abstract.h - - Performs a line search on a given function and returns the input - that makes the function significantly smaller. This implementation uses a - basic Armijo backtracking search with polynomial interpolation. - - - - - - - - cg_search_strategy - dlib/optimization.h - dlib/optimization/optimization_search_strategies_abstract.h - - This object represents a strategy for determining which direction - a line search should be carried out along. This particular object - is an implementation of the Polak-Ribiere conjugate gradient method - for determining this direction. - -

    - This method uses an amount of memory that is linear in the number - of variables to be optimized. So it is capable of handling problems - with a very large number of variables. However, it is generally - not as good as the L-BFGS algorithm (see the - lbfgs_search_strategy class). -

    -
    - - optimization_ex.cpp.html - - -
    - - - - - bfgs_search_strategy - dlib/optimization.h - dlib/optimization/optimization_search_strategies_abstract.h - - This object represents a strategy for determining which direction - a line search should be carried out along. This particular object - is an implementation of the BFGS quasi-newton method for determining - this direction. - -

    - This method uses an amount of memory that is quadratic in the number - of variables to be optimized. It is generally very effective but - if your problem has a very large number of variables then it isn't - appropriate. Instead, you should try the lbfgs_search_strategy. -

    -
    - - optimization_ex.cpp.html - - -
    - - - - - newton_search_strategy - dlib/optimization.h - dlib/optimization/optimization_search_strategies_abstract.h - - This object represents a strategy for determining which direction - a line search should be carried out along. This particular routine - is an implementation of the newton method for determining this direction. - That means using it requires you to supply a method for - creating hessian matrices for the problem you are trying to optimize. - -

    - Note also that this is actually a helper function for creating - newton_search_strategy_obj objects. -

    - -
    - - optimization_ex.cpp.html - - -
    - - - - - lbfgs_search_strategy - dlib/optimization.h - dlib/optimization/optimization_search_strategies_abstract.h - - This object represents a strategy for determining which direction - a line search should be carried out along. This particular object - is an implementation of the L-BFGS quasi-newton method for determining - this direction. - -

    - This method uses an amount of memory that is linear in the number - of variables to be optimized. This makes it an excellent method - to use when an optimization problem has a large number of variables. -

    -
    - - optimization_ex.cpp.html - - -
    - - - - - objective_delta_stop_strategy - dlib/optimization.h - dlib/optimization/optimization_stop_strategies_abstract.h - - This object represents a strategy for deciding if an optimization - algorithm should terminate. This particular object looks at the - change in the objective function from one iteration to the next and - bases its decision on how large this change is. If the change - is below a user given threshold then the search stops. - - - optimization_ex.cpp.html - - - - - - - - gradient_norm_stop_strategy - dlib/optimization.h - dlib/optimization/optimization_stop_strategies_abstract.h - - This object represents a strategy for deciding if an optimization - algorithm should terminate. This particular object looks at the - norm (i.e. the length) of the current gradient vector and - stops if it is smaller than a user given threshold. - - - - - - - - find_min - dlib/optimization.h - dlib/optimization/optimization_abstract.h - - Performs an unconstrained minimization of a nonlinear function using - some search strategy (e.g. bfgs_search_strategy). - - - optimization_ex.cpp.html - - - - - - - - find_min_box_constrained - dlib/optimization.h - dlib/optimization/optimization_abstract.h - - Performs a box constrained minimization of a nonlinear function using - some search strategy (e.g. bfgs_search_strategy). - This function uses a backtracking line search along with a gradient projection - step to handle the box constraints. - - - optimization_ex.cpp.html - - - - - - - find_min_single_variable - dlib/optimization.h - dlib/optimization/optimization_line_search_abstract.h - - Performs a bound constrained minimization of a nonlinear function. The - function must be of a single variable. Derivatives are not required. - - - - - - - - solve_trust_region_subproblem_bounded - dlib/optimization.h - dlib/optimization/optimization_trust_region_abstract.h - - This function solves the following optimization problem: -
    -Minimize: f(p) == 0.5*trans(p)*B*p + trans(g)*p
    -subject to the following constraint:
    -   length(p) <= radius
    -   lower(i) <= p(i) <= upper(i), for all i
    -
    - -
    - -
    - - - - - solve_trust_region_subproblem - dlib/optimization.h - dlib/optimization/optimization_trust_region_abstract.h - - This function solves the following optimization problem: -
    -Minimize: f(p) == 0.5*trans(p)*B*p + trans(g)*p
    -subject to the following constraint:
    -   length(p) <= radius
    -
    - -
    - -
    - - - - - find_gap_between_convex_hulls - dlib/optimization.h - dlib/optimization/optimization_solve_qp_using_smo_abstract.h - - This function measures the position and size of the gap between two convex - polytopes. In particular, it solves the following quadratic program: -
    -   Minimize: f(cA,cB) == length_squared(A*cA - B*cB) 
    -   subject to the following constraints on cA and cB:
    -      - is_col_vector(cA) == true && cA.size() == A.nc()
    -      - is_col_vector(cB) == true && cB.size() == B.nc()
    -      - sum(cA) == 1 && min(cA) >= 0
    -      - sum(cB) == 1 && min(cB) >= 0
    -
    - -
    - -
    - - - - - solve_qp_using_smo - dlib/optimization.h - dlib/optimization/optimization_solve_qp_using_smo_abstract.h - - This function solves the following quadratic program: -
    -   Minimize: f(alpha) == 0.5*trans(alpha)*Q*alpha - trans(alpha)*b
    -   subject to the following constraints:
    -      sum(alpha) == C 
    -      min(alpha) >= 0 
    -   Where f is convex.  This means that Q should be symmetric and positive-semidefinite.
    -
    - -
    - -
    - - - - - solve_qp_box_constrained - dlib/optimization.h - dlib/optimization/optimization_solve_qp_using_smo_abstract.h - - This function solves the following quadratic program: -
    -   Minimize: f(alpha) == 0.5*trans(alpha)*Q*alpha + trans(b)*alpha 
    -   subject to the following box constraints on alpha:
    -      0 <= min(alpha-lower)
    -      0 <= max(upper-alpha)
    -   Where f is convex.  This means that Q should be positive-semidefinite.
    -
    - -
    - -
    - - - - - solve_qp_box_constrained_blockdiag - dlib/optimization.h - dlib/optimization/optimization_solve_qp_using_smo_abstract.h - - This function solves the following quadratic program: -
    -   Minimize: f(alpha) == 0.5*trans(alpha)*Q*alpha + trans(b)*alpha 
    -   subject to the following box constraints on alpha:
    -      0 <= min(alpha-lower)
    -      0 <= max(upper-alpha)
    -   Where f is convex.  This means that Q should be positive-semidefinite.
    -
    - - So it does the same thing as solve_qp_box_constrained, - except it is optimized for large Q matrices with a special block - structure. In particular, Q must be grouped into identically sized - blocks where all blocks are diagonal matrices, except those on the - main diagonal which can be dense. -
    - -
    - - - - - solve_qp2_using_smo - dlib/optimization.h - dlib/optimization/optimization_solve_qp2_using_smo_abstract.h - - This function solves the following quadratic program: -
    -   Minimize: f(alpha) == 0.5*trans(alpha)*Q*alpha 
    -   subject to the following constraints:
    -      sum(alpha) == nu*y.size() 
    -      0 <= min(alpha) && max(alpha) <= 1 
    -      trans(y)*alpha == 0
    -
    -   Where all elements of y must be equal to +1 or -1 and f is convex.  
    -   This means that Q should be symmetric and positive-semidefinite.
    -
    -
    - This object implements the strategy used by the LIBSVM tool. The following papers - can be consulted for additional details: -
      -
    • Chang and Lin, Training {nu}-Support Vector Classifiers: Theory and Algorithms
    • -
    • Chih-Chung Chang and Chih-Jen Lin, LIBSVM : a library for support vector - machines, 2001. Software available at - http://www.csie.ntu.edu.tw/~cjlin/libsvm
    • -
    - -
    - -
    - - - - - solve_qp3_using_smo - dlib/optimization.h - dlib/optimization/optimization_solve_qp3_using_smo_abstract.h - - This function solves the following quadratic program: -
    -   Minimize: f(alpha) == 0.5*trans(alpha)*Q*alpha + trans(p)*alpha
    -   subject to the following constraints:
    -        for all i such that y(i) == +1:  0 <= alpha(i) <= Cp 
    -        for all i such that y(i) == -1:  0 <= alpha(i) <= Cn 
    -        trans(y)*alpha == B 
    -
    -   Where all elements of y must be equal to +1 or -1 and f is convex.  
    -   This means that Q should be symmetric and positive-semidefinite.
    -
    -
    - This object implements the strategy used by the LIBSVM tool. The following papers - can be consulted for additional details: -
      -
    • Chih-Chung Chang and Chih-Jen Lin, LIBSVM : a library for support vector - machines, 2001. Software available at - http://www.csie.ntu.edu.tw/~cjlin/libsvm
    • -
    • Working Set Selection Using Second Order Information for Training Support Vector Machines by - Fan, Chen, and Lin. In the Journal of Machine Learning Research 2005.
    • -
    - -
    - -
    - - - - - solve_qp4_using_smo - dlib/optimization.h - dlib/optimization/optimization_solve_qp_using_smo_abstract.h - - This function solves the following quadratic program: -
    -   Minimize: f(alpha,lambda) == 0.5*trans(alpha)*Q*alpha - trans(alpha)*b + 
    -                                0.5*trans(lambda)*lambda - trans(lambda)*A*alpha - trans(lambda)*d
    -   subject to the following constraints:
    -      sum(alpha)  == C 
    -      min(alpha)  >= 0 
    -      min(lambda) >= 0
    -      max(lambda) <= max_lambda 
    -   Where f is convex.  This means that Q should be positive-semidefinite.
    -
    - -
    - -
    - - - - - max_cost_assignment - dlib/optimization.h - dlib/optimization/max_cost_assignment_abstract.h - - This function is an implementation of the Hungarian algorithm (also know as the Kuhn-Munkres algorithm) which - runs in O(N^3) time. - It solves the optimal assignment problem. For example, suppose you have an equal number of workers - and jobs and you need to decide which workers to assign to which jobs. Some workers are better at - certain jobs than others. So you would like to find out how to assign them all to jobs such that - overall productivity is maximized. You can use this routine to solve this problem and others like it. -

    - Note that dlib also contains a machine learning - method for learning the cost function needed to use the Hungarian algorithm. -

    - -
    - - max_cost_assignment_ex.cpp.html - max_cost_assignment.py.html - - -
    - - - - - max_sum_submatrix - dlib/optimization.h - dlib/optimization/max_sum_submatrix_abstract.h - - This function finds the submatrix within a user supplied matrix which has the largest sum. It then - zeros out that submatrix and repeats the process until no more maximal submatrices can - be found. - - - - - - - - find_max_factor_graph_nmplp - dlib/optimization.h - dlib/optimization/find_max_factor_graph_nmplp_abstract.h - - This function is a tool for approximately solving the MAP problem in a graphical - model or factor graph with pairwise potential functions. That is, it attempts - to solve a certain kind of optimization problem which can be defined as follows: -
    -   maximize: f(X)
    -   where X is a set of integer valued variables and f(X) can be written
    -   as the sum of functions which each involve only two variables from X.
    -
    -If the graph is tree-structured then this routine always gives the exact solution to the MAP problem. -However, for graphs with cycles, the solution may be approximate. -
    -
    - This function is an implementation of the NMPLP algorithm introduced in the - following papers: -
    - Fixing Max-Product: Convergent Message Passing Algorithms for MAP LP-Relaxations (2008) - by Amir Globerson and Tommi Jaakkola -
    -
    - Introduction to dual decomposition for inference (2011) - by David Sontag, Amir Globerson, and Tommi Jaakkola -
    - -
    - -
    - - - - - find_max_parse_cky - dlib/optimization.h - dlib/optimization/find_max_parse_cky_abstract.h - - This function implements the CKY parsing algorithm. In particular, it - finds the maximum scoring binary parse tree that parses an input sequence of tokens. - - - - - - - - parse_tree_to_string - dlib/optimization.h - dlib/optimization/find_max_parse_cky_abstract.h - - This is a set of functions useful for converting a parse tree output by - find_max_parse_cky into a bracketed string - suitable for displaying the parse tree. - - - - - - - - find_trees_not_rooted_with_tag - dlib/optimization.h - dlib/optimization/find_max_parse_cky_abstract.h - - Finds all the largest non-overlapping parse trees - in tree that are not rooted with a particular tag. -

    - This function is useful when you want to cut a parse tree - into a bunch of sub-trees and you know that the top level of the tree is all - composed of the same kind of tag. So if you want to just "slice off" the top - of the tree where this tag lives then this function is useful for doing that. -

    -
    - -
    - - - - - find_max_factor_graph_viterbi - dlib/optimization.h - dlib/optimization/find_max_factor_graph_viterbi_abstract.h - - This function is a tool for exactly solving the MAP problem in a chain-structured - graphical model or factor graph. In particular, it is an implementation of the classic Viterbi - algorithm for finding the maximizing assignment. In addition to basic first order Markov - models, this function is also capable of finding the MAP assignment for higher order - Markov models. - - - - - - - - potts_model_score - dlib/graph_cuts.h - dlib/graph_cuts/find_max_factor_graph_potts_abstract.h - - This routine computes the model score for a Potts problem and a - candidate labeling. This score is the quantity maximised - by the find_max_factor_graph_potts - routine. - - - - - - - - graph_cut_score - dlib/graph_cuts.h - dlib/graph_cuts/min_cut_abstract.h - - This routine computes the score for a candidate graph cut. This is the - quantity minimized by the min_cut algorithm. - - - - - - - - min_cut - dlib/graph_cuts.h - dlib/graph_cuts/min_cut_abstract.h - - This is a function object which can be used to find the min cut - on a graph. - The implementation is based on the method described in the following - paper: -
    - An Experimental Comparison of Min-Cut/Max-Flow Algorithms for - Energy Minimization in Vision, by Yuri Boykov and Vladimir Kolmogorov, - in PAMI 2004. -
    -
    - -
    - - - - - find_max_factor_graph_potts - dlib/graph_cuts.h - dlib/graph_cuts/find_max_factor_graph_potts_abstract.h - - This is a set of overloaded functions for exactly solving the MAP problem in a Potts - model. This type of model is useful when you have a problem which - can be modeled as a bunch of binary decisions on some variables, - but you have some kind of labeling consistency constraint. This - means that there is some penalty for giving certain pairs of variables - different labels. So in addition to trying to figure out how to best - label each variable on its own, you have to worry about making the - labels pairwise consistent in some sense. The find_max_factor_graph_potts() - routine can be used to find the most probable/highest scoring - labeling for this type of model. -

    The implementation of this routine is based on the min_cut object.

    -
    - -
    - - - - - oca - dlib/optimization.h - dlib/optimization/optimization_oca_abstract.h - - This object is a tool for solving the following optimization problem: -
    -   Minimize: f(w) == 0.5*||w||^2 + C*R(w)
    -
    -   Where R(w) is a user-supplied convex function and C > 0.  Optionally,
    -   this object can also add non-negativity constraints to some or all
    -   of the elements of w.
    -
    -Or it can alternatively solve:
    -   Minimize: f(w) == 0.5*||w-prior||^2 + C*R(w)
    -
    -   Where prior is a user supplied vector and R(w) has the same
    -   interpretation as above.
    -
    -Or it can use the elastic net regularizer:
    -   Minimize: f(w) == 0.5*(1-lasso_lambda)*length_squared(w) + lasso_lambda*sum(abs(w)) + C*R(w)
    -
    -   Where lasso_lambda is a number in the range [0, 1) and controls
    -   trade-off between doing L1 and L2 regularization.  R(w) has the same
    -   interpretation as above.
    -
    -
    -
    - - For a detailed discussion you should consult the following papers - from the Journal of Machine Learning Research: -
    - Optimized Cutting Plane Algorithm for Large-Scale Risk Minimization - by Vojtech Franc, Soren Sonnenburg; 10(Oct):2157--2192, 2009. -
    -
    - Bundle Methods for Regularized Risk Minimization - by Choon Hui Teo, S.V.N. Vishwanthan, Alex J. Smola, Quoc V. Le; 11(Jan):311-365, 2010. -
    - -
    - -
    - - - - - mpc - dlib/control.h - dlib/control/mpc_abstract.h - - This object implements a linear model predictive controller. - In particular, it solves a certain quadratic program using the method - described in the paper: -
    - A Fast Gradient method for embedded linear predictive control (2011) - by Markus Kogel and Rolf Findeisen -
    -
    - - mpc_ex.cpp.html - -
    - - - - - - find_min_bobyqa - dlib/optimization.h - dlib/optimization/optimization_bobyqa_abstract.h - - This function defines the dlib interface to the BOBYQA software developed by M.J.D Powell. - BOBYQA is a method for optimizing a function in the absence of derivative information. - Powell described it as a method that seeks the least value of a function of many - variables, by applying a trust region method that forms quadratic models by - interpolation. There is usually some freedom in the interpolation conditions, - which is taken up by minimizing the Frobenius norm of the change to the second - derivative of the model, beginning with the zero matrix. The values of the variables - are constrained by upper and lower bounds. - -

    - The following paper, published in 2009 by Powell, describes the - detailed working of the BOBYQA algorithm. - -

    - The BOBYQA algorithm for bound constrained optimization - without derivatives by M.J.D. Powell -
    -

    - -

    - Note that BOBYQA only works on functions of two or more variables. So if you need to perform - derivative-free optimization on a function of a single variable - then you should use the find_min_single_variable - function. -

    - -
    - - optimization_ex.cpp.html - - -
    - - - - - find_max_bobyqa - dlib/optimization.h - dlib/optimization/optimization_bobyqa_abstract.h - - This function is identical to the find_min_bobyqa routine - except that it negates the objective function before performing optimization. - Thus this function will attempt to find the maximizer of the objective rather than - the minimizer. -

    - Note that BOBYQA only works on functions of two or more variables. So if you need to perform - derivative-free optimization on a function of a single variable - then you should use the find_max_single_variable - function. -

    -
    - - optimization_ex.cpp.html - - -
    - - - - - isotonic_regression - dlib/optimization.h - dlib/optimization/isotonic_regression_abstract.h - - This object is a tool for performing 1-D isotonic regression. That is, it - finds the least squares fit of a non-parametric curve to some user supplied - data, subject to the constraint that the fitted curve is non-decreasing. - -

    - This is done using the fast O(n) pool adjacent violators algorithm. -

    -
    -
    - - - - - elastic_net - dlib/optimization/elastic_net.h - dlib/optimization/elastic_net_abstract.h - - This object is a tool for solving the following optimization problem: - -
    -   min_w:      length_squared(X*w - Y) + ridge_lambda*length_squared(w)
    -   such that:  sum(abs(w)) <= lasso_budget
    -
    - -

    - That is, it solves the elastic net optimization problem. This object also - has the special property that you can quickly obtain different solutions - for different settings of ridge_lambda, lasso_budget, and target Y values. -

    - -

    - This is because a large amount of work is precomputed in the constructor. - The solver will also remember the previous solution and will use that to - warm start subsequent invocations. Therefore, you can efficiently get - solutions for a wide range of regularization parameters. -

    - - - The particular algorithm used to solve it is described in the paper: -
    - Zhou, Quan, et al. "A reduction of the elastic net to support vector - machines with an application to gpu computing." arXiv preprint - arXiv:1409.1976 (2014). APA -
    - - And for the SVM solver sub-component we use the algorithm from: -
    - Hsieh, Cho-Jui, et al. "A dual coordinate descent method for large-scale - linear SVM." Proceedings of the 25th international conference on Machine - learning. ACM, 2008. -
    -
    -
    - - - - - find_min_using_approximate_derivatives - dlib/optimization.h - dlib/optimization/optimization_abstract.h - - Performs an unconstrained minimization of a nonlinear function using - some search strategy (e.g. bfgs_search_strategy). - This version doesn't take a gradient function but instead numerically approximates - the gradient. - - - optimization_ex.cpp.html - - - - - - - - solve_least_squares - dlib/optimization.h - dlib/optimization/optimization_least_squares_abstract.h - - This is a function for solving non-linear least squares problems. It uses a method - which combines the traditional Levenberg-Marquardt technique with a quasi-newton - approach. It is appropriate for large residual problems (i.e. problems where the - terms in the least squares function, the residuals, don't go to zero but remain - large at the solution) - - - - least_squares_ex.cpp.html - - - - - - - solve_least_squares_lm - dlib/optimization.h - dlib/optimization/optimization_least_squares_abstract.h - - This is a function for solving non-linear least squares problems. It uses - the traditional Levenberg-Marquardt technique. - It is appropriate for small residual problems (i.e. problems where the - terms in the least squares function, the residuals, go to zero at the solution) - - - - least_squares_ex.cpp.html - - - - - - - find_min_trust_region - dlib/optimization.h - dlib/optimization/optimization_trust_region_abstract.h - - Performs an unconstrained minimization of a nonlinear function using - a trust region method. - - - optimization_ex.cpp.html - - - - - - - - find_max_trust_region - dlib/optimization.h - dlib/optimization/optimization_trust_region_abstract.h - - Performs an unconstrained maximization of a nonlinear function using - a trust region method. - - - - - - - - find_max - dlib/optimization.h - dlib/optimization/optimization_abstract.h - - Performs an unconstrained maximization of a nonlinear function using - some search strategy (e.g. bfgs_search_strategy). - - - - - - - - find_max_box_constrained - dlib/optimization.h - dlib/optimization/optimization_abstract.h - - Performs a box constrained maximization of a nonlinear function using - some search strategy (e.g. bfgs_search_strategy). - This function uses a backtracking line search along with a gradient projection - step to handle the box constraints. - - - - - - - - find_max_single_variable - dlib/optimization.h - dlib/optimization/optimization_line_search_abstract.h - - Performs a bound constrained maximization of a nonlinear function. The - function must be of a single variable. Derivatives are not required. - - - - - - - - find_max_using_approximate_derivatives - dlib/optimization.h - dlib/optimization/optimization_abstract.h - - Performs an unconstrained maximization of a nonlinear function using - some search strategy (e.g. bfgs_search_strategy). - This version doesn't take a gradient function but instead numerically approximates - the gradient. - - - - - - - - - - global_function_search - dlib/global_optimization.h - dlib/global_optimization/global_function_search_abstract.h - - This object performs global optimization of a set of user supplied - functions. That is, given a set of functions, each of which could take a different - number of arguments, this object allows you to find which function and which arguments - produce the maximal output. - -

    - Importantly, the global_function_search object does not require the user to - supply derivatives. Moreover, the functions being optimized may contain discontinuities, - behave stochastically, and have many local maxima. The global_function_search - object will attempt to find the global optima in the face of these challenges. - It is also designed to use as few function evaluations as possible, making - it suitable for optimizing functions that are very expensive to evaluate. - It does this by alternating between two modes: a global exploration mode - and a local optima refinement mode. This is accomplished by building and - maintaining two models of the objective function: -

    -
      -
    1. - A global model that upper bounds our objective function. This is a non-parametric - piecewise linear model derived from all function evaluations ever seen by the - global_function_search object. This is based on the method described in Global - Optimization of Lipschitz Functions by Cédric Malherbe and Nicolas Vayatis in the - 2017 International Conference on Machine Learning. -
    2. -
    3. - A local quadratic model fit around the best point seen so far. This uses - a trust region method similar to what is proposed in: - The NEWUOA software for unconstrained optimization without derivatives By - M.J.D. Powell, 40th Workshop on Large Scale Nonlinear Optimization (Erice, - Italy, 2004) -
    4. -
    - - The behavior of the algorithm is illustrated in the following video, which shows the solver in action. In the video, the red line - is the function to be optimized and we are looking for the maximum point. Every time - the global_function_search samples a point from the function we note it with a little - box. The state of the solver is determined by the two models discussed above. - Therefore, we draw the upper bounding model as well as the current local quadratic model - so you can see how they evolve as the optimization proceeds. We also note the location of the - best point seen so far by a little vertical line. -

    - You can see that the optimizer is alternating between picking the maximum upper bounding - point and the maximum point according to the quadratic model. As the optimization - progresses, the upper bound becomes progressively more accurate, helping to find the - best peak to investigate, while the quadratic model quickly finds a high precision - maximizer on whatever peak it currently rests. These two things together allow the - optimizer to find the true global maximizer to high precision (within 1e-9 in this case) by the time the - video concludes. -

    -
    - -
    - -

    - Finally, note that the find_max_global routine is - essentially a simple wrapper around the global_function_search object and exists to - provide a convenient interface. Most users will therefore want to call find_max_global - rather than global_function_search. However, the API of global_function_search - is more general and allows for of a wider set of usage patterns, for example, executing - objective function evaluations in parallel. So more advanced users may want to use - global_function_search directly rather than find_max_global. But try to use find_max_global() first. -

    - -
    - -
    - - - - - find_max_global - dlib/global_optimization.h - dlib/global_optimization/find_max_global_abstract.h - - This function performs global optimization of a function, subject - to bounds constraints. This means it attempts to find the global - maximizer, not just a local maximizer. The search is performed - using the global_function_search object. - See global_function_search's documentation for details of the algorithm. Importantly, - find_max_global() does not require the user to specify derivatives - or starting guesses, all while attempting to use as few calls to - the objective function as possible. It is therefore appropriate for tasks - where evaluating the objective function is time consuming or - expensive, such as in hyper parameter optimization of machine - learning models. - - - - optimization_ex.cpp.html - model_selection_ex.cpp.html - global_optimization.py.html - - - - - - - - find_min_global - dlib/global_optimization.h - dlib/global_optimization/find_max_global_abstract.h - - This function is identical to the find_max_global routine - except it negates the objective function before performing optimization. - Thus this function will attempt to find the minimizer of the objective rather than - the maximizer. - - - optimization_ex.cpp.html - model_selection_ex.cpp.html - global_optimization.py.html - - - - - - - - upper_bound_function - dlib/global_optimization.h - dlib/global_optimization/upper_bound_function_abstract.h - - This object represents a piecewise linear non-parametric function that can - be used to define an upper bound on some more complex and unknown function. - -

    - This is based on the method described in Global Optimization of Lipschitz - Functions by Cédric Malherbe and Nicolas Vayatis in the 2017 International - Conference on Machine Learning. Here we have extended it to support modeling of - stochastic or discontinuous functions by adding a noise term. We also model separate - Lipschitz parameters for each dimension, allowing the model to handle functions with - widely varying sensitivities to each input variable. -

    -
    - -
    - - - - - call_function_and_expand_args - dlib/global_optimization.h - dlib/global_optimization/find_max_global_abstract.h - - This routine allows you to pass a dlib::matrix<double,0,1> object to - a function that takes simple double arguments. It does this by automatically - expanding the matrix elements and invoking the function. For example, suppose you had - a function like this: - -double f(double x, double y, double z); - You could then call f() like this: - -matrix<double,0,1> args = {3,4,5}; -call_function_and_expand_args(f, args); // calls: f(3,4,5) - - This kind of thing is convenient when writing optimizers like find_max_global since it allows a wide range of - input functions to be given to the optimizer, including functions with - explicitly named arguments like x,y,z as shown above. - - - - - - - -
    - - - - -
    - diff --git a/ml/dlib/docs/docs/other.xml b/ml/dlib/docs/docs/other.xml deleted file mode 100644 index d8d151d87..000000000 --- a/ml/dlib/docs/docs/other.xml +++ /dev/null @@ -1,1166 +0,0 @@ - - - - - Miscellaneous - - - - - -

    - - This page documents library components that don't really fit in anywhere else. - They all follow the same conventions as the rest of the library. -

    - - - - - - - -
    - Objects - bit_stream - byte_orderer - std_allocator - memory_manager - memory_manager_global - memory_manager_stateless - default_memory_manager - sync_extension - timer - timeout - member_function_pointer - vectorstream - unserialize - bound_function_pointer - error - console_progress_indicator - pipe - copy_functor - logger - - Fixed_width_integers - - uint64 - uint32 - uint16 - uint8 - int64 - int32 - int16 - int8 - - -
    - -
    - Global Functions - ramdump - check_serialized_version - deserialize - serialize - zero_extend_cast - make_mfp - TIME_THIS - timing code blocks -
    - -
    - SQLite - database - statement - transaction - - simple_queries - - - query_object - dlib/sqlite/sqlite_tools_abstract.h.html#query_object - - - query_text - dlib/sqlite/sqlite_tools_abstract.h.html#query_text - - - query_double - dlib/sqlite/sqlite_tools_abstract.h.html#query_double - - - query_int - dlib/sqlite/sqlite_tools_abstract.h.html#query_int - - - query_int64 - dlib/sqlite/sqlite_tools_abstract.h.html#query_int64 - - - query_blob - dlib/sqlite/sqlite_tools_abstract.h.html#query_blob - - - -
    - -
    - Other - dlib_testing_suite - MATLAB - Java -
    - -
    -
    - - - - - - - - - - - - zero_extend_cast - dlib/uintn.h - dlib/uintn.h - - This is a global function that performs a zero extending cast - from one integral type to another integral type. - - - - - - - - uint32 - dlib/uintn.h - dlib/uintn.h - - This is just a typedef for a 32 bit unsigned integer. - - - - - - - - uint8 - dlib/uintn.h - dlib/uintn.h - - This is just a typedef for an 8 bit unsigned integer. - - - - - - - - - uint16 - dlib/uintn.h - dlib/uintn.h - - This is just a typedef for a 16 bit unsigned integer. - - - - - - - - int8 - dlib/uintn.h - dlib/uintn.h - - This is just a typedef for an 8 bit integer. - - - - - - - - int16 - dlib/uintn.h - dlib/uintn.h - - This is just a typedef for a 16 bit integer. - - - - - - - - int32 - dlib/uintn.h - dlib/uintn.h - - This is just a typedef for a 32 bit integer. - - - - - - - - int64 - dlib/uintn.h - dlib/uintn.h - - This is just a typedef for a 64 bit integer. - - - - - - - - std_allocator - dlib/std_allocator.h - dlib/std_allocator.h - - This object is an implementation of an allocator that conforms to the C++ standard - requirements for allocator objects. The M template argument is one of the dlib - memory manager objects and this allocator implementation will do all of its memory allocations - using whatever dlib memory manager you supply. - -

    - Thus, using this allocator object you can use any of the dlib memory manager objects with - the containers in the STL or with any other object that requires an STL style allocator object. -

    -
    - - - std_allocator_ex.cpp.html - - -
    - - - - - uint64 - dlib/uintn.h - dlib/uintn.h - - This is just a typedef for a 64 bit unsigned integer. - - - - - - - - copy_functor - dlib/algs.h - dlib/algs.h - - This is a templated function object that makes copies of something. - - - - - - - - logger - dlib/logger.h - dlib/logger/logger_kernel_abstract.h - - This component is a logging output stream in the style of the log4j - logger available for Java. - - - - logger_ex.cpp.html - logger_ex_2.cpp.html - logger_custom_output_ex.cpp.html - pipe_ex.cpp.html - - - - - extra_logger_headers - dlib/logger/extra_logger_headers.h - This extension contains additional logger headers you may chose to use instead of the - default one. - - - config_file - dlib/logger/logger_config_file.h - This extension provides the configure_loggers_from_file() function - which reads a configuration file from disk that sets up all your loggers. - - - - - - - - - - error - dlib/error.h - dlib/error.h - - This is the base exception class from which all exceptions in this - library inherit. - - - - - - - - console_progress_indicator - dlib/console_progress_indicator.h - dlib/console_progress_indicator.h - - This object is a tool for reporting how long a task will take - to complete. - - - - - - - - pipe - dlib/pipe.h - dlib/pipe/pipe_kernel_abstract.h - - This is a first in first out queue with a fixed maximum size. - It is suitable for passing objects between threads. - -

    - This object is optimized for speed, therefore, it uses - global swap() to create a zero-copy method for moving objects - around. For example, on a computer running Ubuntu 12.04 with - a 2.67GHz Intel i7 920 CPU it is possible to pass over 4.4 - million std::vector<int> objects a second between two - threads. This is regardless of the number of ints in the std::vector - objects. In particular, this test was done with 100,000 - ints in each std::vector. -

    -

    - Finally, note that you can use the pipe as an efficient method to pass - messages between two networked computers by using the bridge. -

    -
    - - - pipe_ex.cpp.html - pipe_ex_2.cpp.html - bridge_ex.cpp.html - - -
    - - - - - - bound_function_pointer - dlib/bound_function_pointer.h - dlib/bound_function_pointer/bound_function_pointer_kernel_abstract.h - - This object represents a function with all its arguments bound to specific objects. - -

    - This implementation is done using type erasure and placement new. This - means that it never allocates memory on the heap and instead stores everything - on the stack. -

    -
    - -
    - - - - - - vectorstream - dlib/vectorstream.h - dlib/vectorstream/vectorstream_abstract.h - - This is an iostream object that reads and writes from an in-memory buffer. - It functions very much the same way as the std::stringstream object. - However, while the std::stringstream holds its buffer internally and it can - only be accessed by copying it out, the vectorstream uses an external - std::vector<char> as its buffer. That is, it holds a reference to an - external vector and does not contain any internal buffers of its own. - -

    - This object is useful as a slightly more efficient alternative to the - std::stringstream since you can avoid the overhead of copying buffer - contents to and from the stream. This is particularly useful when used as - a source or target for serialization routines. -

    -
    -
    - - - - - - unserialize - dlib/vectorstream.h - dlib/vectorstream/unserialize_abstract.h - - This object effectively allows you to peek at the next serialized - object in an istream. It does this by allowing you to read an object - and then put it back. - - - - - - - - member_function_pointer - dlib/member_function_pointer.h - dlib/member_function_pointer/member_function_pointer_kernel_abstract.h - - This object represents a member function pointer. It is useful because - instances of this object can be created without needing to know the type - of object whose member function we will be calling. -

    - The implementation of this object is done using type erasure and placement new. This - means that it never allocates memory on the heap and instead stores everything - on the stack. -

    -
    - - - member_function_pointer_ex.cpp.html - - -
    - - - - - - make_mfp - dlib/member_function_pointer.h - dlib/member_function_pointer/make_mfp_abstract.h - - This function is a simple factory for creating member_function_pointer - objects without needing to know the necessary template arguments for the member_function_pointer. - - - - - - - - bit_stream - dlib/bit_stream.h - dlib/bit_stream/bit_stream_kernel_abstract.h - - This object represents a middle man between a user and the iostream classes that allows single - bits to be read/written easily from/to the iostream classes - - - - - bit_stream_kernel_1 - dlib/bit_stream/bit_stream_kernel_1.h - - This implementation is done by buffering single bits in the obvious way. - - - - - kernel_1a - is a typedef for bit_stream_kernel_1 - - - - - - - - - - - bit_stream_multi - dlib/bit_stream/bit_stream_multi_abstract.h - This extension gives a bit_stream object the ability to read/write multiple bits at a time. - - - bit_stream_multi_1 - dlib/bit_stream/bit_stream_multi_1.h - This implementation is done by calling the read/write functions in the bit_stream kernel. - - - multi_1a - is a typedef for bit_stream_kernel_1 extended by bit_stream_multi_1 - - - - - - - - - - - - - - byte_orderer - dlib/byte_orderer.h - dlib/byte_orderer/byte_orderer_kernel_abstract.h - - This object provides a simple type safe mechanism to convert data - to and from network and host byte orders. I.e. to convert things - between big and little endian byte ordering. - - - - - - - - default_memory_manager - dlib/algs.h - dlib/algs.h - - This is a memory manager object which simply calls new and delete directly (i.e. - it doesn't really do anything). It is the default memory manager used by most - of the objects in dlib. - - - - - - - memory_manager_stateless - dlib/memory_manager_stateless.h - dlib/memory_manager_stateless/memory_manager_stateless_kernel_abstract.h - - This object represents some kind of stateless memory manager or memory pool. - Stateless means that all instances (instances of the same type that is) - of this object are identical and can be used interchangeably. Note that - implementations are allowed to have some shared global state such as a - global memory pool. This object is also thread safe. - - - - - memory_manager_stateless_kernel_1 - dlib/memory_manager_stateless/memory_manager_stateless_kernel_1.h - - This implementation just calls new and delete. So it doesn't do anything special. - - - - - kernel_1a - is a typedef for memory_manager_stateless_kernel_1 - - - - - - - memory_manager_stateless_kernel_2 - dlib/memory_manager_stateless/memory_manager_stateless_kernel_2.h - - This implementation uses a global instance of a memory_manager object - guarded by a mutex as its implementation. - - - - - kernel_2_1a - is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_1a - - - kernel_2_1b - is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_1b - - - kernel_2_1c - is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_1c - - - kernel_2_1d - is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_1d - - - kernel_2_1e - is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_1e - - - kernel_2_1f - is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_1f - - - kernel_2_2a - is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_2a - - - kernel_2_2b - is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_2b - - - kernel_2_2c - is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_2c - - - kernel_2_2d - is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_2d - - - kernel_2_2e - is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_2e - - - - kernel_2_3a - is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_3a - - - kernel_2_3b - is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_3b - - - kernel_2_3c - is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_3c - - - kernel_2_3d - is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_3d - - - kernel_2_3e - is a typedef for memory_manager_stateless_kernel_2 that uses memory_manager_3e - - - - - - - - - - - - memory_manager_global - dlib/memory_manager_global.h - dlib/memory_manager_global/memory_manager_global_kernel_abstract.h - - This object represents some kind of global memory manager or memory pool. - - - - - memory_manager_global_kernel_1 - dlib/memory_manager_global/memory_manager_global_kernel_1.h - - This is implemented in the obvious way. See the code for details. - - - - - kernel_1a - is a typedef for memory_manager_global_kernel_1 - - - - - - - - - - - - memory_manager - dlib/memory_manager.h - dlib/memory_manager/memory_manager_kernel_abstract.h - - This object represents a memory pool. - - - - - memory_manager_kernel_1 - dlib/memory_manager/memory_manager_kernel_1.h - - This memory manager implementation allocates objects one at a time when there are - allocation requests. Then when there is a deallocate request the returning object - is placed into a list of free blocks if that list has less than max_pool_size - blocks in it. Subsequent allocation requests will be serviced by drawing from the - free list whenever it isn't empty. Array allocations, on the other hand, are not - managed at all but are passed directly on to new and delete. -

    - When this object's max_pool_size template parameter is set to 0 it simply calls - new and delete directly and doesn't function as a memory pool. -

    -
    - - - - kernel_1a - is a typedef for memory_manager_kernel_1 with a max_pool_size of 0 - - - kernel_1b - is a typedef for memory_manager_kernel_1 with a max_pool_size of 10 - - - kernel_1c - is a typedef for memory_manager_kernel_1 with a max_pool_size of 100 - - - kernel_1d - is a typedef for memory_manager_kernel_1 with a max_pool_size of 1000 - - - kernel_1e - is a typedef for memory_manager_kernel_1 with a max_pool_size of 10000 - - - kernel_1f - is a typedef for memory_manager_kernel_1 with a max_pool_size of 100000 - - - -
    - - - memory_manager_kernel_2 - dlib/memory_manager/memory_manager_kernel_2.h - - This memory manager implementation allocates memory in blocks of chunk_size*sizeof(T) - bytes. All the sizeof(T) sub-blocks are kept in a linked list of free memory blocks - and are given out whenever an allocation request occurs. Also, memory is not freed - until this object is destructed. - Also note that array allocations are not managed at all but are passed directly - on to new and delete. - - - - - kernel_2a - is a typedef for memory_manager_kernel_2 with a chunk_size of 10 - - - kernel_2b - is a typedef for memory_manager_kernel_2 with a chunk_size of 100 - - - kernel_2c - is a typedef for memory_manager_kernel_2 with a chunk_size of 1000 - - - kernel_2d - is a typedef for memory_manager_kernel_2 with a chunk_size of 10000 - - - kernel_2e - is a typedef for memory_manager_kernel_2 with a chunk_size of 100000 - - - - - - - memory_manager_kernel_3 - dlib/memory_manager/memory_manager_kernel_3.h - - This memory manager implementation allocates memory in blocks of chunk_size*sizeof(T) - bytes. All the sizeof(T) sub-blocks are kept in a linked list of free memory blocks - and are given out whenever an allocation request occurs. Note that array allocations - are managed. So this object is just like kernel_2 but it also pools memory from - array allocations (chunk_size has no effect with respect to array allocations, each array - is allocated one at a time). - Also, memory is not freed until this object is destructed. - - - - - kernel_3a - is a typedef for memory_manager_kernel_3 with a chunk_size of 10 - - - kernel_3b - is a typedef for memory_manager_kernel_3 with a chunk_size of 100 - - - kernel_3c - is a typedef for memory_manager_kernel_3 with a chunk_size of 1000 - - - kernel_3d - is a typedef for memory_manager_kernel_3 with a chunk_size of 10000 - - - kernel_3e - is a typedef for memory_manager_kernel_3 with a chunk_size of 100000 - - - - -
    - -
    - - - - - sync_extension - dlib/sync_extension.h - dlib/sync_extension/sync_extension_kernel_abstract.h - - - This object represents a general extension to any object. This object gives any object which it extends - an integrated rmutex and rsignaler object. The extended object will - then be able to be treated as if it was also a rmutex and - rsignaler. - - - - - - sync_extension_kernel_1 - dlib/sync_extension/sync_extension_kernel_1.h - - This is implemented using a rmutex - and rsignaler in the obvious way. - - - - - kernel_1a - is a typedef for sync_extension_kernel_1 - - - - - - - - - - - - - - timeout - dlib/timeout.h - dlib/timeout/timeout_abstract.h - - This object provides a simple way to implement a timeout. - - - - - - - timer - dlib/timer.h - dlib/timer/timer_abstract.h - - This object represents a timer that will call a given member function - repeatedly at regular intervals. -

    - The implementation of this object has a single master thread - that does all the waiting. This master thread creates and - dispatches threads to specific timer objects when they need - to run their action functions. When a timer object isn't - executing its action function then it doesn't have any thread - allocated to it at all. So it is fairly efficient. -

    -
    - - - timer_ex.cpp.html - - -
    - - - - - database - dlib/sqlite.h - dlib/sqlite/sqlite_abstract.h - - This object is a C++ wrapper around a SQLite database connection - handle and therefore represents a SQLite database file. - -

    - Note that this wrapper is targeted at SQLite Version 3. To use it - you must make sure you link your application with SQLite. However, - if you use CMake and dlib's default CMakeLists.txt file then it will get setup - automatically. This is assuming sqlite3 is properly installed on your system. - On ubuntu you can get it by installing the libsqlite3-dev package. Or you can always - download the SQLite source - and compile it straight into your application (download the amalgamation). -

    -
    - - sqlite_ex.cpp.html - - -
    - - - - - statement - dlib/sqlite.h - dlib/sqlite/sqlite_abstract.h - - This object represents a SQL statement which can be executed - against a database object. In particular, this object is a - C++ wrapper around a SQLite prepared statement. -

    - Note that this wrapper is targeted at SQLite Version 3. To use it - you must make sure you link your application with SQLite. -

    -
    - - sqlite_ex.cpp.html - - - -
    - - - - - transaction - dlib/sqlite.h - dlib/sqlite/sqlite_tools_abstract.h - - This object is a tool for creating exception safe - database transactions. - - - sqlite_ex.cpp.html - - - - - - - - - deserialize - dlib/serialize.h - dlib/serialize.h - - This is actually a set of overloaded functions which provide the ability to restore an object's state - from an input stream. Currently all dlib container classes, non pointer C++ intrinsics, std::string, - std::vector, std::map, std::set, std::complex, dlib::bigint, dlib::uint64, dlib::int64, C style arrays, and dlib::vector objects are serializable. -

    - You can also use serialize() and deserialize() to read/write Google protocol buffer objects. However, - note that dlib::serialize() writes additional delimiting bytes at the start of each protocol buffer message. - We do this because Google protocol buffers are not - self-delimiting - on their own. This means that you can't write more than one protocol buffer object to an output stream - unless you include some kind of delimiter between the messages. - So dlib takes care of this for you by prefixing each message with its length in bytes. In particular, - the number of bytes is encoded as a 32bit little endian integer. -

    -
    - -
    - - - - - serialize - dlib/serialize.h - dlib/serialize.h - - This is actually a set of overloaded functions which provide the ability to save an object's state - to an output stream. Currently all dlib container classes, non pointer C++ intrinsics, std::string, - std::vector, std::map, std::set, std::complex, dlib::bigint, dlib::uint64, dlib::int64, C style arrays, and dlib::vector objects are serializable. -

    - You can also use serialize() and deserialize() to read/write Google protocol buffer objects. However, - note that dlib::serialize() writes additional delimiting bytes at the start of each protocol buffer message. - We do this because Google protocol buffers are not - self-delimiting - on their own. This means that you can't write more than one protocol buffer object to an output stream - unless you include some kind of delimiter between the messages. - So dlib takes care of this for you by prefixing each message with its length in bytes. In particular, - the number of bytes is encoded as a 32bit little endian integer. -

    -
    - -
    - - - - - ramdump - dlib/serialize.h - dlib/serialize.h - - This is a type decoration used to indicate that serialization should be - done by simply dumping the memory of some object to disk as fast as - possible without any sort of conversions. This means that the data written - will be "non-portable" in the sense that the format output by a RAM dump - may depend on things like the endianness of your CPU or settings of certain - compiler switches. - -

    - You use this object like this: - -serialize("yourfile.dat") << ramdump(yourobject); -deserialize("yourfile.dat") >> ramdump(yourobject); - or - -serialize(ramdump(yourobject), out); -deserialize(ramdump(yourobject), in); - - Also, not all objects have a ramdump mode. If you try to use ramdump on an - object that does not define a serialization dump for ramdump you will get a - compiler error. -

    -
    -
    - - - - - check_serialized_version - dlib/serialize.h - dlib/serialize.h - - This function deserializes a string and checks if it matches a user supplied - string (the version). If they don't match then dlib::serialization_error is - thrown. The point of this function is to make checking version strings in - serialized files a little more convenient. - - - - - - - dlib_testing_suite - -

    - This library comes with a command line driven regression test suite. All the testing code - is located in the dlib/testdlib/test folder. If you want to build it and test the library on your - system you can use the makefile at dlib/test/makefile (you may - have to edit it to make it work on your system) or use the CMake CMakeLists.txt file at - dlib/test/CMakeLists.txt to build it. -

    -

    - What you may find more useful however is the testing framework itself. It uses a fairly simple - and modular design. Each test is contained in its own cpp file and when compiled into the - program it automatically shows up in the list of tests to run. If you want to use the - testing framework all you need to do is add the files dlib/test/tester.h, - dlib/test/tester.cpp, and dlib/test/main.cpp - to your project and then add cpp files that contain your tests (see - dlib/test/example.cpp and - dlib/test/example_args.cpp - for some examples). -

    -

    - From the command line you can choose to run all the installed tests, enable or disable the loggers, - set various logging levels, specify how many times to run the tests, or pick just one or two tests - to run at a time rather than the entire suite. - The output of the program, that is, its return value from main() is the number of - failed tests. So if every test succeeds then it returns 0. -

    -
    - -
    - - - - - MATLAB - - dlib contains a tool that makes it easy to call C++ code from MATLAB. It's - documented in the examples in the dlib/matlab folder. In particular, the - dlib/matlab/example_mex_function.cpp, - dlib/matlab/example_mex_callback.cpp, and - dlib/matlab/example_mex_struct.cpp - examples. - You can also easily compile these files using CMake. See the instructions in the README file - in the dlib/matlab folder for further details. - - - - - - - - Java - - dlib contains some CMake scripts and related tools that make calling C++ code - from Java easy. If you look in the dlib/java folder you can find a CMake - project that uses SWIG to build some C++ code and then call it from Java. In - particular, if you run the run_test.sh script it will build and run the code, - calling it from java. - -

    - The dlib/java folder also contains some SWIG aware C++ classes that make - interacting with java arrays (e.g. double[]) from C++ efficient and easy. - See the documentation at the top of the java_array.h file for details. -

    -
    - -
    - - - - - TIME_THIS - dlib/time_this.h - dlib/time_this.h - -

    - This is a macro function for timing blocks of code. Its form is TIME_THIS(whatever you want to time) - It's pretty straight forward. It just prints the time it took to std::cout. -

    -

    - There is another version of this function called TIME_THIS_TO which takes as a parameter an ostream - object to write its output to. Its form is TIME_THIS_TO(what you want to time, the output stream); -

    - -
    - -
    - - - - - - timing code blocks - dlib/timing.h - dlib/timing.h - - This is a set of set of functions for timing blocks of code. Unlike - TIME_THIS, it can be used to find the cumulative - time spent on a block which is executed multiple times. - - - - - - - - -
    - - - - -
    diff --git a/ml/dlib/docs/docs/parsing.xml b/ml/dlib/docs/docs/parsing.xml deleted file mode 100644 index b993acaae..000000000 --- a/ml/dlib/docs/docs/parsing.xml +++ /dev/null @@ -1,652 +0,0 @@ - - - - - Parsing - - - - - -

    - This page documents the objects and functions that in some way deal with parsing or otherwise - manipulating text. - Everything here follows the same conventions as the rest of the library. -

    - - - - - - - - - -
    - Objects - cmd_line_parser - config_reader - cpp_pretty_printer - cpp_tokenizer - tokenizer - xml_parser - base64 - unichar - ustring - basic_utf8_ifstream - -
    - -
    - Global Functions - string_cast - string_assign - cast_to_string - pad_int_with_zeros - cast_to_wstring - wrap_string - narrow - trim - ltrim - rtrim - pad - lpad - rpad - split_on_first - split_on_last - left_substr - right_substr - split - tolower - toupper - convert_utf8_to_utf32 - is_combining_char - strings_equal_ignore_case -
    -
    -
    - - - - - - - - - - - - - toupper - dlib/string.h - dlib/string/string_abstract.h - - This is a function to convert a string to all uppercase. - - - - - - - - tolower - dlib/string.h - dlib/string/string_abstract.h - - This is a function to convert a string to all lowercase. - - - - - - - - - split_on_first - dlib/string.h - dlib/string/string_abstract.h - - Breaks a string into two parts. The split point is selected based - on the first occurrence of a delimiter character. - - - - - - - split_on_last - dlib/string.h - dlib/string/string_abstract.h - - Breaks a string into two parts. The split point is selected based - on the last occurrence of a delimiter character. - - - - - - - split - dlib/string.h - dlib/string/string_abstract.h - - Breaks a string into a sequence of substrings delimited - by a user specified set of characters. - - - - - - - right_substr - dlib/string.h - dlib/string/string_abstract.h - - This is a function to return the part of a string to the right of a user supplied delimiter. - - - - - - - left_substr - dlib/string.h - dlib/string/string_abstract.h - - This is a function to return the part of a string to the left of a user supplied delimiter. - - - - - - - - rpad - dlib/string.h - dlib/string/string_abstract.h - - This is a function to pad whitespace (or user specified characters) onto the right most end of a string. - - - - - - - - lpad - dlib/string.h - dlib/string/string_abstract.h - - This is a function to pad whitespace (or user specified characters) onto the left most end of a string. - - - - - - - - pad - dlib/string.h - dlib/string/string_abstract.h - - This is a function to pad whitespace (or user specified characters) onto the ends of a string. - - - - - - - - rtrim - dlib/string.h - dlib/string/string_abstract.h - - This is a function to remove the whitespace (or user specified characters) from the right most end of a string. - - - - - - - - ltrim - dlib/string.h - dlib/string/string_abstract.h - - This is a function to remove the whitespace (or user specified characters) from the left most end of a string. - - - - - - - - trim - dlib/string.h - dlib/string/string_abstract.h - - This is a function to remove the whitespace (or user specified characters) from the ends of a string. - - - - - - - - narrow - dlib/string.h - dlib/string/string_abstract.h - - This is a function for converting a string of type std::string or std::wstring - to a plain std::string. - - - - - - - - wrap_string - dlib/string.h - dlib/string/string_abstract.h - - wrap_string is a function that takes a string and breaks it into a number of - lines of a given length. You can use this to make a string - fit nicely into a command prompt window for example. - - - - - - - - strings_equal_ignore_case - dlib/string.h - dlib/string/string_abstract.h - - This is a pair of functions to do a case insensitive comparison between strings. - - - - - - - - cast_to_wstring - dlib/string.h - dlib/string/string_abstract.h - - cast_to_string is a templated function which makes it easy to convert arbitrary objects to - std::wstring strings. The types supported are any types that can be written to std::wostream via - operator<<. - - - - - - - - cast_to_string - dlib/string.h - dlib/string/string_abstract.h - - cast_to_string is a templated function which makes it easy to convert arbitrary objects to - std::string strings. The types supported are any types that can be written to std::ostream via - operator<<. - - - - - - - - pad_int_with_zeros - dlib/string.h - dlib/string/string_abstract.h - - Converts an integer into a string and pads it with leading zeros. - - - - - - - - string_cast - dlib/string.h - dlib/string/string_abstract.h - - string_cast is a templated function which makes it easy to convert strings to - other types. The types supported are any types that can be read by the basic_istream operator>>. It - also supports casting between wstring, string, and ustring objects. - - - - - - - string_assign - dlib/string.h - dlib/string/string_abstract.h - - string_assign is an object which makes it easy to convert strings to - other types. The types supported are any types that can be read by the basic_istream operator>>. It - also supports casting between wstring, string, and ustring objects. Since - string_assign is a simple stateless object there is a global instance of it - called dlib::sa. - - - config_reader_ex.cpp.html - - - - - - - - unichar - dlib/unicode.h - dlib/unicode/unicode_abstract.h - - This is a typedef for an unsigned 32bit integer which we use to store - Unicode values. - - - - - - - - basic_utf8_ifstream - dlib/unicode.h - dlib/unicode/unicode_abstract.h - - This object represents an input file stream much like the - normal std::ifstream except that it knows how to read UTF-8 - data. So when you read characters out of this stream it will - automatically convert them from the UTF-8 multibyte encoding - into a fixed width wide character encoding. - -

    - There are also two typedefs of this object. The first is utf8_wifstream which is a - typedef for wchar_t as the wide character to read into. The second is utf8_uifstream - which uses unichar instead of wchar_t. -

    -
    - -
    - - - - - - ustring - dlib/unicode.h - dlib/unicode/unicode_abstract.h - - This is a typedef for a std::basic_string<unichar>. That is, it is a typedef - for a string object that stores unichar Unicode characters. - - - - - - - - is_combining_char - dlib/unicode.h - dlib/unicode/unicode_abstract.h - - This is a global function that can tell you if a character is a Unicode - combining character or not. - - - - - - - - convert_utf8_to_utf32 - dlib/unicode.h - dlib/unicode/unicode_abstract.h - - This is a global function that can convert UTF-8 strings into strings - of 32bit unichar characters. - - - - - - - - base64 - dlib/base64.h - dlib/base64/base64_kernel_abstract.h - - This object allows you to encode and decode data to and from - the Base64 Content-Transfer-Encoding defined in section 6.8 of - rfc2045. - - - - file_to_code_ex.cpp.html - - - - - - - cmd_line_parser - dlib/cmd_line_parser.h - dlib/cmd_line_parser/cmd_line_parser_kernel_abstract.h - - This object allows you to easily parse a command line. Note that the - documentation for the cmd_line_parser_option - (the object returned by the parser's .option() function) is in a separate file. -

    - Note also that there are standard typedefs for the ASCII and wide character versions of the - cmd_line_parser template. These are the command_line_parser and wcommand_line_parser - types respectively. -

    -
    - - - compress_stream_ex.cpp.html - train_object_detector.cpp.html - - - - - get_option - dlib/cmd_line_parser/get_option_abstract.h - This extension provides a convenience function for accessing the - options to a command line argument or a config_reader. It - is automatically #included when using the command line parser or config reader. - - - - - -
    - - - - - config_reader - dlib/config_reader.h - dlib/config_reader/config_reader_kernel_abstract.h - - This object represents something which is intended to be used to read - text configuration files. - - - - config_reader_ex.cpp.html - - - - - config_reader_thread_safe - dlib/config_reader/config_reader_thread_safe_abstract.h - - This object extends a normal config_reader by simply wrapping all - its member functions inside mutex locks to make it safe to use - in a threaded program. - - - - - - - - - - - cpp_pretty_printer - dlib/cpp_pretty_printer.h - dlib/cpp_pretty_printer/cpp_pretty_printer_kernel_abstract.h - - This object represents an HTML pretty printer for C++ source code. - - - - - cpp_pretty_printer_kernel_1 - dlib/cpp_pretty_printer/cpp_pretty_printer_kernel_1.h - - This is implemented by using the cpp_tokenizer object. - This is the pretty printer I use on all the source in this library. It applies a color scheme, turns - include directives such as #include "file.h" into links to file.h.html and puts HTML anchor points - on function and class declarations. It also looks for comments starting with /*!A and puts an anchor - before the comment using the word following the A as the name of the anchor. - - - - - kernel_1a - is a typedef for cpp_pretty_printer_kernel_1 - - - - - - cpp_pretty_printer_kernel_2 - dlib/cpp_pretty_printer/cpp_pretty_printer_kernel_2.h - - This is implemented by using the cpp_tokenizer object. - It applies a black and white color scheme suitable - for printing on a black and white printer. It also places the document title - prominently at the top of the pretty printed source file. - - - - - kernel_2a - is a typedef for cpp_pretty_printer_kernel_2 - - - - - - - - - - - - - cpp_tokenizer - dlib/cpp_tokenizer.h - dlib/cpp_tokenizer/cpp_tokenizer_kernel_abstract.h - - This object represents a simple tokenizer for C++ source code. - - - - - cpp_tokenizer_kernel_1 - dlib/cpp_tokenizer/cpp_tokenizer_kernel_1.h - - This is implemented by using the tokenizer object in the obvious way. - - - - - kernel_1a - is a typedef for cpp_tokenizer_kernel_1 - - - - - - - - - - - - - tokenizer - dlib/tokenizer.h - dlib/tokenizer/tokenizer_kernel_abstract.h - - This object represents a simple tokenizer for textual data. - - - - - tokenizer_kernel_1 - dlib/tokenizer/tokenizer_kernel_1.h - - This is implemented in the obvious way. - - - - - kernel_1a - is a typedef for tokenizer_kernel_1 - - - - - - - - - - - - - xml_parser - dlib/xml_parser.h - dlib/xml_parser/xml_parser_kernel_abstract.h - - - This object represents a simple SAX style event driven XML parser. - It takes its input from an input stream object and sends events to all - registered document_handler and error_handler objects. -

    - - The xml_parser object also uses the interface classes - document_handler - and - error_handler. - Subclasses of these classes are passed to the xml_parser which generates events while it's - parsing and sends them to the appropriate handler. - -
    - - - xml_parser_ex.cpp.html - -
    - - - - -
    - - - - -
    diff --git a/ml/dlib/docs/docs/plus.gif b/ml/dlib/docs/docs/plus.gif deleted file mode 100644 index 2d15c1417..000000000 Binary files a/ml/dlib/docs/docs/plus.gif and /dev/null differ diff --git a/ml/dlib/docs/docs/python/conf.py b/ml/dlib/docs/docs/python/conf.py deleted file mode 100644 index c8a2a963b..000000000 --- a/ml/dlib/docs/docs/python/conf.py +++ /dev/null @@ -1,246 +0,0 @@ -# -*- coding: utf-8 -*- -# -# dlib documentation build configuration file, created by -# sphinx-quickstart on Wed Jun 12 18:29:29 2013. -# -# This file is execfile()d with the current directory set to its containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. - -import sys, os - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -sys.path.insert(0, os.path.abspath('.')) -sys.path.insert(0, os.path.abspath('../../../build/lib.linux-x86_64-2.7')) - -import generate_dlib_listing -generate_dlib_listing.make_listing_files() - -# -- General configuration ----------------------------------------------------- - -# If your documentation needs a minimal Sphinx version, state it here. -#needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be extensions -# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. -extensions = ['sphinx.ext.autodoc'] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix of source filenames. -source_suffix = '.rst' - -# The encoding of source files. -#source_encoding = 'utf-8-sig' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -project = u'dlib' -copyright = u'2013, Davis E. King' - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -#version = '18.3' -# The full version, including alpha/beta/rc tags. -#release = '18.3' - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -#language = None - -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -#today = '' -# Else, today_fmt is used as the format for a strftime call. -#today_fmt = '%B %d, %Y' - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -exclude_patterns = ['_build'] - -# The reST default role (used for this markup: `text`) to use for all documents. -#default_role = None - -# If true, '()' will be appended to :func: etc. cross-reference text. -#add_function_parentheses = True - -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -#add_module_names = True - -# If true, sectionauthor and moduleauthor directives will be shown in the -# output. They are ignored by default. -#show_authors = False - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' - -# A list of ignored prefixes for module index sorting. -#modindex_common_prefix = [] - - -# -- Options for HTML output --------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -html_theme = 'default' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -#html_theme_options = {} - -# Add any paths that contain custom themes here, relative to this directory. -#html_theme_path = [] - -# The name for this set of Sphinx documents. If None, it defaults to -# " v documentation". -#html_title = None - -# A shorter title for the navigation bar. Default is the same as html_title. -#html_short_title = None - -# The name of an image file (relative to this directory) to place at the top -# of the sidebar. -#html_logo = None - -# The name of an image file (within the static path) to use as favicon of the -# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -#html_favicon = None - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] - -# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, -# using the given strftime format. -#html_last_updated_fmt = '%b %d, %Y' - -# If true, SmartyPants will be used to convert quotes and dashes to -# typographically correct entities. -#html_use_smartypants = True - -# Custom sidebar templates, maps document names to template names. -#html_sidebars = {} - -# Additional templates that should be rendered to pages, maps page names to -# template names. -#html_additional_pages = {} - -# If false, no module index is generated. -#html_domain_indices = True - -# If false, no index is generated. -#html_use_index = True - -# If true, the index is split into individual pages for each letter. -#html_split_index = False - -# If true, links to the reST sources are added to the pages. -#html_show_sourcelink = True - -# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. -#html_show_sphinx = True - -# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -#html_show_copyright = True - -# If true, an OpenSearch description file will be output, and all pages will -# contain a tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -#html_use_opensearch = '' - -# This is the file name suffix for HTML files (e.g. ".xhtml"). -#html_file_suffix = None - -# Output file base name for HTML help builder. -htmlhelp_basename = 'dlibdoc' - - -# -- Options for LaTeX output -------------------------------------------------- - -latex_elements = { -# The paper size ('letterpaper' or 'a4paper'). -#'papersize': 'letterpaper', - -# The font size ('10pt', '11pt' or '12pt'). -#'pointsize': '10pt', - -# Additional stuff for the LaTeX preamble. -#'preamble': '', -} - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, author, documentclass [howto/manual]). -latex_documents = [ - ('index', 'dlib.tex', u'dlib Documentation', - u'Davis', 'manual'), -] - -# The name of an image file (relative to this directory) to place at the top of -# the title page. -#latex_logo = None - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -#latex_use_parts = False - -# If true, show page references after internal links. -#latex_show_pagerefs = False - -# If true, show URL addresses after external links. -#latex_show_urls = False - -# Documents to append as an appendix to all manuals. -#latex_appendices = [] - -# If false, no module index is generated. -#latex_domain_indices = True - - -# -- Options for manual page output -------------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - ('index', 'dlib', u'dlib Documentation', - [u'Davis'], 1) -] - -# If true, show URL addresses after external links. -#man_show_urls = False - - -# -- Options for Texinfo output ------------------------------------------------ - -# Grouping the document tree into Texinfo files. List of tuples -# (source start file, target name, title, author, -# dir menu entry, description, category) -texinfo_documents = [ - ('index', 'dlib', u'dlib Documentation', - u'Davis', 'dlib', 'One line description of project.', - 'Miscellaneous'), -] - -# Documents to append as an appendix to all manuals. -#texinfo_appendices = [] - -# If false, no module index is generated. -#texinfo_domain_indices = True - -# How to display URL addresses: 'footnote', 'no', or 'inline'. -#texinfo_show_urls = 'footnote' diff --git a/ml/dlib/docs/docs/python/generate_dlib_listing.py b/ml/dlib/docs/docs/python/generate_dlib_listing.py deleted file mode 100644 index 2aaff2458..000000000 --- a/ml/dlib/docs/docs/python/generate_dlib_listing.py +++ /dev/null @@ -1,32 +0,0 @@ -from __future__ import print_function -import dlib -import inspect - -def print_element(name, fc, ff): - isclass = inspect.isclass(eval(name)) - ismodule = inspect.ismodule(eval(name)) - if (isclass): - print("* :class:`{0}`".format(name), file=fc) - elif (not ismodule): - print("* :func:`{0}`".format(name), file=ff) - -def make_listing_files(): - - fc = open('classes.txt', 'w') - ff = open('functions.txt', 'w') - - for obj in dir(dlib): - if obj[0] == '_': - continue - print_element('dlib.'+obj, fc, ff) - - for obj in dir(dlib.cuda): - if obj[0] == '_': - continue - print_element('dlib.cuda.'+obj, fc, ff) - - for obj in dir(dlib.image_dataset_metadata): - if obj[0] == '_': - continue - print_element('dlib.image_dataset_metadata.'+obj, fc, ff) - diff --git a/ml/dlib/docs/docs/python/index.rst b/ml/dlib/docs/docs/python/index.rst deleted file mode 100644 index 6ad2d3d5b..000000000 --- a/ml/dlib/docs/docs/python/index.rst +++ /dev/null @@ -1,45 +0,0 @@ - -.. image:: ../dlib-logo.png - :alt: Dlib C++ Library - :target: http://dlib.net - -Dlib is principally a C++ library, however, you can use a number of its tools -from python applications. This page documents the python API for working with -these dlib tools. If you haven't done so already, you should probably look at -the python example programs first before consulting this reference. These -example programs are little mini-tutorials for using dlib from python. They -are listed on the left of the main dlib web page. - -Classes -============================================== - -.. include:: classes.txt - -Functions -============================================== - -.. include:: functions.txt - - -Detailed API Listing -============================================== - -.. toctree:: - :maxdepth: 2 - -.. automodule:: dlib - :members: - :undoc-members: - -.. automodule:: dlib.cuda - :members: - :undoc-members: - -.. automodule:: dlib.image_dataset_metadata - :members: - :undoc-members: - - - - - diff --git a/ml/dlib/docs/docs/rbf_big_gamma.gif b/ml/dlib/docs/docs/rbf_big_gamma.gif deleted file mode 100644 index 7885d655b..000000000 Binary files a/ml/dlib/docs/docs/rbf_big_gamma.gif and /dev/null differ diff --git a/ml/dlib/docs/docs/rbf_normal.gif b/ml/dlib/docs/docs/rbf_normal.gif deleted file mode 100644 index 810fd52af..000000000 Binary files a/ml/dlib/docs/docs/rbf_normal.gif and /dev/null differ diff --git a/ml/dlib/docs/docs/rbf_small_gamma.gif b/ml/dlib/docs/docs/rbf_small_gamma.gif deleted file mode 100644 index 24baaff63..000000000 Binary files a/ml/dlib/docs/docs/rbf_small_gamma.gif and /dev/null differ diff --git a/ml/dlib/docs/docs/release_notes.xml b/ml/dlib/docs/docs/release_notes.xml deleted file mode 100644 index 2bb03580e..000000000 --- a/ml/dlib/docs/docs/release_notes.xml +++ /dev/null @@ -1,4437 +0,0 @@ - - - - - Release notes - - - - - - - - -New Features and Improvements: - - Deep Learning: - - Added scale_ layer, allowing implementation of squeeze-and-excitation networks. - - Added loss_multimulticlass_log: used for learning a collection of multi-class classifiers. - - Added a random forest regression tool. See random_forest_regression_trainer. - - Added make_bounding_box_regression_training_data() - - Added isotonic_regression - - Added momentum_filter, rect_filter, find_optimal_momentum_filter(), and - find_optimal_rect_filter(). - - Added binomial_random_vars_are_different() and event_correlation(). - - Added xcorr_fft(), a routine for efficiently performing large cross-correlations using the FFT. - - Added the ramdump type decorator for invoking faster serialization routines. - - Added check_serialized_version() - - Added max_scoring_element() and min_scoring_element() - - Made orthogonalize() faster. - - Updates to the Python API: - - Added interface to the global_function_search object. This is a more general - interface to the solver used by find_max_global(). - - Added support for variadic Python functions in find_max_global(). - - Added rect_filter and find_optimal_rect_filter(). - - Added make_bounding_box_regression_training_data() - - Added the image_dataset_metadata routines for parsing XML datasets. - - Added rvm_trainer - - Added probability_that_sequence_is_increasing() - - Added dlib.__time_compiled__ field - - Added num_threads to shape_predictor_training_options. - - Added CUDA controlling routines such as set_device() and - set_dnn_prefer_smallest_algorithms(). - -Non-Backwards Compatible Changes: - - Changed CMake so that there is only the dlib target and it isn't forced to - be static. Instead, the build type will toggle based on the state of CMake's - BUILD_SHARED_LIBS variable. So there is no longer a dlib_shared target. - - Changed the integer types used to represent sizes from 32bits to 64bits in numerous - places, such as in the tensor object. This should be a backwards compatible change - for nearly all client code. - -Bug fixes: - - Fixed memory leak in java swig array binding tool. - - Fixed windows include order problem in all/source.cpp file. - - Fixed cont_ layers not printing the correct num_filters parameter when they were - printed to std::cout or to XML. - - Fixed some code not handling OBJECT_PART_NOT_PRESENT values correctly. - - Fixed fft_inplace() not compiling for compile time sized matrices. - - The shape_predictor_trainer could have very bad runtime for some really - bad parameter settings. This has been fixed and also warning messages about - really bad training data or parameters have been added. - - Fixed the decayed running stats objects so they use unbiased estimators. - - - - - - -New Features and Improvements: - - Switched the Python API from Boost.Python to pybind11. This means Python - users don't need to install Boost anymore, making building dlib's Python API - much easier. - - Made the sparse version of svd_fast() use multiple CPU cores. - - Changed the behavior of imglab's --flip option. It will now attempt to - adjust any object part labels so that the flipped dataset has the same - average part layout as the source dataset. There is also a new --flip-basic - option that behaves like the old --flip. However, most people flipping a - dataset with part annotations will want to use --flip. For more details - see: http://blog.dlib.net/2018/01/correctly-mirroring-datasets.html - -Non-Backwards Compatible Changes: - - Removed std::auto_ptr from dlib's old (and depreciated) smart pointers. - -Bug fixes: - - Fixed global_optimization.py not working in Python 3. - - - - - - -New Features and Improvements: - - Added a global optimizer, find_max_global(), which is suitable for - optimizing expensive functions with many local optima. For example, you - can use it for hyperparameter optimization. See model_selection_ex.cpp - for an example. - - Updates to the deep learning tooling: - - Added semantic segmentation examples: dnn_semantic_segmentation_ex.cpp - and dnn_semantic_segmentation_train_ex.cpp - - New layers: loss_ranking, loss_epsilon_insensitive, softmax_all, and loss_dot. - - Made log loss layers more numerically stable. - - Upgraded the con layer so you can set the number of rows or columns to - 0 in the layer specification. Doing this means "make the filter cover - the whole input image dimension". This provides an easy way to make a - filter sized so it will have one output along that dimension, - effectively making it like a fully connected layer operating on a row - or column. - - Added support for non-scale-invariant MMOD. - - Added an optional parameter to dnn_trainer::get_net() that allows you - to call the function without forcing a state flush to disk. - - Sometimes the loss_mmod layer could experience excessively long runtime - during early training iterations. This has been optimized and is now - much faster. - - Optimized the tensor's management of GPU memory. It now uses less memory - in some cases. It will also not perform a reallocation if resized to a - smaller size. Instead, tensors now behave like std::vector in that - they just change their nominal size but keep the same memory, only - reallocating if they are resized to something larger than their - underlying memory block. This change makes some uses of dlib faster, in - particular, running networks on a large set of images of differing - sizes will now run faster since there won't be any GPU reallocations, - which are notoriously slow. - - Upgraded the input layer so you can give - input<std::array<matrix<T>,K>> types as input. Doing - this will create input tensors with K channels. - - Added disjoint_subsets_sized - - Added Python APIs: get_face_chips(), count_steps_without_decrease(), - count_steps_without_decrease_robust(), and jitter_image(). - - Various improvements to CMake scripts: e.g. improved warning and error - messages, added USE_NEON_INSTRUCTIONS option. - - chol() will use a banded Cholesky algorithm for banded matrices, making it - much faster in these cases. - - Changed the timing code to use the C++11 high resolution clock and - atomics. This makes the timing code a lot more precise. - -Non-Backwards Compatible Changes: - - Changed the random_cropper's set_min_object_size() routine to take min box - dimensions in the same format as the mmod_options object (i.e. two lengths - measured in pixels). This should make defining random_cropping strategies - that are consistent with MMOD settings more straightforward since you can - simply take the mmod_options settings and give them to the random_cropper - and it will do the right thing. - - Changed the mean squared loss layers to return a loss that's the MSE, not - 0.5*MSE. The only thing this effects is the logging messages that print - during training, which were confusing since the reported loss was half the - size you might naively expect. - - Changed the outputs of test_regression_function() and cross_validate_regression_trainer(). - These functions now output 4D rather than 2D vectors. The new output is: - mean squared error, correlation, mean absolute error, and standard - deviation of absolute error. I also made test_regression_function() take - a non-const reference to the regression function so that DNN objects can - be tested. - - Fixed shape_predictor_trainer padding so it behaves as it used to. In - dlib 19.7 the padding code was changed and accidentally doubled the size - of the applied padding in some cases. It's not a huge deal either way, but - this change reverts back to the previous behavior. - -Bug fixes: - - Fixed toMat() not compiling in some cases. - - Significantly reduced the compile time of the DNN example programs in - visual studio. - - Fixed a few image processing functions that weren't using the generic - image interface. - - Fixed a bug in the random_cropper where it might crash due to division by - 0 if small images were given as input. - - Fixed a bug in how the mmod_options automatically determines detection - window sizes. It would pick a bad size in some cases. - - Fixed load_image_dataset()'s skip_empty_images() option. It wasn't - skipping images that only have ignore boxes when you load into mmod_rect - objects. - - Fixed a bug where chinese_whispers(), when called from python, would - sometimes return a labels array that didn't include labels for all the - inputs. - - Fixed a bug in dlib's MS Windows GUI code that was introduced a little - while back when we switched everything to std::shared_ptr. This change - fixes a bug where the program crashes or hangs sometimes during program - shutdown. - - Fixed error in TIME_THIS() introduced in dlib 19.7. It was printing - seconds when it said minutes in the output. - - Adding missing implementation of tabbed_display::selected_tab. - - Changed the windows signaler and mutex code to use the C++11 thread - library instead of the old win32 functions. I did this to work around how - windows unloads dlls. In particular, during dll unload windows will kill - all threads, THEN it will destruct global objects. So this can lead to - problems when a global object that owns threads tries to tell them to - shutdown, since the threads have already vanished. The new code mitigates - some of these problems, in particular, there were some cases where - unloading dlib's python extension would deadlock. This should now be - fixed. - - Fixed compile time errors when either of these macros were enabled: - DLIB_STACK_TRACE, DLIB_ISO_CPP_ONLY. - - - - - - -New Features and Improvements: - - Deep Learning: - - The CNN+MMOD detector is now a multi-class detector. In particular, - the mmod_rect object now has a string label field which you can use to - label objects, and the loss_mmod_ layer will learn to label objects with - those labels. For an example, see: https://www.youtube.com/watch?v=OHbJ7HhbG74 - - CNN+MMOD detectors are now 2.5x faster. For instance, this example program - http://dlib.net/dnn_mmod_find_cars_ex.cpp.html now runs at 98fps instead - of 39fps. - - Added a 5 point face landmarking model that is over 10x smaller than the - 68 point model, runs faster, and works with both HOG and CNN generated - face detections. It is now the recommended landmarking model to use for - face alignment. render_face_detections() and get_face_chip_details() have been - updated to work with both 5 and 68 point models, so the new 5 point model is - a drop in replacement for the 68 point model. - - The imglab tool is slightly improved. It will display box labels with - higher relative contrast. You can also now press END or i to ignore boxes - in imglab. This is useful because it's a much less stressing hand motion - to hit END that i in most cases. - - Added overloads of sub_image() that take raw pointers so you can make - sub_images of anything. - - Changed TIME_THIS() to use std::chrono::high_resolution_clock, so now it's - much higher precision. - - Exposed Chinese whispers clustering to Python, added face clustering example. - -Non-Backwards Compatible Changes: - -Bug fixes: - - Fixed an error in input_rgb_image_pyramid::image_contained_point(). The - function might erroneously indicate that a point wasn't inside the original - image when really it was, causing spurious error messages. - - mmod_options would pick bad window sizes in some corner cases. This has been fixed. - - Fixed a bug in the extract layer that trigged when a tensor with a - different number of samples than the tensor used to initialize the network - was passed through the layer. - - The loss_per_missed_target parameter of the loss_mmod_ wasn't being used - exactly right when boxes were auto-ignored. There weren't any practical - user facing problems due to this, but it has nevertheless been fixed. - - - - - - -New Features and Improvements: - -Non-Backwards Compatible Changes: - -Bug fixes: - - Fix build error in Visual Studio when CUDA is enabled. - - - - - - -New Features and Improvements: - - Deep Learning - - Added a python wrapper for using the CNN face detector. - - Added support for cuDNN v6 and v7. - - Added a simple tool to convert dlib model files to caffe models. - See the tools/convert_dlib_nets_to_caffe folder for details. - - New DNN layers - - loss_multiclass_log_per_pixel_ - - loss_multiclass_log_per_pixel_weighted_ - - loss_mean_squared_per_pixel_ - - cont_ (transpose convolution, sometimes called "deconvolution") - - mult_prev_ (like add_prev_ but multiplies instead of adds) - - extract_ (sort of like caffe's slice layer) - - upsample_ (upsamples a tensor using bilinear interpolation) - - Object Detection - - Upgraded loss_mmod_ to support objects of varying aspect ratio. This - changes the API for the mmod_options struct slightly. - - Relaxed the default non-max suppression parameters used by the - mmod_options object so that users of the deep learning MMOD tool don't - get spurious errors about impossibly labeled objects during training. - - Added missing input validation to loss_mmod_. Specifically, the loss - layer now checks if the user is giving truth boxes that can't be detected - because the non-max suppression settings would prevent them from being - output at the same time. If this happens then we print a warning message - and set one of the offending boxes to "ignore". I also changed all - the input validation errors to warning messages with auto conversion - to ignore boxes rather than exceptions. - - Changed the random_cropper's interface so that instead of talking in - terms of min and max object height, it's now min and max object size. - This way, if you have objects that are short and wide (i.e. objects where - the relevant dimension is width rather than height) you will get sensible - behavior out of the random cropper. - - Added options to input_rgb_image_pyramid that let the user set - create_tiled_pyramid()'s padding parameters. Also changed the default - outer border padding from 0 to 11. This effects even previously trained - models. So any model that doesn't explicitly set the outer patting to - something else will have a padding of 11. This should be a more - reasonable value for most networks. - - Added process() and process_batch() to add_loss_layer. These routines - let you easily pass arguments to any optional parameters of a loss - layer's to_tensor() routine. For instance, it makes it more convenient to - set loss_mmod_'s adjust_threshold parameter. - - Added visit_layers_until_tag() - - Improved how dnn_trainer synchronizes its state to disk. It now uses - two files and alternates between them. This should be more robust in - the face of random hardware failure during synchronization than the - previous synchronization method. - - Made it so you can set the number of output filters for con_ layers at runtime. - - The way cuDNN work buffers are managed has been improved, leading to - less GPU RAM usage. Therefore, users should not need to call - set_dnn_prefer_smallest_algorithms() anymore. - - Added operator<< for random_cropper and dnn_trainer to allow - easy logging of training parameters. - - Made concat_ layer a lot faster. - - Made the dnn_trainer not forget all the previous loss values it knows - about when it determines that there have been a lot of steps without - progress and shrinks the learning rate. Instead, it removes only a - small amount of the oldest values. The problem with the old way of - removing all the loss values in the history was that if you set the - steps without progress threshold to a really high number you would - often observe that the last few learning rate values were obviously not - making progress, however, since all the previous loss values were - forgotten the trainer needed to fully populate its loss history from - scratch before it would figure this out. This new style makes the - trainer not waste time running this excessive optimization of obviously - useless mini-batches. I also changed the default - get_test_iterations_without_progress_threshold() from 200 to 500. Now - that we have a better history management of loss values in the trainer - it's much more sensible to have a larger value here. - - Dlib's simd classes will now use ARM NEON instructions. This makes the - HOG based object detector faster on mobile devices running ARM processors. - - Added last_modified() method to dlib::file. Also, added - select_oldest_file() and select_newest_file(). - - Added solve_qp_box_constrained_blockdiag() - - Added an overload of mat() that takes a row stride value. - - Added cmake scripts and some related tooling that makes it easy to call - C++ code from java. See dlib/java/ folder. - - MATLAB MEX wrapper API - - Made the mex wrapper deal with cell arrays that have null elements. - - Made ctrl+c detection in a mex file work more reliably in newer versions of matlab. - - Added set_rect_area() - - Gave test_object_detection_function() an option to set how ignore box - overlap is tested. - - Added serialization support for the running_stats_decayed object. - - Additions to imglab - - Added --sort and also the ability to propagate boxes from one image to - the next using dlib::correlation_tracker. - - Made it so you can remove images by pressing alt+d. - - Made is so pressing e in imglab toggles between views of the image - where the histogram is equalized or unmodified. This way, if you are - looking at particularly dark or badly contrasted images you can toggle - this mode and maybe get a better view of what you are labeling. - - Made the attribute_list of the xml parser a little more friendly by - allowing you to ask for attributes that don't exist and get a defined - behavior (an exception being thrown) rather than it being a contract - violation. - -Non-Backwards Compatible Changes: - - DNN solver objects are now required to declare operator<<. - - Broke backwards compatibility with previous dnn_trainer serialization - format. The network serialization format has not changed however. So old - model files will still load properly. - - Changed random_cropper interface. - - Changed the XML format output by net_to_xml(). Specifically, the XML tag - for affine layers was changed to use the same conventions as other layers - that support convolutional vs fully connected modes. - - Dlib's smart pointers have been deprecated and all of dlib's code has been - changed to use the std:: version of these smart pointers. The old dlib - smart pointers are still present, allowing users to explicitly include - them if needed, but users should migrate to the C++11 standard version of - these tools. - - Changed the functions that transform between input tensor coordinates and - output tensor coordinates to use dpoint instead of point. This way, we can - obtain sub-pixel coordinates if we need them. - - Upgraded loss_mmod_ to support objects of varying aspect ratio. This - changes the API for the mmod_options struct slightly. - -Bug fixes: - - Made resize_image() and functions that use it like the pyramid objects - produce better results when run on float and double images. There was - needless rounding to integers happening in the bilinear interpolation. Now - if you work with a float image the entire process will run without integer - rounding. - - Made the input_tensor_to_output_tensor() and output_tensor_to_input_tensor() - coordinate mappings work on networks that contain skip layers. - - The input_rgb_image_sized is supposed to be convertible to - input_rgb_image, which it was in all ways except you couldn't deserialize - directly like you would expect. This has now been fixed. - - There was a bug in the concat_ layer's backward() method. It was assigning - the gradient to previous layers instead of adding the gradient, as required - by the layer interface specification. Probably no-one has been impacted - by this bug, but it's still a bug and has been fixed. - - Changed the random_cropper so that it samples background patches uniformly - across scales regardless of the input image size. Previously, if you gave - really large images or really small images it had a bias towards giving only - large patches or small patches respectively. - - Fixed name lookup problem for calls to serialize() on network objects. - - Fixed double delete in tokenizer_kernel_1. - - Fixed error in pyramid_down<2> that caused the output image to be a - little funny looking in some cases. - - Fixed the visit_layers_backwards() and visit_layers_backwards_range() - routines so they visit layers in the correct order. - - Made build scripts work on a wider range of platforms and configurations. - - Worked around global timer cleanup issues that occur on windows when dlib - is used in a dll in some situations. - - Fixed various compiler errors in obscure environments. - - - - - - -New Features: - -Non-Backwards Compatible Changes: - - CMake 2.8.12 is now required to build dlib (but only if you use CMake). - -Bug fixes: - - Fixed a slow memory leak that could occur when using cuDNN. - -Other: - - - - - -New Features: - - Deep Learning - - Added a state-of-the-art face recognition tool (99.38% accuracy on the - LFW benchmark) with C++ and Python example programs. - - Added these new loss layer types: loss_metric_, loss_mean_squared_, and - loss_mean_squared_multioutput_. - - Added the l2normalize_ computational layer. - - Added test_one_step() to the dnn_trainer. This allows you to do - automatic early stopping based on observing the loss on held out data. - - Made the dnn_trainer automatically reload from the last good state if a - loss of NaN is encountered. - - Made alias_tensor usable when it is const. - - Dlib's simd classes will now use PowerPC VSX instructions. This makes the - HOG based object detector faster on PowerPC machines. - - Added compute_roc_curve() - - Added find_gap_between_convex_hulls() - - Added serialization support for std::array. - - Added running_scalar_covariance_decayed object - - Added running_stats_decayed object - - Added min_pointwise() and max_pointwise(). - - Added a 1D clustering routine: segment_number_line(). - - Added Intel MKL FFT bindings. - - Added matlab_object to the mex wrapper. Now you can have parameters that - are arbitrary matlab objects. - - Added support for loading of RGBA JPEG images - -Non-Backwards Compatible Changes: - - Changed the loss layer interface to use two typedefs, output_label_type - and training_label_type instead of a single label_type. This way, the label - type used for training can be distinct from the type output by the network. - This change breaks backwards compatibility with the previous API. - -Bug fixes: - - Fixed compiler warnings and errors on newer compilers. - - Fixed a bug in the repeat layer that caused it to throw exceptions in some - cases. - - Fixed matlab crashing if an error message from a mex file used the % - character, since that is interpreted by matlab as part of an eventual - printf() code. - - Fixed compile time error in random_subset_selector::swap() - - Fixed missing implementation of map_input_to_output() and - map_output_to_input() in the concat_ layer. - - Made the dnn_trainer's detection and backtracking from situations with - increasing loss more robust. Now it will never get into a situation where it - backtracks over and over. Instead, it will only backtrack a few times in a - row before just letting SGD run unimpeded. - -Other: - - Usability improvements to DNN API. - - Improved C++11 detection, especially on OS X. - - Made dlib::thread_pool use std::thread and join on the threads in - thread_pool's destructor. The previous implementation used dlib's global - thread pooling to allocate threads to dlib::thread_pool, however, this - sometimes caused annoying behavior when used as part of a MATLAB mex file, - very occasionally leading to matlab crashes when mex files were unloaded. - This also means that dlib::thread_pool construction is a little bit slower - than it used to be. - - - - - -New Features: - - Updates to the deep learning API: - - Added tools for making convolutional neural network based object detectors. See - dnn_mmod_ex.cpp example program. - - Added annotation() to tensor so you can associate any object you want with a tensor. - - Made layer_details() part of the SUBNET interface so that user defined layer - details objects can access each other. Also added the input_layer() global function - for accessing the input layer specifically. - - alias_tensor can now create aliases of const tensors. - - Added set_all_bn_running_stats_window_sizes(). - - Added visit_layers_backwards(), visit_layers_backwards_range(), and - visit_layers_range(). - - Computational layers can now optionally define map_input_to_output() and - map_output_to_input() member functions. If all layers of a network provide these - functions then the new global functions input_tensor_to_output_tensor() and - output_tensor_to_input_tensor() can be used to map between the network's input and - output tensor coordinates. This is important for fully convolutional object - detectors since they need to map between the image space and final feature space. - These new functions are important for tools like the new MMOD detector. - - Added input_rgb_image_pyramid. - - Image Processing - - The imglab command line tool has these new options: --min-object-size, --rmempty, - --rmlabel, --rm-if-overlaps, and --sort-num-objects. I also changed the behavior of - --split so that it simply partitions the data and is an invertible operation. - - Added mmod_rect - - Added an overload of load_image_dataset() that outputs directly to mmod_rect - instead of rectangle. - - Added image_dataset_file::shrink_big_images(). So now load_image_dataset() can load - a dataset of high resolution files at a user requested lower resolution. - - Added box_intersection_over_union(). - - Added create_tiled_pyramid(), image_to_tiled_pyramid(), and tiled_pyramid_to_image(). - - Added random_cropper - - Upgraded dlib's mex wrapper tooling to enable easy binding of C++ classes to MATLAB - objects. - - Added nearest_rect() - - Added find_upper_quantile() - - Added count_steps_without_decrease_robust(). - - Added get_double_in_range() to dlib::rand. - -Non-Backwards Compatible Changes: - - C++11 is now required to use dlib. - - Changed pinv() so it interprets its tol argument relative to the largest singular - value of the input matrix rather than as an absolute tolerance. This should generally - improve results, but could change the output in some cases. - - Renamed the class members of test_box_overlap so they are less confusing. - - Updates to the deep learning API: - - Changed the DNN API so that sample_expansion_factor is a runtime variable rather - than a compile time constant. This also removes it from the input layer interface - since the DNN core now infers its value at runtime. Therefore, users that define their - own input layers don't need to specify it anymore. - - Changed DEFAULT_BATCH_NORM_EPS from 1e-5 to 1e-4. - - Changed the default batch normalization running stats window from 1000 to 100. - -Bug fixes: - - Made the relational operators constexpr so they don't accidentally cause compilation - errors when they get pulled into the scope of template metaprogramming expressions. - - Fixed all/source.cpp not compiling in some instances. - - CMake scripts now do a better job detecting things like C++11 support, the presence of - CUDA, and other system specific details that could cause the build to fail if not - properly configured. - - Fixed a bug in imglab's --cluster option where it would output xml files with empty - entries if the input xml file contained unannotated images. - - Fixed imglab's --cluster option not working with relative paths. - -Other: - - Made the thread local variables that hold the cudnn and cublas context objects not - destruct and recreate themselves when you switch devices. Instead, they keep a table - of context objects, for each thread and device, reusing as necessary. This prevents - churn in the context objects when you are switching back and forth between devices - inside a single thread, making things run more efficiently for some CUDA based - workflows. - - Made the message argument of the DLIB_ASSERT and DLIB_CASSERT macros optional. - - Made thread_pool and parallel_for propagate exceptions from task threads to calling - code rather than killing the application if a task thread throws. - - Changed imglab --resample so that it never changes the aspect ratio of an image. - - Made the check in dnn_trainer for convergence more robust. Previously, if we - encountered a bad mini-batch that made the loss value suddenly jump up by a larger than - normal value it could make the trainer think we converged. Now the test is robust to - transient spikes in loss value. Additionally, the dnn_trainer will now check if the - loss has been increasing before it saves the state to disk. If it detects that the loss - has been going up then instead of saving to disk it recalls the previously good state. - This way, if we hit a really bad mini-batch during training which negatively effects - the model in a significant way, the dnn_trainer will automatically revert back to an - earlier good state. - - - - - -New Features: - - Support for cuDNN 5.1 - - dlib::async() and dlib::default_thread_pool(). - - rectangle_transform - - imglab tool: added --resample, --ignore, --files, and --extract-chips - command line options. Also added convert_imglab_paths_to_relative and - copy_imglab_dataset scripts. - - Evgeniy Fominov made the shape_predictor trainer multi-threaded and faster. - - sutr90 contributed support for the CIELab color space. See the new lab_pixel. - -Non-Backwards Compatible Changes: - - All the cmake utility scripts were moved to dlib/cmake_utils. - - Code that #includes the shape_predictor can now only be compiled with - compilers that support C++11 lambda functions. - -Bug fixes: - - Made CMake scripts work in a wider range of environments. - - Fixed compile time errors on various platforms. - - Fixed bad multi-threading support in the MATLAB mex wrapper. - - Fixed bug in cuDNN binding that could sometimes cause NaN outputs. - - Fixed bad convergence testing in DNN tooling for very small datasets. - -Other: - - - - - -New Features: - - A deep learning toolkit using CPU and/or GPU hardware. Some major elements - of this are: - - Clean and fully documented C++11 API - - Clean tutorials: see dnn_introduction_ex.cpp and dnn_introduction2_ex.cpp - - Uses cuDNN v5.0 - - Multi-GPU support - - Automatic learning rate adjustment - - A pretrained 1000 class Imagenet classifier (see dnn_imagenet_ex.cpp) - - Optimization Tools - - Added find_optimal_parameters() - - Added elastic_net class - - Added the option to use the elastic net regularizer to the OCA solver. - - Added an option to solve the L2-loss version of the SVM objective function to svm_c_linear_dcd_trainer. - - Added solve_qp_box_constrained() - - Image Processing - - Added random_color_transform, disturb_colors(), and apply_random_color_offset(). - - load_image() now supports loading GIF files. - - Many improvements to the MATLAB binding API - - Automatically link to MATLAB's Intel MKL when used on linux. - - struct support - - mex functions can have up to 20 arguments instead of 10. - - In place operation. Made column major matrices directly wrap MATLAB - matrix objects when used inside mex files. This way, if you use - matrix_colmajor or fmatrix_colmajor in a mex file it will not do any - unnecessary copying or transposing. - - Catch ctrl+c presses in MATLAB console. Allowing early termination of mex functions. - - When used inside mex files, DLIB_ASSERTS won't kill the MATLAB process, - just throw an exception. - - Made cerr print in MATLAB as a red warning message. - - load_mnist_dataset() - - Added a constructor for seeding rand with a time_t. - - Added subm_clipped() - - Added unserialize. - - Added running_gradient - -Non-Backwards Compatible Changes: - - Everything in dlib/matlab/call_matlab.h is now in the dlib namespace. - - DLIB_TEST() and DLIB_TEST_MSG() macros now require you to terminate them with a ; - -Bug fixes: - - Fixed bug in 10 argument version of call_matlab() and also cleaned up a few - minor things. - - setup.py and CMake scripts work in a few more contexts. - - Fixed compiler errors in visual studio 2015. - - Fixed a bug in gaussian_blur() that caused messed up outputs when big - sigma values were used on some pixel types. - - Fixed minor bugs in join_rows() and join_cols(). They didn't work when one - of the matrices was empty. - -Other: - - Made CMake scripts uniformly require CMake version 2.8.4. - - Faster fHOG feature extraction / face detection - - CMake scripts now enable C++11 by default - - Gave array2d and matrix move constructors and move assignment operators. Matrix - can also now be created from initializer lists. - - - - - -New Features: - - Added the set_ptrm() routine for assigning dlib::matrix objects to arbitrary - memory blocks. - -Non-Backwards Compatible Changes: - -Bug fixes: - - Fixed a bug that caused cmake to not provide the correct preprocessor - definitions until cmake was run twice. This was causing some projects to - not build properly. - -Other: - - Improvements to build system: - - Ehsan Azarnasab contributed a setup.py so the dlib Python API can be - installed via the usual 'python setup.py install' command. - - Séverin Lemaignan upgraded dlib's CMake scripts so they include an - install target. Now dlib can be installed system wide by executing - 'cmake PATH_TO_DLIB; make install'. This also includes installing the - appropriate scripts for CMake's find_package(dlib) to work. - - - - - -New Features: - - More clustering tools: - - Added bottom_up_cluster() and find_clusters_using_angular_kmeans() - routines. - - Added a --cluster option to the imglab tool. This lets you cluster - objects into groups of similar appearance/pose. - - Improved the shape_predictor. In particular, it can now be learned from - datasets where some landmarks are missing. The shape_predictor also now - outputs a sparse feature vector that encodes which leafs are used on each - tree to make a prediction. - -Non-Backwards Compatible Changes: - - extract_highdim_face_lbp_descriptors() produces slightly different output. - -Bug fixes: - - Fixed a minor bug in extract_highdim_face_lbp_descriptors() which was - pointed out by Yan Xu. One of the face locations was mistakenly used twice - while another was skipped. This change breaks backwards compatibility with - the previous feature extraction output but should slightly improve - accuracy of classifiers trained using these features. - - Fixed jet() and heatmap() so they work on empty images. - - The SQLite transaction object did not function correctly when compiled - in a C++11 program. Since its destructor can throw, an exception - specification needed to be added indicating that this was possible since - destructors are now noexcept by default in C++11. - - Fixed a bug pointed out by Ernesto Tapia that could cause matrix - expressions that involve sub matrix views (e.g. colm) to produce the wrong - results when the BLAS bindings were enabled. - - Added an if to avoid a possible division by zero inside spectral_cluster(). - - Fixed a bug in parse_xml(). It failed to check if the given input stream - was valid before trying to parse it. - -Other: - - - - - - -New Features: - - Added a linear model predictive control solver. See the mpc_ex.cpp example - program for details. - - Thanks to Patrick Snape, the correlation_tracker can now be used from Python. - -Non-Backwards Compatible Changes: - - The camera_transform's second operator() method now takes 3 arguments - instead of 2. This is to allow it to output the z distance in addition to - scale. - -Bug fixes: - - Fixed a bug in the eigenvalue_decomposition which could occur when a - symmetric matrix was used along with the LAPACK bindings. - - Fixed a bug where the last column of data in a file wasn't loaded on some - OS X machines when load_libsvm_formatted_data() was called. - -Other: - - Added a hard iteration limit to a number of the SVM solvers. - - Adrian Rosebrock graciously setup an OS X machine for dlib testing, which - resulted in improved CMake python scripts on OS X machines. - - Improved the way overlapping points are rendered by the perspective_window. - - - - - - -New Features: - - Added a number of tools for working with 3D data: - - Added the perspective_window which is a tool for displaying 3D point clouds. - - Added camera_transform. It performs the 3D to 2D mapping needed to visualize 3D - data. - - Added point_transform_affine3d as well as functions for creating such transforms: - rotate_around_x(), rotate_around_y(), rotate_around_z(), and translate_point(). - - Added draw_solid_circle() for drawing on images. - - Added get_best_hough_point() to the hough_transform. - - Thanks to Jack Culpepper, the python API for object detection now outputs detection - confidences. - - Added lspi, an implementation of the least-squares policy iteration algorithm. - -Non-Backwards Compatible Changes: - - The shape_predictor and shape_predictor_trainer had a non-optimal behavior when used - with objects that have non-square bounding boxes. This has been fixed but will cause - models that were trained with the previous version of dlib to not work as accurately if - they used non-square boxes. So you might have to retrain your models when updating dlib. - -Bug fixes: - - Fixed a bug which prevented add_image_rotations() from compiling. - -Other: - - The imglab tool now allows the user to click and drag annotations around by holding - shift and right clicking. - - - - - - -New Features: - - Added spectral_cluster() - - Added sub_image() and sub_image_proxy - - Added set_all_logging_headers() - -Non-Backwards Compatible Changes: - -Bug fixes: - - Fixed a bug that caused the correlation_tracker to erroneously trigger an assert when - run in debug mode. - -Other: - - Improved the usability of the new drectanle object. - - Optimized extract_fhog_features() for the case where cell_size==1. This makes it about - 4x faster in that case. - - Made it so you can compose point transform objects via operator *. - - - - - - -New Features: - - Added the correlation_tracker object - - Added the option to force the last weight to 1 to structural_assignment_trainer. - - Added max_point_interpolated() - - Added the drectangle object - - New Python Tools: - - Patrick Snape contributed a Python binding for the face landmarking tool and - the general purpose shape prediction/training tools. - - Vinh Khuc contributed a Python binding for find_candidate_object_locations(), - dlib's implementation of the selective search object location proposal method. - -Non-Backwards Compatible Changes: - -Bug fixes: - - Fixed a bug in extract_image_chips() and get_mapping_to_chip() that caused - incorrect outputs when the requested chip stretched the image unevenly - vertically or horizontally. - - Made CMake check that libpng and libjpeg actually contain the link symbols - they are supposed to since, on some systems, these libraries aren't - installed correctly and will cause linker errors if used. - - Fixed assign_border_pixels(img, rect) so that it correctly zeros an image - when an empty rectangle is supplied. Previously, it did nothing to the - image in this case. - - Fixed compute_lda_transform() so it works properly when the class - covariance matrices are singular even after performing PCA. - - Fixed a bug in find_similarity_transform(). When given just two points as - inputs it would sometimes produce a reflection rather than a similarity - transform. - - Disabled all bindings to FFTW because FFTW isn't threadsafe. - -Other: - - Added an example program for dlib's SQLite API and made a few minor - usability improvements to the API as well. - - - - - - -New Features: - - Upgraded fft() and ifft() to support 2D matrices. - - Added hough_transform - - Added skeleton() for finding the skeletonization of a binary image. - - Added distance_to_line(), clip_line_to_rectangle(), min_point(), and max_point(). - - Added a simple API for calling C++ from MATLAB. - -Non-Backwards Compatible Changes: - -Bug fixes: - - Fixed a compile time error that could happen when calling fft() for - certain input types. - - Fixed a compile time error that prevented auto_threshold_image() from - being used. - - Fixed name clashes with new version of Boost. - - Changed Python pickling code so it works with Python 3. - - Fixed CMake compile time error related to finding fftw. - -Other: - - Made extract_image_chips() much faster when extracting unscaled image chips. - - - - - -New Features: - - Added save_jpeg() - - Added the option to use an identity matrix prior to vector_normalizer_frobmetric. - - Made the extract_image_chips() routine more flexible, in particular: Added - get_mapping_to_chip(), get_face_chip_details(), map_det_to_chip(), and also - upgraded chip_details so you can specify a chip extraction by a bunch of - point correspondences between the chip and the original image. - - Added a set of local-binary-pattern based feature extractors: - make_uniform_lbp_image(), extract_histogram_descriptors(), - extract_uniform_lbp_descriptors(), and extract_highdim_face_lbp_descriptors() - - Added compute_lda_transform() - - Added equal_error_rate() - - Added cast_to() to the type_safe_union. This allows you to get the - contents of a const type_safe_union. - -Non-Backwards Compatible Changes: - -Bug fixes: - - Changed noncopyable.h to avoid a name clash with boost 1.56 - - On some platforms hostname_to_ip() would erroneously return 0.0.0.0. This - has been fixed. - -Other: - - - - - -New Features: - - Added find_similarity_transform() - - Added the ability to upgrade a auto_mutex_readonly from a readonly lock to a write - lock. - - Added an implementation of the paper "One Millisecond Face Alignment with an Ensemble - of Regression Trees" by Vahid Kazemi and Josephine Sullivan which appeared in this - year's CVPR conference. Therefore, dlib now includes tools for learning shape models - and also comes with a state-of-the-art face landmark locator. See the - face_landmark_detection_ex.cpp and train_shape_predictor_ex.cpp example programs for - an introduction. - -Non-Backwards Compatible Changes: - - Made the interface to all the image processing routines more generic. In particular, - it is now easier to use arbitrary image types with dlib. The new generic image - interface is defined in dlib/image_processing/generic_image.h and simply consists of - seven user defined global functions and a traits template. Any user code that was - using array2d objects to represent images will still work. However, if you had been - using your own custom image object you will need to provide implementations of the - seven functions. Instructions for how to do this are in - dlib/image_processing/generic_image.h. - -Bug fixes: - - Changed the murmur hash implementation to avoid any possibility of strict aliasing - violations in user code, even when things get inlined in unfavorable ways. - - Fixed a color space handling bug in resize_image() that caused bad looking outputs in - some cases. - - If "cmake" was a substring of the full path to your source code folder then the cmake - scripts would fail. This has been fixed. - - Fixed a compile time error that could occur when using find_max_single_variable(). - -Other: - - load_image() now uses the internal file header information to detect the - image format rather than looking at the file extension. - - Renamed unit test program to dtest avoid warnings from CMake. - - cross_validate_trainer() and cross_validate_trainer_threaded() no loner make copies - of the training data. This significantly reduces their RAM usage for large datasets. - - Changed the serialization code for C-strings so that they don't save the null - terminator byte. This makes their serialization format the same as the format for - std::string. The code should still be able to read all previously serialized data - correctly, so the change is backwards compatible with previous versions of dlib. - - Changed the evaluate_detectors() routine so that it applies non-max suppression to - each detector individually. This way one detector doesn't stomp on the output of - another detector. - - Made the version of draw_line() that draws onto a regular image use alpha blending - for drawing diagonal lines. - - - - - -New Features: - -Non-Backwards Compatible Changes: - -Bug fixes: - - The new simplified serialization API that works like serialize("filename")<<object - was not opening files in binary mode and therefore didn't work properly on Windows. - This has been fixed. - -Other: - - - - - - -New Features: - - 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. - - Added the new split_on_first() and split_on_last() string manipulation functions. - - Added locally_change_current_dir, a RAII tool for switching between directories. - - You can now make a 1x1 matrix containing a single value by calling mat() on a single - scalar value. - - The point transform functions and frobmetric_training_sample are now serializable. - - Added a simplified operator << and >> based syntax for serializing to and - from files. So now you can serialize to a file using a syntax of: - serialize("myfile.dat") << myobject << another_object; - and then load those objects from disk via: - deserialize("myfile.dat") >> myobject >> another_object; - An arbitrary number of objects can be serialized or deserialized by - chaining the << and >> operators. - -Non-Backwards Compatible Changes: - -Bug fixes: - - Fixed a bug pointed out by Daniel Girardeau-Montaut. The covariance() - function didn't work on non-double valued matrices. - - Fixed a bug in the backtracking_line_search() function pointed out by - Ping-Chang Shih. The function ignored the max_iter parameter. - - Fixed a compiler error encountered when using clang 3.4 on Mac OS X 10.9. - Thanks to Martin Fergie for reporting this problem. - - Fixed a potential divide by zero in draw_fhog() - -Other: - - Added an example program showing how to set a custom logger output hook. - - Made linear decision_functions which use sparse vectors much faster. - - - - - - -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: - - - - - - -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. - - - - - -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. - - - - - -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. - - - - - - -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. - - - - - - - -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. - - - - - - -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. - - - - - - -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. - - - - - - -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. - - - - - - -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. - - - - - - -New Features: - - Improvements to linear algebra tools: - - Added the lowerbound() and upperbound() routines for thresholding dense - matrices. - - Refined the tools for working with sparse vectors. In particular, - the following functions were added: min(), max(), make_sparse_vector(), - add(), and subtract(). A number of existing routines were also updated - to work with both sparse and dense vectors so that templated code which - works on both vector types is simpler to write. - - Added the += and -= operators to the set_subm(), set_rowm(), and set_colm() - tools for operating on submatrices. - - Optimization: - - Added a new quadratic program solver, solve_qp4_using_smo(). This new - solver is useful for solving quadratic programs corresponding to - non-negative constrained primal quadratic programs. - - Added an optional non-negativity constraint to the oca optimizer. - - Added the min_cut object. It provides a method to find the minimum weight - cut on a graph. - - Added tools for finding the maximum probability assignment in a Potts - style Markov random field. See the find_max_factor_graph_potts() routine - for details. - - Machine Learning: - - Added structural SVM tools for learning the parameters of a Potts style - Markov random field. See the structural_graph_labeling_trainer and - graph_labeler objects as well as their associated example program for - details. - - Added the ability to learn only non-negative weights to the - svm_c_linear_trainer. - - Improved Integration with OpenCV: - - Updated the cv_image object so it works with cv::Mat as well as IplImage. - - Added the toMat() routine for converting from a dlib style image to an - OpenCV cv::Mat image. - -Non-Backwards Compatible Changes: - - Removed the dlib::sparse_vector namespace. Everything from this namespace - was moved into the normal dlib:: namespace so that code which works with - both sparse and dense vectors is more cohesive. - -Bug fixes: - - Fixed a bug in find_max_factor_graph_viterbi() which sometimes occurred when - the model order was larger than the number of variables. - - Fixed a bug which caused a compiler error if you tried to call dot() on two - 1x1 matrices which were statically dimensioned. - -Other: - - Improved existing documentation: added pictures of the gui widgets, - added documentation of the dlib::bridge protocol, and other minor - usability improvements. - - - - - -New Features: - - Image Processing: - - Added the option to make the features generated by poly_image rotationally - invariant. - - Added a set of routines for warping, scaling, and resizing images. - See the new "Scaling and Rotating" section of the image processing - documentation for details. - - Added the heatmap() routine for converting an image into a heatmap. - - Machine Learning - - Updated the sequence labeling trainer to allow the user to set different - loss values for different labels. - - Added the rls object. It is an implementation of the linear recursive - least squares algorithm. - - Added the get_option() routines which slightly simplify option parsing - from the command line and config files. - - Added the 128bit version of Murmur hash. - - Added the kalman_filter and rls_filter objects. These are tools for - performing Kalman filtering and recursive least squares filtering. - - Added the circular_buffer object. - -Non-Backwards Compatible Changes: - - The poly_image generates slightly different features in this new release. - Therefore, classifiers trained using the previous version will need to be - retrained if they are switched to the new version of poly_image. - - Changed the xcorr() functions so they take the complex conjugate of the right - hand arguments if they are complex numbers. This way they do a proper - cross-correlation and also mirror the behavior of MATLAB. However, this - breaks backwards compatibility with the previous behavior of xcorr(). - - Previously, dlib included two versions of dlib::array. However, to - simplify the user interface, dlib now includes only the contiguous - memory implementation of dlib::array. This change should only affect - you if you wrote code which assumed dlib::array::set_max_size() only - allocated a small amount of RAM. The new behavior is similar to the - std::vector::reserve() routine. That is, dlib::array::set_max_size() - will allocate the requested amount of memory immediately. - -Bug fixes: - - Fixed a bug which caused certain matrix expressions to not compile - when the BLAS bindings were enabled. In particular, expressions which - involved a 1x1 matrix sometimes didn't compile. - -Other: - - Made the matrix routines min(), max(), sum() and mean() work with - complex numbers. - - Turned the array object into a single implementation object. Now arrays - can be created using the normal array<type> obj; syntax. Additionally, - all extensions were merged into the array object. - - Added an example program which better documents how to create training - data for the object detection tools as well as how this data can be used. - See the train_object_detector.cpp example for details. - - - - - - -New Features: - - Added tools for timing blocks of code - - Machine Learning - - Added a set of tools for learning to solve the assignment problem. - See the structural_assignment_trainer and its associated example - program for an introduction. - - Added random projection based locality sensitive hashing tools. - - Added tools to simplify the creation of scan_image_pyramid objects. - See the object_detector_ex.cpp example program for details. - - Image Processing - - Added sum_filter() and spatially_filter_image_separable_down() - - New feature extractors: poly_image, nearest_neighbor_feature_image, and - fine_hog_image - -Non-Backwards Compatible Changes: - - Changed the serialization format for rand objects. - - Changed the order of arguments for the sequence_labeler's constructor. - - Object Detection Changes - - Some parts of the object detection tools have been refactored. In particular, - the interfaces of the scan_image_pyramid and structural_object_detection_trainer - have been changed slightly to improve usability. - - Made the test_box_overlap a little more flexible. This change breaks - backwards compatibility with the previous version though. - - The hashed_feature_image object has been made more general. It now - uses a user supplied hashing function rather than its own hashing - implementation. - - Removed constness from the operator() member functions of the - object_detector. - - Fixed improper normalization in the gaussian() functions. The - normalization constant was being computed incorrectly. - - Sequence labeling feature extractors must now define a sequence_type - typedef instead of sample_type. This change allows the user to use any - type of sequence, not just std::vector objects. - -Bug fixes: - - Changed the add_probability() method of joint_probability_table so - it does a saturating add rather than a normal add. This ensures the - probability value stays exactly <= 1. Previously, floating point - rounding error could cause it to be slightly above 1 and would therefore - cause some asserts to misfire during debugging mode. - - The object_detector had code in it which limited the number of outputs - to 100 rectangles. This has been removed. - - Fixed improper normalization in the gaussian() functions. The - normalization constant was being computed incorrectly. - -Other: - - dlib::rand can now generate Gaussian random numbers. - - The structural_object_detection_trainer will now automatically setup - appropriate non-max suppression parameters if the user doesn't supply them. - - The structural_object_detection_trainer has been optimized and now runs - significantly faster than in previous dlib releases. - - The tools folder containing htmlify, imglab, and mltool is now included - in the dlib release archive files. Previously, these tools were only - available directly from source control. - - - - - - -New Features: - - Machine Learning - - Added the histogram intersection kernel for sparse and dense vectors. - - Added a set of tools to allow a user to easily learn to do sequence - labeling using dlib's structural SVM implementation. See the new - sequence_labeler object and its associated example program for an - introduction. - - Image processing: - - Added segment_image() - - Added randomly_color_image() - - Added the border_enumerator - - Added the disjoint_subsets object, it is an implementation of the - union-find algorithm/disjoint-set data structure. - - Added new matrix routines: conv(), conv_same(), conv_valid(), xcorr(), - xcorr_same(), xcorr_valid(), and flip(). - -Non-Backwards Compatible Changes: - - Changed find_max_factor_graph_viterbi() so you can use run-time - defined order and num_states parameters. - -Bug fixes: - - The last dlib release added a max_iterations parameter to the - svm_c_linear_trainer and svm_c_ekm_trainer objects. However, - there was a bug which made them only do at most 16 iterations, - which is too few to solve many problems. This has been fixed. - - Fixed a bug in is_const_type. It didn't work for reference types. - - Fixed a bug in the SQLite binding routine statement::get_column_as_text(). - It didn't work correctly if the column contained a NULL. - - Fixed a bug in find_max_factor_graph_viterbi() which occurred when a - zero order model had negative factor values. - -Other: - - - - - - -New Features: - - Two new routines for performing MAP inference in factor graphs: - - For chain-structured graphs: find_max_factor_graph_viterbi() - - For general graphs: find_max_factor_graph_nmplp() - - Image Processing - - Added more tools for creating image pyramids. See pyramid_down_5_4, - pyramid_down_4_3, and pyramid_down_3_2. - - Added more image filtering and morphology functions. - - Added a set of tools for creating sliding window classifiers: - - Added the scan_image() routine. It is a tool for sliding a set of - rectangles over an image space and finding the locations where the sum - of pixels in the rectangles exceeds a threshold. Also added - scan_image_pyramid, which is a tool for running scan_image() over an - image pyramid. - - Added the structural_object_detection_trainer. This is a tool which - formulates the sliding window classifier learning problem as an - instance of structural SVM learning. - - Added a variety of supporting tools and two object detection example - programs. - - Added the following functions for computing statistics on vectors: - mean_sign_agreement(), correlation(), covariance(), r_squared(), - and mean_squared_error() - - Added a C++ wrapper for SQLite (see the new database and statement objects) - -Non-Backwards Compatible Changes: - - Changed the interface to the ridge regression trainer objects so that they - report the entire set of leave-one-out prediction values rather than a - summary statistic like mean squared error. - - Changed the serialization routine for bgr_pixels to store the pixels in BGR - order rather than RGB. - - Changed the interface for the spatially_filter_image() routine to take the - filter as a matrix rather than C-array. Also, now it won't force signed pixel - values to 0 if they go negative. - - Changed the test_regression_function() and cross_validate_regression_trainer() - routines so they return both the MSE and R-squared values rather than just the - MSE. - - Changed suppress_non_maximum_edges() to use the L2 norm instead of L1 norm - for measuring the strength of an edge since this produces a slightly better - result. - -Bug fixes: - - The image_display didn't display overlay rectangles quite right. If you zoomed - in you could see that some of the pixels which are inside the rectangle were - outside the overlay. Specifically, the right column and bottom row was outside - the overlay rectangle. This has been fixed. Now all pixels which are supposed - to be part of a rectangle are drawn as being inside the overlay rectangle. - - Fixed a bug pointed out by Martin Müllenhaupt which caused the windows socket - code to not compile when used with the mingw-cross-env project. - - Fixed a bug in the png_loader. If you loaded an image with an alpha channel - into something without an alpha channel there were uninitialized values being - alpha blended into the image. - - Fixed a bug in the cpp_tokenizer that only shows up on newer versions of gcc. - It wasn't tokenizing double quoted strings right. - - Fixed a bug in spatially_filter_image() which showed up when using non-square - filters. The bug would cause the edges of the output image to be incorrect. - - Fixed a bug in the matrix class. Expressions of the form mat *= mat(0) would - evaluate incorrectly because the *= operator took the right hand side by reference - and thus experienced an aliasing problem. The other op= operators had similar - problems and have also been fixed. - - Fixed a bug pointed out by Justin Solomon which could cause the svr_trainer and - svm_c_trainer to produce incorrect results in certain unusual cases. - -Other: - - Added a more complete set of methods for converting between image space and - the downsampled hog grid used by hog_image. Now you can convert from image - to hog in addition to hog to image. - - Made the integral_image more general by making it templated on the type of - scalar used to store the sums. - - - - - - -New Features: - - Added the check_sub_option() method to the command line parser check - object. - - Added match_endings to the dir_nav utils. - - Added a set_current_dir() function. - - Added the distance_to_rect_edge() routine. - - Added support for user drawn rectangle overlays and selectable overlays - to the image_display widget. - -Non-Backwards Compatible Changes: - -Bug fixes: - - Fixed a bug in the image_display widget. If you switched it between - images of a different size while any kind of zoom was in effect - it could cause a segmentation fault. - -Other: - - - - - - -New Features: - - You can now add tasks to a thread_pool by value, using the new - add_task_by_value() method. - -Non-Backwards Compatible Changes: - -Bug fixes: - - Fixed a bug which caused multiply defined symbol errors during linking - if the PNG saving routine was #included. - -Other: - - Optimized the threaded and distributed structural svm solvers for the - case where there are many data samples and the separation oracle is - quick to evaluate. - - - - - - -New Features: - - Added a function for saving to the PNG image format. - - Added Austin Appleby's excellent MurmurHash3 hashing code and setup some - additional convenience functions. These functions are murmur_hash3() and - various overloads of hash(). - -Non-Backwards Compatible Changes: - - Made get_pixel_intensity() more efficient. However, the value returned - is slightly different than it used to be for RGB pixel types. - -Bug fixes: - - Setup proper error handling for libpng in the png_loader. Now if the PNG - file is corrupted in the middle it won't just print a message and abort - the program. - - Fixed a bug in assign_pixel_intensity() that happened when the target pixel - was an RGB pixel with an alpha channel. - -Other: - - Added a Frequently Asked Questions page - - Changed the array2d object so you don't have to say array2d<type>::kernel_1a - anymore to declare it. Now you just say array2d<type>. - - - - - - -New Features: - - Added tools for distributing the work involved in solving a structured - SVM problem over many computers and CPUs. - - Added the bridge. It allows a dlib::pipe to be used for networked - communication. - -Non-Backwards Compatible Changes: - - Removed the DLIB_REVISION macro and replaced it with DLIB_MAJOR_VERSION and - DLIB_MINOR_VERSION. - -Bug fixes: - -Other: - - dlib's version control system has switched from Subversion to Mercurial. - - - - - - -New Features: - - Added the max_sum_submatrix() function to the optimization tools. - - Upgraded the pyramid_down function object so it can create color pyramids. - Also, added some functions which define the coordinate transforms between - different layers in an image pyramid. - -Non-Backwards Compatible Changes: - - Changed the oca_problem interface to the oca optimizer. Now the - optimization_status() function reports back the current risk and risk gap - in addition to the overall objective value and objective gap. - - Changed the stopping condition for the structured svm to the one suggested - by the Joachims paper. Now it stops when the risk gap is below a user - supplied epsilon. - -Bug fixes: - -Other: - - Various usability improvements. - - Improved the feature vector caching in the structural_svm_problem object. - - Some objects were setup as multi-implementation objects but only had one - implementation. I went through dlib and switched these to single implementation - objects. So for example, to use the dlib crc32 module you used to declare an - object of type "crc32::kernel_1a" but now you can just say "crc32". Note that - I did this change in a way that maintains backwards compatibility with previous - versions. So crc32::kernel_1a is still allowed but that form is officially - deprecated. The modified objects are as follows: - - base64 - - byte_orderer - - config_reader - - crc32 - - pipe - - rand - - - - - - -New Features: - - Added a multiclass support vector machine. - - Added a tool for solving the optimization problem associated with - structural support vector machines. - - Added new functions for dealing with sparse vectors: add_to(), - subtract_from(), max_index_plus_one(), fix_nonzero_indexing(), a - more flexible dot(), and I renamed assign_dense_to_sparse() to assign() - and made it more flexible. - -Non-Backwards Compatible Changes: - - Renamed max_index_value_plus_one() (a function for working with graphs) to - max_index_plus_one() so that it uses the same name as the essentially - identical function for working with sparse vectors. - - I simplified the cross_validate_multiclass_trainer(), cross_validate_trainer(), - test_binary_decision_function(), and test_multiclass_decision_function() - routines. They now always return double matrices regardless of any other - consideration. This only breaks previous code if you had been assigning - the result into a float or long double matrix. - - Renamed assign_dense_to_sparse() to assign() - -Bug fixes: - - Fixed a bug in load_libsvm_formatted_data(). I had forgotten to clear the - contents of the labels output vector before adding the loaded label data. - - Fixed a bug in the kernel_matrix() function. It didn't compile when used - with sparse samples which were of type std::vector<std::pair<> >. - Moreover, some of the trainers have a dependency on kernel_matrix() so this - fix makes those trainers also work with this kind of sparse sample. - -Other: - - Added a value_type typedef to matrix_exp so it's easier to write templates - which operate on STL containers and matrix objects. - - - - - -New Features: - - Added an implementation of the Hungarian algorithm for solving the optimal - assignment problem (in the new max_cost_assignment() routine). - -Non-Backwards Compatible Changes: - -Bug fixes: - - Fixed a problem which prevented the any_function unit test from compiling - in visual studio 2008. - -Other: - - Changed the oca optimizer so that it warm starts the QP subproblem - rather than resolving it from scratch during each iteration. This - improves the speed and stability of the algorithm. - - - - - -New Features: - - Added the rr_trainer. It is a version of krr_trainer which is optimized - for use with the linear_kernel. - - Added the approximate_distance_function() routine. It is the core optimizer - behind the reduced2() trainer adapter. - - Added an any_function which supports the same functionality as std::function - from the upcoming C++0x standard. I added this so dlib can be modified to - easily support lambda functions while still being compilable with compilers - which don't support the new std::function. - - Added overloads of all the GUI event handlers so you can use general functions - as callbacks (via any_function). This way, if you have a C++0x compiler, you - can use lambda functions with the event handlers. - - Added the split() function for splitting up strings. - -Non-Backwards Compatible Changes: - - Improved the distance_function object by turning it into a properly - encapsulated class rather than just a simple struct. I also added - overloaded +, -, *, and / operators for this object so you can do the - kind of arithmetic you would expect on an object which represents a - point in a vector space. This breaks backwards compatibility with - the previous interface though as the member variables are now private. - -Bug fixes: - - Fixed a compile-time error in the kernel_matrix(). - - Fixed a bug in an assert in the spatially_filter_image() function. - - Applied a patch from Nils Labugt which fixes a runtime bug in the gui_core - component. The bug caused a crash when using X11 and Ubuntu 10.10 in - certain cases. - - Updated code so that it compiles with the clang compiler. - -Other: - - Updated the image_display widget so you can zoom in and out using the - mouse wheel. - - - - - -New Features: - - 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. - - - - - -New Features: - - 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. - - - - - - -New Features: - - 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. - - - - - - -New Features: - - 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. - - - - - - -New Features: - -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: - - - - - - -New Features: - - 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 its 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. - - - - - -New Features: - - 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. - - - - - - -New Features: - - 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. - - - - - - -New Features: - - 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 - - - - - - -New Features: - - 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." - - - - - - - -New Features: - - 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. - - - - - - -New Features: - - 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. - - - - - - -New Features: - - 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: - - - - - - -New Features: - - 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. - - - - - - -New Features: - - 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: - - - - - - -New Features: - - 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. - - - - - -New Features: - - 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 - - - - - - -New Features: - - 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. - - - - - - -New Features: - - Matrix related - - Added the find_min_and_max(), index_of_min(), index_of_max(), trace(), - randm(), linspace(), logspace(), and cartesian_product() functions. - - Machine learning related - - Added the offset_kernel - - Added some functions to the kcentroid to allow the user to compute - the inner_product of kcentroids as well as a few other useful things. - - Added a kernelized version of the Pegasos SVM training algorithm. - -Non-Backwards Compatible Changes: - - Changed the range() function so that it returns row vectors - instead of column vectors. - -Bug fixes: - - Changed threading code to avoid a potential race condition during - program termination. - - Fixed a few incorrect DLIB_ASSERT statements - - Fixed a bug in the way Content-type was handled in HTTP posts. - - Fixed a bug in subm() that showed up when statically dimensioned row - vectors were used to select a sub matrix. - -Other: - - Added some functions to the rectangle to make it easy - to get the corner points. - - The cross validation functions no longer allow invalid_svm_nu_error - exceptions to escape. Instead, they are assigned low CV scores. - - Made std_vector_c able to copy directly from std::vector objects. - - Added a get_socket_descriptor() function to the connection class. - - - - - - -New Features: - - Matrix related - - Added QR, LU, Cholesky, and eigenvalue decomposition class objects - - Added overloads for rowm() and colm() that allow you to pick out - less than an entire vector - - Added the lowerm() and upperm() functions - - Added the const_temp_matrix class - -Non-Backwards Compatible Changes: - - Renamed the cholesky_decomposition() function to chol() - -Bug fixes: - - Fixed some errors in the requirements for calling the new rowm() and - colm() functions. - - Fixed dlib::abs() so that it returns the right type when used - with complex matrices. - - Fixed a race condition in the logger object. It was missing a needed call - to unregister_thread_end_handler(). What could happen in some scenarios is, - during program termination, a global part of the logger object could be destructed - when it still had outstanding thread end handlers registered to it. - -Other: - - Added an example program that shows how to use the optimization - functions. - - Gave the matrix object the ability to factor expressions containing - trans() function calls into more efficient forms. - - Generally cleaned up the matrix code - - - - - -New Features: - - Added the multi-line text_box GUI widget. - - Added the type_safe_union object - -Non-Backwards Compatible Changes: - - Renamed the array::expand() function to array::resize() since it does - basically the same thing as std::vector::resize() and more than one - user has told me they found the name "expand" to be confusing. - -Bug fixes: - -Other: - - Added an example showing how to use the type_safe_union and pipe - together. - - Added a page to the documentation that discusses the dlib coding - standards and how to contribute to the project. - - - - - -New Features: - - Added the bound_function_pointer object. - - Added support for futures to the thread_pool object. - - Added a set of objects that makes it possible to create simulations - of quantum computing algorithms. - - Added copy and paste support to the text_field. - - matrix object stuff - - Added the range() function as well as overloads of all the various - sub-matrix selection functions so that you can pick out slices of - matrices like in Matlab. - - Added a new template argument to the matrix object that allows the - user to select the memory layout. Also added a row_major_layout - and column_major_layout. - - The matrix object can now be initialized using a comma separated - list of values. - -Non-Backwards Compatible Changes: - - Changed the fatal_error exception class so that it aborts your program - and prints a message if you try to construct it more than once since - doing so indicates that you ignored the first fatal error. - - The way matrix expressions work in the library has been changed - since the last release. So if you created custom matrix expressions - then they will need to be updated to use the new matrix expression stuff. - -Bug fixes: - - Fixed a minor bug in how the zoomable_region widget drew itself after - a resize in some cases. - - Fixed a problem with draw_line where it didn't always redraw the line - properly. - -Other: - - A lot of the matrix code has been refactored and optimized. The matrix - object will now introduce temporary objects when doing so results in - better performance. I also added a simple system for binding - arbitrary matrix expressions to optimized BLAS routines. - - Cleaned up the vector and point classes. Now there is only one class, - the vector class, and it is capable of representing everything the old - vector and point class could. I also added code to make sure the - vector class does the appropriate type promotions when vector objects - with different types are used together. - - Made the vector class inherit from matrix - - - - - -New Features: - - Added user settable styles to most of the gui widgets - - Added the diagm(), svd2() and svd3() matrix functions - - Added the thread_pool object - -Non-Backwards Compatible Changes: - - Removed the arrow_button widget and moved its functionality into the - button widget. - - Renamed the dragable class to draggable - - Removed the confusing and unnecessary hidden bool argument to the - gui widget style drawing functions. - - Changed some of the events that are about the mouse leaving a widget so - that they still trigger even if the widget has been disabled or hidden. - -Bug fixes: - - Added some missing mutex locks to the scroll_bar widget - - Fixed a bug in the fill_gradient_rounded() function. It didn't always - draw the entire rectangle. - - Fixed a compile time bug in the pinv() function. It didn't compile - when used on statically sized matrices when they weren't square. - -Other: - - The member_function_pointer object now never calls new or delete. - So it is safe to use in a real time environment. - - - - - - -New Features: - - Added the sort_columns() and rsort_columns() functions - - Added the vector_normalizer object - - Added the normalized_function object. - - Added a tensor_product() function for the matrix object. - -Non-Backwards Compatible Changes: - -Bug fixes: - - Made it so that the gui event handler thread isn't created at all - unless some part of an application calls some of the gui_core code. - In the previous release the event handler thread was executed - briefly during program termination and could cause problems if no - windowing environment was available. - - Fixed an #include statement in the matrix utilities so that it works - even if you don't specify an include path argument to your compiler. - -Other: - - - - - - -New Features: - - Added a thread safe shared pointer object - - Added the popup_menu_region widget. - -Non-Backwards Compatible Changes: - - The on_wheel_up() and on_wheel_down() gui events now take an unsigned long - argument. - - Removed the register_program_ending_handler() function from the threading - API and also changed the dlib thread pool so that it no longer causes - a terminating program to wait for any outstanding threads to finish - before allowing the application to end. - - Changed the serialization format of the linearly_independent_subset_finder - class. - - Changed all the font pointers in the gui API's interfaces - to shared_ptr_thread_safe objects. - -Bug fixes: - - Made the kkmeans class actually use the min_change parameter. - - Fixed a bug in the linearly_independent_subset_finder object. Also - added a way to set a minimum tolerance. - - Fixed a bug in the scrollable_region widget that caused it to scroll in an - unpleasant way when the horizontal and vertical scroll increments weren't - set to the same value. - - Made one of the arguments to font::draw_string() not be a reference because - some versions of gcc don't end up doing the right thing when -O3 is - supplied. - - Fixed a bug in the covariance() function that prevented it from compiling - sometimes. - -Other: - - Changed the gui core code around so that it should be safe to make window - objects at the global scope. - - Added more control over how the scrollable_region scrolls its region. - You can now adjust how much it scrolls when the mouse wheel is scrolled - as well as enabling scrolling via a mouse drag. - - Modified the library so that it compiles with the Intel compiler. - - Added some example programs that use the relevance vector machine - - - - - - -New Features: - -Non-Backwards Compatible Changes: - -Bug fixes: - - Fixed a bug in the tooltip widget - - Fixed the cmake option to toggle the ENABLE_ASSERTS macro - - Fixed some bugs in the rvm - - Fixed the serialization code for the kkmeans object so that it actually - works - - Fixed a bug that can trigger when the thread_specific_data object is - destructed - - Fixed a bug in the directory navigation gui. If you tried to go - into a drive on windows that wasn't mounted you got an error. - This is now fixed. - -Other: - - Made the dir_nav stuff work with std::vector and dlib::std_vector_c - as well as dlib::queue objects. - - Generally cleaned up a bunch of things - - - - - - -New Features: - - Added relevance vector machine regression and classification support. - - Added the cross_validate_trainer_threaded() function - - Added the length and length_squared matrix functions. - -Non-Backwards Compatible Changes: - -Bug fixes: - - Changed gui code a little so that windows don't popup in funny - places when used with the cygwin X windows system. - -Other: - - Made it easier to use the scoped_ptr with the TCP connection object - - Optimized the matrix object a little - - - - - - -New Features: - - Machine Learning - - Added the ability to compare kcentroid objects to each other - - Added the rank_features() function - - Added the distance_function object - - Added the reduced_decision_function_trainer object and - reduced() function - - Added the reduced_decision_function_trainer2 object and - reduced2() function - - Added a radial basis function network trainer - - Added the linearly_independent_subset_finder object - - Added the sigmoid_kernel - - Matrix Utilities - - Added the inv_upper_triangular() and inv_upper_triangular() - functions. - -Non-Backwards Compatible Changes: - - Refactored a bunch of the kernel learning code into a much cleaner form. - But this does change the interface to all the training functions. - -Bug fixes: - - Fixed a bug in the min and max calculation in the running_stats object - - Removed a bug in the sum() and variance() functions that - caused them to seg fault when they were used on certain - matrix of matrix objects. - - Added a missing check for division by zero to the conjugate gradient - optimization functions. - - Added some missing member variables to the .swap and serialization - functions for the kcentroid object. So now they should work right. - -Other: - - Added an option to the cmake file to toggle the DLIB_ASSERT macro - - Added an option to the cmake file to toggle the dlib stack trace macros - - Made the library compile in Cygwin - - - - - - -New Features: - - Merged in Keita Mochizuki's unicode patches to the GUI components. So - the dlib GUI now has better unicode support. - - Added the remove_row and remove_col matrix functions. Also made all - three of the above functions capable of taking arguments at run time - as well as compile time. - - Added the ability to cap the number of dictionary vectors used by the krls - and kcentroid object at a user specified number. - - Added the pick_initial_centers() function - - Added the running_stats object - -Non-Backwards Compatible Changes: - - Changed the interface to the krls and kcentroid objects somewhat. - - All of the style objects in the GUI part of the library now use - dlib::ustring instead of std::string. This only matters to you if - you have made your own style objects. - - Changed the serialization format of the krls, kcentroid, and - directed_graph_drawer objects. Note that is also means that the - files saved by previous versions of the bayes_net_gui_ex program - won't load with the current version. - -Bug fixes: - - Fixed an aliasing bug in the set_subm(), set_rowm(), and set_colm() - functions. It was possible that you could get incorrect results - if you used these functions to copy one part of a matrix to another - part of the same matrix if the two areas overlapped. - - Fixed a minor numerical error in the krls code so now it gets slightly - better results. - -Other: - - Made the types generated by the matrix operations a lot shorter. This - avoids some compiler warnings from visual studio and even some potential - internal compiler errors in some instances. - - - - - - -New Features: - - Added some macros that allow dlib to create a stack trace - - Added the wrap_function and is_function templates. - - Added two new events to the text_field object. One for detecting when the - user hits enter and another for detecting when input focus is lost. - - Machine Learning - - Added a kernel based centroid estimator/novelty detector - - Added a kernel based k-means clustering algorithm - - Numerical - - Added an identity_matrix() function that can take a runtime defined size. - - Added a bunch of unconstrained optimization stuff to the library. - It now has a conjugate gradient optimization algorithm as well as - a quasi-newton algorithm. - - Added the set_subm, set_rowm, and set_colm functions. - -Non-Backwards Compatible Changes: - - In the krls object: Added a requires clause to the set_tolerance() member - function and renamed clear() to clear_dictionary(). - -Bug fixes: - - Fixed a bug in the requires clause of the subm() function. It was - more restrictive than it should have been. - -Other: - - Added example programs for the krls object as well as the new - kcentroid and kkmeans objects. - - - - - - -New Features: - - Added an implementation of the kernel recursive least squares algorithm - -Non-Backwards Compatible Changes: - - Broke backwards compatibility in the directed_graph_drawer's serialization - format when I fixed the bug below. - -Bug fixes: - - Fixed two bugs in the directed_graph_drawer widget. First, it sometimes - threw a dlib::fatal_error due to a race condition. Second, the color of - the nodes wasn't being serialized when save_graph() was called. - - Made vector_to_matrix() work for std::vector objects that have non-default - allocators. - -Other: - - Added some stuff to make people get a really obvious error message - when they set up the include path incorrectly. - - - - - - -New Features: - - Added the vector_to_matrix() function. - - Added a cholesky_decomposition() function. - - Added the toggle_button GUI widget - - Added a default toggle button style as well as check box and - radio button styles. - - Added a single click event to list_box - - Added a save_file_box() and open_existing_file_box() function. - -Non-Backwards Compatible Changes: - - Changed the check_box and radio_button widgets to be specializations of - the new toggle_button object. This is a nearly backwards compatible - change except that the events registered to check_box and radio_button - clicks must now take the form void event(toggle_button&) or - void event(void) instead of the previous void event(check_box&) and - void event(radio_button&). - - Removed the is_mouse_over bool from the button_style::draw_button() - function. - -Bug fixes: - - Fixed a compiler error in mingw. - - Changed the preprocessor checks for the wchar_t overload of - is_built_in_scalar_type so that it works properly with visual studio. - -Other: - - Added a Bayesian Network GUI that allows you to create a network - and serialize it to disk. - - - - - -New Features: - - GUI Related - - Added the scrollable_region widget - - Added the text_grid widget - - Added an event to the text_field so you can tell when the - user modifies it. - - Added the fit_to_contents() function to the tabbed_display - widget. - - Bayesian Network Related - - Added the node_first_parent_assignment(), node_next_parent_assignment(), - and node_cpt_filled_out() functions. - -Non-Backwards Compatible Changes: - - Reverted the change in 17.0 where I made drawable::lastx and - drawable::lasty not match the current location of the mouse inside - the on_mouse_move() event. I changed this back to how it was before, - so now lastx and lasty represent the most current record of where - the mouse is in *all* events. - - Changed the functions that control text color in the label and text_field - widgets to use rgb_pixel objects. Also added a function to set the - background color of a text_field. - -Bug fixes: - - Fixed a bug in the bayesian_network_join_tree object that caused it to - compute incorrect results for some networks. - - GUI Related - - Fixed a minor bug in the cursor drawing of the text_field - gui widget. - - Fixed a bug in the compute_cursor_rect() function. It would return an - incorrectly positioned rectangle for 0 length strings. - - Changed the way wchar_t is handled in the serialize.h file. Now - everything should compile correctly in visual studio regardless of how - you set the /Zc:wchar_t compiler option. - - Fixed a bug in the menu_bar widget. One of the members wasn't being - initialized when it needed to be. - - Fixed a bug in the tabbed_display where it didn't redraw itself - correctly after it was moved by set_pos() - -Other: - - Changed the xml parser so that it counts line numbers - from the start of the input stream instead of from the - root tag. - - Changed the xml parser so that you will only get the fatal_error - event once if it occurs. - - - - - -New Features: - - Added a zoomable_region widget - - Added a directed_graph_drawer widget - -Non-Backwards Compatible Changes: - - Changed the first_pixel argument of the draw_string() function - to be a rectangle like all the other draw functions now use. - -Bug fixes: - - Fixed a bug in the tooltip widget that was triggered when calling - its member functions without calling set_tooltip_text(). This also - fixed a bug in the button object that triggered when calling some button - functions that referenced the tooltip widget. - - Fixed a problem in the draw_circle and draw_solid_circle functions. - They didn't draw themselves quite correctly in all cases. - -Other: - - - - - -New Features: - - Added a png_loader object - - GUI related - - Added a popup_menu widget - - Added a menu_bar widget - - Added a tooltip widget - - Added a user selectable style to the gui button. - - Added the draw_rounded_rectangle() and fill_gradient_rounded() functions - - Added the mouse_over_event object to the base_widgets and made the - button_action inherit from it. - - Added the drawable::next_free_user_event_number() function - - matrix and geometry: - - Added a size() function to matrix_exp and matrix_ref objects. - - Added a class that represents 2D points - - Added the following matrix functions: - - squared(), cubed(), get_rect(), a subm() function that takes - rectangles, and normalize() - - Added the following rectangle functions: - - area(), centered_rect(), translate_rect(), move_rect(), resize_rect(), - resize_rect_height(), resize_rect_width(), and nearest_point() - -Non-Backwards Compatible Changes: - - Renamed atom() to array_to_matrix() - - Moved the rectangle object from the gui_core into a new geometry folder - (only matters if you were directly including the rectangle file) - - Moved the vector object into the geometry folder. Also removed the kernel_1a - stuff. So there is now only one possible vector implementation. - - Changed the default position for a rectangle to (0,0) instead of (1,1) - - Added edge data to the directed_graph. This breaks backwards compatibility - with the previous serialization format for directed_graphs. - - GUI related: - - Changed the base_window::on_keydown event signature so that it now - reports more keyboard modifier keys (e.g. alt) - - Made the functions for drawing on canvas objects take points and pixels - instead of just a bunch of integers. Also changed the order of the - arguments so that the canvas comes first, followed by the location - to draw on, then what to draw. - - Moved the canvas drawing functions into the gui_widgets/canvas_drawing.h - file. - - Modified the drawable_window so that the drawable::lastx and drawable::lasty - fields are updated after calls to on_mouse_move. This way the x and y that - go into the on_mouse_move actually tell you something. - -Bug fixes: - - Fixed a bug in the floating point serialization code. It - didn't handle NaN or infinities correctly. - - Fixed a bug in the win32 version of the gui_core component. It was - possible that calling set_size(), set_pos(), or set_title() could cause - the program to deadlock. - - Made the load_bmp() function more robust in the face of weirdly - written BMP files. - - Modified the draw_circle() and draw_solid_circle() functions so that they - only touch each canvas pixel once. This avoids messing up alpha blending - if an rgb_alpha_pixel is used. - -Other: - - Removed the old win32 only gui code in the dlib/gui folder. - - Changed the default GUI font to a nicer Sans Serif font - - - - - -New Features: - - Added another constructor to the thread_function object. - Now it can take proper function objects as well as normal function - pointers. - - Added the probabilistic_decision_function object and svm_nu_train_prob() - function. - -Non-Backwards Compatible Changes: - - Changed the svm train functions so that the cache_size argument - now measures the max number of megabytes of memory to use rather - than number of kernel matrix rows to cache. It's default - value is now 200MB. - - changed the type typedef in the SVM kernel function objects to - be named sample_type instead of type. - -Bug fixes: - - Fixed a bug in the trim, rtrim, and ltrim functions. They - didn't return empty strings when the input string contained all - trim characters. - - Fixed a bug in the decision_function's copy constructor - -Other: - - Added an optimization to the working set selection for the svm training code. - Now the algorithm will prefer to select indices that are in the kernel - matrix cache when possible. - - Fixed a problem with the chm documentation file where many of the links - didn't work. - - Made the support vector functions capable of operating with floats, doubles, - and long doubles instead of just the double type. - - - - - -New Features: - - Added aversion of the draw_line() function for images. - - Added the atom(), rowm(), colm(), and subm() matrix functions. - - Added some push/pop_back() functions to the array object that are similar - to the ones in the std::vector. - - Added the std_vector_c class that wraps std::vector and checks its - function's preconditions. - - Added the polynomial_kernel object for use with the svm algorithm. - -Non-Backwards Compatible Changes: - - Changed the svm_nu_cross_validate() function to return a vector - of both the +1 and -1 cross validation accuracies. - -Bug fixes: - - Fixed a bug in the list_box that caused it to not hide itself properly - when told to do so. - - Fixed canvas::fill() gui function so that it should work right - on 64 bit platforms. - -Other: - - - - - -New Features: - - Added memory manager support to the matrix object. - -Non-Backwards Compatible Changes: - - Made the assign_pixel() function saturate grayscale values bigger - than the target pixel type can handle. Previously it would just - truncate the numbers. - - Removed rand_kernel_1 and rand_kernel_2 because they gave very - inferior results compared to rand_kernel_3. I then renamed - rand_kernel_3 to rand_kernel_1. - - Renamed rand::get_random_number() to get_random_8bit_number() and also - added a get_random_16bit_number() and get_random_32bit_number() - - Added a checksum to compress_stream_kernel_1 and kernel_2. This - breaks backwards compatibility with the previous versions. That is, - the new implementations will complain that decompression fails if - you give them data compressed with the old non-checksum version of - the compression routines. - - Removed the width() and height() functions from the array2d object. - Now only the equivalent nc() and nr() member functions remain. - - Changed array2d::set_size(width,height) to set_size(num_rows, num_cols). - That is, I switched the order of the two arguments to this function. - The reason for doing this is to make it have the same form as the - set_size() member of the matrix object. This way the usage of the - set_size() member for these two very similar data structures is - the same. Hopefully this will reduce confusion rather than - make things worse. - -Bug fixes: - - Fixed a bug in the image_widget. It didn't repaint the screen - all the way if you gave it a smaller image to display. - - Fixed a bug in the cat() function that caused the state of the queue - to be broken if you called cat with an empty queue. - - Made the queue_sort_1 use a better sorting algorithm. In particular, it - will not sort slowly for nearly sorted data. - - Fixed a bug in the queue_kernel_2 object that caused it to not work - correctly with the non-default memory managers. - -Other: - - Added example code for the member_function_pointer as well as the matrix - object. - - Added some more regression tests and made some of the longer running - ones execute a lot quicker. - - Made the unit test suite easier to use. Now tests just throw an exception - to indicate an error rather than returning an error code. - - Added an example program for the multi-layer perceptron neural network. - - - - -New Features: - - Added the is_signed_type and is_unsigned_type templates - - Image Processing stuff - - Added the assign_all_pixels() function - - Added the assign_border_pixels() function - - Added the assign_pixel_intensity() function - - Added the auto_threshold_image() function - - Added the binary_union() function - - Added the edge_orientation() function - - Added the get_histogram() function - - Added the get_pixel_intensity() function - - Added the hysteresis_threshold() function - - Added the sobel_edge_detector() function - - Added the suppress_non_maximum_edges() function - - Added the zero_border_pixels() function - - Changed the pixel_traits structure so that it can support 8, 16, and 32 - bit grayscale pixels. - -Non-Backwards Compatible Changes: - - Added more fields to the pixel_traits template so if you had defined your - own pixel types you will need to update them. - -Bug fixes: - - Fixed some compiler errors in Visual Studio 2008 - -Other: - - Generally tried to clean up the documentation and code in this release - - - - - - -New Features: - - Added the randomize_samples() function - - Added the set_main_font() and main_font() functions to the drawable object. - So now the drawable widgets can use a user provided font. - -Non-Backwards Compatible Changes: - - Made the named_rectangle object a little easier to use. It now won't - let you size it so small that it doesn't display its entire name. - -Bug fixes: - - Fixed a bug in the svm_nu_train() function that caused a crash with - some inputs. - - Fixed a compile time error that occurred when compiling the bayesian - network code in Mac OS X. - - Fixed a bug in the compute_cursor_pos() function where it would - return the incorrect value. - -Other: - - Added an example showing how to use the svm functions. - - - - - - -New Features: - - Added the left_substr() and right_substr() functions - - Added the zero_extend_cast() function - - Added the unsigned_type template - - Added the uint8 typedef - - Bayesian Network related - - Added the assignment object - - Added the bayes_node object - - Added the joint_probability_table object - - Added the conditional_probability_table object - - Added the bayesian_network_gibbs_sampler object - This object implements an algorithm that performs approximate inference - in a Bayesian Network. - - Added the bayesian_network_join_tree object - This object implements an algorithm that performs exact inference - in a Bayesian Network. - - Set related - - Added the set_intersection_size() function - - Added the set_union() function - - Added the set_intersection() function - - Added the set_difference() function - - Graph related - - Added the graph object - - Added the is_graph template - - Added the is_directed_graph template - - Added the create_moral_graph() function - - Added the triangulate_graph_and_find_cliques() function - - Added the graph_contains_length_one_cycle() function - - Added the find_connected_nodes() function - - Added the graph_is_connected() function - - Added the is_clique() function - - Added the is_maximal_clique() function - - Added the copy_graph_structure() function - - Added the create_join_tree() function - - Added the is_join_tree() function - - Added the edge() function - - GUI related - - Added the base_window::get_display_size() function - - Added message_box_blocking() - - Added the bdf_font object which is capable of loading BDF font files into - the font object used by the gui_widgets - - Better Unicode support - - Added the basic_utf8_ifstream: An input stream that can read UTF-8 files - - Added serialization support for wchar_t and std::wstring - - Added the is_combining_char() function - - Added the convert_utf8_to_utf32() function - - Modified most of the string manipulation functions in dlib/string.h - to work with any kind of character type - - The gui widgets' font object now works with Unicode text (i.e. wchar_t - and unichar strings) as well as with normal char data. - -Non-Backwards Compatible Changes: - - The dlib/all_console.cpp and dlib/all_gui.cpp files have been deprecated - in favor of a new file. Now to build with dlib you simply add - dlib/all/source.cpp to your project regardless of what type of project - you are building. - - The GUI program entry point, winmain(), has been removed. You can now use - the normal main() entry point or some other non-standard entry point - provided by your compiler. - - Renamed directed_graph::node::item to directed_graph::node::data - -Bug fixes: - - Fixed some build issues in gcc 4.2 involving some uses of the std_allocator - - Fixed some build issues in Visual Studio involving the dir_nav component - and building with NO_MAKEFILE #defined. - - Moved the #define that disables the old WinSock API into the sockets cpp - file. This should avoid conflicts with people who are using the old WinSock - API. - - Changed the tuple template slightly to avoid a bug in Visual Studio 7.1 - that caused a compile time error in some instances. - -Other: - - - - - - -New Features: - - Added a destroy() function to the map, set, hash_map, and hash_set objects. - - Added the tuple object - - Added an overload of connect() that has a timeout - - Added rand_kernel_3 as a random number generator that uses the Mersenne Twister - algorithm. - - Added the directed_graph object - - Added the graph_contains_undirected_cycle() and graph_contains_directed_cycle() - functions. - - Added the std_allocator object. It is a STL style allocator that can use - the dlib memory manager objects. - - std::string manipulation functions: - - Added the cast_to_string() function. - - Added the tolower() function - - Added the toupper() function - - Added the ltrim() function - - Added the rtrim() function - - Added the trim() function - - Added the lpad() function - - Added the rpad() function - - Added the pad() function - -Non-Backwards Compatible Changes: - - Changed the default logging level from LNONE to LERROR - - Renamed the ASSERT macro to DLIB_ASSERT and CASSERT to DLIB_CASSERT. - This rename avoids a conflict with a macro inside MFC. - - Changed the logger so that settings are inherited when a new logger - is instantiated rather than just having the new logger use the - default settings. - - Removed the logger::clear() function since it no longer really - makes sense given the above change. - - Removed the get_main_thread_id() function and replaced it with the - is_dlib_thread() function. - -Bug fixes: - - Pushed some things into cpp files because doing so avoids build and/or - runtime errors on some platforms. - -Other: - - Changed the string_cast() function so that it will recognize the words true - and false as boolean values. Also improved the error message inside the - string_cast_error exception object. - - - - - - -New Features: - - Added the covariance() function - - Added the rgb_alpha_pixel pixel type and modified all relevant functions to - support it. - -Non-Backwards Compatible Changes: - - The GUI changes that are non-backwards compatible: - - The alpha parameter is now an unsigned char instead of unsigned int - and its range is now 0 to 255 instead of 0 to 256. - - The image_widget no longer has any member functions dealing with - alpha values. If you want to use alpha blending you just give it an - image that has an alpha channel. The same goes for draw_image(). - - There are now more fields in the pixel_traits template. So if you were - defining your own pixels before you will need to update your pixel_traits - specializations. - -Bug fixes: - - Made some functions non-inline and put some things on the stack - instead of heap. Doing this avoids some problems with certain - kinds of builds in visual studio. - -Other: - - Modified the message_box() function so that it is safe to call end_program() - from within its callback event. - - - - - - -New Features: - - Modified the GUI drawing functions to take an alpha argument to allow - alpha blending. - - Added the svm_nu_cross_validate() function to perform k-fold - cross validation using the svm_nu_train() function. - - Added the boost enable_if templates - - Added the rand_float extension to the rand object. - - New matrix features: - - Added the pinv() function - - Changed round_zeros() to use the machine epsilon instead of 1e-6 as - its default epsilon. - - Modified the matrix object so that you can declare them with - a static dimension and a dynamic dimension. E.g. matrix<float,0,10> - is now legal and declares a matrix with a fixed number of columns(10) - and a variable number of rows. - - Added the equal() function to compare two matrices of floating - point numbers for near equality. - - Changed the matrix so that operator(long) works for both - column vectors and now also for row vectors. - - Added a set_size() and constructor that takes a single long for use in - sizing row and column vectors. - - Added the scale_columns() function - -Non-Backwards Compatible Changes: - -Bug fixes: - - Fixed an error in svm_nu_train() where it would incorrectly - complain of incorrect nu values for some datasets. - - Added a missing std:: qualifier at two points in the dlib/vector code that - could cause a compiler error in some instances. - -Other: - - Added a term index to the documentation. - - - - - - -New Features: - - Added a nu support vector classifier training function. - - Added a multilayer neural network object. - - Added the "destructive aliasing" checks into the matrix code. Now temporary - matrices are only created during assignment if the right hand side aliases - the left hand side in a destructive way. This removes many of the previous - uses of temporary matrices. - - Made the sum() matrix function be able to sum matrices of matrices - - New matrix functions: - - acos(), asin(), atan(), ceil(), cos(), cosh(), exp(), floor(), log(), - log10(), mean(), norm(), pow(), reciprocal(), round_zeros(), sin(), - sinh(), sqrt(), tan(), tanh(), variance(), and more overloads of - uniform_matrix(). - -Non-Backwards Compatible Changes: - -Bug fixes: - - Added missing nr() and nc() functions to the uniform_matrix() and - identity_matrix() functions. - - Forgot to add a destructor for the dynamically sized matrix resulting in a - memory leak. This is now fixed. - - Fixed various potential compile time errors - -Other: - - - - - - -New Features: - - Added a copy of the boost noncopyable base class. - - added some smart pointers: - - added shared_ptr - - added weak_ptr - - added scoped_ptr - -Non-Backwards Compatible Changes: - -Bug fixes: - -Other: - - Cleaned up the assert code and removed the need for the dlib/error.ccp file - - Made the matrix take better advantage of the compile time sized - dimensions when it can. - - - - - - -New Features: - - Made it so that command line options have a default conversion to bool - and the bool tells you if they are on the command line or not. - - Added an implicit conversion to a scalar to the matrix object - when it is of dimension 1x1. - - Added the thread_function object - - Added a function to compute the singular value decomposition of a matrix. - -Non-Backwards Compatible Changes: - - Added two new arguments to the on_request() function. They allow you to - see what HTTP headers the client sends you and to control which ones - you send back. - -Bug fixes: - -Other: - - - - - - -New Features: - - matrix object additions: - - Added some functions to convert between matrix and pixel objects. - - Added the clamp() function that operates on matrix objects. - - Added the sigmoid function. - - Made the matrix object capable of being sized at runtime in addition - to its original compile time static sizing capability. - - Added 3 and 4 argument versions of pointwise_multiply() - - Added the +=, -=, *= and /= operators to the matrix object. - -Non-Backwards Compatible Changes: - -Bug fixes: - - Fixed the line numbering in the color pretty printer. Wasn't being - done correctly. - - Fixed a bug in the matrix round() function. - - Fixed some miscellaneous compile time errors - - Fixed a bug in the matrix removerc() function. - - Added some missing checks to catch invalid negative index inputs to - matrix objects. - - Fixed a bug in the matrix inv() function. It could sometimes - segfault if used on certain singular matrices - -Other: - - string_cast() can now convert hex strings to integers - - You can now say myarray2d.set_size(0,0) and have it do what - you would naturally expect. - - Added some #pragma statements that tell visual studio - to link the right system libraries automatically. - So now you don't have to add these things in the - project settings anymore. - - - - - - -New Features: - - Added the set_all_logging_levels(), set_all_logging_output_streams() - functions - - Added the configure_loggers_from_file() function which allows you to - easily configure all logger objects using a textual configuration - file. - -Non-Backwards Compatible Changes: - -Bug fixes: - - Added a workaround into the code that avoids a potential compilation - error on Mac OS X systems. - -Other: - - - - - - -New Features: - -Non-Backwards Compatible Changes: - -Bug fixes: - - Fixed a bug in the POSIX version of the hostname_to_ip() function. It was - screwy if you asked for more than the first IP address (the same address - might be returned more than once). - - Fixed a bug in the pipe object's timeout functions. The timeouts weren't - working correctly. - -Other: - - - - - - -New Features: - - Added the wait_for_num_blocked_dequeues(), enable_enqueue(), - disable_enqueue(), and is_enqueue_enabled() functions to the pipe object. - - The pipe object can now be used with a zero length buffer. - -Non-Backwards Compatible Changes: - - There is no longer a pipe::kernel_1a_c typedef since the pipe - no longer has any requirements to check (due to the change of allowing - zero length buffer sizes) - -Bug fixes: - -Other: - - Made the ASSERT and CASSERT macros call dlib_assert_breakpoint() when they - fail. This way you can easily set a breakpoint on them in a debugging - tool by breaking on calls to this new function. - - Fixed some typos and unclear parts of the pipe spec. - - - - - - -New Features: - - Added a thread safe version of the config_reader object (in the form of an - extension to the config_reader) - - Added the wait_until_empty() function to the pipe object. - -Non-Backwards Compatible Changes: - - Removed the connection::close() and listener::close() functions. They have - been replaced by destructors. To upgrade old code all you have to do is - replace statements of the form "object->close();" with "delete object;". - Both statements do exactly the same thing. However, for connection objects, - you should probably be using the close_gracefully() function instead. - -Bug fixes: - - Removed a potential compile time error in the dng image format handling code. - - Fixed a bug in the bigint object. The destructor was using "delete" - when it should have been using "delete []" - - Fixed a resource leak in the POSIX version hostname_to_ip() - - Fixed a significant memory leak in memory_manager_kernel_1 - - Fixed a memory leak that could occur in memory_manager_kernel_2 - and memory_manager_kernel_3 when the constructor for the object - being constructed threw an exception. - - Added a missing delete statement to plug a memory leak - in the md5 computation code. - - Fixed an uninitialized variable warning from valgrind - (in lz77_buffer/lz77_buffer_kernel_2.h). I think this could - also potentially result in an error when decoding data but I'm not totally - sure. But either way it is fixed now. - - Changed a call to memcpy to memmove in the sockstreambuf_kernel_2 - implementation since the copy could potentially be of overlapped memory. - -Other: - - Changed the connection::read() and connection::write() functions to take - longs instead of unsigned longs as the buffer sizes. They also now - return longs instead of ints. This should be a backwards compatible change. - - Started using the valgrind tool to check for memory errors in the project and - found a few things. Very nice tool :) - - - - - - -New Features: - - Added the multithreaded_object extension to the threads API - - Added the load_dng() and save_dng() functions which can load and store - the DNG lossless compressed image format (which I just made up). - -Non-Backwards Compatible Changes: - - Changed the serialization format for bool to use a 1 byte code rather than 2 - bytes. So this breaks compatibility with the old format. - -Bug fixes: - - The serialization for bool didn't always work right. This is now fixed. - -Other: - - - - - - -New Features: - - New faster version of the bigint object (bigint_kernel_2) that uses - the Fast Fourier Transform to perform multiplications. - - The base_window can now be an "undecorated" window. This new type is suitable - for making things like popup menus and the like. - - Added the on_focus_lost() event to the base_window object - - Added the on_focus_gained() event to the base_window object - - Added the on_window_moved() event to the base_window object - - Added the get_pos() function to the base_window object - - Updated the gui_widgets's drawable interface stuff to support the three - new event types and the new window type. - - Added the drawable::draw_rectangle() function - - Added serialization support for std::complex. - - Added the assign_image() function - -Non-Backwards Compatible Changes: - - Removed the color arguments from the drawable_window object's constructor and - added a new boolean argument (if it is an undecorated window or not). This - probably won't break any code but if it does you should get a compiler error - about it. - - Made it so you must disable the events in the destructor for your - drawable gui widgets. Doing so avoids potential race conditions when - destructing drawable objects. - - Made it so that you are required to call close_window() in a window object's - destructor. This avoids a potential race condition. - -Bug fixes: - - Added a workaround for a bug in MinGW that caused the regression test suite - to crash when compiled with -O3. - - Fixed a potential bug in the X Windows version of the gui_core component. - Added an extra XFlush() to end_program() because without it a - program can crash when calling end_program() in certain instances. - - The spec for the pipe object said that objects you enqueue into it - had an "initial value for their type" after the function completes. This - is incorrect, they are swapped into the pipe so they have an undefined - value afterwards. I fixed the spec for the pipe to say this. - - Fixed a bug in the font rendering functions in the gui_widgets - component. It could cause a segmentation fault sometimes. - - Fixed some potential deadlocks in the windows version of the gui_core - component. - - Fixed a bug in the rsignaler object. When you called wait() or - wait_or_timeout() it only unlocked the associated rmutex once (it could be - locked more than once and thus might cause a deadlock since the thread - calling wait() wouldn't actually unlock the mutex in this case). - - Fixed the initialize_array() function in memory_manger_kernel_3 to be - exception safe. Previously if an exception occurred while creating - an array then a resource leak was created. - -Other: - - Changed the package format for the library somewhat. The examples are now - located in their own top level folder. Additionally, the HTML version of the - documentation also comes in the same archive as the source rather than in a - separate download. - - Started using major and minor version numbers rather than just major ones. - - - - - - -New Features: - - Added operator<< and operator>> iostream operators to the vector object. - -Non-Backwards Compatible Changes: - - Changed the xml_parser's document_handler interface: - made empty element tags (<like_this/>) trigger the end_element() callback - and removed the is_empty bool from start_element(). - -Bug fixes: - - Fixed a potential race condition between the destruction of the thread pool - and the "program ending handlers" stuff. - -Other: - - Made the xml parser more robust to different types of new line characters. - - Modified the source slightly so that it works with mingw. - - - - - - -New Features: - - The config_reader is now enumerable. - - Added the image_widget gui object. - - Added nr() and nc() to the array2d object. - - Added the shutdown_connection() function to the iostream extension - to the server object. - - Added the timer_kernel_2 implementation which is a version of the timer object - that is more efficient in its allocation of threads. - - Added the timeout object. - - There is now a CMakeLists.txt file located in the dlib folder. See - dlib/examples/CMakeLists.txt and dlib/test/CMakeLists.txt for examples - that use CMake to build projects using this library. - - Added the register_program_ending_handler() function to the threading API. - -Non-Backwards Compatible Changes: - - Removed the config_reader::get_blocks() function. Use the - new enumerable interface for the config_reader instead. - - The array2d object now uses longs instead of unsigned longs to report - its dimensions and access its elements. - - Added a uint64 to the on_connect() callback in the iostream - extension to the server object. - - timer::set_delay_time() now throws and timer::start() now may throw - std::bad_alloc. - -Bug fixes: - - Fixed a bug in end_program(). In X Windows it might not cause the - program to end right away if it was called from outside the event - handling thread. - - Fixed a bug in the implementation of the timeout part of the - close_gracefully() function. - -Other: - - The library now works on HP-UX - - The regression test suite now has command line arguments that - enable tests to send debug messages to a file. - - - - - - -New Features: - - The http server extension now supports the POST HTTP method. - - The attribute list object in the xml_parser is now enumerable. - - Added the threaded object extension - - Added the uintn.h file which defines fixed sized unsigned integral types. - -Non-Backwards Compatible Changes: - - Renamed the on_get() callback in the http extension to the server object to - on_request() - - Removed the network byte order functions from the sockets api. (They are still - really there though since they come from actual OS header files. But - officially they have been replaced by the byte_orderer component). - - Renamed dlib/uint64.h to dlib/uintn.h - -Bug fixes: - -Other: - - The command line parser will now let you declare long named options with - - characters in them. - - Made it so you can use the COMPILE_TIME_ASSERT macros anywhere rather than - just inside functions. - - - - - - -New Features: - - For dlib::matrix - - Added the tmp() function - - Added optimized specializations of inv() and det() for 1x1, 2x2, 3x3 and - 4x4 matrices. - - Added the removerc() function - - Sockets related - - Added the connect() function - - Added the is_ip_address() function. - - Added the close_gracefully() function - - Added the iostream extension to the server object. - - Added the http extension to the server object. - -Non-Backwards Compatible Changes: - - Changed the cpp_tokenizer to not convert characters to their html form. - -Bug fixes: - - Removed some potential compile time errors. See the change log for details. - -Other: - - Improved the web site - - Added some more example code - - Added more colors to cpp_pretty_printer_kernel_1. - - - - - -New Features: - - std::map is now serializable - - Added the matrix object and a bunch of supporting code. - - Added the list_box graphical widget - - Added the fill_rect_with_vertical_gradient() function to the - drawable interfaces list of drawing helpers. - - Added the open_file_box() function which provides a simple file chooser. - -Non-Backwards Compatible Changes: - -Bug fixes: - - Made timestamper::get_timestamp() be a const function like it should. Fixes - some compile errors. - - Fixed a bug in the font::draw_string() function. It didn't redraw - multi-line strings right. - - Fixed a bug in the scroll_bar object that would cause a compile - error if you tried to call its width() function. - - Fixed a bug in the array_kernel_1 object. It would cause a segmentation fault - when used sometimes. - -Other: - - - - - -New Features: - - Added the following image transformation functions: - - Added the equalize_histogram() function - - Added the spatially_filter_image() function - - Added the threshold_image() function - - Added the binary_dilation() function - - Added the binary_erosion() function - - Added the binary_open() function - - Added the binary_close() function - - Added the binary_intersection() function - - Added the binary_difference() function - - Added the binary_complement() function - - Added the clear(), load_from() and default constructor back into the - config_reader. - - Made the member_function_pointer copyable and also added operator== and != - to it. - -Non-Backwards Compatible Changes: - - Made the vector object templated so you can use types other than double with it. - But now you - have to specify what type you want to use which is slightly different. - - The asc_pair_remover and asc_remover abstract classes now take a third template - argument. I highly doubt this effects any code outside the library but it is - possible. - -Bug fixes: - - Fixed a bug in the base_window::set_size() function. If you specified a size - of (0,0) it caused your program to error out. This has now been fixed. - - Fixed a bug in the scroll_bar widget. - - Fixed a bug in save_bmp(). For some image sizes it would output a goofy - looking skewed image. - -Other: - - Switched everything that used to call operator< directly to instead use - std::less or to take a template argument that provides a compare functor that - defaults to std::less. - - - - - -New Features: - - Added the assign_pixel() function - - Added the hsi pixel type - - Added the save_bmp() function - - Added the static_switch template - -Non-Backwards Compatible Changes: - - Changed how the config_reader works. It now has a more powerful syntax and - improved interface. Converting any old code to use the new version should be - simple since the new file syntax is very nearly backwards compatible with the - old syntax. (i.e. You probably won't have to change anything about your - config files) - - Renamed the dlib/image_loader.h file to dlib/image_io.h since it now includes - the image saver stuff. - - Renamed the pixel struct to rgb_pixel - - Renamed pixel_traits::color to pixel_traits::rgb - - Renamed pixel_traits::scalar to pixel_traits::grayscale - -Bug fixes: - - Fixed a bug in the load_bmp() function. It would load 24bit bmp files - incorrectly. - - Changed the logger so that it won't deadlock if you write something similar to - my_log << LINFO << function_that_also_logs();. Although this is a - dumb thing to do. But even so, it shouldn't deadlock. - - Fixed a potential linking problem with the vector object. - -Other: - - I decided I'm not going to support Borland v5.5.1 anymore. There are just too - many bugs in this compiler. It is very old at this point so I don't see this - being a big deal. - - Made the drawable::draw_image() and load_bmp() functions able to handle images - of any type of pixel. - - Pulled the imaging, algorithmic and metaprogramming stuff out of the - miscellaneous section of the web page and gave them all their own sections. - - - - - -New Features: - - Added a logger header that prints the date and time. - - Added the LTRACE logging level - - Added a buffered implementation of sockstreambuf. - -Non-Backwards Compatible Changes: - - Changed the specs to say that sockstreambuf may be buffered. - sockstreambuf_kernel_1 is still just as it always has been though. So all old - code will still work just as it always has. But all the same, the specs have - been changed and now allow for an implementation that is not 100% backwards - compatible. - - rand_kernel_2 now emits a different string of random numbers. - -Bug fixes: - - Changed the logger object's implementation to not try to register - a thread end handler for the main program thread anymore. This was - technically a bug according to the spec but it actually did end up - working the way it was supposed to. But even so, it shouldn't have - been doing that. - - Changed binary_search_tree_kernel_1 so that it avoids a bug in the version of - gcc on SuSE Enterprise Linux 9. - - Fixed a bug in the rand_kernel_2 implementation. It wasn't giving good - random numbers. - -Other: - - Modified the code so that you don't get any warnings when -Wall is used with - GCC. - - - - - -New Features: - - Added the ASSERT_ARE_SAME_TYPE macro - - Added the is_same_type template - - Added the get_main_thread_id() function to the threading API - - Added the thread_specific_data extension to the threading API - - Added the logger object. - - Added the auto_unlock object to the threading API. - -Non-Backwards Compatible Changes: - -Bug fixes: - -Other: - - Added an example that is specifically about using threads - - Added two examples about using the logger object - - - - - -New Features: - - Added the memory_manager_stateless object and two implementations of it. - - Added the MACOSX macro to dlib/platform.h - - Added a templated version of create_new_thread() that allow you to start - a thread with a member function. - - Added the register_thread_end_handler() function to the threading kernel API. - - Added memory_manager_kernel_3 - -Non-Backwards Compatible Changes: - - Changed the meaning of the memory_manager_global::get_number_of_allocations() - function because the previous definition of it didn't really make sense for - this object. - - Changed the threading API to wait for all outstanding threads to terminate - before allowing the program to end. It used to just let the OS trash those - threads when main() ended but this isn't a safe or portable thing to do. I - used to assume the user would make sure all their threads were done and had - cleaned up whatever they were doing before main() ended but this is too much - of a burden on the end user. So now the library will wait for your threads to - end. You still need to have some way of telling them it is time to stop though. - -Bug fixes: - - Fixed a minor bug in dlib/timer/timer_kernel_1.h. Its implementation was - slightly off according to the specification of a timer object. - -Other: - - The byte_order object is now capable of flipping entire arrays. - - Made it so that the ENABLE_ASSERTS macro is defined whenever ASSERT is - on. - - Made the array container use the memory managers. - - - - - - -New Features: - - Added functions to explicitly convert to/from little and big endian to the - byte_order object. - - Added the allocate_array() and deallocate_array() functions to the - memory_manager. - - Created the memory_manager_global object - - Added the remove_last_in_order(), position_enumerator() and - remove_current_element() functions to the binary_search_tree object. - -Non-Backwards Compatible Changes: - - I put an #error directive in the old GUI component to notify anyone - trying to use it that it is deprecated. I will be removing it from the - library in a few months. - - Switched the reference_counter object back to not using the memory_manager. - I realized it isn't safe for this object to use the memory_manager since - it could result in memory_managers freeing each other's allocations. - - I redefined the pixel_traits template. It is now a lot simpler and more - convenient. - -Bug fixes: - - Fixed a minor bug in dlib/rand/rand_kernel_2.cpp - -Other: - - Added some more compile time checks to the byte_orderer object. - - Changed some includes and preprocessor macros around a little so now - everything but the GUI stuff compiles in mac OS X. - - Added inclusion guards to all the .cpp files - - Added the all_gui.cpp and all_console.cpp files. They - include all the .cpp files you need to make gui and - console applications respectively into one file. - - Made more containers use the memory_manager. - - - - - - -New Features: - - Added the enqueue_or_timeout() and dequeue_or_timeout() functions - to the pipe object. - - Gave the mouse_tracker the ability to display the mouse position - relative to a user selected point. - - Added the message_box() function to the gui_widgets component. - - Gave the label widget the ability to draw newlines in strings. - - added the close_window() and is_closed() methods to the base_window - object. - - Added the rsignaler extension to the threading API. - - You can now control the thread pool timeout time by setting the - DLIB_THREAD_POOL_TIMEOUT #define. - - Added the get_from_clipboard() and put_on_clipboard() functions - to the gui_core component. - - Added the stop_and_wait() function to the timer object. - - Added the trigger_user_event() function and on_user_event() event - to the base_window object. This new event is also forwarded - to drawable interfaces inside the receiving window. - - Added the wrap_around() function to the named_rectangle widget. - - Added the top(), left(), right(), bottom(), width() and height() - functions to the drawable interface. - -Non-Backwards Compatible Changes: - - Made the radio_button and check_box widgets pass references to themselves - when they call their click handlers. - - Switched the sync_extension to use the rmutex and rsignaler objects - rather than the normal non-reentrant ones. ( Chances are that old - code that used this will still compile fine anyway. ) - - Changed the return type of rand::get_random_number() to be an - unsigned char. I also changed both the implementations of - rand because they weren't very good at all. - - Changed the functions related to drawing strings in the font class. - - Changed the drawable's rectangle to default to being empty - rather than being a single point. Most code should not notice - the difference. - -Bug fixes: - - The event handlers in gui_widgets/drawable.h were private. They - should be protected. This is now fixed. - - Fixed a bug in the way the scroll_bar was drawn when it was - the HORIZONTAL type. - - Changed how the thread pool destructs itself when the program - is ending. Previously it was possible to get an error on - NetBSD when the program was ending. This is now fixed. - - The functions related to setting the jump size in the scroll_bar - widget were private. They are now public. - - There was a bug in the MS Windows version of the gui_core component - where the members of the base_window would not work if called from - within the on_window_close() event. This has now been fixed. - - Made the set_pos() function work right for the mouse_tracker widget. - - Fixed a bug in the base64 object where the string "" could potentially - be decoded incorrectly. - - Made the global swap function for crc32_kernel_1 inline. This fixes a - potential linker error. - - Fixed some potential deadlocking that could occur while using the - gui widgets. - -Other: - - I moved all the regression tests into the dlib/test folder and - made a nice driver program to run all of them. - - I have been using the sourceforge compile farms to test the library - on various platforms. It now works for Solaris and some of the BSDs - in addition to Linux and Windows. - - - - - - - -New Features: - - Added the array_expand extension to the array object. - - Added the cmd_line_parser_check extension to the command line parser. - - Added the pipe object. - - All applicable container classes now use the memory_manager component for - their memory allocation. - - New implementations of the memory_manager object. - - Added the copy_functor class. - -Non-Backwards Compatible Changes: - - Moved the wrap_string, narrow, and string_cast functions - to a new file. You now have to include dlib/string.h to get - them. (This makes a bunch of other things work right in gcc 2.95) - - Renamed the _L macro to _dT - - Removed the scopy class - - Simplified the interface to the memory manager. It is basically the same - though. - - Removed the max_size() methods from the hash_table and binary_search_tree - objects. - - Removed the T_is_POD template arguments from the hash_table and - binary_search_tree objects. - - Simplified the template arguments to all checking components and extensions. - They now take the class they are to extend or check as their only template - argument. This only affects you if you haven't been using the kernel_nx - typedefs. - -Bug fixes: - -Other: - - I changed a few things around and now a majority of the library - again compiles under gcc 2.95. But some things don't and I currently - don't plan on making them work because it involves hackish workarounds - of 2.95's bugs. - - Changed the compress_stream_kernel_1 object so that it will detect data - corruptions better. This change will prevent it from correctly decompressing - data that was compressed with a previous version and has an uncompressed size - greater than about 20,000 bytes. - - There is a new cpp file you need to compile: dlib/error.cpp - - Moved all the regression testing stuff into the dlib/test folder and made - a nicer test driver to run them. - - - - - - -New Features: - - Created the byte_orderer object. - - Created the mouse_tracker gui widget. - - The sliding_buffer object is now enumerable and serializable. - - Added the get_filesystem_roots() function to the dir_nar component. - - Added the create_directory() function to the misc_api component. - -Non-Backwards Compatible Changes: - - The ASSERT macro is now only enabled if DEBUG or ENABLE_ASSERTS - is defined. - -Bug fixes: - - Fixed a minor bug in the cmd_line_parser object. If you gave - an option such as --option=arg when option didn't take any - arguments it could hang your program. - - Fixed a bug in wait_or_timeout() in the posix version of the threading - api. The time to wait for was being calculated incorrectly and could - result in an excessive number of spurious returns. - - Fixed a minor bug in the on_keydown() event for windows. - I had it set such that the shift and ctrl bools would be false - if they were the actual keys being pressed. This isn't what the - specs say should happen but I had a comment in the windows code - that made it clear that I did it on purpose. Go figure :) - This is now fixed. - -Other: - - Improved the cpp_tokenizer object's ability to recognize numerical - constants. - - Improved the text_field gui widget. - - There are now two assert macros. One called ASSERT - and another CASSERT. They both do the same thing but ASSERT - is only enabled when DEBUG or ENABLE_ASSERTS is defined. - All the old ASSERT statements were changed to CASSERT statements. - - - - - -New Features: - - Added array_kernel_2 which is a simple layer on top of a C array. - - Added the tabbed_display GUI widget - - Added the widget_group GUI widget - - Added the named_rectangle GUI widget - - Added the pixel_traits template - -Non-Backwards Compatible Changes: - - The default maximum size for an array object is now 0 rather than - 20,000. -Bug fixes: - -Other: - - made the cpp_pretty_printer a little better about how it handles - C style code. Also added support for /*!A html_anchor_name !*/ - style comments. - - - - - -New Features: - - Created the array2d object. - - Created the base64 object. - - Created the pixel struct. - - Created the load_bmp() function which can load a BMP image file - into an array2d object of pixels. - - Created the drawable::draw_image() function - -Non-Backwards Compatible Changes: - - In the drawable interface I made the z order a long rather - than unsigned long. - - The cpp_tokenizer object now has a NUMBER token type. - - removed the get_ prefix from functions in the cmd_line_parser - and cmd_line_parser_option objects. Also changed the - cmd_line_parser_option::operator[] function to a normal member - function called argument(). - -Bug fixes: - -Other: - - cpp_pretty_printer now colors numeric literals a shade of yellow. - - - - - -New Features: - - Created the member_function_pointer object. - - Created the button_action object. - - Created the arrow_button object. - - Created the check_box object. - - Created the radio_button object. - - Created the scroll_bar object. - - More drawing functions to draw various things - onto a canvas object. - - Added enable/disable functions to the - drawable interface. - -Non-Backwards Compatible Changes: - - The gui widgets are no longer templated at the - class level. - - The drawable object's constructor now takes a - bit set rather than a bunch of bools to tell it - which events to enable. - - I changed the names of some of the functions in the - gui_widgets component so that they all reflected a - uniform naming style. - -Bug fixes: - - Fixed a minor bug in the cpp_tokenizer. - - Minor bug in the timer object. See change log for - details. - -Other: - - Made the timer object a little more robust - - - - - - - - diff --git a/ml/dlib/docs/docs/right.gif b/ml/dlib/docs/docs/right.gif deleted file mode 100644 index 50e2637de..000000000 Binary files a/ml/dlib/docs/docs/right.gif and /dev/null differ diff --git a/ml/dlib/docs/docs/stylesheet.xsl b/ml/dlib/docs/docs/stylesheet.xsl deleted file mode 100644 index 19338feaa..000000000 --- a/ml/dlib/docs/docs/stylesheet.xsl +++ /dev/null @@ -1,1201 +0,0 @@ - - - - - - - - - - - - - true - main_menu.xml - dlib C++ Library - - - - - 02MiiaFNVzS5/u0eQhsy3/knioFHsia1X3DXRpHkE6I= - DGSSJMKDomaDaDTIRJ8jDkv0YMx9Cz7OESbXHjjr6Jw - - - - _LAST_MODIFIED_DATE_ - _CURRENT_RELEASE_ - - - - - - #E3E3E3 - - - - - - abcdefghijklmnopqrstuvwxyz - ABCDEFGHIJKLMNOPQRSTUVWXYZ - '?()<> /\&~!@#$%^*_+=-[]{} - - - - - - - - - - - - - - - - <xsl:value-of select="$project_name"/> - <xsl:if test="title"> - - <xsl:value-of select="title" /> - </xsl:if> - - - - - - - - - - - - - - - - - -
    - - - -
    - -
    -
    - -
    - - - -

    -
      - - -
    • -
      -
    -
    -
    -
    - - - - - - - - - - - - - -
    - -
    - - -
    - - - -
    - - - - - - - - - - -
      - - - - - - - - - - - - - - - - -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  • - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  • -
    - - - -
      - - - - - - -
    -
    - - - - - - - - - - - -
    -
    [top]
    -

    - -
    - -
    -
    - - - - - - - - - - -
    - -
    [top]
    -

    -

    -
    -
    - - -
    - -
    - - - - More Details... - - - More Details... - - - - -
    #include <>
    -
    -
    - - - - - - - -
    -
    -

    Extensions to

    -
    - - - -
    -
    -
    - -
    -
    - - - - More Details... - - - More Details... - - - - - - - -
    -
    -
    - -
    -
    -
    - - - - - 1 - - - - - - 1 - - - - - - - - - -
    C++ Example Programs:
    - - - - - - - - - - , - - - - - -
    Python Example Programs:
    - - - - - - - - - - , - - - - -
    - - - -

    Implementations: - - - - -
    - : -
    - - - - -
    -
    -
    - -
    - - : - -
    -
    -
    -
    -
    -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - -
    -
    -
    - -
    -
    _c
    -
    - is a typedef for that checks its preconditions. -
    -
    -
    - -
    -
    -
    - -
    -
    - - - - -

    Release

    - Release date: -
    - Major Changes in this Release: - - - - - -
    - - - -
    -

    Release

    - - Release date: - -
    - Major Changes in this Release: - - - - - -
    -
    -
    -
    -
    -
    -
    Old Release Notes
    -
    - -
    - - - - - - -

    Release

    - - Release date: - -
    - Major Changes in this Release: - - - - - -
    - -
    -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - -
    -
    -
    - - - - -

    - -

    -
    - - - -

    - -

    - - - -
    -

    - -

    - - - - - - - -

    - -

    -
    - -
    - -
    -
    - -
    -         
    -       
    -
    - -
    - -
    -
    - -
    - - -
    - -
    - - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - More Details... - - -
    -
    - -
  • - -
  • -
    - - -
      - -
    -
    - -
      - -
    -
    -
    - -
      - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - {@alt} - - - - - - - - - - - - -
    -
    - - -

    - - - - - - - -
    -
    #include <>
    -
    - - -
    -
    #include <>
    -
    -
    - - -
    - - - - -
    -
    #include <>
    -
    -
    -
    -
    - - - -
    -
    - - - - - -
    -
    - - - -
    -
    - [A] - [B] - [C] - [D] - [E] - [F] - [G] - [H] - [I] - [J] - [K] - [L] - [M] - [N] - [O] - [P] - [Q] - [R] - [S] - [T] - [U] - [V] - [W] - [X] - [Y] - [Z] -
    -
    - - - -
    - - - - - - - - - - - - - - - - - - - - - - Jan - Feb - Mar - Apr - May - Jun - Jul - Aug - Sep - Oct - Nov - Dec - - - - - - - , - (:: UTC) - - - - - , - (:: UTC) - - - - - - - - - - - - - - - - - - - - - Revision:
    - Author:
    - Date:
    - - -
    -
    -
    - - - - - - - - - - - - - - -
    -
    - - - - -
    -
    - -
    -
    -
    -
    -
    -
    -
    - - - - - M - Modified - black - - - A - Added - blue - - - D - Deleted - red - - - R - Deleted - red - - - - -

    -
    - - - - - - - - - - -

    Classes and Structs:

    - - - - - -

    Global Functions:

    - - -
    - - () -
    -
    - - Scope:
    -
    - File:

    -
    -
    ;
    -
    -
    -
    -
    -
    -
    - -
    - - - - -
    - - -
    -
    - - Scope:
    -
    - File:

    -
    -
    ;

    -

    -
    - - - - Protected Typedefs -
    -
      - -
    • ;
    • -
      -
    -
    -
    -
    - - - - Public Typedefs -
    -
      - -
    • ;
    • -
      -
    -
    -
    -
    - - - - Protected Variables -
    -
      - -
    • ;
    • -
      -
    -
    -
    -
    - - - - Public Variables -
    -
      - -
    • ;
    • -
      -
    -
    -
    -
    - - - - Protected Methods -
    - -
    - Method Name:

    -
    -
    ;
    -

    -
    -
    -
    -
    -
    -
    - - - - Public Methods -
    - -
    - Method Name:

    -
    -
    ;
    -

    -
    -
    -
    -
    -
    -
    - - - - Protected Inner Classes -
    - - - -
    -
    -
    - - - - Public Inner Classes -
    - - - -
    -
    -
    - -
    -
    -
    - - - - -
    -
    - - - - - - - - - -
    diff --git a/ml/dlib/docs/docs/term_index.xml b/ml/dlib/docs/docs/term_index.xml deleted file mode 100644 index f3a0f08ef..000000000 --- a/ml/dlib/docs/docs/term_index.xml +++ /dev/null @@ -1,1801 +0,0 @@ - - - - - Index - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/ml/dlib/docs/docs/tiled_pyramid_example.jpg b/ml/dlib/docs/docs/tiled_pyramid_example.jpg deleted file mode 100644 index 75f611ef2..000000000 Binary files a/ml/dlib/docs/docs/tiled_pyramid_example.jpg and /dev/null differ diff --git a/ml/dlib/docs/docs/vs-cmake-gui.png b/ml/dlib/docs/docs/vs-cmake-gui.png deleted file mode 100755 index bd4308a97..000000000 Binary files a/ml/dlib/docs/docs/vs-cmake-gui.png and /dev/null differ diff --git a/ml/dlib/docs/docs/vs_mode_1.png b/ml/dlib/docs/docs/vs_mode_1.png deleted file mode 100755 index ae13c5fcf..000000000 Binary files a/ml/dlib/docs/docs/vs_mode_1.png and /dev/null differ diff --git a/ml/dlib/docs/docs/vs_mode_2.png b/ml/dlib/docs/docs/vs_mode_2.png deleted file mode 100755 index d74ffca6e..000000000 Binary files a/ml/dlib/docs/docs/vs_mode_2.png and /dev/null differ diff --git a/ml/dlib/docs/docs/vs_mode_3.png b/ml/dlib/docs/docs/vs_mode_3.png deleted file mode 100755 index dc5cfe26e..000000000 Binary files a/ml/dlib/docs/docs/vs_mode_3.png and /dev/null differ diff --git a/ml/dlib/docs/makedocs b/ml/dlib/docs/makedocs deleted file mode 100755 index e38b75a73..000000000 --- a/ml/dlib/docs/makedocs +++ /dev/null @@ -1,282 +0,0 @@ -#!/bin/bash -. bash_helper_functions - -report_failure () -{ - echo " **** failed to complete **** " - exit 1 -} - -htmlify_python_file () -{ - pygmentize -f html -O full,style=vs $1 > $1.html -} - - -add_links_between_example_programs() -{ - EXT=$3 - # Get the list of example program filenames - pushd $1 > /dev/null - FILES=`ls *.$EXT` - popd > /dev/null - - # Now run sed on all the htmlified example programs to add the links between them. - for f in $FILES - do - #escape the . in the filename - escaped_name=`echo $f | sed -e 's/\./\\\./g'` - pushd $1 > /dev/null - # get a list of all the html example files that contain the name - matching_html_files=`grep -e "\b$escaped_name\b" -l *.$EXT | sed -e "s/\.$EXT\b/.$EXT.html/g"` - popd > /dev/null - - # now actually run sed to add the links - pushd $2 > /dev/null - if [ -n "$matching_html_files" ] - then - sed -i -e "s/\b$escaped_name\b/$escaped_name<\/a>/g" $matching_html_files - fi - popd > /dev/null - done - -} - -htmlify_cmake () -{ - echo "" > $1.html; - echo $1 >> $1.html; - echo "
    " >> $1.html;
    -
    -    #  line 1: make comments green
    -    #  line 2: add links into the add_subdirectory directives
    -    #  line 3: make literal quotes red
    -    #  line 4: make the directives show up blue
    -    #  line 5: make variable names show up purple
    -    sed -e "s/^\([ ]*#.*\)/\1<\/font>/" \
    -        -e "s/add_subdirectory\([ ]*\)(\([ ]*\)\([^ ]*\)\([ ]*\)\([^ )]*\)/add_subdirectory\1(\2\3\4\5<\/a>/"  \
    -        -e "s/\"\([^\"]*\)\"/\"\1<\/font>\"/g"  \
    -        -e "s/^\([ ]*[^( ]*[ ]*\)(/\1<\/font>(/" \
    -        -e "s/{\([^}]*\)}/\{\1<\/font>}/g"  \
    -        $1 >> $1.html;
    -
    -    echo "
    " >> $1.html; -} - -htmlify_python() -{ - FILES=`\ls $1/*.py` - for i in $FILES - do - htmlify_python_file ${i} - rm ${i} - done -} - - -makedocs () -{ - - REVNUM_FILE=.logger_revnum - - - - # figure out the short number that identifies this particular changeset - get_short_revision_number `cat $REVNUM_FILE` - LOGGER_REVNUM=$RESULT - - XSLT_OPTIONS="--nodtdattr --nonet --novalid" - DATE_TODAY=`date --date= "+%b %d, %Y"`; - - - - - # The revision number we are currently at - CHANGESET_ID=`hg id -i | sed -e 's/\+//'` - get_short_revision_number $CHANGESET_ID - REVISION=$RESULT - - - if [ "$1" = "makerel" ] - then - RELEASE=${MAJOR_NUM}.${MINOR_NUM} - else - RELEASE=${MAJOR_NUM}.${MINOR_NUM}.${PATCH_NUM} - fi; - - # get XML versions of the change logs - BASE_LOGGER_REVNUM=`echo $LOGGER_REVNUM - 1000 | bc` - NEXT_LOGGER_REVNUM=`echo $LOGGER_REVNUM + 1 | bc` - echo Getting the mercurial change logs for revisions $NEXT_LOGGER_REVNUM:$REVISION - hg log -v ../dlib ../examples ../tools ../python_examples --style=xml -r$NEXT_LOGGER_REVNUM:$REVISION > docs/log.txt || report_failure - echo Getting the mercurial change logs for revisions $BASE_LOGGER_REVNUM:$LOGGER_REVNUM - hg log -v ../dlib ../examples ../tools ../python_examples --style=xml -r$BASE_LOGGER_REVNUM:$LOGGER_REVNUM > docs/old_log.txt || report_failure - - # grab a clean copy of the repository - rm -rf docs/cache - rm -rf docs/web - rm -rf docs/chm/docs - hg archive docs/cache || report_failure - # Don't need the docs folder in the cache, moreover, deleting it here avoids letting the makerel script include it in the dlib tar balls. - rm -rf docs/cache/docs - - echo "#ifndef DLIB_REVISION_H" > docs/cache/dlib/revision.h - echo "// Version: " $RELEASE >> docs/cache/dlib/revision.h - echo "// Date: " `date` >> docs/cache/dlib/revision.h - echo "// Mercurial Revision ID: " $CHANGESET_ID >> docs/cache/dlib/revision.h - echo "#define DLIB_MAJOR_VERSION " $MAJOR_NUM >> docs/cache/dlib/revision.h - echo "#define DLIB_MINOR_VERSION " $MINOR_NUM >> docs/cache/dlib/revision.h - echo "#define DLIB_PATCH_VERSION " $PATCH_NUM >> docs/cache/dlib/revision.h - echo "#endif" >> docs/cache/dlib/revision.h - - - rm -rf docs/web - rm -rf docs/chm/docs - mkdir docs/web - mkdir docs/chm/docs - - echo Creating HTML version of the source - htmlify --title "dlib C++ Library - " -i docs/cache -o htmltemp.$$ - add_links_between_example_programs docs/cache/examples htmltemp.$$/examples cpp - - echo Copying files around... - cp -r htmltemp.$$/dlib docs/web - cp -r htmltemp.$$/dlib docs/chm/docs - cp -r htmltemp.$$/examples/* docs/web - cp -r htmltemp.$$/examples/* docs/chm/docs - rm -rf htmltemp.$$ - - # create python docs unless you say ./makedocs fast - if [ "$1" != "fast" ] - then - cd .. - python setup.py build || report_failure - python setup.py build_sphinx -c docs/docs/python --build-dir docs/sphinx.$$ || report_failure - cd docs - cp -r sphinx.$$/html docs/web/python - mv sphinx.$$/html docs/chm/docs/python - rm -rf sphinx.$$ - fi; - - - cp docs/cache/dlib/test/makefile docs/web/dlib/test - cp docs/cache/dlib/test/makefile docs/chm/docs/dlib/test - - cp docs/cache/dlib/test/CMakeLists.txt docs/web/dlib/test - cp docs/cache/dlib/test/CMakeLists.txt docs/chm/docs/dlib/test - cp docs/cache/dlib/CMakeLists.txt docs/web/dlib - cp docs/cache/dlib/CMakeLists.txt docs/chm/docs/dlib - mkdir docs/web/examples || report_failure - cp docs/cache/examples/CMakeLists.txt docs/web/examples - mkdir docs/chm/docs/examples || report_failure - cp docs/cache/examples/CMakeLists.txt docs/chm/docs/examples - cp docs/cache/python_examples/*.py docs/chm/docs/ - cp docs/cache/python_examples/*.py docs/web/ - - htmlify_python docs/chm/docs/ - htmlify_python docs/web/ - add_links_between_example_programs docs/cache/python_examples docs/chm/docs py - add_links_between_example_programs docs/cache/python_examples docs/web py - - cp docs/*.gif docs/web - cp docs/*.gif docs/chm/docs - cp docs/ml_guide.svg docs/web - cp docs/ml_guide.svg docs/chm/docs - cp -r docs/guipics docs/web - cp -r docs/guipics docs/chm/docs - cp docs/*.html docs/web - cp docs/*.html docs/chm/docs - cp docs/*.css docs/web - cp docs/*.css docs/chm/docs - cp docs/*.js docs/web - cp docs/*.js docs/chm/docs - cp docs/*.png docs/web - cp docs/*.jpg docs/web - cp docs/*.webm docs/web - cp docs/*.ico docs/web - cp docs/*.png docs/chm/docs - cp docs/*.jpg docs/chm/docs - cp docs/*.webm docs/chm/docs - cp docs/*.ico docs/chm/docs - - cd docs/chm/docs || report_failure - htmlify_cmake dlib/CMakeLists.txt; - htmlify_cmake examples/CMakeLists.txt; - htmlify_cmake dlib/test/CMakeLists.txt; - cd ../../.. || report_failure - cd docs/web || report_failure - htmlify_cmake dlib/CMakeLists.txt; - htmlify_cmake examples/CMakeLists.txt; - htmlify_cmake dlib/test/CMakeLists.txt; - cd ../.. || report_failure - - find docs/web docs/chm -name "CMakeLists.txt" | xargs rm - - - - # generate the HTML docs - echo Generate HTML docs from XML and XSLT style sheet - FILES=`\ls docs/*.xml | grep -v main_menu.xml` - for i in $FILES - do - - # The last modified date for these files should always be the release date (regardless of when the actual xml files were modified). - if [ "${i}" = "docs/release_notes.xml" -o ${i} = "docs/old_release_notes.xml" \ - -o ${i} = "docs/change_log.xml" -o ${i} = "docs/old_change_log.xml" \ - -o ${i} = "docs/index.xml" ] - then - DATE=$DATE_TODAY - else - get_last_modified_date ${i} - DATE=$RESULT - fi; - - #make web version - cat docs/stylesheet.xsl | sed -e 's/"is_chm">[^<]*/"is_chm">false/' -e "s/_CURRENT_RELEASE_/$RELEASE/" -e "s/_LAST_MODIFIED_DATE_/$DATE/" \ - > docs/stylesheet.$$.xsl - OUT_FILE=$(echo ${i} | sed -e "s/\.xml/\.html/" | sed -e "s/docs\//docs\/web\//") - xsltproc $XSLT_OPTIONS -o $OUT_FILE docs/stylesheet.$$.xsl ${i} - - #make chm version - cat docs/stylesheet.xsl | sed -e 's/"is_chm">[^<]*/"is_chm">true/' -e "s/_CURRENT_RELEASE_/$RELEASE/" -e "s/_LAST_MODIFIED_DATE_/$DATE/" \ - > docs/stylesheet.$$.xsl - OUT_FILE=$(echo ${i} | sed -e "s/\.xml/\.html/" | sed -e "s/docs\//docs\/chm\/docs\//") - xsltproc $XSLT_OPTIONS -o $OUT_FILE docs/stylesheet.$$.xsl ${i} - - rm docs/stylesheet.$$.xsl - done - -# Delete doc type header stuff -# FILES=`find docs/chm docs/web -iname "*.html" -type f` -# for i in $FILES -# do -# sed -e '/ temp.$$; -# mv temp.$$ ${i}; -# done - - - echo Generating sitemap - cd docs/web || report_failure - find . -name "*.html" | awk '{ print "http://dlib.net" substr($1,2)}' > sitemap.txt - - # make the main index have a 301 redirect. Use php to do this - echo '' > index.php - cat index.html >> index.php - rm index.html - - cd ../.. -} - - -./testenv || report_failure - - - - -# build all the html documentation -makedocs $1 - -# now make the table of contents for the chm file -echo Generating the table of contents for the chm file -xsltproc -o docs/chm/Table\ of\ Contents.hhc docs/chm/htmlhelp_stylesheet.xsl docs/chm/toc.xml - diff --git a/ml/dlib/docs/makerel b/ml/dlib/docs/makerel deleted file mode 100755 index 8a4d2d397..000000000 --- a/ml/dlib/docs/makerel +++ /dev/null @@ -1,91 +0,0 @@ -#!/bin/bash -. bash_helper_functions - -# If the first argument to this script is the word major then the -# major version number is updated and the minor is set back to 0. - -report_failure () -{ - echo " **** failed to complete **** " - exit 1 -} - - -./testenv_rel || report_failure - - - -REVNUM_FILE=.logger_revnum -CHANGESET_ID=`hg id -i | sed -e 's/\+//'` - -rm -rf release || report_failure -mkdir release || report_failure - - -if [ "$1" = "major" ] - then - MAJOR_NUM=`echo $MAJOR_NUM+1|bc` - MINOR_NUM=0 -else - MINOR_NUM=`echo $MINOR_NUM+1|bc` -fi; -set_dlib_version MAJOR $MAJOR_NUM -set_dlib_version MINOR $MINOR_NUM -set_dlib_version PATCH 0 - -RELEASE=${MAJOR_NUM}.${MINOR_NUM} -# Commit changes to the version numbers so that the makedocs script will use them. -echo Create Mercurial tags and commit release -hg commit -m "Created release v$RELEASE" || report_failure -hg tag v$RELEASE || report_failure - -./makedocs makerel || exit 1 - -echo $CHANGESET_ID > $REVNUM_FILE -set_dlib_version PATCH 99 -hg commit -m "Record last changeset and set PATCH version to 99" - - -cd release || report_failure -RELDIR=`echo dlib-$RELEASE` -mkdir $RELDIR -cd $RELDIR || report_failure -cp -r ../../docs/cache/* . || report_failure - -echo Version: $RELEASE >> README.md -echo "Date: `date`" >> README.md -echo Mercurial Revision ID: $CHANGESET_ID >> README.md - - - -WEBPAGE=`echo dlib_webpage-$RELEASE.tar` -SOURCE_ZIP=`echo $RELDIR.zip` -SOURCE_TAR=`echo $RELDIR.tar` -tar -C ../../docs/chm -cf - docs/ documentation.html | tar -xf - || report_failure -cd .. || report_failure - -tar -cf $SOURCE_TAR $RELDIR || report_failure -# flip everything to MS-DOS line endings -#find $RELDIR -name "*.cpp" -or -name "*.h" -or -name "*.txt" -or -name "*.html" -or -name "*.py" | xargs flip -m -find $RELDIR -name "*.cpp" -or -name "*.h" -or -name "*.txt" -or -name "*.html" -or -name "*.py" | xargs unix2dos &> /dev/null - -zip -r9 $SOURCE_ZIP $RELDIR > /dev/null || report_failure -tar -C ../docs -cf $WEBPAGE web || report_failure -bzip2 $SOURCE_TAR || report_failure -bzip2 $WEBPAGE || report_failure - -rm -rf $RELDIR - -# Don't make the chm doc file since hhc.exe doesn't run in any copy of wine anymore :( -#wine ../docs/chm/htmlhelp/hhc.exe ../docs/chm/lib.hhp -#mv ../docs/chm/help.chm dlib_documentation-$RELEASE.chm || report_failure - - -mkdir v$RELEASE -#mv dlib_documentation-$RELEASE.chm v$RELEASE -mv $SOURCE_TAR.bz2 v$RELEASE -mv $SOURCE_ZIP v$RELEASE - - - - diff --git a/ml/dlib/docs/testenv b/ml/dlib/docs/testenv deleted file mode 100755 index 8d2ce6bc9..000000000 --- a/ml/dlib/docs/testenv +++ /dev/null @@ -1,31 +0,0 @@ -#/bin/sh -# -#This script checks to make sure all the commands we need are -#present - -return_error() -{ - echo "Error, can't run the $1 command" - exit 1 -} - - -echo Testing environment for needed utilities - -bc -h > /dev/null || return_error "bc"; -echo nothing | awk '{}' > /dev/null || return_error "awk"; -echo | sed -e "s/s/r/" > /dev/null || return_error "sed"; -htmlify > /dev/null || return_error "htmlify"; -echo | xargs > /dev/null || return_error "xargs"; -hg > /dev/null || return_error "hg"; -xsltproc -V > /dev/null || return_error "xsltproc"; -tar --help > /dev/null || return_error "tar"; -zip -h > /dev/null || return_error "zip"; -bzip2 -h &> /dev/null || return_error "bzip2"; -pygmentize -h &> /dev/null || return_error "pygmentize"; -which sphinx-build &> /dev/null || return_error "sphinx-build"; - - -echo All needed utilities found -exit 0 - diff --git a/ml/dlib/docs/testenv_rel b/ml/dlib/docs/testenv_rel deleted file mode 100755 index fff4a7be1..000000000 --- a/ml/dlib/docs/testenv_rel +++ /dev/null @@ -1,24 +0,0 @@ -#/bin/sh -# -#This script checks to make sure all the commands we need are -#present - -return_error() -{ - echo "Error, can't run the $1 command" - exit 1 -} - -./testenv - -echo Testing environment for needed release building utilities - - -#flip -h > /dev/null || return_error "flip"; -unix2dos -h &> /dev/null || return_error "unix2dos"; -#wine --help &> /dev/null || return_error "wine"; - - -echo All needed utilities found -exit 0 - -- cgit v1.2.3