MyCaffe Modularity

Table of Contents

The Modules of MyCaffe

MyCaffe is a very modular system designed to fit numerous different AI needs.  From a very bare-bones, 3-module system, up to a more complicated reinforcement learning system that uses data gyms and a streaming database, MyCaffe offers a range of AI functionality designed to eventually cover all main aspects of artificial intelligence.

Currently, MyCaffe offers the following types of AI learning:

  •  Standard Classification
  •  One-shot and N-shot learning
  •  Reinforcement Learning
  •  Recurrent Learning
  •  Neural Style Transfer Learning
  •  Deep Dream Learning

In order to support these various types of learning, MyCaffe’s modular organization allows to selectively use a minimum set of modules depending on the type of learning being used.

MyCaffe Modules

The following modules make up the MyCaffe AI Platform.

Bare Bones Modules

The bare-bones modules include most layers and general functionality offered in the original CAFFE[1] open-source project.

MyCaffe; this module is the main MyCaffe module used by all MyCaffe projects for it contains the MyCaffeControl, Solvers, Net and Layers that support most of the layer functionality of the original CAFFE open-source project.

MyCaffe.basecode; this module contains common code used by all other MyCaffe modules.

CudaDnnDll; this module contains the low-level C++ code and all CUDA Kernels used by MyCaffe.  This module is accessed via the CudaDnn object which uses the CudaControl component to bridge between the C# and C++ code.

Layer Groups

The layer groups contain layer extensions used for certain learning functionality that fall outside the layers provided by the original CAFFE open-source project.

MyCaffe.layers.alpha; the layers found within this layer group are very early stage concepts that are moved to the MyCaffe.layers.beta group after proving useful.

MyCaffe.layers.beta; the layers found within this layer group are useful general layers that do not fall within a specific layer group.

MyCaffe.layers.nt; the layers found within this layer group are used when performing Neural Style Transfer learning.

Extensions

Extensions modules extend the overall MyCaffe bare-bones functionality into different types and methods of learning.

MyCaffe.extras; this module extends MyCaffe to support Neural Style Transfer and Deep Draw learning.

MyCaffe.trainers; this module extends MyCaffe to support Reinforcement Learning and Recurrent Learning through the use of various trainers that are used to train MyCaffe models.

MyCaffe.model; this module extends MyCaffe to support programmatic model generation.

Data Access

The data access modules are used to feed data into the MyCaffe Trainers and Solvers  during model training.

MyCaffe.db.image; this module provides the MyCaffe In-Memory Image Database that feeds data into the Solvers when solving classification problems.

MyCaffe.data; this module provides various data loaders used to load datasets (such as MNIST and CIFAR-10) into the SQL database used by the MyCaffe In-Memory Image Database.

MyCaffe.db.stream; this module provides the MyCaffe Streaming Database used by various MyCaffe Gym‘s to stream data into the Trainers when solving reinforcement and recurrent learning problems.

MyCaffe.gym; this module provides various data gyms that feed real-time data (via simulations or streamed from the MyCaffe Streaming Database) to the Trainers when solving reinforcement and recurrent learning problems.

MyCaffe.gym.python; this module provides a simple Python interface to the MyCaffe.gym which can be useful during testing.


[1] Yangqing Jia, Evan Shelhamer, Jeff Donahue, Sergey Karayev, Jonathan Long, Ross Girshick, Sergio Guadarrama, Trevor Darrell, Caffe: Convolutional Architecture for Fast Feature Embedding. arXiv, 2014.