AWS IoT Greengrass Version 1 è entrato nella fase di estensione della vita utile il 30 giugno 2023. Per ulteriori informazioni, consulta la politica AWS IoT Greengrass V1 di manutenzione. Dopo questa data, AWS IoT Greengrass V1 non rilascerà aggiornamenti che forniscano funzionalità, miglioramenti, correzioni di bug o patch di sicurezza. I dispositivi che funzionano AWS IoT Greengrass V1 non subiranno interruzioni e continueranno a funzionare e a connettersi al cloud. Ti consigliamo vivamente di eseguire la migrazione a AWS IoT Greengrass Version 2, che aggiunge nuove importanti funzionalità e supporto per piattaforme aggiuntive.
Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Connettore ML Object Detection
avvertimento
Questo connettore è entrato nella fase di vita prolungata e AWS IoT Greengrass non rilascerà aggiornamenti che forniscano funzionalità, miglioramenti alle funzionalità esistenti, patch di sicurezza o correzioni di bug. Per ulteriori informazioni, consulta AWS IoT Greengrass Version 1politica di manutenzione.
I connettori ML Object Detection forniscono un servizio di inferenza di machine learning (ML) che viene eseguito sul core. AWS IoT Greengrass Questo servizio di inferenza locale esegue il rilevamento degli oggetti utilizzando un modello di rilevamento degli oggetti compilato dal compilatore di deep learning SageMaker AI Neo. Sono supportati due tipi di modelli di rilevamento dell'oggetto: Single Shot Multibox Detector (SSD) e You Only Look Once (YOLO) v3. Per ulteriori informazioni, consulta la sezione relativa ai requisiti del modello di rilevamento dell'oggetto.
Le funzioni Lambda definite dall'utente utilizzano il Machine AWS IoT Greengrass Learning SDK per inviare richieste di inferenza al servizio di inferenza locale. Il servizio esegue l'inferenza locale su un'immagine di input e restituisce un elenco di previsioni per ogni oggetto rilevato nell'immagine. Ogni previsione contiene una categoria dell'oggetto, un punteggio di affidabilità della previsione e le coordinate dei pixel che specificano un riquadro di delimitazione intorno all'oggetto previsto.
AWS IoT Greengrass fornisce connettori ML Object Detection per più piattaforme:
Connector |
Descrizione e ARN |
---|---|
ML Object Detection Aarch64 JTX2 |
Servizio di inferenza per il rilevamento di oggetti per NVIDIA Jetson. TX2 Supporta l'accelerazione GPU. ARN: |
Rilevamento di oggetti ML x86_64 |
Servizio di inferenza di rilevamento oggetti per piattaforme x86_64. ARN: |
Rilevamento di oggetti ML ARMv7 |
Servizio di inferenza per il rilevamento di oggetti per ARMv7 piattaforme. ARN: |
Requisiti
Questi connettori presentano i seguenti requisiti:
-
AWS IoT Greengrass Core Software v1.9.3 o versione successiva.
-
Python
versione 3.7 o 3.8 installata sul dispositivo principale e aggiunta alla variabile di ambiente PATH. Nota
Per usare Python 3.8, esegui il seguente comando per creare un collegamento simbolico dalla cartella di installazione predefinita di Python 3.7 ai binari Python 3.8 installati.
sudo ln -s
path-to-python-3.8
/python3.8 /usr/bin/python3.7Questo configura il dispositivo in modo che soddisfi il requisito Python per AWS IoT Greengrass.
-
Dipendenze per il runtime di deep learning SageMaker AI Neo installato sul dispositivo principale. Per ulteriori informazioni, consulta Installazione delle dipendenze del runtime di Neo Deep Learning sul core AWS IoT Greengrass.
-
Una risorsa ML nel gruppo Greengrass. La risorsa ML deve fare riferimento a un bucket Amazon S3 che contiene un modello di rilevamento degli oggetti. Per ulteriori informazioni, consulta i sorgenti dei modelli Amazon S3.
Nota
Il modello deve essere un tipo di modello di rilevamento dell'oggetto Single Shot Multibox Detector o You Only Look Once v3. Deve essere compilato utilizzando il compilatore di deep learning SageMaker AI Neo. Per ulteriori informazioni, consulta la sezione relativa ai requisiti del modello di rilevamento dell'oggetto.
-
Il connettore ML Feedback aggiunto al gruppo Greengrass e configurato. Questo è obbligatorio solo se desideri utilizzare il connettore per caricare i dati di input del modello e pubblicare le previsioni in un argomento MQTT.
-
AWS IoT Greengrass Per interagire con questo connettore è necessario Machine Learning SDK v1.1.0.
Requisiti del modello di rilevamento dell'oggetto
I connettori ML Object Detection supportano i modelli di rilevamento di oggetti Single Shot multibox Detector (SSD) e You Only Look Once (YOLO) v3. Puoi utilizzare i componenti di rilevamento dell'oggetto forniti da GluonCV
Il training del modello di rilevamento dell'oggetto deve essere eseguito con immagini di input 512 x 512. I modelli pre-formati da GluonCV Model Zoo soddisfano già questo requisito.
I modelli di rilevamento di oggetti addestrati devono essere compilati con il compilatore di deep learning AI Neo. SageMaker Durante la compilazione, assicurati che l'hardware di destinazione corrisponda all'hardware del dispositivo core Greengrass. Per ulteriori informazioni, consulta SageMaker AI Neo nella Amazon SageMaker AI Developer Guide.
Il modello compilato deve essere aggiunto come risorsa ML (origine del modello Amazon S3) allo stesso gruppo Greengrass del connettore.
Parametri del connettore
Questi connettori forniscono i seguenti parametri.
MLModelDestinationPath
-
Il percorso assoluto verso il bucket Amazon S3 che contiene il modello ML compatibile con NEO. Si tratta del percorso di destinazione specificato per la risorsa del modello ML.
Nome visualizzato nella AWS IoT console: percorso di destinazione del modello
Obbligatorio:
true
Tipo:
string
Schema valido:
.+
MLModelResourceId
-
L'ID della risorsa ML che fa riferimento al modello di origine.
Nome visualizzato nella AWS IoT console: risorsa ML del gruppo Greengrass
Obbligatorio:
true
Tipo:
S3MachineLearningModelResource
Schema valido:
^[a-zA-Z0-9:_-]+$
LocalInferenceServiceName
-
Il nome del servizio di inferenza locale. Le funzioni Lambda definite dall'utente richiamano il servizio passando il nome alla funzione
invoke_inference_service
del Machine AWS IoT Greengrass Learning SDK. Per vedere un esempio, consulta Esempio di utilizzo.Nome visualizzato nella AWS IoT console: nome del servizio di inferenza locale
Obbligatorio:
true
Tipo:
string
Schema valido:
^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$
LocalInferenceServiceTimeoutSeconds
-
Il tempo (in secondi) prima che la richiesta di inferenza venga terminata. Il valore minimo è 1. Il valore predefinito è 10.
Nome visualizzato nella AWS IoT console: Timeout (secondo)
Obbligatorio:
true
Tipo:
string
Schema valido:
^[1-9][0-9]*$
LocalInferenceServiceMemoryLimitKB
-
La quantità di memoria (in KB) a cui ha accesso il servizio. Il valore minimo è 1.
Nome visualizzato nella AWS IoT console: limite di memoria
Obbligatorio:
true
Tipo:
string
Schema valido:
^[1-9][0-9]*$
GPUAcceleration
-
Il contesto di calcolo della CPU o GPU (accelerata). Questa proprietà si applica solo al JTX2 connettore ML Image Classification Aarch64.
Nome visualizzato nella AWS IoT console: accelerazione GPU
Obbligatorio:
true
Tipo:
string
Valori validi:
CPU
oGPU
MLFeedbackConnectorConfigId
-
L'ID della configurazione di feedback da utilizzare per caricare i dati di input del modello. Deve corrispondere all'ID di una configurazione di feedback definita per il connettore ML Feedback.
Questo parametro è obbligatorio solo se desideri utilizzare il connettore ML Feedback per caricare i dati di input del modello e pubblicare le previsioni in un argomento MQTT.
Nome visualizzato nella AWS IoT console: ID di configurazione del connettore ML Feedback
Obbligatorio:
false
Tipo:
string
Schema valido:
^$|^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$
Esempio di creazione di un connettore (AWS CLI)
Il seguente comando CLI crea una ConnectorDefinition
versione iniziale che contiene un connettore ML Object Detection. Questo esempio crea un'istanza del ARMv7l connettore ML Object Detection.
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" } } ] }'
Nota
La funzione Lambda di questi connettori ha un ciclo di vita di lunga durata.
Nella AWS IoT Greengrass console, puoi aggiungere un connettore dalla pagina Connettori del gruppo. Per ulteriori informazioni, consulta Nozioni di base sui connettori Greengrass (console).
Dati di input
Questi connettori accettano un file di immagine come input. I file di immagine di input devono essere in formato png
o jpeg
. Per ulteriori informazioni, consulta Esempio di utilizzo.
Questi connettori non accettano messaggi MQTT come dati di input.
Dati di output
Questi connettori restituiscono un elenco formattato di risultati delle previsioni per gli oggetti identificati nell'immagine di input:
{ "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 ], ... ] }
Ogni previsione nell'elenco è contenuta tra parentesi quadre e contiene sei valori:
-
Il primo valore rappresenta la categoria di oggetto prevista per l'oggetto identificato. Le categorie di oggetti e i valori corrispondenti vengono determinati durante l'addestramento del modello di apprendimento automatico per il rilevamento di oggetti nel compilatore di deep learning Neo.
-
Il secondo valore è il punteggio di affidabilità per la previsione della categoria dell'oggetto. Questo rappresenta la probabilità che la previsione fosse corretta.
-
Gli ultimi quattro valori corrispondono alle dimensioni in pixel che rappresentano un riquadro di delimitazione intorno all'oggetto previsto nell'immagine.
Questi connettori non pubblicano messaggi MQTT come dati di output.
Esempio di utilizzo
L'esempio seguente della funzione Lambda utilizza il AWS IoT Greengrass Machine Learning SDK per interagire con un connettore ML Object Detection.
Nota
Puoi scaricare l'SDK dalla pagina dei download di AWS IoT Greengrass Machine Learning SDK.
In questo esempio viene inizializzato un client SDK e viene chiamata in modo sincrono la funzione invoke_inference_service
di SDK per richiamare il servizio di inferenza locale. Trasferisce il tipo di algoritmo, il nome del servizio, il tipo di immagine e il contenuto dell'immagine. Quindi, l'esempio analizza la risposta del servizio per ottenere i risultati di probabilità (previsioni).
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
La invoke_inference_service
funzione nel AWS IoT Greengrass Machine Learning SDK accetta i seguenti argomenti.
Argomento |
Descrizione |
---|---|
|
Il nome del tipo di algoritmo da utilizzare per l'inferenza. Attualmente è supportato solo Obbligatorio: Tipo: Valori validi: |
|
Il nome del servizio di inferenza locale. Utilizza il nome specificato per il parametro Richiesto: Tipo: |
|
Il tipo mime dell'immagine di input. Richiesto: Tipo: Valori validi: |
|
Il contenuto del file immagine di input. Richiesto: Tipo: |
Installazione delle dipendenze del runtime di Neo Deep Learning sul core AWS IoT Greengrass
I connettori ML Object Detection sono forniti in bundle con il deep learning runtime (DLR) SageMaker AI Neo. I connettori utilizzano il runtime per servire il modello ML. Per utilizzare questi connettori, devi installare le dipendenze per il DLR sul dispositivo core.
Prima di installare le dipendenze DLR, assicurati che le librerie di sistema richieste (nelle versioni minime specificate) siano presenti sul dispositivo.
Registrazione e risoluzione dei problemi
A seconda delle impostazioni del gruppo, i registri degli eventi e degli errori vengono scritti CloudWatch nei registri, nel file system locale o in entrambi. I log di questo connettore utilizzano il prefisso LocalInferenceServiceName
. Se il connettore si comporta inaspettatamente, controlla i log del connettore. Questi di solito contengono utili informazioni di debug, ad esempio una dipendenza della libreria ML mancante o la causa di un errore di avvio del connettore.
Se il AWS IoT Greengrass gruppo è configurato per scrivere registri locali, il connettore scrive i file di registro su.
Per ulteriori informazioni sulla registrazione di Greengrass, vedere. Monitoraggio con i log AWS IoT Greengrassgreengrass-root
/ggc/var/log/user/region
/aws/
Utilizzate le seguenti informazioni per risolvere i problemi relativi ai connettori ML Object Detection.
Librerie di sistema richieste
Le seguenti schede elencano le librerie di sistema necessarie per ogni connettore ML Object Detection.
Problemi
Caratteristiche | Soluzione |
---|---|
In un Raspberry Pi, il seguente messaggio di errore viene registrato e non si sta utilizzando la fotocamera: |
Per disabilitare il driver, esegui il seguente comando:
Questa operazione è temporanea. Il collegamento simbolico scompare dopo il riavvio. Consulta il manuale di distribuzione del sistema operativo per ulteriori informazioni su come creare automaticamente il link al riavvio. |
Licenze
I connettori ML Object Detection includono i seguenti software/licenze di terze parti:
-
AWS SDK for Python (Boto3)
/Apache License 2.0 -
botocore
/Apache License 2.0 -
dateutil
/PSF License -
docutils
/BSD License, GNU General Public License (GPL), Python Software Foundation License, Public Domain -
jmespath
/MIT License -
s3transfer
/Apache License 2.0 -
urllib3
/MIT License
-
Deep Learning Runtime
/Apache License 2.0 six
/MIT
Questo connettore è rilasciato ai sensi del contratto di licenza del software Greengrass Core