All Projects → rkirkendall → MLEdgeDeploy

rkirkendall / MLEdgeDeploy

Licence: MIT license
Automatic Over the Air Deployment of Improved Machine Learning Models to IoT Devices for Edge Processing

Programming Languages

objective c
16641 projects - #2 most used programming language
python
139335 projects - #7 most used programming language
go
31211 projects - #10 most used programming language
ruby
36898 projects - #4 most used programming language

Projects that are alternatives of or similar to MLEdgeDeploy

List-CoreML-Models
A Big Awesome List CoreML Models.
Stars: ✭ 120 (+361.54%)
Mutual labels:  coreml
ios-ml-dog-classifier
An iOS app that can detect a dog and determine its breed from an image or video feed.
Stars: ✭ 37 (+42.31%)
Mutual labels:  coreml
deepvac
PyTorch Project Specification.
Stars: ✭ 507 (+1850%)
Mutual labels:  coreml
createml-playgrounds
Create ML playgrounds for building machine learning models. For developers and data scientists.
Stars: ✭ 82 (+215.38%)
Mutual labels:  coreml
DepthPrediction-CoreML
The example of running Depth Prediction using Core ML
Stars: ✭ 118 (+353.85%)
Mutual labels:  coreml
yeelight
The nodeJS client library for controlling yeelight over LAN
Stars: ✭ 52 (+100%)
Mutual labels:  iot-device
MNIST-CoreML
Predict handwritten digits with CoreML
Stars: ✭ 63 (+142.31%)
Mutual labels:  coreml
SentimentVisionDemo
🌅 iOS11 demo application for visual sentiment prediction.
Stars: ✭ 34 (+30.77%)
Mutual labels:  coreml
edge detector
HED real-time iOS edge detector.
Stars: ✭ 40 (+53.85%)
Mutual labels:  coreml
CustomVisionMicrosoftToCoreMLDemoApp
This app recognises 3 hand signs - fist, high five and victory hand [ rock, paper, scissors basically :) ] with live feed camera. It uses a HandSigns.mlmodel which has been trained using Custom Vision from Microsoft.
Stars: ✭ 25 (-3.85%)
Mutual labels:  coreml
theCore
theCore: C++ embedded framework
Stars: ✭ 76 (+192.31%)
Mutual labels:  iot-device
iot-workshop
A complete IoT Workshop
Stars: ✭ 42 (+61.54%)
Mutual labels:  iot-device
yeelight-cli
a low level, cross-platform command line client for Yeelight
Stars: ✭ 43 (+65.38%)
Mutual labels:  iot-device
mlmodelzoo
Build your iOS 11+ apps with the ready-to-use Core ML models below
Stars: ✭ 17 (-34.62%)
Mutual labels:  coreml
DeTeXt
iOS app that detects LaTeX symbols from drawings. Built using PencilKit, SwiftUI, Combine and CoreML for iOS 14(or greater) and macOS 11(or greater).
Stars: ✭ 73 (+180.77%)
Mutual labels:  coreml
awesome-ml-demos-with-ios
The challenge projects for Inferencing machine learning models on iOS
Stars: ✭ 1,040 (+3900%)
Mutual labels:  coreml
iosynth
IoSynth is IoT device/sensor simulator and synthetic data generator.
Stars: ✭ 21 (-19.23%)
Mutual labels:  iot-device
YOLOv3-CoreML
YOLOv3 for iOS implemented using CoreML.
Stars: ✭ 166 (+538.46%)
Mutual labels:  coreml
CarLens-iOS
CarLens - Recognize and Collect Cars
Stars: ✭ 124 (+376.92%)
Mutual labels:  coreml
AnimeGANv3
Use AnimeGANv3 to make your own animation works, including turning photos or videos into anime.
Stars: ✭ 878 (+3276.92%)
Mutual labels:  coreml

Automatic Over the Air Deployment of Improved Machine Learning Models to IoT Devices for Edge Processing

Ricky Kirkendall

Overview

For IoT devices, processing signals on the same layer that they are collected on is desirable because it lessens network dependency and output latency. Achieving this effect with deterministic types of processing is fairly straightforward, as it is simply a matter of running the formerly network-accessible program on the local hardware.

For non-deterministic types of programs, such as those enabled by modern machine learning techniques, there are a few more considerations. Requisite to these techniques is a training process that is both data heavy and compute intensive. This is a significant constraint to consider because most IoT hardware is purpose built for collecting and relaying signals, and, therefore, woefully ill-equipped to handle the intensive training process by which these systems "learn". Once trained, however, such programs shed their dependency on high-end hardware and run perfectly well on minimally equipped systems.

Without on-board training capabilities, these programs can be deployed to process data, but they have no hope improving their output by learning about their inputs.

The system proposed in this document aims to solve this problem by introducing a data-input, model-output feedback loop between the edge and cloud layers. The system uses networked, GPU-enabled machines to perform model training in the cloud as new data becomes available and pushes markedly improved models downstream to edge devices efficiently using delta-compression. In effect, this system can use data collection at the edge to build up the volume of data necessary to train a useful model as benchmarked by a given threshold. Once a given performance milestone is reached, either by improvements to the model architecture, or, from newly available training data, the updated model is sent to edge devices so that all future processing can occur at that layer.

An ideal use case for this system would be to build an unsupervised anomaly detection system that could live on-board edge devices. In this use case, the device would initially send all data up the cloud to build a training set. As the dataset grows, models will be trained at regular intervals until a target performance metric crosses a set threshold. An example would be the implementation of an anomaly detection module by use of a k-means clustering algorithm. In this example, an internal evaluation metric, such as the Silhouette coefficient, would be used as the target performance metric. Once the fully trained model is in place on-board the edge device, no further network usage will be necessary to detect signal anomalies.

Proof of Concept Implementation

Demo GIF

In this demo, a convolutional neural network (CNN) trained on the MNIST dataset is embedded within an iOS application using the native CoreML framework. The model is controlled by a custom SDK that is capable of "hot swapping" the existing model for an updated one without requiring any other changes to the host apps binary (which would require Apple App Store approval).

The initial version of the CNN model is handicapped because it was only trained on 10% of the data, and, thus, is not adequately performant.

The model's performance receives a big boost when 60% more training data becomes available. Once the new data is detected by the system's custom continuous delivery system, the model is retrained, tested and, if found to be sufficiently performant, exported according to a configuration file. The new exported model is statically hosted and a message is sent to the SDK to pull down the latest model and swap it out.

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].