DeepDetect (http://www.deepdetect.com/) is a machine learning API and server written in C++11. It makes state of the art machine learning easy to work with and integrate into existing applications.
DeepDetect relies on external machine learning libraries through a very generic and flexible API. At the moment it has support for the deep learning library Caffe.
Main functionalities: DeepDetect implements support for supervised deep learning of images and other data, with focus on simplicity and ease of use, test and connection into existing applications.
Current features include:
- high-level API for machine learning
- JSON commnunication format
- dedicated server with support for asynchronous training calls
- high performances, benefit from multicores and GPU
- connector to handle large collections of images
- connector to handle CSV files with preprocessing capabilities
- range of built-in model assessment measures (e.g. F1, multiclass log loss, ...)
- no database dependency and sync, all information organized on the filesystem
- flexible template output format to simplify connection to external applications
- templates for the most useful neural architectures (e.g. Googlenet, Alexnet, mlp, logistic regression)
Documentation:
- Full documentation is available from http://www.deepdetect.com/overview/introduction/
- API documentation is available from http://www.deepdetect.com/api/
Dependencies:
- C++, gcc >= 4.8 or clang with support for C++11 (there are issues with Clang + Boost)
- eigen for all matrix operations;
- glog for logging events and debug;
- gflags for command line parsing;
- OpenCV >= 2.4
- cppnetlib
- Boost
- curl
- curlpp
- gtest for unit testing (optional);
Caffe Dependencies:
- CUDA 7 or 6.5 is required for GPU mode.
- BLAS via ATLAS, MKL, or OpenBLAS.
- protobuf
- IO libraries hdf5, leveldb, snappy, lmdb
Implementation: The code makes use of C++ policy design for modularity, performance and putting the maximum burden on the checks at compile time. The implementation uses many features from C++11.
DeepDetect is designed and implemented by Emmanuel Benazera [email protected].
Below are instructions for Linux systems.
Beware of dependencies, typically on Debian/Ubuntu Linux, do:
sudo apt-get install build-essential libgoogle-glog-dev libgflags-dev libeigen3-dev libopencv-dev libcppnetlib-dev libboost-dev libcurlpp-dev libcurl4-openssl-dev protobuf-compiler libopenblas-dev libhdf5-dev libprotobuf-dev libleveldb-dev libsnappy-dev liblmdb-dev
For compiling along with Caffe:
mkdir build
cmake ..
make
Note: running tests requires the automated download of ~75Mb of datasets, and computations may take around thirty minutes on a CPU-only machines.
To prepare for tests, compile with:
cmake -DBUILD_TESTS=ON ..
make
cd build/main
./dede
DeepDetect [ commit 73d4e638498d51254862572fe577a21ab8de2ef1 ]
Running DeepDetect HTTP server on localhost:8080
See tutorials from http://www.deepdetect.com/tutorials/tutorials/
- DeepDetect (http://www.deepdetect.com/)
- Caffe (https://github.com/BVLC/caffe)