Comment créer une détection de casque avec Raspberry Pi à l’aide de CircuitDigest Cloud

Raspberry Pi Helmet Detection using CircuitDigest Cloud

En tant qu’adultes, il est de notre devoir de respecter le code de la route, la règle la plus importante étant de porter un casque lorsque nous conduisons un deux-roues et de ne pas dépasser la limite de vitesse. Ce n’est pas une règle, mais c’est aussi une question de sécurité. Pensons maintenant du point de vue de l’agent de la police de la circulation. Leur devoir est de surveiller la circulation et de vérifier si tout le monde respecte les règles, mais il est assez difficile pour un agent de la circulation de vérifier en permanence, dans une circulation dense, si chaque conducteur porte un casque ou non. C’est exactement le problème que résout ce projet de détection de casque Raspberry Pi.
Alors, et s’il existait un système compact qui pourrait faciliter cette tâche, fournir des résultats précis et réduire le fardeau de la police de la circulation ? C’est exactement ce que fait ce système ; ici, nous avons utilisé le Raspberry Pi, un contrôleur puissant capable de traiter les données, d’analyser les images et de donner les résultats instantanément. Allons-y et apprenons-en davantage. Vous pouvez également consulter des projets d’IA similaires et des projets Raspberry Pi réalisés précédemment ici sur Circuit Digest.

Réponse rapide : Qu’est-ce qu’un système de détection de casque Raspberry Pi ? UN Système de détection de casque Raspberry Pi est un dispositif compact de surveillance du trafic alimenté par l’IA qui utilise une caméra USB, Python, OpenCV et l’API CircuitDigest Cloud pour détecter automatiquement si les conducteurs de deux-roues portent des casques en temps réel, sans avoir besoin d’une formation d’apprentissage automatique sur l’appareil ou d’un étiquetage manuel des ensembles de données.

Comment fonctionne le système de détection de casque Raspberry Pi

Le système commence par la caméra USB capturant en continu des images de circulation en direct des conducteurs et des véhicules. OpenCV est utilisé pour accéder à la caméra, afficher le flux vidéo en direct et capturer des images soit manuellement en appuyant sur la touche espace en mode clavier, soit automatiquement après un intervalle de temps fixe en mode automatique. Après la capture, l’image est convertie au format JPEG. La bibliothèque Requêtes envoie ensuite l’image en toute sécurité au API de détection de casque Cloud CircuitDigest. Le serveur cloud traite l’image à l’aide d’une détection de casque basée sur l’IA et vérifie si le cycliste porte un casque ou non. Le résultat est ensuite renvoyé au système et affiché dans le terminal. Nous avons également construit un projet intéressant lié à la détection d’objets ; prenez du temps et parcourez notre projet de détection d’objets à l’aide d’ESP32-CAM et Edge Impulse.

Composants requis pour le projet de détection de casque Raspberry Pi

Les composants ci-dessous sont ceux qui sont utilisés pour créer le didacticiel de détection de casque basé sur Raspberry Pi.

S. Non Composants But
1. Raspberry Pi pi Il s’agit du contrôleur principal de cette configuration pour le traitement.
2. Caméra USB Utilisé pour capturer l’image pour le traitement
3. Carte MicroSD Stocke le système d’exploitation Raspberry Pi et le code du projet

Schéma de circuit de détection de casque à l’aide de Raspberry Pi

Le schéma de circuit ci-dessous montre que le Raspberry Pi est connecté à l’alimentation externe pour une alimentation suffisante et que la caméra USB est connectée au port USB de la carte Raspberry Pi. Le Raspberry Pi est connecté à distance à l’ordinateur portable.

Schéma de circuit de détection de casque à l'aide de Raspberry Pi

Configuration étape par étape pour le système de détection de casque Raspberry Pi

Contrairement à ESP32 ou Arduino, le code ne peut pas être flashé directement sur le Raspberry Pi à l’aide de l’IDE Arduino. Avant de lancer le projet, le Raspberry Pi doit être correctement configuré en installant le système d’exploitation sur une carte microSD. Ce processus est effectué à l’aide de Raspberry Pi Imager sur un ordinateur portable ou un PC. Tout d’abord, la carte microSD est insérée dans le système et via Raspberry Pi Imager, le système d’exploitation Raspberry Pi requis et les configurations initiales telles que le Wi-Fi, le nom d’utilisateur, le mot de passe et les paramètres SSH sont sélectionnés et installés. Une fois l’installation du système d’exploitation terminée, la carte SD est retirée et insérée dans l’emplacement pour carte mémoire du Raspberry Pi, et la carte est sous tension. Bien que la première configuration puisse sembler demander beaucoup de travail, elle est en réalité simple une fois terminée. Un guide détaillé étape par étape pour la configuration complète du Raspberry Pi est disponible dans le didacticiel de configuration complète du Raspberry Pi. Les façons de connecter le Raspberry Pi sont les suivantes :

  • Connexion matérielle directe
    La première méthode consiste à connecter des composants externes tels qu’un moniteur, un clavier et une souris directement au Raspberry Pi. Cela permet au Raspberry Pi de fonctionner comme un ordinateur de bureau normal et est principalement utile lors de la configuration initiale et pour le fonctionnement direct.
  • Utilisation de SSH (Secure Shell)
    La deuxième méthode consiste à utiliser SSH, où le Raspberry Pi est accessible à distance depuis un autre ordinateur utilisant la même connexion réseau. Cette méthode permet un contrôle en ligne de commande sans avoir besoin d’un moniteur, d’un clavier ou d’une souris séparé connecté au Raspberry Pi.
  • Utiliser la visionneuse VNC
    La troisième méthode consiste à utiliser VNC Viewer, qui permet d’accéder à distance au bureau graphique complet du Raspberry Pi depuis un autre ordinateur. Cela permet de contrôler le Raspberry Pi exactement comme si vous travailliez directement sur son propre écran, mais depuis un emplacement distant. Pour travailler sur la configuration à l’aide de VNC Viewer, vous pouvez vous référer à ce didacticiel VNC Viewer pour Raspberry Pi pour la procédure détaillée étape par étape.

Avant d’entrer dans l’IDE Thonny présent dans le bureau Raspberry Pi, vous avez d’abord besoin du code ; pour cela, suivez les étapes ci-dessous,
Étape 1⇒ Créer le compte
Tout d’abord, vous devez créer un compte sur CircuitDigest Cloud. Si vous en avez déjà un, allez simplement sur le site Web CircuitDigest Cloud, faites défiler vers le bas et vous remarquerez la fonction de détection de casque ; cliquez dessus et entrez.

Page d'accueil de CircuitDigest Cloud affichant la carte de fonctionnalité de l'API de détection de casque

Étape 2 ⇒ Configurer le seuil de confiance

Là, vous remarquerez la section d’essai de l’API, diverses options telles que l’image, les classes, la confiance, le résultat et une section de sélection du tableau avec ses codes pertinents. Premièrement, vous pouvez minimiser et maximiser le niveau de confiance en fonction de vos besoins, car la valeur de confiance définit le seuil de probabilité minimum pour la détection du casque. Une valeur plus élevée entraîne des détections plus précises mais peut en manquer certaines, tandis qu’une valeur plus faible détecte plus d’objets mais avec moins de certitude.

Section API CircuitDigest Cloud Try avec curseur de seuil de confiance pour la détection du casque

Étape 3⇒ Testez l’API avec un exemple d’image

Actuellement, pour essayer sans carte microcontrôleur, vous devez prendre une photo montrant certaines personnes portant des casques et d’autres non. Téléchargez-le dans la section image et cliquez sur Exécuter le test. En quelques secondes, vous obtiendrez le résultat avec la détection du casque et son décompte également.

Résultat du test API montrant les cadres de délimitation de la détection de casque et compte sur un exemple d'image de trafic

Étape 4 ⇒ Copiez le code et exécutez-le dans Thonny IDE

Sous la page, vous pouvez voir la sélection du microcontrôleur. Actuellement, nous allons essayer ce système avec le Raspberry Pi. Cliquez sur le Raspberry Pi et le site Web vous donnera le code. Copiez simplement le code ; puis allez sur le bureau Raspberry Pi et cliquez sur Thonny IDE pour programmer. Collez le code copié après vous être assuré que toutes les connexions sont correctes. Rien, connectez simplement la caméra USB au Raspberry Pi et exécutez le code ; c’est ça. Prenez n’importe quelle photo factice sur Internet montrant quelqu’un portant un casque et quelqu’un n’en portant pas, ou vous pouvez tester cela en temps réel en prenant une photo en temps réel en prenant une personne avec ou sans casque, à l’aide des touches du clavier. Vous pouvez le définir automatiquement en changeant MODE = « clavier » dans le code, comme,

  • Mode clavier
    Dans ce mode, l’utilisateur capture l’image manuellement en appuyant sur la touche ESPACE du clavier. Il est principalement utilisé lorsque vous travaillez directement avec un moniteur ou via VNC Viewer.
  • Mode automatique
    Dans ce mode, le système capture automatiquement les images après un intervalle de temps fixe sans aucune interaction de l’utilisateur. Il est utile pour les applications de surveillance continue.
  • Mode SSH
    Dans ce mode, le programme s’exécute via l’accès au terminal à l’aide de SSH et capture automatiquement les images sans utiliser la fenêtre d’affichage OpenCV. Les résultats sont affichés directement dans le terminal.

Code Python pour le système de détection de casque Raspberry Pi affiché dans Thonny IDE avec le champ de clé API mis en évidence

Sortie du système de détection de casque Raspberry Pi

L’image ci-dessous montre l’image capturée du Raspberry Pi. Parallèlement, vous pouvez voir les résultats de détection de l’image, où sont identifiées les personnes avec et sans casque. En dessous, le moniteur série affiche le résultat de détection, qui comprend le décompte et la valeur de confiance pour chaque objet identifié.

Sortie de détection de casque Raspberry Pi montrant des cadres de délimitation sur les coureurs et le résultat du terminal avec des scores de confiance

Pourquoi utiliser CircuitDigest Cloud pour la détection de casque ?

Les projets d’IA embarquée nécessitent très souvent un environnement de formation d’apprentissage automatique tel que Edge Impulse ou TensorFlow Lite, où doivent tous être réalisés des ensembles de données étiquetés, une puissance de calcul pour la formation et l’optimisation des modèles d’apprentissage automatique pour le déploiement sur des appareils à faibles ressources. L’API de détection de casque CircuitDigest Cloud élimine toutes ces étapes et vous permet d’effectuer l’intégralité de votre détection de casque via un seul appel API.

  • Ensemble de données non requis : Ce modèle pré-entraîné est destiné à identifier différents types de casques qui se déclinent en différentes couleurs lorsqu’ils sont éclairés différemment.
  • Étiquetage non requis : Tout ce qui concerne la localisation et la classification des objets sera effectué par le serveur.
    Aucune conversion de modèle : vous n’êtes pas obligé de convertir le modèle au format TFLite ou ONNX avant de le déployer sur un Raspberry Pi.
  • Code indépendant du matériel : La même API fonctionne avec votre Raspberry Pi, ESP32-CAM, Arduino Nano 33 BLE, etc.
  • Améliorations continues : Le modèle continuera de s’améliorer au fil du temps à mesure que Circuit Digest mettra à jour le modèle cloud pour une meilleure précision de détection sans qu’il soit nécessaire de reflasher le micrologiciel.

Explication du code pour le projet de détection de casque Raspberry Pi

Le code est écrit en Python pour la détection de casque en temps réel à l’aide d’une caméra USB et de l’API CircuitDigest Cloud. OpenCV est utilisé pour capturer des images en direct et afficher le flux de la caméra sur l’écran. Le programme prend en charge le mode clavier pour la capture manuelle et le mode automatique pour la capture automatique d’images. L’image capturée est convertie au format JPEG pour une transmission facile. À l’aide de la bibliothèque Requests, l’image est envoyée en toute sécurité à l’API cloud via HTTPS. Le serveur traite l’image et renvoie le résultat de la détection du casque au terminal.

import cv2
import requests
import time
import os
import sys
SERVER_URL = "https://www.raspberryme.cloud/api/v1/helmet-detection/detect"
API_KEY    = "YourApikey"

Cette section importe toutes les bibliothèques Python requises pour l’accès à la caméra, la communication API, le contrôle de synchronisation et la gestion du système. OpenCV est utilisé pour capturer des images, tandis que la bibliothèque Requests envoie l’image capturée à l’API CircuitDigest Cloud. L’URL du serveur et la clé API sont également définies ici pour le traitement de la détection du casque.

MODE = "keyboard"
AUTO_INTERVAL = 10
cap = cv2.VideoCapture(0, cv2.CAP_V4L2)
cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1024)

Cette partie sélectionne le mode de fonctionnement du projet, soit le mode clavier, soit le mode automatique. La caméra USB est initialisée à l’aide d’OpenCV et la résolution est définie pour une meilleure qualité d’image. La valeur de l’intervalle automatique détermine la fréquence à laquelle les images sont capturées en mode automatique.

if not cap.isOpened():
   print("Camera not found! Check USB camera connection.")
   sys.exit()

Cette section vérifie si la caméra USB est correctement connectée et détectée par le système. Si la caméra n’est pas disponible, le programme affiche un message d’erreur et arrête l’exécution. Cela empêche le projet de s’exécuter sans entrée matérielle valide.

_, img_encoded = cv2.imencode('.jpg', frame, [cv2.IMWRITE_JPEG_QUALITY, 90])
img_bytes = img_encoded.tobytes()
response = requests.post(SERVER_URL, headers=headers,
                       files=files, timeout=15)

Cette partie capture l’image du flux de la caméra en direct et la convertit au format JPEG pour une transmission efficace. L’image est ensuite envoyée en toute sécurité à l’API de détection de casque CircuitDigest Cloud à l’aide d’une requête HTTPS POST. L’API traite l’image et vérifie la détection du casque.

if response.status_code == 200:
  safe_response = response.text.encode('utf-8', errors="replace").decode('utf-8')
  print("Response:", safe_response)

Cette section gère la réponse reçue du serveur cloud après le traitement de l’image. Si la requête API réussit, le résultat s’affiche dans le terminal, indiquant si un casque est détecté ou non. Cela permet d’identifier rapidement les violations des règles de circulation.

Dépannage du système de détection de casque Raspberry Pi

Si vous rencontrez des problèmes lors de l’exécution du didacticiel du système de détection de casque Raspberry Pi.

Problème 1 : Caméra non détectée
Si la caméra USB n’est pas détectée, le programme peut afficher « Caméra non trouvée » et cesser de fonctionner. Cela se produit généralement en raison d’une connexion USB lâche ou d’une sélection incorrecte du port de l’appareil photo. Reconnectez correctement la caméra et assurez-vous qu’elle est fermement fixée. Vous pouvez également essayer de remplacer cv2.VideoCapture(0) par cv2.VideoCapture(1) si plusieurs caméras sont connectées.
Problème 2 : Expiration du délai de demande d’API
Parfois, l’image peut ne pas être envoyée au serveur et le programme affiche une erreur de délai d’attente. Cela se produit généralement en raison d’une connexion Internet lente ou d’un réseau instable. Vérifiez si le Raspberry Pi est correctement connecté au Wi-Fi ou à Ethernet. L’augmentation de la valeur du délai d’attente dans le code peut également aider à résoudre ce problème.
Problème 3 : Erreur de clé API non valide
Si la clé API est erronée, le serveur cloud rejettera la demande et la détection du casque échouera. Cela peut se produire si la clé est mal copiée ou contient des espaces supplémentaires. Revérifiez la clé API du compte CircuitDigest Cloud et collez-la correctement dans le code. Assurez-vous qu’il n’y a aucun caractère manquant ou supplémentaire.
Problème 4 : Mauvaise précision de détection du casque
Parfois, le système peut ne pas détecter correctement le casque en raison d’un mauvais éclairage ou d’images peu claires. Une mauvaise qualité de caméra et un mauvais angle de caméra peuvent également affecter la détection. Placez la caméra dans une position appropriée avec de bonnes conditions d’éclairage. L’augmentation de la résolution de l’image peut également améliorer la précision.
Problème 5 : Le programme plante pendant l’exécution
Le programme peut s’arrêter soudainement en raison de bibliothèques Python manquantes ou d’erreurs de capture d’image. Cela se produit généralement lorsqu’OpenCV ou Requests ne sont pas installés correctement. Assurez-vous que toutes les bibliothèques requises sont installées avant d’exécuter le code. Redémarrer le Raspberry Pi et vérifier le flux de la caméra peut également aider à résoudre le problème.

Avantages et limites de la détection de casque à l’aide de Raspberry Pi

Le tableau suivant donne une idée claire des limites et des avantages de la détection de casque à l’aide du Raspberry Pi.

S. Non Avantages Limites
1. Détecte automatiquement les violations du casque en temps réel Nécessite une connexion Internet stable pour le traitement cloud
2. Réduit le travail manuel pour la police de la circulation La précision de la détection dépend de la qualité de la caméra
3. Facile à installer et à utiliser avec une caméra USB Un mauvais éclairage peut affecter les résultats de détection
4. Prend en charge les modes de capture manuels et automatiques L’utilisation de l’API Cloud peut avoir des limites quotidiennes ou mensuelles
5. Améliore efficacement le contrôle de la sécurité routière Un léger retard peut survenir en raison du temps de réponse de l’API

Le principal avantage de cette configuration est que nous n’avons pas besoin de prendre des ensembles de données manuellement ou de les télécharger à partir d’Internet, ni d’étiqueter les objets ni de créer un modèle. Avec l’aide de CircuitDigest Cloud, nous flashons simplement le code et l’utilisons comme un modèle prêt à l’emploi. Cela fait gagner du temps, et avec ce temps, nous pouvons nous concentrer davantage sur d’autres modifications matérielles pour de futures améliorations. Cette méthode éliminera l’utilisation de sites Web de formation ML comme Edge Impulse et TensorFlow Lite.

Détection de casque Raspberry Pi GitHub

Ce référentiel GitHub contient un système de détection de casque basé sur Raspberry Pi conçu pour la surveillance de la sécurité en temps réel. Le projet comprend le code source, les schémas matériels et les instructions de configuration pour un déploiement facile. Il constitue une solution pratique pour améliorer le respect de la sécurité sur les lieux de travail et dans les espaces publics.

Détection de casque Raspberry Pi GitHubZip de téléchargement de détection de casque Raspberry Pi

Foire aux questions sur le système de détection de casque Raspberry Pi

⇥ 1. Ce système fonctionne-t-il sans connexion Internet ?
Non, ce système nécessite une connexion Internet car l’image capturée est envoyée à l’API CircuitDigest Cloud pour le traitement de détection du casque. Sans Internet, la détection ne fonctionnera pas.
⇥ 2. Puis-je utiliser n’importe quelle caméra USB pour ce projet ?
Oui, la plupart des webcams USB standard peuvent être utilisées avec le Raspberry Pi pour ce projet. Cependant, l’utilisation d’une caméra de bonne qualité donne une meilleure clarté d’image et améliore la précision de détection.
⇥ 3. A quoi servent le mode clavier et le mode automatique ?
Le mode clavier permet à l’utilisateur de capturer manuellement une image en appuyant sur la touche ESPACE. Le mode automatique capture automatiquement les images après un intervalle de temps fixe, ce qui le rend utile pour la surveillance continue du trafic.
⇥ 4. Comment puis-je améliorer la précision de la détection du casque ?
Vous pouvez améliorer la précision en plaçant la caméra dans des conditions d’éclairage appropriées et en utilisant un angle de caméra clair. L’augmentation de la résolution de l’image et l’ajustement du niveau de confiance contribuent également à de meilleurs résultats de détection.
⇥ 5. Ce système peut-il être utilisé pour la surveillance du trafic en temps réel ?
Oui, ce projet convient à la surveillance du trafic en temps réel au niveau des signaux, des autoroutes, des péages et des aires de stationnement. Il aide les autorités à identifier rapidement les violations liées au port du casque sans vérification manuelle constante.
⇥ 6. Pourquoi Raspberry Pi est-il utilisé au lieu d’utiliser directement ESP32-CAM ?
Raspberry Pi est utilisé car il peut exécuter plus efficacement la communication Python, OpenCV et les API basées sur Internet. Il offre une meilleure puissance de traitement pour gérer en douceur la capture d’images et la communication cloud.

Projets de notification par e-mail utilisant CircuitDigest Cloud

  Comment envoyer des notifications par e-mail depuis ESP32 à l'aide de CircuitDigest CloudComment envoyer des notifications par e-mail depuis Arduino à l'aide de CircuitDigest Cloud  Comment envoyer des notifications par e-mail depuis Raspberry Pi Pico à l'aide de CircuitDigest Cloud

Retrouvez l’histoire de Raspberry Pi dans cette vidéo :

Youtube video

  • Analyseur CAN Bus pour Raspberry Pi Odroid (CANable V2.0 S)
  • Raspberry Pi Zero WH Kit de démarrage complet 8 en 1