SensorForgeOptimizer
Optimize for the edge

We shrink your models to fit edge devices.

Upload a trained model (.tflite, ONNX or Keras, or PyTorch via ONNX) and a sample of its data. Get back a file for stock TensorFlow Lite Micro that needs a fraction of the SRAM and flash, within the accuracy limit you set. Every number is measured by running the file, not estimated.

Try it out →See the results

Measured on real models, across sensors

Your int8 file as given against the optimized int8 file, within a 1-point accuracy limit. SRAM is measured under TensorFlow Lite Micro built for a 32-bit RISC-V core.

Motion
20×
less memory, with higher accuracy
Gesture recognition, GRUPyTorch model as ONNX
SRAM103.8 → 5.9 KB
Flash264.4 → 12.1 KB
Accuracy92.0% → 93.4%
368.2 KB → 18.0 KB of memory
Audio
4.4×
less memory on a public Arm model
Keyword spotting, DS-CNN-MArm ML-Zoo, int8 .tflite
SRAM67.4 → 19.4 KB
Flash181.9 → 36.7 KB
Accuracy86.1% → 89.5%
249.4 KB → 56.1 KB of memory
Images
Fits
a camera model that did not fit now runs on the chip
Person detection, MobileNetV2nRF54L15 board, 188 KB of app RAM
Needed207.5 KB of RAM
On the chip85.8 KB used
Outputssame as on the PC, 496/496 photos
Lossless mode: no data, no retraining
ModelSRAMFlashAccuracyLess memory
AudioKeyword spotting, CNN-LArm ML-Zoo, int8 .tflite
23.6 → 12.8 KB
473.2 → 106.7 KB
85.1% → 87.8% (+2.7 pts)4.2×
AudioWake word, GRUKeras, int8 .tflite
48.2 → 10.2 KB
157.7 → 63.5 KB
89.8% → 89.8% (unchanged)2.8×
AudioKeyword spotting, DS-CNN-LArm ML-Zoo, int8 .tflite
111.4 → 105.3 KB
492.0 → 127.9 KB
86.9% → 92.7% (+5.9 pts)2.6×
AudioWake word, DS-CNN-SArm ML-Zoo, int8 .tflite
22.6 → 14.2 KB
46.5 → 14.2 KB
85.1% → 87.2% (+2.1 pts)2.4×
ImagesPerson detection, MobileNetV1ST model zoo, int8 .tflite
98.7 → 69.9 KB
325.5 → 145.8 KB
80.9% → 80.9% (unchanged)2.0×
Not just the best cases. On 14 public models, SRAM came down on every one (median 44%, from 3% to 89%) and flash by a median of 66%. A quantization-only tool run on the same 14 models changed neither.

How it works

1Upload

Your trained model and a sample of its training data. No code changes, no new runtime.

2Pick the chip

RISC-V, Arm Cortex-M, ESP32-S3 or Ethos-U. Minimize SRAM, flash or both, within your accuracy limit.

3It searches

Removes channels and picks bit widths layer by layer, re-plans memory, and retrains against your model.

4Download

A drop-in .tflite for stock TensorFlow Lite Micro and a report of every measurement. About 15 minutes.

Formats

.tflite (int8, int16, float), ONNX (float, QDQ, QOperator), Keras; PyTorch via ONNX

Models

CNNs and depthwise CNNs, GRU and LSTM (streaming too), multi-output models and detectors

Checks

Every file runs under TensorFlow Lite Micro and is compared with the reference interpreter, so files that run but compute wrong are caught

Try it on your own model

We open the optimizer to teams one at a time. Tell us about your model and chip, and we will set up your account.

Request access →