AWS IoT Greengrass Version 1 est entré dans la phase de durée de vie prolongée le 30 juin 2023. Pour plus d'informations, consultez la politique de AWS IoT Greengrass V1 maintenance. Après cette date, AWS IoT Greengrass V1 ne publiera pas de mises à jour fournissant des fonctionnalités, des améliorations, des corrections de bogues ou des correctifs de sécurité. Les appareils qui fonctionnent AWS IoT Greengrass V1 sous tension ne seront pas perturbés et continueront à fonctionner et à se connecter au cloud. Nous vous recommandons vivement de migrer vers AWS IoT Greengrass Version 2, qui ajoute de nouvelles fonctionnalités importantes et prend en charge des plateformes supplémentaires.
Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Connecteur de détection d'objets ML
Avertissement
Ce connecteur a été déplacé dans lePhase de vie prolongée, etAWS IoT Greengrassne publiera pas de mises à jour fournissant des fonctionnalités, des améliorations aux fonctionnalités existantes, des correctifs de sécurité ou des corrections de bugs. Pour plus d'informations, consultez AWS IoT Greengrass Version 1politique de maintenance.
Détection d'objets MLconnecteursfournit un service d'inférence de Machine Learning (ML) qui s'exécute surAWS IoT GreengrassCore. Ce service d'inférence local effectue la détection d'objets à l'aide d'un modèle de détection d'objets compilé par le SageMaker Compilateur Neo deep learning. Deux types de modèles de détection d'objets sont pris en charge : Détecteur Multibox Detector (SSD) et You Only Look Only Look Once (YOLO) v3. Pour plus d'informations, consultez Exigences du modèle de détection d'objets.
Les fonctions Lambda définies par l'utilisateur utilisent leAWS IoT GreengrassMachine Learning SDK pour soumettre des demandes d'inférence au service d'inférence local. Le service effectue l'inférence locale sur une image d'entrée et renvoie une liste de prédictions pour chaque objet détecté dans l'image. Chaque prédiction contient une catégorie d'objet, un score de fiabilité de prédiction et des coordonnées en pixels qui spécifient un cadre de délimitation autour de l'objet prédit.
AWS IoT Greengrassfournit des connecteurs ML Object Detection pour plusieurs plateformes :
Connecteur |
Description et ARN |
---|---|
Détection d'objets ML Aarch64 JTX2 |
Service d'inférence de détection d'objets pour NVIDIA Jetson TX2. Prend en charge l'accélération GPU. ARN : |
Détection d'objets ML x86_64 |
Service d'inférence de détection d'objets pour les plateformes x86_64. ARN : |
Détection d'objets ML ARMv7 |
Service d'inférence de détection d'objets pour les plateformes ARMv7. ARN : |
Prérequis
Ces connecteurs possèdent les exigences suivantes :
-
AWS IoT GreengrassCore Software 1.9.3 ou version ultérieure.
-
Python
version 3.7 ou 3.8 installée sur l'appareil principal et ajoutée à la variable d'environnement PATH. Note
Pour utiliser Python 3.8, exécutez la commande suivante pour créer un lien symbolique à partir du dossier d'installation Python 3.7 par défaut vers les binaires Python 3.8 installés.
sudo ln -s
path-to-python-3.8
/python3.8 /usr/bin/python3.7Ceci configure votre appareil de sorte qu'il réponde aux exigence de Python pour AWS IoT Greengrass.
-
Dépendances pour le SageMaker Neo Deep Learning Runtime installé sur l'appareil principal (noyau). Pour plus d'informations, consultez Installation de dépendances d'exécution Neo Deep Learning sur le noyau AWS IoT Greengrass.
-
Une ressource d'apprentissage machine du groupe Greengrass. La ressource d'apprentissage-machine doit faire référence à un compartiment Amazon S3 qui contient un modèle de détection d'objets. Pour de plus amples informations, veuillez consulterSources du modèle Amazon S3.
Note
Le modèle doit être un détecteur Multibox unique ou un type de modèle de détection d'objet You Look Once v3. Il doit être compilé à l'aide du SageMaker Compilateur Neo deep learning. Pour plus d'informations, consultez Exigences du modèle de détection d'objets.
-
LeConnecteur ML Feedbackajouté au groupe Greengrass et configuré. Cette opération est obligatoire uniquement si vous souhaitez utiliser le connecteur pour charger les données d'entrée de modèle et publier les prédictions dans une rubrique MQTT.
-
AWS IoT GreengrassKit SDK de Machine Learningv1.1.0 est nécessaire pour interagir avec ce connecteur.
Exigences du modèle de détection d'objets
Les connecteurs ML Object Detection prennent en charge les types de modèles de détection d'objet Single Shot Multibox Detector (SSD) et You Only Look Once (YOLO) v3. Vous pouvez utiliser les composants de détection d'objets fournis par GluonCV
Votre modèle de détection d'objets doit être formé avec 512 x 512 images d'entrée. Les modèles préformés du GluonCV Model Zoo répondent déjà à cette exigence.
Les modèles de détection d'objets formés doivent être compilés avec le kit SageMaker Compilateur Neo deep learning. Lors de la compilation, assurez-vous que le matériel cible correspond au matériel de votre appareil Greengrass principal. Pour de plus amples informations, veuillez consulter SageMaker Neodans leAmazon SageMaker Manuel du développeur.
Le modèle compilé doit être ajouté en tant que ressource d'apprentissage-machine (Source du modèle Amazon S3) au même groupe Greengrass que le connecteur.
Paramètres du connecteur
Ces connecteurs fournissent les paramètres suivants.
MLModelDestinationPath
-
Chemin d'accès absolu au compartiment Amazon S3 qui contient le modèle d'apprentissage-machine compatible Neo. Il s'agit du chemin de destination spécifié pour la ressource de modèle ML.
Nom d'affichage dans leAWS IoTConsole : Chemin de destination du modèle
Obligatoire
true
Type:
string
Modèle valide :
.+
MLModelResourceId
-
ID de la ressource de ML qui référence le modèle de source.
Nom d'affichage dans leAWS IoTConsole : Ressources ML du groupe Greengrass
Obligatoire
true
Type:
S3MachineLearningModelResource
Modèle valide :
^[a-zA-Z0-9:_-]+$
LocalInferenceServiceName
-
Nom du service d'inférence local. Les fonctions Lambda définies par l'utilisateur appellent le service en transmettant le nom au
invoke_inference_service
Fonction duAWS IoT GreengrassKit SDK de Machine Learning. Pour voir un exemple, consultez Exemple d'utilisation.Nom d'affichage dans leAWS IoTConsole : Nom du service d'inférence local
Obligatoire
true
Type:
string
Modèle valide :
^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$
LocalInferenceServiceTimeoutSeconds
-
Durée (en secondes) avant laquelle la demande d'inférence est interrompue. La valeur minimale est de 1. La valeur par défaut est 10.
Nom d'affichage dans leAWS IoTConsole : Délai (secondes)
Obligatoire
true
Type:
string
Modèle valide :
^[1-9][0-9]*$
LocalInferenceServiceMemoryLimitKB
-
Quantité de mémoire (en Ko) à laquelle le service a accès. La valeur minimale est de 1.
Nom d'affichage dans leAWS IoTConsole : Limite de mémoire
Obligatoire
true
Type:
string
Modèle valide :
^[1-9][0-9]*$
GPUAcceleration
-
Contexte de calcul de l'UC ou du GPU (accéléré). Cette propriété s'applique au connecteur ML Image Classification Aarch64 JTX2 uniquement.
Nom d'affichage dans leAWS IoTConsole : Accélération GPU
Obligatoire
true
Type:
string
Valeurs valides :
CPU
ouGPU
MLFeedbackConnectorConfigId
-
ID de la configuration de commentaire à utiliser pour charger les données d'entrée du modèle. Cela doit correspondre à l'ID d'une configuration de commentaire définie pour le connecteur ML Feedback.
Cetteest obligatoire uniquement si vous souhaitez utiliser le connecteur ML Feedback pour charger les données d'entrée du modèle et publier des prédictions dans une rubrique MQTT.
Nom d'affichage dans leAWS IoTConsole : ID de configuration du connecteur ML Feedback
Obligatoire
false
Type:
string
Modèle valide :
^$|^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$
Exemple de création de connecteur (AWS CLI)
La commande CLI suivante permet de créer unConnectorDefinition
avec une version initiale qui contient un connecteur ML Object Detection. Cet exemple crée une instance du connecteur ML Object Detection ARMv7l.
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MyObjectDetectionConnector", "ConnectorArn": "arn:aws:greengrass:
region
::/connectors/ObjectDetectionARMv7/versions/1", "Parameters": { "MLModelDestinationPath": "/path-to-model", "MLModelResourceId": "my-ml-resource", "LocalInferenceServiceName": "objectDetection", "LocalInferenceServiceTimeoutSeconds": "10", "LocalInferenceServiceMemoryLimitKB": "500000", "MLFeedbackConnectorConfigId" : "object-detector-random-sampling" } } ] }'
Note
La fonction Lambda de ces connecteurs dispose d'unlongue duréeCycle de vie.
DansAWS IoT Greengrass, vous pouvez ajouter un connecteur à partir duConnecteurs. Pour plus d'informations, consultez Mise en route avec les connecteurs Greengrass (console).
Données d'entrée
Ces connecteurs acceptent un fichier image comme entrée. Les fichiers image d'entrée doivent être au format jpeg
ou png
. Pour plus d'informations, consultez Exemple d'utilisation.
Ces connecteurs n'acceptent pas les messages MQTT comme données d'entrée.
Données de sortie
Ces connecteurs renvoient une liste formatée des résultats de prédiction pour les objets identifiés dans l'image d'entrée :
{ "prediction": [ [ 14, 0.9384938478469849, 0.37763649225234985, 0.5110225081443787, 0.6697432398796082, 0.8544386029243469 ], [ 14, 0.8859519958496094, 0, 0.43536216020584106, 0.3314110040664673, 0.9538808465003967 ], [ 12, 0.04128098487854004, 0.5976729989051819, 0.5747185945510864, 0.704264223575592, 0.857937216758728 ], ... ] }
Chaque prédiction de la liste est contenue entre crochets et contient six valeurs :
-
La première valeur représente la catégorie d'objets prédite pour l'objet identifié. Les catégories d'objets et leurs valeurs correspondantes sont déterminées lors de la formation de votre modèle d'apprentissage automatique de détection d'objets dans le compilateur Neo Deep Learning.
-
La deuxième valeur est le score de confiance pour la prédiction de catégorie d'objet. Cela représente la probabilité que la prédiction soit correcte.
-
Les quatre dernières valeurs correspondent aux dimensions en pixels qui représentent un cadre de délimitation autour de l'objet prédit dans l'image.
Ces connecteurs ne publient pas de messages MQTT en tant que données de sortie.
Exemple d'utilisation
L'exemple de fonction Lambda suivant utilise leAWS IoT GreengrassKit SDK de Machine Learningpour interagir avec un connecteur de détection d'objets ML.
Note
Vous pouvez télécharger le kit SDK à partir duAWS IoT GreengrassKit SDK de Machine LearningPage des téléchargements.
L'exemple initialise un client de kit de développement logiciel et appelle de façon synchrone la fonction invoke_inference_service
du SDK pour appeler le service d'inférence local. Il transmet le type d'algorithme, le nom de service, le type d'image et le contenu de l'image. Ensuite, l'exemple analyse la réponse du service pour obtenir les résultats probables (prédictions).
import logging from threading import Timer import numpy as np import greengrass_machine_learning_sdk as ml # We assume the inference input image is provided as a local file # to this inference client Lambda function. with open('/test_img/test.jpg', 'rb') as f: content = bytearray(f.read()) client = ml.client('inference') def infer(): logging.info('invoking Greengrass ML Inference service') try: resp = client.invoke_inference_service( AlgoType='object-detection', ServiceName='objectDetection', ContentType='image/jpeg', Body=content ) except ml.GreengrassInferenceException as e: logging.info('inference exception {}("{}")'.format(e.__class__.__name__, e)) return except ml.GreengrassDependencyException as e: logging.info('dependency exception {}("{}")'.format(e.__class__.__name__, e)) return logging.info('resp: {}'.format(resp)) predictions = resp['Body'].read().decode("utf-8") logging.info('predictions: {}'.format(predictions)) predictions = eval(predictions) # Perform business logic that relies on the predictions. # Schedule the infer() function to run again in ten second. Timer(10, infer).start() return infer() def function_handler(event, context): return
Leinvoke_inference_service
dans la fonctionAWS IoT GreengrassLe kit de développement logiciel Machine Learning accepte les arguments suivants.
Argument |
Description |
---|---|
|
Nom du type d'algorithme à utiliser pour l'inférence. Actuellement, seul Obligatoire Type: Valeurs valides : |
|
Nom du service d'inférence local. Utilisez le nom que vous avez spécifié pour le paramètre Obligatoire Type: |
|
Nom du type mime de l'image d'entrée. Obligatoire Type: Valeurs valides : |
|
Contenu du type mime de l'image d'entrée. Obligatoire Type: |
Installation de dépendances d'exécution Neo Deep Learning sur le noyau AWS IoT Greengrass
Les connecteurs ML Object Detection sont regroupés avec le kit SageMaker Exécution Neo deep learning (DLR). Les connecteurs utilisent le runtime pour servir le modèle d'apprentissage-machine. Pour utiliser ces connecteurs, vous devez installer les dépendances pour le DLR sur votre appareil principal.
Avant d'installer les dépendances MXNet, assurez-vous que les bibliothèques système requises (avec les versions minimales spécifiées) sont présentes sur l'appareil.
Journalisation et dépannage
En fonction des paramètres de votre groupe, les journaux d'événements et d'erreurs sont écrits dans CloudWatch Journaux, le système de fichiers local ou les deux. Les journaux de ce connecteur utilisent le préfixe LocalInferenceServiceName
. Si le connecteur se comporte de manière inattendue, vérifiez les journaux du connecteur. Ces derniers contiennent généralement des informations de débogage utiles, telles que les dépendances de bibliothèque ML manquantes ou la cause d'une panne de démarrage d'un connecteur.
Si l'icôneAWS IoT Greengrassgroupe est configuré pour écrire des journaux locaux, le connecteur écrit les fichiers journaux dans
. Pour plus d'informations sur la journalisation Greengrass, consultezSurveillance avec les journaux AWS IoT Greengrass.greengrass-root
/ggc/var/log/user/region
/aws/
Utilisez les informations suivantes pour résoudre les problèmes liés aux connecteurs ML Object Detection.
Bibliothèques système requises
Les onglets suivants répertorient les bibliothèques système requises pour chaque connecteur ML Object Detection.
Problèmes
Symptôme | Solution |
---|---|
Sur un appareil Raspberry Pi, le message d'erreur suivant est consigné, et vous n'utilisez pas la caméra : |
Exécutez la commande suivante pour désactiver le pilote :
Cette opération est éphémère. Le lien symbolique disparaît après le redémarrage. Consultez le manuel de distribution de votre système d'exploitation pour savoir comment créer automatiquement le lien au redémarrage. |
Licences
Les connecteurs ML Object Detection incluent les logiciels et licences tiers suivants :
-
AWS SDK for Python (Boto3)
/Licence Apache 2.0 -
botocore
/Licence Apache 2.0 -
dateutil
/Licence PSF -
docutils
/Licence BSD, licence GPL (General Public License) GNU, licence Python Software Foundation, domaine public -
jmespath
/Licence MIT -
s3transfer
/Licence Apache 2.0 -
urllib3
/Licence MIT
-
Environnement d’exécution Deep Learning
/Licence Apache 2.0 six
/MIT
Ce connecteur est libéré sous leContrat de licence du logiciel Greengrass Core