With the advent of powerful yet inexpensive edge computers it has become easy to utilise such computers for visual processing tasks. However, maintaining models on such devices in high numbers and multiple versions is a challenging problem. MLPIOT is designed having all such challenges in mind.

Annotator UI

Machine Learning Platform for IOT (MLPIOT) is a platform for developing smart sensors. It provides an abstraction for a machine vision system and an ecosystem around the abstraction to make it easy to implement, test, train, deploy, upgrade, maintain, and retrain machine learning applications.


MLPIOT is particularly designed to help with the task of implementing vision applications for embedded systems in manufacturing environments where multiple instances of an application is needed to be installed, tuned, and maintained for a long time. Although it can also be used for other scenarios.

MLPIOT includes:

  • Machine learning application life-cycle management
    • Supports edge management
    • Training on edge
    • Deployment on edge
    • Remote maintenance
  • Integration with factory standards such as OPC UA
  • Tools for scaling machine learning application in different settings

MLPIOT Abstraction Source Code

Architecture Overview

An MLPIOT application is defined by a mandatory processing pipeline and an optional training pipeline.

Process Pipeline

The processing pipeline is a life-cycle management which initializes and manages the following components:

Scene Descriptor

Scene Descriptor is the core of MLPIOT vision apps. It is responsible for interpreting a given image and describing it as a Scene Description, which is a list of annotated objects.

Event Extractor

As soon as a Scene Description is prepared, it is passed to an Event Extractor, which is responsible for analysing the scene and emitting events with standardized severity levels.

Action Executor

An application can be configured to have different lists of Action Executors in different situations. Developers can write their own Action Executors, or use the provided general-purpose ones like Logger for when the application is being developed, or OPC UA one which publishes the events through the standard protocol.