Relier l'IA de bord avec la détection de visage sur l'OrangePi 5

Ari Mahpour
|  Créé: Novembre 27, 2024  |  Mise à jour: Janvier 17, 2025
Relier l'IA de bord avec la détection de visage sur l'OrangePi 5

Les moteurs d'inférence IA deviennent de plus en plus populaires en périphérie. Nous trouvons des algorithmes d'apprentissage automatique et même de grands modèles de langage transférés vers des systèmes embarqués dans les espaces de loisirs et commerciaux. Dans ce projet, nous allons construire un détecteur de visages en temps réel utilisant un Orange Pi 5 alimenté par le processeur Rockchip 3588. Cela signifie que nous allons, en temps réel, détecter des visages humains à partir de notre flux vidéo de webcam.

Configuration du projet

Pour commencer, nous allons utiliser un Orange Pi 5, une webcam USB et le code dans mon dépôt public. Vous pouvez vous référer à Commencer avec l'Orange Pi 5 et le processeur Rockchip RK3588 pour savoir comment configurer votre Orange Pi 5. Ce qui est génial avec cet exemple, c'est qu'il peut également fonctionner sur un PC ou tout autre dispositif embarqué puissant fonctionnant sous Linux (par exemple, Raspberry Pi 5). Après avoir configuré et démarré votre Orange Pi 5 (ou autre dispositif), nous devrons installer quelques bibliothèques. Cet exemple est conçu autour de Linux (fonctionnant spécifiquement sous Ubuntu), donc nous supposerons que vous avez accès au gestionnaire de paquets Debian. Depuis un terminal, exécutez la commande suivante :

sudo apt update -y && sudo apt install -y python3 python3-pip libopencv-dev python3-opencv v4l-utils

Cela installera tous les paquets nécessaires pour exécuter la démo. Installez également le paquet Python OpenCV en utilisant pip :

pip3 install opencv-python

Vous pouvez également consulter le README pour plus d'étapes afin de valider votre configuration.

CPU vs GPU vs FPGA

Dans AI Vision avec le Kria KV260 Vision AI Starter Kit, nous avons démontré comment construire un moteur d'inférence d'IA de détection de visage en utilisant un FPGA, mais le niveau de complexité était extrêmement élevé. Dans cet exemple, nous allons explorer une manière significativement plus simple de faire la même chose. C'est plus facile parce que nous déléguons la complexité aux CPU ou GPU, que nous allons explorer dans cet article. La vraie beauté réside dans l'optimisation remarquable d'OpenCV pour nos ordinateurs. Utiliser la bibliothèque abstrait complètement toutes les complexités de l'apprentissage machine que nous avons expérimentées en essayant de construire notre propre réseau neuronal sur un FPGA.

Aperçu du code et exécution du projet

Le code est assez simple. Nous pouvons le décomposer en quelques étapes :

Part Insights Experience

Access critical supply chain intelligence as you design.

  1. Configurer OpenCL (c.-à-d., déterminer si un GPU est utilisé).
  2. Charger le classificateur en cascade
  3. Capturer le flux vidéo et le mettre en nuances de gris
  4. Exécuter la cascade avec OpenCV
  5. Si un visage est détecté, dessiner un cadre bleu autour
  6. Répéter les étapes 3-5 en boucle jusqu'à ce que la condition d'arrêt soit atteinte (par exemple, appuyer sur "q" ou fermer la fenêtre pop-up)

La vraie magie ici réside dans le "classificateur en cascade" que nous exploitons avec OpenCV. Il s'agit d'un outil basé sur l'apprentissage automatique pour la détection d'objets qui fonctionne à travers une série d'étapes progressivement complexes (similaire au concept de réseau neuronal). Pensez-y comme à une ligne d'assemblage finement réglée, où chaque étape a un seul travail : détecter des caractéristiques spécifiques comme les bords, les coins ou les formes. Si une région de l'image passe tous ces points de contrôle d'inspection, alors elle est signalée comme un objet détecté. Sinon, elle est écartée tôt pour économiser du temps et de la puissance de traitement.

Un classificateur en cascade concerne avant tout la vitesse et l'efficacité. Il utilise des caractéristiques prédéfinies (c'est-à-dire, des motifs comme les bords ou les contrastes) et les traite par étapes, ce qui le rend parfait pour les tâches en temps réel sur des appareils à capacités de traitement limitées. Les réseaux de neurones, d'autre part, jouent dans une autre ligue. Ils apprennent automatiquement les caractéristiques directement à partir des données, ce qui leur permet de gérer des scénarios plus complexes et variés. Cette puissance, cependant, a un prix : les réseaux de neurones exigent beaucoup plus de ressources computationnelles et de temps. Les classificateurs en cascade sont rapides et légers mais moins flexibles, tandis que les réseaux de neurones sont robustes mais gourmands en ressources. Tout est question de choisir l'outil adéquat pour le travail.

Dans notre cas, nous utilisons un modèle pré-entraîné, le Détecteur de Visages Frontaux Haar (sous forme de fichier XML), qui sait exactement quoi chercher dans un visage et quoi filtrer. Pratiquement parlant, cela suffit comme exemple simple que nous avons exploré. Comme mentionné ci-dessus, cela ne sera pas aussi précis mais c'est encore suffisant pour la plupart des exemples simples de détection de visages.

Pour exécuter le code, tout ce dont vous avez besoin est :

python3 face_detection.py --use-gpu

Ou ignorez le drapeau --use-gpu si vous n'avez pas de GPU sur votre appareil (c'est-à-dire, si vous n'utilisez pas un Orange Pi 5). À ce moment-là, une petite fenêtre devrait apparaître, et un cadre bleu devrait se former autour de votre visage. Dans mon cas, un est apparu immédiatement :

Cloud Storage and Version Control

Store your libraries and design data in one secure, accessible, and version-controlled space.

Real-time face detection using OpenCV and a Webcam
Figure 1 : Détection de visage en temps réel utilisant OpenCV et une Webcam

Conclusion

Ce projet démontre à quel point la détection de visage en temps réel est devenue accessible avec des outils comme OpenCV et des dispositifs comme l'Orange Pi 5. En exploitant le classificateur en cascade léger et efficace (par le chargement d'un fichier XML pré-entraîné), nous avons construit un exemple fonctionnel sans les complexités des réseaux neuronaux ou de la programmation FPGA. Bien que cette approche ait ses limites, comme la gestion de l'éclairage varié ou des angles, c'est un point d'entrée parfait pour expérimenter avec l'IA en périphérie.

Avec seulement quelques bibliothèques et une configuration minimale, vous pouvez reproduire ce projet sur un appareil embarqué ou même un PC standard. À mesure que les moteurs d'inférence IA continuent de s'améliorer, attendez-vous à voir des modèles plus sophistiqués fonctionner sur des appareils à ressources limitées, rendant l'IA avancée plus accessible à tous. Pour consulter le dépôt contenant tout le code pour commencer, visitez https://gitlab.com/ai-examples/orange-pi-face-detection.

A propos de l'auteur

A propos de l'auteur

Ari est un ingénieur doté d'une solide expérience dans la conception, la fabrication, les tests et l'intégration de systèmes électriques, mécaniques et logiciels. Il aime collaborer avec des ingénieurs chargés de la conception, la vérification et les tests afin de favoriser les synergies.

Ressources associées

Documentation technique liée

Retournez à la Page d'Accueil
Thank you, you are now subscribed to updates.
Altium Need Help?