The Classification module is the heart of DeepCore. It’s where the machine learning framework integrations happen, and where the standard interfaces for interacting with those frameworks are defined. This allows us to present a commmon contract that each framework implmentor must use, allowing for a single, coherent interface into many different frameworks. Currently, we only support Caffe, but other frameworks, such as Dlib and TensorFlow, are currently being implemented in DeepCore. For more information, see the Classification module documentation.


The Imagery module provides support for opening and processing images. Using OpenCV and GDAL and OSSIM, we support both georeferenced and non-georeferenced imagery. In the Imagery module, we have support for opening, modifying, and saving many image formats. For more information, see the Imagery module documentation.


The Geometry module contains geometry primitives, spatial coordinate reference systems, as well as various utility functions for dealing with geometry. It has ties to GDAL and GEOS for full featured geometry support. For more information, see the Geometry module documentation.


The Vector module allows a user to be able to write geometries to disk in multiple supported formats. Supported formats are:

Support for more formats is coming, such as support for SQLite. For more information, see Vector module documentation.


The Network module allows us to communicate outside of our local machine. With support from libcurl, we can communicate over HTTP and HTTPS to get imagery from web sources. Using Simple Web Server, we can stand up web servers for users to host their own content. For more information, see the Network module documentation.


The Processing module is the pipeline of the DeepCore workflow. While not yet complete, it will allow a user to create workflows of asynchronous nodes that each have their own work to do. Using these nodes, a user can create completely custom workflows, where images can be modified, processed, sliced, diced, and pushed to a detector where machine learning processing can begin. Each node implementation is completely hidden from the outside, only exposing the appropriate interface to the public. This consistent interface allows for connection of different node types, without worrying about what each node does. For more information, please see the Processing module documentation.