DeepDetect is a deep learning API and server written in C++11, along with a pure Web Platform for training and managing models.
DeepDetect aims at making the state of the art deep learning easy to work with and integrate into existing applications. It has support for backend machine learning libraries Caffe, Caffe2, Tensorflow, XGBoost, Dlib and NCNN.
DeepDetect boasts the following features:
General High level & generic API for machine learning & deep learning Web UI for training and managing models JSON communication format Remote Python client library Embedded server with support for asynchronous training calls High performance, benefits from multicore CPU and GPU Flexible input / output connectors for text, images, raw data (CSV, SVM) Flexible template output format to simplify connection to external applications (e.
Amazon AMI images and Docker are the easiest way to go. Both contain a ready to go deepdetect server as well as pre-trained googlenet, resnet_50 image classification models and many others for the AMIs. This allows to spin up an image classification service in minutes on a variety of machines with both CPU and GPU support.
Amazon AMI images If your target is Amazon AWS, we recommend you take a look at our official GPU AMI or CPU AMI.
This report documents the performances of the DeepDetect Open Source Deep Learning server on a variety of platforms and popular or particularly effective neural network architectures. The full server source code is available from https://github.com/jolibrain/deepdetect
The reported performances use a customized version of Caffe as backend.
Code repository : jolibrain/dd_performance Reference platforms Given different platforms, the result should serve as a reference for parties and users interested in choosing the right NN model for their work on their server or embedded systems.
DeepDetect is written in C++11 with professional support for Linux platforms.
The latest release can be found at DeepDetect Releases.
For the most up-to-date installation information, see the main README
Note: the platforms with support are Ubuntu 16.04 LTS and 18.04 LTS.
DeepDetect may also be compiled from source on other platforms such as OSX. If you need to do so and are experiencing difficulties, request help on Github.
This section assumes DeepDetect has been built from sources.
Make sure either dede is in your PATH or provide a path to it, or run dede from the build repository:
cd deepdetect/build ./main/dede –help Default server is listening on localhost:8080:
$ dede DeepDetect [ commit 73d4e638498d51254862572fe577a21ab8de2ef1 ] Running DeepDetect HTTP server on localhost:8080 The help can be obtained with:
$ dede –help Flags from /home/jolibrain/projects/deepdetect/dev/deepdetect/main/dede.cc: -jsonapi (whether to use the JSON command line API (0: HTTP server JSON, 1: commandline JSON, 2: commandline no JSON) type: int32 default: 0 Flags from /home/jolibrain/projects/deepdetect/dev/deepdetect/src/httpjsonapi.
DeepDetect uses an image connector to train and predict from images.
For a comprehensive list of parameters to the image input connector, see the API Connectors section.
For a complete tutorial on how to train from images, see here.
Training Training from images in practice requires large amounts of data so the connector assumes they are available from the hard drive in the following manner:
Every class is a repository of images The class name is the repository name Pass the repository that contain all classes to DeeDetect and the connector will handle them.
DeepDetect uses a dedicated connector to train and predict from CSV data. At prediction time it is possible to use raw CSV line without the header, and without reading them from a file.
For a comprehensive list of parameters to the CSV input connector, see the API Connectors section.
For a complete tutorial on how to train from CSV data, see here.
Training Training reads from CSV files and allows some pre-processing to be applied by DeepDetect without modification to the original data.
This page lists a growing set of examples, as some code is worth so many words!
Multi-layer Neural Network (aka Perceptron / MLP) for data and for text MLP for single and multi-target regression tasks Convolutional Neural Network (CNN) for image classification Large-scale Neural Networks from templates, such as GoogleNet, Inception with Caffe and Tensorflow Finetuning GoogleNet Character-based Deep Convolutional Neural Networks Inner layer extraction from a Neural Network, useful for building similarity search engines typically Using XGBoost to train gradient boosted trees from a CSV dataset Using XGBoost to train gradient boosted trees from an SVM sparse format dataset Train a logistic regression from an SVM sparse format dataset Train a multilayer neural network from textual content with sparse features Train an autoencoder on CSV dataset Principles API and clients DeepDetect API is best used as follows:
How to specify server host and port ? ./dede -host yourhost -port 8888 and replace yourhost and 8888 by your own values. Default values are localhost and 8080 respectively.
What are the machine learning frameworks and algorithms supported by the server ? Two libraries are supported at the moment:
Caffe, a powerful highly configurable and portable deep neural network framework. Jolibrain maintains a highly customized version of Caffe that has support for many neural architectures and data types, including logistic regression, multi-layer perceptron, convolutional networks, recurrent nets, object detection architectures, image segmentation with advanced losses, time-series, etc… This is the backend of choice for DeepDetect.