1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231
|
<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?>
<doc>
<!-- ************************************************************************* -->
<body>
<p>
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 <a href="license.html">open source licensing</a>
allows you to use it in any application, free of charge.
</p>
<p>
To follow or participate in the development of dlib subscribe to <a href="https://github.com/davisking/dlib">dlib on github</a>.
Also be sure to read the <a href="howto_contribute.html">how to contribute</a> page if you intend to
submit code to the project.
</p>
<p>
To quickly get started using dlib, <a href="compile.html">follow these instructions to build dlib</a>.
</p>
<br/>
<p>
<h2>Major Features</h2>
<ul>
<li><b>Documentation</b>
<ul>
<li>Unlike a lot of open source projects, this one provides complete and precise
documentation for every class and function. There are also debugging modes that check the
documented preconditions for functions. When this is enabled it will catch the vast majority of
bugs caused by calling functions incorrectly or using objects in an incorrect manner.
</li>
<li>Lots of example programs are provided</li>
<li><i>I consider the documentation to be the most important part of the library</i>. So if you find anything
that isn't documented, isn't clear, or has out of date documentation, tell me and I will fix it.
</li>
</ul>
</li>
<li><b>High Quality Portable Code</b>
<ul>
<li>Good unit test coverage. The ratio of unit test lines of code to library lines of
code is about 1 to 4.</li>
<li>The library is tested regularly on MS Windows, Linux, and Mac OS X systems. However, it should
work on any POSIX system and has been used on Solaris, HPUX, and the BSDs.</li>
<li>No other packages are required to use the library. Only APIs that are
provided by an out of the box OS are needed. </li>
<li>There is no installation or configure step needed before you can use the library. See the
<a href="compile.html">How to compile</a> page for details.</li>
<li>All operating system specific code is isolated inside the OS abstraction layers which are
kept as small as possible. The rest of the library is either layered on top of the OS
abstraction layers or is pure ISO standard C++. </li>
</ul>
</li>
<li><b>Machine Learning Algorithms</b>
<ul>
<li><a href="ml.html#add_layer">Deep Learning</a></li>
<li>Conventional SMO based Support Vector Machines for <a href="ml.html#svm_nu_trainer">classification</a>
and <a href="ml.html#svr_trainer">regression</a> </li>
<li>Reduced-rank methods for large-scale <a href="ml.html#svm_c_ekm_trainer">classification</a>
and <a href="ml.html#krr_trainer">regression</a></li>
<li>Relevance vector machines for <a href="ml.html#rvm_trainer">classification</a>
and <a href="ml.html#rvm_regression_trainer">regression</a> </li>
<li>General purpose <a href="ml.html#one_vs_one_trainer">multiclass classification</a> tools</li>
<li>A <a href="ml.html#svm_multiclass_linear_trainer">Multiclass SVM</a></li>
<li>A tool for solving the optimization problem associated with
<a href="ml.html#structural_svm_problem">structural support vector machines</a>. </li>
<li>Structural SVM tools for <a href="ml.html#structural_sequence_labeling_trainer">sequence labeling</a> </li>
<li>Structural SVM tools for solving <a href="ml.html#structural_assignment_trainer">assignment problems</a> </li>
<li>Structural SVM tools for <a href="ml.html#structural_object_detection_trainer">object detection</a> in images as well as more powerful (but slower) <a href="ml.html#loss_mmod_">deep learning tools for object detection</a>. </li>
<li>Structural SVM tools for <a href="ml.html#structural_graph_labeling_trainer">labeling nodes</a> in graphs </li>
<li>A large-scale <a href="ml.html#svm_rank_trainer">SVM-Rank</a> implementation</li>
<li>An online <a href="ml.html#krls">kernel RLS regression</a> algorithm</li>
<li>An online <a href="ml.html#svm_pegasos">SVM classification</a> algorithm</li>
<li><a href="ml.html#vector_normalizer_frobmetric">Semidefinite Metric Learning</a></li>
<li>An online kernelized <a href="ml.html#kcentroid">centroid estimator</a>/novelty detector and
offline support vector <a href="ml.html#svm_one_class_trainer">one-class classification</a></li>
<li>Clustering algorithms: <a href="ml.html#find_clusters_using_kmeans">linear</a>
or <a href="ml.html#kkmeans">kernel k-means</a>,
<a href="ml.html#chinese_whispers">Chinese Whispers</a>, and
<a href="ml.html#newman_cluster">Newman clustering</a>. </li>
<li><a href="ml.html#rbf_network_trainer">Radial Basis Function Networks</a></li>
<li><a href="ml.html#mlp">Multi layer perceptrons</a> </li>
</ul>
</li>
<li><b>Numerical Algorithms</b>
<ul>
<li>A fast <a href="linear_algebra.html#matrix">matrix</a> object implemented using the expression
templates technique and capable of using BLAS and LAPACK libraries when available.</li>
<li>Numerous linear algebra and mathematical operations are defined for the matrix object such as the
<a href="dlib/matrix/matrix_la_abstract.h.html#svd">singular value decomposition</a>,
<a href="dlib/matrix/matrix_utilities_abstract.h.html#trans">transpose</a>,
<a href="dlib/matrix/matrix_math_functions_abstract.h.html#sin">trig functions</a>, etc.</li>
<li>General purpose unconstrained non-linear optimization algorithms using the
<a href="optimization.html#cg_search_strategy">conjugate gradient</a>,
<a href="optimization.html#bfgs_search_strategy">BFGS</a>, and
<a href="optimization.html#lbfgs_search_strategy">L-BFGS</a>
techniques</li>
<li> <a href="optimization.html#solve_least_squares_lm">Levenberg-Marquardt</a> for solving non-linear
least squares problems </li>
<li>Box-constrained derivative-free optimization via the
<a href="optimization.html#find_min_bobyqa">BOBYQA</a> algorithm</li>
<li>An implementation of the <a href="optimization.html#oca">Optimized Cutting Plane Algorithm</a></li>
<li><preserve_space><a href="optimization.html#solve_qp_using_smo">Several</a>
<a href="optimization.html#solve_qp2_using_smo">quadratic</a>
<a href="optimization.html#solve_qp3_using_smo">program</a>
<a href="optimization.html#solve_qp4_using_smo">solvers</a></preserve_space> </li>
<li>Combinatorial optimization tools for solving
<a href="optimization.html#max_cost_assignment">optimal assignment</a> and
<a href="optimization.html#min_cut">min cut/max flow</a> problems as well as
the <a href="optimization.html#find_max_parse_cky">CKY algorithm</a> for finding the most probable parse tree</li>
<li>A <a href="algorithms.html#bigint">big integer</a> object</li>
<li>A <a href="algorithms.html#rand">random number</a> object</li>
</ul>
</li>
<li><b>Graphical Model Inference Algorithms</b>
<ul>
<li><a href="bayes.html#bayesian_network_join_tree">Join tree</a> algorithm for exact inference in
a Bayesian network.</li>
<li><a href="bayes.html#bayesian_network_gibbs_sampler">Gibbs sampler</a> markov chain monte
carlo algorithm for approximate inference in a Bayesian network.</li>
<li>Routines for performing MAP inference in
<a href="optimization.html#find_max_factor_graph_viterbi">chain-structured</a>,
<a href="optimization.html#find_max_factor_graph_potts">Potts</a>, or
<a href="optimization.html#find_max_factor_graph_nmplp">general</a> factor graphs.</li>
</ul>
</li>
<li><b>Image Processing</b>
<ul>
<li>Routines for <a href="imaging.html#load_image">reading</a> and
<a href="imaging.html#save_bmp">writing</a> common image formats. </li>
<li>Automatic color space conversion between various pixel types</li>
<li>Common image operations such as edge finding and morphological operations</li>
<li>Implementations of the <a href="imaging.html#get_surf_points">SURF</a>,
<a href="imaging.html#hog_image">HOG</a>, and <a href="imaging.html#extract_fhog_features">FHOG</a>
feature extraction algorithms.</li>
<li>Tools for <a href="imaging.html#object_detector">detecting objects</a> in images including
<a href="imaging.html#get_frontal_face_detector">frontal face detection</a> and
<a href="imaging.html#shape_predictor">object pose estimation</a>.</li>
<li>High quality <a href="dnn_face_recognition_ex.cpp.html">face recognition</a></li>
</ul>
</li>
<li><b>Threading</b>
<ul>
<li>The library provides a portable and simple <a href="api.html#threads">threading API</a></li>
<li>A message passing <a href="other.html#pipe">pipe</a> for inter-thread and <a href="network.html#bridge">inter-process</a> communication</li>
<li>A <a href="other.html#timer">timer</a> object capable of generating events that are regularly spaced in time</li>
<li><a href="api.html#threaded_object">Threaded objects</a></li>
<li><a href="api.html#thread_function">Threaded functions</a></li>
<li><a href="api.html#parallel_for">Parallel for loops</a></li>
<li>A <a href="api.html#thread_pool">thread_pool</a> with support for futures</li>
</ul>
</li>
<li><b>Networking</b>
<ul>
<li>The library provides a portable and simple <a href="api.html#sockets">TCP sockets API</a></li>
<li>An object to help you make TCP based <a href="network.html#server">servers</a></li>
<li><a href="network.html#iosockstream">iostream</a> and <a href="network.html#sockstreambuf">streambuf</a>
objects that enables TCP sockets to interoperate with the C++ iostreams library </li>
<li>A simple <a href="network.html#server_http">HTTP server</a> object you can use to embed a
web server into your applications</li>
<li>A message passing <a href="other.html#pipe">pipe</a> for inter-thread and <a href="network.html#bridge">inter-process</a> communication</li>
<li>A tool used to implement algorithms using the
<a href="network.html#bsp_context">Bulk Synchronous Parallel (BSP)</a> computing model</li>
</ul>
</li>
<li><b>Graphical User Interfaces</b>
<ul>
<li>The library provides a portable and simple core <a href="api.html#gui_core">GUI API</a></li>
<li>Implemented on top of the core GUI API are numerous <a href="api.html#gui_widgets">widgets</a></li>
<li>Unlike many other GUI toolkits, the entire dlib GUI toolkit is threadsafe</li>
</ul>
</li>
<li><b>Data Compression and Integrity Algorithms</b>
<ul>
<li>A <a href="algorithms.html#crc32">CRC 32</a> object</li>
<li><a href="algorithms.html#md5">MD5</a> functions</li>
<li>Various abstracted objects representing parts of <a href="compression.html">data compression</a>
algorithms. Many forms of the PPM algorithm are included. </li>
</ul>
</li>
<li><b>Testing</b>
<ul>
<li>A thread safe <a href="other.html#logger">logger</a> object styled after the popular Java logger log4j</li>
<li>A modular <a href="other.html#dlib_testing_suite">unit testing framework</a></li>
<li>Various <a href="metaprogramming.html">assert</a> macros useful for testing preconditions</li>
</ul>
</li>
<li><b>General Utilities</b>
<ul>
<li>A type-safe <a href="other.html#byte_orderer">object</a> to convert between big and little endian byte orderings</li>
<li>A <a href="parsing.html#cmd_line_parser">command line parser</a> with the ability to
parse and validate command lines with various types of arguments and options</li>
<li>An <a href="parsing.html#xml_parser">XML parser</a></li>
<li>An object that can perform <a href="parsing.html#base64">base64</a> conversions</li>
<li>Many <a href="containers.html">container classes</a></li>
<li><a href="other.html#serialize">Serialization support</a></li>
<li>Many <a href="other.html#memory_manager">memory manager</a> objects that implement
different memory pooling strategies</li>
<li>A tool that lets you easily <a href="other.html#MATLAB">call C++ from MATLAB</a></li>
</ul>
</li>
</ul>
</p>
</body>
<!-- ************************************************************************* -->
</doc>
|