What I do, How I do it
Memory-efficient porting of scikit-learn classifiers
Even though a few transpiler already exists to port Machine Learning models from Python to C/C++, none is optimized for resource-constrained hardware like MCUs.
I created RAM-efficient, Flash-efficient implementations of a few of them with the aim to run even on Attiny hardware!
-
1
Memory efficient
Most classifiers require less than 1 Kb of RAM to run. Tree-based models can fit even in 100 bytes of RAM!
-
2
Space efficient
When the model requires space (SVM, PCA), I re-arranged to code to leverage variadic functions and circumvent resource constraints
-
3
Blazing fast
You can run inference on 100+ features at sub-milliseconds speed
Embedded Computer Vision
I implemented a few image-processing and computer vision algorithms hand-crafted to run on the Esp32-cam hardware as fast as possible, while still fitting in the limited RAM available
-
1
Motion detection
Fully configurable sensitivity, definition of custom regions-of-interest, visually debuggable in the browser
-
2
HOG transform
To perform simple real-time object recnognition, you may not need a TensorFlow CNN. Sometimes simpler is better (and 100x faster)!
-
3
Color tracking
A color-blob localization algorithm to track the position of custom objects in real-time
Custom software and tools
If your company needs custom software and tools for data acquisition, cleaning and management, I create those tools for you. Already tried and tested by a Fortune 100 organization, so you're in good company
-
1
Custom model creation
If you have a specific use case and can't find a fit with the solutions already on the market, I create one tailored for you
-
2
Data collection
Do you need to collect data remotely over BLE or WiFi? I got you covered
-
3
Data labelling and visualization
It is often said that in Machine Learning 'Garbage in, Garbage out'. I throw the garbage out of your pipeline
TensorFlow-free advocate
When the industry went all-in on TensorFlow Lite for Microcontrollers, I went the opposite direction.
While recognizing that Tf has it's scope in the embedded world, I advocate that scope is much more limited that it is depicted nowadays
-
1
Sub-millisecond inference
XGBoost can produce state-of-the-art performance on many tasks at a fraction of the execution time of Tf
-
2
Truly Tiny
512 Kb of RAM is tiny compared to GPU-based networks, but it's not so tiny compared to the wide available hardware on the market today
-
3
Portable
Did you know you can run XGBoost on the Attiny85? Check the post
My public work
- EloquentTinyML: a boilerplate-free Arduino library to use TensorFlow on MCUs
- EloquentEsp32Cam: Arduino library to use the Esp32-cam like an expert
- micromlgen: port scikit-learn classifiers from Python to optimized C++
- tinymlgen: port TensorFlow models from Python to C++
- everywhereml: data loading, processing and classification for Python to be ported to C++