SpArSe: CNN on microcontrollers - notitiam/ML-paper-notes GitHub Wiki
Microcontroller specs:
- Arduino UNO: 16 MHz, 32KB Flash, 2KB RAM, ~16 MIPS
- STM32: 72 MHz, 128KB Flash, 20 KB RAM, ~72 MIPS
- ESP32: 160 MHz, dual core, 4MB Flash, 520 KB RAM,
- Raspberry pi zero w: 1 Ghz, SD Card, 512 MB RAM
Availability at home:
- Full microprocessor ~4
- Microcontrollers 36
- Car 10-100
ConvNets
- Visual/image learning tasks
- LeNet: quantized 8bit: 420 KB parameters, 177 KB RAM
- Total computations for LeNet: ~150M
Sparse framework
- network architecture search
- simultaneous optimization of
- accuracy
- ROM size: L0 Norm of all parameters
- RAM size: L0 Norm of layer input + parameters/ input + output
- pareto optimality
- architecture search from scratch
- 3 stages (m configuration each)
- Multi Objective Bayesian Optimization + random
- Neural Network Pruning
- Unstructured pruning
- Sparse Variational Dropout (SpVD)
- Structured pruning (channel pruning)
- Morphism (morph of a set): Incremental evaluation of network, stagewise elimination
Results:
- MNIST:
- 28x28 digit images
- 98.64% accutacy, < 2KB RAM, 2.8KB FLASH
- CIFAR 10:
- 32x32 color images
- 73.8% accuracy (SOTA > 95%), 0.8KB Flash, 1.3KB RAM