3 points par GN⁺ 2024-06-26 | 1 commentaires | Partager sur WhatsApp

Implémentation de vision par ordinateur accélérée par SIMD sur un microcontrôleur à 2 $

Performances de l'ESP32-S3

  • L'ESP32-S3 est un microcontrôleur bon marché doté d'un CPU double cœur à 240 MHz et de divers périphériques, dont le Wi‑Fi et une radio Bluetooth Low Energy.
  • Cette puce prend en charge des instructions SIMD 128 bits, qui permettent d'améliorer fortement les performances lorsqu'elles sont exploitées.

Implémentation d'un détecteur de coins FAST accéléré par SIMD

  • En accélérant le détecteur de coins FAST avec des instructions SIMD, il devient possible de traiter des images QVGA (320x240) en environ 6 ms.
  • Cela permet d'atteindre environ deux fois les performances de l'implémentation de référence.

Langage assembleur et allocateur de registres

  • L'auteur a appris l'assembleur sur l'ESP32-S3 et a écrit un allocateur de registres basique (basm) pour contourner les limitations de la puce.
  • Une fonction traitant 16 pixels à la fois a été implémentée à l'aide d'instructions SIMD.

Traitement des données de pixels

  • Le traitement des pixels consiste à comparer les écarts entre le pixel central et les pixels environnants.
  • Une méthode appropriée de transformation des données de pixels a été imaginée pour surmonter les limitations de l'ESP32-S3.

Gain de performances

  • Le détecteur de coins FAST accéléré par SIMD améliore la vitesse de traitement d'environ 220 %.
  • Grâce à cela, l'ESP32-S3 peut traiter en temps réel un flux VGA à 30 fps.

L'avis de GN⁺

  • Polyvalence de l'ESP32-S3 : l'ESP32-S3 offre des performances puissantes pour son prix et se révèle utile dans de nombreux projets IoT et systèmes embarqués.
  • Importance des instructions SIMD : exploiter les instructions SIMD permet d'obtenir de hautes performances même sur du matériel peu puissant.
  • Apprentissage de l'assembleur : apprendre l'assembleur aide à comprendre le fonctionnement détaillé du matériel et à développer des capacités d'optimisation.
  • Dépassement des contraintes : surmonter les limitations du matériel permet de développer une résolution de problèmes créative.
  • Vision par ordinateur en temps réel : cela montre qu'il est possible d'exécuter des tâches de vision par ordinateur en temps réel même sur des microcontrôleurs à faible coût.

1 commentaires

 
GN⁺ 2024-06-26
Avis Hacker News
  • C’est impressionnant que le silicium coûte moins cher qu’un café moyen. Peut-être que les puces ne sont pas trop bon marché, mais que le café est trop cher.
  • La carte ESP32-CAM prend en charge des projets de vision par ordinateur pratiques.
  • Si cela vous intéresse, il est recommandé de regarder le produit Edge Impulse.
  • Edge Impulse optimise les tâches de deep learning, de vision par ordinateur et de DSP.
  • Vous pouvez téléverser des modèles TensorFlow, PyTorch et JAX, puis obtenir une bibliothèque C++ optimisée.
  • Edge Impulse propose un studio d’entraînement de modèles adapté à divers matériels embarqués.
  • Le court article sur le SIMD sur l’ESP32-S3 vaut aussi le détour.
  • Je me demande s’il serait possible d’utiliser plusieurs ESP32 en parallèle pour gérer une résolution et une fréquence d’images plus élevées.
  • Le détecteur de caractéristiques FAST a été accéléré avec SIMD, améliorant les performances de 220 %.
  • ARMv7 et ARMv8 disposent d’extensions optionnelles du jeu d’instructions SIMD.
  • L’Orrin Nano offre 40 TOPS, ce qui est suffisant pour Copilot+.
  • Des recherches ont été menées sur une méthode de conversion de la lumière infrarouge en lumière visible.
  • Il existe la bibliothèque PicoVGA, qui permet d’implémenter un affichage VGA/TV sur Raspberry Pi Pico.
  • Je me demande s’il est possible d’utiliser des contrôleurs ESP32 en Rust.
  • Je me demande si l’ESP32 dispose de slots VLIW et s’il est possible d’avoir un empaquetage d’instructions plus serré.
  • Le SIMD est supérieur au SMT pour ce type de traitement.
  • Je préfère quelque chose de plus cher et de meilleure qualité. Il y a l’Intel UpSquared.