All Projects → microsoft → Edgeml

microsoft / Edgeml

Licence: other
This repository provides code for machine learning algorithms for edge devices developed at Microsoft Research India.

Programming Languages

cpp
1120 projects

Projects that are alternatives of or similar to Edgeml

bayes
naive bayes in php
Stars: ✭ 61 (-94.42%)
Mutual labels:  classifier, machine-learning-algorithms
Sod
An Embedded Computer Vision & Machine Learning Library (CPU Optimized & IoT Capable)
Stars: ✭ 1,460 (+33.58%)
Mutual labels:  machine-learning-algorithms, iot-device
Macchina.io
macchina.io IoT Edge Device SDK is a powerful C++ and JavaScript SDK for edge devices, IoT gateways and connected embedded systems.
Stars: ✭ 437 (-60.02%)
Mutual labels:  sensor, edge-computing
Naivebayes
📊 Naive Bayes classifier for JavaScript
Stars: ✭ 127 (-88.38%)
Mutual labels:  machine-learning-algorithms, classifier
iosynth
IoSynth is IoT device/sensor simulator and synthetic data generator.
Stars: ✭ 21 (-98.08%)
Mutual labels:  sensor, iot-device
MicrosoftCloudWorkshop-Asia
Microsoft Cloud Workshop Asia for Intelligent Cloud / Intelligent Edge
Stars: ✭ 20 (-98.17%)
Mutual labels:  microsoft, edge-computing
Sensors Software
sourcecode for reading sensor data
Stars: ✭ 469 (-57.09%)
Mutual labels:  sensor, iot-device
Vscode Icons
Custom Visual Studio Code Icons
Stars: ✭ 1,021 (-6.59%)
Mutual labels:  microsoft
Xp
Windows XP All Editions Universal Product Keys Collection.
Stars: ✭ 47 (-95.7%)
Mutual labels:  microsoft
Maui
.NET MAUI is the .NET Multi-platform App UI, a framework for building native device applications spanning mobile, tablet, and desktop.
Stars: ✭ 13,112 (+1099.63%)
Mutual labels:  microsoft
Machine Learning From Scratch
Succinct Machine Learning algorithm implementations from scratch in Python, solving real-world problems (Notebooks and Book). Examples of Logistic Regression, Linear Regression, Decision Trees, K-means clustering, Sentiment Analysis, Recommender Systems, Neural Networks and Reinforcement Learning.
Stars: ✭ 42 (-96.16%)
Mutual labels:  machine-learning-algorithms
Walbourn.github.io
Games for Windows and the DirectX SDK blog
Stars: ✭ 45 (-95.88%)
Mutual labels:  microsoft
Theserverroom
Weekly shows notes are added here.
Stars: ✭ 49 (-95.52%)
Mutual labels:  microsoft
Utensor cgen
C++ code generator for uTensor https://utensor-cgen.readthedocs.io/en/latest/
Stars: ✭ 42 (-96.16%)
Mutual labels:  edge-computing
25daysinmachinelearning
I will update this repository to learn Machine learning with python with statistics content and materials
Stars: ✭ 53 (-95.15%)
Mutual labels:  machine-learning-algorithms
Computervision Recipes
Best Practices, code samples, and documentation for Computer Vision.
Stars: ✭ 8,214 (+651.51%)
Mutual labels:  microsoft
Ds and ml projects
Data Science & Machine Learning projects and tutorials in python from beginner to advanced level.
Stars: ✭ 56 (-94.88%)
Mutual labels:  machine-learning-algorithms
Hb Uni Sen Wea
Selbstbau-Wetterstation für HomeMatic
Stars: ✭ 51 (-95.33%)
Mutual labels:  sensor
Py Sds011
Python 3 interface to the SDS011 air particulate density sensor.
Stars: ✭ 48 (-95.61%)
Mutual labels:  sensor
Directxtex
DirectXTex texture processing library
Stars: ✭ 1,039 (-4.94%)
Mutual labels:  microsoft

The Edge Machine Learning library

This repository provides code for machine learning algorithms for edge devices developed at Microsoft Research India.

Machine learning models for edge devices need to have a small footprint in terms of storage, prediction latency, and energy. One instance of where such models are desirable is resource-scarce devices and sensors in the Internet of Things (IoT) setting. Making real-time predictions locally on IoT devices without connecting to the cloud requires models that fit in a few kilobytes.

Contents

Algorithms that shine in this setting in terms of both model size and compute, namely:

  • Bonsai: Strong and shallow non-linear tree based classifier.
  • ProtoNN: Prototype based k-nearest neighbors (kNN) classifier.
  • EMI-RNN: Training routine to recover the critical signature from time series data for faster and accurate RNN predictions.
  • Shallow RNN: A meta-architecture for training RNNs that can be applied to streaming data.
  • FastRNN & FastGRNN - FastCells: Fast, Accurate, Stable and Tiny (Gated) RNN cells.
  • DROCC: Deep Robust One-Class Classfiication for training robust anomaly detectors.
  • RNNPool: An efficient non-linear pooling operator for RAM constrained inference.

These algorithms can train models for classical supervised learning problems with memory requirements that are orders of magnitude lower than other modern ML algorithms. The trained models can be loaded onto edge devices such as IoT devices/sensors, and used to make fast and accurate predictions completely offline.

A tool that adapts models trained by above algorithms to be inferred by fixed point arithmetic.

  • SeeDot: Floating-point to fixed-point quantization tool.

Applications demonstrating usecases of these algorithms:

  • GesturePod: Gesture recognition pipeline for microcontrollers.
  • MSC-RNN: Multi-scale cascaded RNN for analyzing Radar data.

Organization

  • The tf directory contains the edgeml_tf package which specifies these architectures in TensorFlow, and examples/tf contains sample training routines for these algorithms.
  • The pytorch directory contains the edgeml_pytorch package which specifies these architectures in PyTorch, and examples/pytorch contains sample training routines for these algorithms.
  • The cpp directory has training and inference code for Bonsai and ProtoNN algorithms in C++.
  • The applications directory has code/demonstrations of applications of the EdgeML algorithms.
  • The tools/SeeDot directory has the quantization tool to generate fixed-point inference code.
  • The c_reference directory contains the inference code (floating-point or quantized) for various algorithms in C.

Please see install/run instructions in the README pages within these directories.

Details and project pages

For details, please see our project page, Microsoft Research page, the ICML '17 publications on Bonsai and ProtoNN algorithms, the NeurIPS '18 publications on EMI-RNN and FastGRNN, the PLDI '19 publication on SeeDot compiler, the UIST '19 publication on Gesturepod, the BuildSys '19 publication on MSC-RNN, the NeurIPS '19 publication on Shallow RNNs, the ICML '20 publication on DROCC, and the NeurIPS '20 publication on RNNPool.

Also checkout the ELL project which can provide optimized binaries for some of the ONNX models trained by this library.

Contributors:

Code for algorithms, applications and tools contributed by:

Contributors to this project. New contributors welcome.

Please email us your comments, criticism, and questions.

If you use software from this library in your work, please use the BibTex entry below for citation.

@misc{edgeml04,
   author = {{Dennis, Don Kurian and Gaurkar, Yash and Gopinath, Sridhar and Goyal, Sachin 
              and Gupta, Chirag and Jain, Moksh and Jaiswal, Shikhar and Kumar, Ashish and
              Kusupati, Aditya and  Lovett, Chris and Patil, Shishir G and Saha, Oindrila and
              Simhadri, Harsha Vardhan}},
   title = {{EdgeML: Machine Learning for resource-constrained edge devices}},
   url = {https://github.com/Microsoft/EdgeML},
   version = {0.4},
}

Microsoft Open Source Code of Conduct This project has adopted the

Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].