Aperçu
Dans un article précédent, nous avons présenté une procédure pour développer un flux de reconnaissance d’image à l’aide de Node-RED et TensorFlow.js. Maintenant, appliquons ces enseignements de ce que nous avons fait et développons un système d’alerte par e-mail qui utilise une caméra de surveillance avec la reconnaissance d’image. Comme le montre l’image suivante, nous allons créer un flux qui envoie automatiquement une alerte par e-mail lorsqu’une personne suspecte est capturée dans un cadre de caméra de surveillance.
Objectif: Développer le flux
Dans ce flux, l’image de la caméra de surveillance est périodiquement acquise à partir du serveur Web, et l’image est affichée sous le « Image originale » nœud en bas à gauche. Après cela, l’image est reconnue à l’aide du TensorFlow.js nœud. Le résultat de la reconnaissance et l’image avec les résultats de la reconnaissance sont affichés sous déboguer l’onglet et le « Image avec annotation » nœud, respectivement.
Si une personne est détectée par reconnaissance d’image, un e-mail d’alerte avec le fichier image en pièce jointe sera envoyé à l’aide du SendGrid nœud. Comme il est difficile de mettre en place une vraie caméra de surveillance, nous utiliserons un échantillon image envoyée par une caméra de surveillance dans la préfecture de Kanagawa au Japon pour vérifier la quantité d’eau dans la rivière.
Nous expliquerons la procédure de création de ce flux dans les sections suivantes. Pour l’environnement Node-RED, utilisez votre PC local, un Raspberry Pi ou un déploiement basé sur le cloud.
Installez les nœuds requis
Cliquez sur le menu hamburger en haut à droite de l’éditeur de flux Node-RED, allez à « Gérer la palette » -> Onglet « Palette » -> « Installer » onglet et installez les nœuds suivants.
Créer un flux d’acquisition de données d’image
Tout d’abord, créez un flux qui acquiert les données binaires d’image du serveur Web. Comme dans le flux ci-dessous, placez un nœud d’injection (le nom sera changé en « Horodatage » lorsqu’il est placé dans l’espace de travail), demande http nœud, et aperçu de l’image et connectez-les avec des fils dans l’interface utilisateur.
Puis double-cliquez sur le demande http node pour modifier les paramètres de propriété du nœud.
Régler demande http paramètres de propriété de nœud
Collez l’URL de l’image de la caméra de surveillance dans l’URL sur l’écran de réglage des propriétés du demande http nœud. (Dans Google Chrome, lorsque vous cliquez avec le bouton droit sur l’image et sélectionnez « Copier l’adresse de l’image » dans le menu, l’URL de l’image est copiée dans le presse-papiers.) Sélectionnez également « Un tampon binaire » comme format de sortie.
Exécutez le flux pour acquérir des données d’image
Clique le Déployer en haut à droite de l’éditeur de flux, puis cliquez sur le bouton injecter le nœud est à gauche. Ensuite, le message est envoyé depuis le injecter nœud au demande http nœud à travers le fil, et l’image est acquise à partir du serveur Web qui fournit l’image de la caméra de surveillance. Après réception des données d’image, un message contenant les données au format binaire est envoyé au aperçu de l’image nœud, et l’image est affichée sous le aperçu de l’image nœud.
Une image de la rivière prise par la caméra de surveillance s’affiche en bas à droite.
Créer un flux pour la reconnaissance d’image des données d’image acquises
Ensuite, créez un flux qui analyse ce qui se trouve dans l’image acquise. Placer un cocossd nœud, un déboguer node (le nom sera changé en msg.payload quand vous le placez), et une seconde aperçu de l’image nœud.
Ensuite, connectez le borne de sortiel sur le côté droit du demande http node et le borne d’entrée sur le côté gauche du cocossd nœud.
Ensuite, connectez le borne de sortie sur le côté droit du cocossd nœud et le nœud de débogage, le borne de sortie sur le côté droit du cocossd node et le borne d’entrée sur le côté gauche du aperçu de l’image nœud avec les fils respectifs.
À travers le fil, les données binaires de l’image de la caméra de surveillance sont envoyées au cocossd nœud, et après que la reconnaissance d’image soit effectuée à l’aide de TensorFlow.js, le nom de l’objet est affiché dans le déboguer et l’image avec le résultat de la reconnaissance d’image s’affiche dans le aperçu de l’image nœud.
le cocossd node est conçu pour stocker le nom de l’objet dans la variable msg.payload, et les données binaires de l’image avec l’annotation dans la variable msg.annotatedInput.
Pour que ce flux fonctionne comme prévu, vous devez double-cliquer sur le bouton aperçu de l’image nœud utilisé pour afficher l’image et modifier les paramètres de propriété du nœud.
Régler aperçu de l’image paramètres de propriété de nœud
Par défaut, le aperçu de l’image Le nœud affiche les données d’image stockées dans la variable msg.payload. Ici, changez cette variable par défaut en msg.annotatedInput.
Régler injecter paramètres de propriété de nœud
Puisque le flux est exécuté régulièrement toutes les minutes, le injecter La propriété du nœud doit être modifiée. dans le Répéter menu déroulant, sélectionnez « intervalle » Et mettre « 1 minute » comme intervalle de temps. De plus, puisque nous voulons démarrer le processus d’exécution périodique immédiatement après avoir appuyé sur la touche Déployer , cochez la case à gauche de «Injecter une fois après 0,1 seconde».
Exécutez le flux pour la reconnaissance d’image
Le processus de flux sera exécuté immédiatement après avoir appuyé sur Déployer bouton. Lorsque la personne (l’auteur) est affichée sur la caméra de surveillance, le résultat de la reconnaissance d’image « la personne » est affiché dans l’onglet de débogage sur la droite. Aussi, sous le aperçu de l’image noeud, vous verrez l’image annotée d’un carré orange.
Créer un flux d’envoi d’un e-mail lorsqu’une personne est prise dans la caméra de surveillance
Enfin, créez un flux pour envoyer l’image annotée par e-mail lorsque le nom de l’objet dans le résultat de la reconnaissance d’image est « la personne ». En tant que nœud suivant de la cocossd nœud, placez un commutateur nœud qui effectue la détermination de la condition, un changement nœud qui attribue des valeurs, et un sendgrid nœud qui envoie un e-mail et connectez chaque nœud avec un fil.
Ensuite, modifiez les paramètres de propriété pour chaque nœud, comme détaillé dans les sections ci-dessous.
Ajuste le commutateur paramètres de propriété de nœud
Définissez la règle pour exécuter le flux suivant uniquement si msg.payload contient la chaîne « la personne »
Pour définir cette règle, saisissez « la personne » dans la chaîne de comparaison pour la condition « == » (sur le côté droit du « Az » Élément UX dans la boîte de dialogue des paramètres de propriété pour le nœud de commutation).
Ajuste le changement paramètres de propriété de nœud
Pour joindre l’image avec annotation à l’e-mail, remplacez les données d’image stockées dans la variable msg.annotatedInput à la variable msg.payload. Tout d’abord, ouvrez le menu déroulant de « Az » sur le côté droit de l’élément UX de « Valeur cible » et sélectionnez «Msg.». Puis entrez « AnnotatedInput » dans la zone de texte à droite.
Si vous oubliez de changer pour «Msg.» dans le menu déroulant qui apparaît lorsque vous cliquez sur «Az», le flux ne fonctionne souvent pas bien, alors vérifiez à nouveau pour être sûr qu’il est réglé sur «Msg.».
Ajuste le sendgrid paramètres de propriété de nœud
Définissez la clé API à partir du Écran de gestion SendGrid. Ensuite, entrez l’adresse e-mail de l’expéditeur et l’adresse e-mail du destinataire.
Enfin, pour voir plus facilement ce que fait chaque nœud, ouvrez les propriétés de nœud de chaque nœud et définissez le nom approprié.
Validez le fonctionnement du flux pour envoyer un email lorsque la caméra de surveillance capture une personne dans le cadre
Lorsqu’une personne est capturée dans l’image de la caméra de surveillance, le résultat de la reconnaissance d’image est affiché dans l’onglet de débogage de la même manière que dans le flux de confirmation précédent et le cadre orange est affiché dans l’image sous le aperçu de l’image nœud de « Image avec annotation ». Vous pouvez voir que la personne est correctement reconnue.
Après cela, si le processus de jugement, le processus de substitution et le processus de transmission par e-mail fonctionnent comme prévu, vous recevrez un e-mail avec le fichier image avec l’annotation attachée à votre smartphone comme suit:
Conclusion
En utilisant le flux créé dans cet article, vous pouvez également créer un système de sécurité simple pour votre propre jardin à l’aide d’une caméra connectée à un Raspberry Pi. À plus grande échelle, la reconnaissance d’image peut également être exécutée sur des données d’image acquises à l’aide de caméras réseau prenant en charge des protocoles tels que ONVIF.
À propos de l’auteur: Kazuhito Yokoi est ingénieur au centre de solutions OSS d’Hitachi, situé à Yokohama, au Japon.