EdgeML
Machine learning algorithms for resource constrained devices

The EdgeML library provides a suit of efficient machine learning algorithms designed to work off the grid on severely resource constrained scenarios. The library allows the training, evaluation and deployment of these algorithms onto various target devices and platforms. EdgeML is written in Python using Tensorflow. We also provide experimental PyTorch support and highly efficient C++ implementations for certain algorithms.

With EdgeML, classical machine learning tasks such as activity recognition, gesture recognition, regression, and so forth can be efficiently performed on tiny devices like the Arduino Uno, with as low as 2kB of RAM. Our fast, accurate and compressed deep learning solutions solve complex time-series tasks, for instance, audio key-word detection and wakeword detection on processors as small as a Cortex M4.

This library is a product of the Intelligent Devices Expedition from Microsoft Research India. As part of this expedition we strive to push the state of the art in machine learning to enable privacy preserving, energy-efficient, off-the-grid intelligence on low resource computing devices. The EdgeML library is open sourced under the MIT License.

Algorithms
Bonsai Algorithm
Bonsai
A tree based classification/regression algorithm.
FastCells
FastCells
A new class of RNN cells (FastRNN & FastGRNN) carefully designed for resource efficiency
EMI-RNN
EMI-RNN
A model independent algorithm for training smaller and faster RNN cells (GRU, LSTM, FastRNN and others).
ProtoNN
ProtoNN
A k-nearest neighbours inspired prototype based classification/regression algorithm.
Demonstrations
GesturePod
GesturePod is an EdgeML powered, small-form factor plug and play accessibility device that performs on device gesture recognition. GesturePod is clamped onto any cane or walking stick to detect gestures performed on them. Upon the detection of a gesture, GesturePod pings configured external devices through Bluetooth Low Energy thereby facilitating simple and natural gesture based interactions.
Key-word Spotting
EdgeML enables RNN based accurate, on-device, real-time keyword spotting --- the detection of utterance of words such as 'one', 'up', 'turn', 'on' and others on low resource devices such as the Arm Cortex M4 based MXChip or the Raspberry Pi0. By extension, these devices now are capable of detecting Wake-Words such as 'Hey Cortana'.
Tools
FastCells
SeeDot
A framework for running ML algorithms efficiently on IoT devices.
EMI-RNN
ELL
ELL (Embedded learning library).
We are always looking forward to hearing about new scenarios and uses for EdgeML. If EdgeML has been useful to you in some way, we would love to hear more about it. Please feel free to write to us at edgeml@microsoft.com. Additionally, if you use the EdgeML library in your projects or publications, please do cite us as:
@software{edgeml01,
   author = {{Dennis, Don Kurian and Gopinath, Sridhar and Gupta, Chirag and
 Kumar, Ashish and Kusupati, Aditya and Patil, Shishir G and Simhadri, Harsha Vardhan}},
   title = {{EdgeML: Machine Learning for resource-constrained edge devices}},
   url = {https://github.com/Microsoft/EdgeML},
   version = {0.1},
}