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.
| SRAM | 103.8 → 5.9 KB |
| Flash | 264.4 → 12.1 KB |
| Accuracy | 92.0% → 93.4% |
| SRAM | 67.4 → 19.4 KB |
| Flash | 181.9 → 36.7 KB |
| Accuracy | 85.6% → 89.5% |
| Needed | 207.5 KB of RAM |
| On the chip | 85.8 KB used |
| Outputs | same as on the PC, 496/496 photos |
| Model | SRAM | Flash | Accuracy | Less memory |
|---|---|---|---|---|
| AudioKeyword spotting, CNN-LArm ML-Zoo, int8 .tflite | 23.6 → 12.8 KB | 473.2 → 106.7 KB | 84.4% → 87.8% (+3.4 pts) | 4.2× |
| AudioWake word, GRUKeras, int8 .tflite | 48.2 → 10.2 KB | 157.7 → 63.5 KB | 89.7% → 89.8% (unchanged) | 2.8× |
| AudioWake word, DS-CNN-SArm ML-Zoo, int8 .tflite | 22.6 → 13.0 KB | 46.5 → 12.6 KB | 84.8% → 84.7% (within 0.1 pts) | 2.7× |
| AudioKeyword spotting, DS-CNN-LArm ML-Zoo, int8 .tflite | 111.4 → 105.3 KB | 492.0 → 127.9 KB | 86.0% → 92.7% (+6.7 pts) | 2.6× |
| ImagesPerson detection, MobileNetV1public model zoo, int8 .tflite | 98.7 → 69.9 KB | 325.5 → 145.8 KB | 80.9% → 80.9% (unchanged) | 2.0× |
How it works
Your trained model and a sample of its training data. No code changes, no new runtime.
RISC-V, Arm Cortex-M or an NPU. Minimize SRAM, flash or both, within your accuracy limit.
Removes channels and picks bit widths layer by layer, re-plans memory, and retrains against your model.
A .tflite for stock TensorFlow Lite Micro with your file's inputs and outputs, in the same order and under the same names (the report lists any change of scale), its C sources, and a report of every measurement. About 15 minutes.
Formats
.tflite (int8, int16, float) and ONNX (float, QDQ, QOperator); Keras and PyTorch models export to either
Models
CNNs and depthwise CNNs, GRU and LSTM (streaming too), small transformer classifiers, multi-output models and detectors
Checks
Your file and the optimized file both run under TensorFlow Lite Micro on every test sample, and the accuracy limit is judged there, so a file that runs but computes differently on the chip cannot pass
Try it on your own model
Sign up with your email and run your model right away. If your chip is not in the list, or you want help with a model, tell us about it.