mit-han-lab/tinyengine logo

mit-han-lab/tinyengine

Free

[NeurIPS 2020] MCUNet: Tiny Deep Learning on IoT Devices; [NeurIPS 2021] MCUNetV2: Memory-Efficient Patch-based Inference for Tiny Deep Learning; [NeurIPS 2022] MCUNetV3: On-Device Training Under 256KB Memory

FreeFree tier
Type
Open Source
Company
MIT HAN Lab

About mit-han-lab/tinyengine

TinyEngine is a memory-efficient and high-performance neural network library for microcontrollers, developed as part of the MCUNet project at MIT HAN Lab. It is co-designed with TinyNAS to fit tight memory budgets, enabling tiny deep learning on IoT devices. The library supports both inference and on-device training under extreme memory constraints (e.g., under 256KB), with code generation for patch-based inference and tutorials for visual wake words, person detection, and face mask detection. TinyEngine has been published at NeurIPS 2020 (MCUNet), 2021 (MCUNetV2), and 2022 (MCUNetV3).

Key Features

Memory-efficient neural network library for microcontrollers
Co-designed with TinyNAS for tight memory budgets
Supports on-device inference and training (under 256KB memory)
Patch-based inference for efficient computation
Code generation for deployment on ARM-based MCUs
Includes tutorials for visual wake words, person detection, and face mask detection
Open-source with official implementation of MCUNet (NeurIPS 2020, 2021, 2022)

Pros & Cons

Pros
  • Memory-optimized for microcontrollers with limited RAM (e.g., 256KB)
  • High-performance through co-design with TinyNAS
  • Supports both inference and on-device training
  • Open-source and actively maintained by MIT HAN Lab
  • Includes practical demos and tutorials for real-world deployments
Cons
  • Primarily targets ARM Cortex-M microcontrollers; limited portability to other architectures
  • Requires familiarity with embedded systems and microcontroller programming
  • Model support may be limited compared to full-scale deep learning frameworks
  • Documentation and community support are centered around the academic project

Best For

Tiny deep learning on IoT devices and microcontrollersOn-device training under extreme memory constraintsVisual wake words detection on low-power hardwarePerson detection and face mask detection on embedded camerasRunning neural networks on STM32 and OpenMV Cam H7 platforms

FAQ

What is TinyEngine?
TinyEngine is a memory-efficient and high-performance neural network library for microcontrollers, developed as part of the MCUNet project at MIT HAN Lab. It enables tiny deep learning on IoT devices with both inference and on-device training capabilities.
Is TinyEngine free to use?
Yes, TinyEngine is open-source and free to use. The source code is available on GitHub under the MIT HAN Lab repository.
What hardware does TinyEngine support?
TinyEngine targets ARM Cortex-M microcontrollers, with specific examples on STM32H743 and OpenMV Cam H7 boards.
Does TinyEngine support training on microcontrollers?
Yes, TinyEngine includes a Tiny Training Engine that supports on-device training under 256KB memory, as demonstrated in MCUNetV3 (NeurIPS 2022).