emlearn/emlearn

Machine Learning inference engine for Microcontrollers and Embedded devices

What it solves

emlearn 은 개발자가 마이크로컨트롤러와 임베디드 시스템에서 머신러닝 모델을 실행할 수 있게 해줍니다. 고수준 Python 학습 환경(scikit-learn 및 Keras)과 메모리와 처리 능력이 매우 제한된 베어메탈 하드웨어 사이의 격차를 메워줍니다.

How it works

이 도구는 학습된 Python 모델을 휴대 가능하고 최적화된 C99 코드로 변환합니다. 무거운 런타임 환경을 실행하는 대신, 모델의 로직과 파라미터를 직접 C 함수와 데이터 구조로 번역합니다. 생성된 코드는 임베디드 디바이스의 최종 펌웨어에 컴파일됩니다.

Who it’s for

전체 운영체제나 대용량 RAM 없이도 저전력 디바이스(ESP32, ARM Cortex M, AVR Atmega 등)에 ML 모델을 배포해야 하는 임베디드 시스템 엔지니어 및 개발자를 위한 도구입니다.

Highlights

  • Ultra-low footprint: Supports models starting from 2kB of FLASH and 50 bytes of RAM.
  • Broad model support: Converts Random Forests, Decision Trees, Multi-Layer Perceptrons (MLP), and Gaussian Naive Bayes.
  • Hardware agnostic: Works on any device with a C99 compiler, including Arduino and Zephyr.
  • Zero dynamic allocation: The generated C code avoids dynamic memory allocation to ensure stability on embedded devices.
  • Integrated utilities: Includes built-in tools for FFT, IIR filters, and model size estimation.