This document describes the design and usage of the Darwin framework for machine learning and computer vision research and development. It includes an overview of the various components of the framework, installation instructions, and tutorial. The document assumes that you are familiar with either the Linux or Windows (Microsoft Visual Studio) C/C++ development environments and have a basic understanding of Machine Learning, e.g., as presented in a number of excellent texts:
For computer vision the following texts are recommended:
The Darwin framework is designed to make it easy for researchers to share code that makes use of the Darwin libraries. The basic structure is shown in the figure below where Darwin applications and projects link against the Darwin libraries, which in turn link against a small set of external (third-party) libraries. Individual projects may include full-blown machine learning applications or reference code to replicate results from scientific publications. Individual projects may also link against other external libraries. The Darwin libraries are outlined in more detail below (see Darwin Libraries).
A number of researchers have contributed to the Darwin project. They are listed here.
The following (clickable) diagram shows the dependencies between Darwin libraries. Dashed external libraries are optional. However, some functionality may not be available without these libraries.
The Darwin framework includes many pre-developed applications for and projects for common machine learning and computer vision problems. For example, one of the projects provides mex interfaces for accessing many components of the library from Matlab; other projects integrate various components of the library through small utility applications and shell scripts. See Applications and Project Descriptions for details.
There is also a short tutorial that you should read if you are new to the library.
Darwin has minimal dependencies on external libraries. Small libraries such as RapidXML are included in the distribution, but larger libraries, such as Eigen and OpenCV, need to be installed separately. The following links provide detailed download and install instructions for Windows, Linux and Mac OS X.
The latest stable release can be downloaded from:
Previous stable releases, pre-compiled Windows and Matlab mex binaries, and change logs are also available.
Please report bugs to email@example.com and include a small example (code and data) that will trigger the bug.
Darwin is distributed under the BSD license. This means that it is free for both academic and commercial use. Note, however, that some projects may use third-party components that may have more stringent restrictions (e.g., academic use only or that certain works be cited in scientific publications).
Copyright (c) 2007-2014, Stephen Gould All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the software's copyright holders nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.