Fonctionnement
Pour chaque axe spatial :
H_{out} = \left\lfloor \frac{H_{in} + 2p - d\,(k - 1) - 1}{s} \right\rfloor + 1
avec le noyau k, le pas (stride) s, le padding p et la dilatation d. Le padding same (TensorFlow/Keras) donne ceil(H_in / s) ; valid signifie p = 0.
| Couche | Paramètres | MACs |
|---|---|---|
| Conv2D | k² × C_in × F (+ F biais) | H_out × W_out × F × k² × C_in |
| DepthwiseConv2D | k² × C × m (+ C × m biais) | H_out × W_out × C × m × k² |
| Dense | N × U (+ U biais) | N × U |
| Pooling, Flatten | 0 | 0 (considéré comme négligeable) |
Un MAC (multiplication-accumulation) vaut deux FLOPs. Une paire depthwise + pointwise 1×1 (MobileNet) coûte environ k² + C_out fois moins de MACs qu’une convolution standard : c’est pourquoi elle domine les modèles de vision sur MCU.
Valeurs par défaut
La pile initiale est un petit classifieur de type MobileNet sur une entrée 96×96×3, la taille utilisée par les démos courantes de détection de personnes sur STM32 et ESP32. La pile est enregistrée dans l’URL, ce qui permet de partager une architecture.