RNNPool : Pooling non linéaire efficace pour l'inférence sous contrainte de mémoire RAM

Les réseaux de neurones convolutifs (CNN) classiques conçus pour des tâches de vision par ordinateur présentent généralement de grandes cartes d’activation intermédiaires. Ces dernières nécessitent une mémoire de travail importante, ce qui les rend inadaptées au déploiement sur des dispositifs à ressources limitées, couramment utilisés pour l’inférence sur le bord (edge). Une réduction agressive des images par des opérateurs de pooling ou des convolutions à pas élevé peut atténuer ce problème, mais entraîne une baisse significative de la précision en raison de l’agrégation brutale des cartes de caractéristiques opérée par les méthodes de pooling standards. Dans cet article, nous introduisons RNNPool, un nouvel opérateur de pooling fondé sur les réseaux de neurones récurrents (RNN), capable d’agréger efficacement les caractéristiques sur de grandes régions d’une image tout en permettant un downsampling rapide des cartes d’activation. Des évaluations expérimentales montrent qu’un bloc RNNPool peut remplacer efficacement plusieurs blocs dans diverses architectures, telles que MobileNets ou DenseNet, lors de tâches de vision standard comme la classification d’images ou la détection de visages. Autrement dit, RNNPool permet de réduire de manière significative la complexité computationnelle et l’utilisation mémoire maximale pendant l’inférence, tout en maintenant une précision comparable. Nous avons combiné RNNPool avec l’architecture standard S3FD pour concevoir une méthode de détection de visages atteignant un score MAP de pointe (state-of-the-art) sur des microcontrôleurs ARM Cortex-M4 de petite taille, disposant de moins de 256 Ko de mémoire RAM. Le code source est disponible à l’adresse suivante : https://github.com/Microsoft/EdgeML.