AWS IoT Greengrass Version 1 trat am 30. Juni 2023 in die erweiterte Lebensphase ein. Weitere Informationen finden Sie in der AWS IoT Greengrass V1 Wartungsrichtlinie. Nach diesem Datum AWS IoT Greengrass V1 werden keine Updates mehr veröffentlicht, die Funktionen, Verbesserungen, Bugfixes oder Sicherheitspatches bieten. Geräte, die auf laufen, werden AWS IoT Greengrass V1 nicht gestört und funktionieren weiterhin und stellen eine Verbindung zur Cloud her. Wir empfehlen Ihnen dringend, zu migrieren AWS IoT Greengrass Version 2, da dies wichtige neue Funktionen und Unterstützung für zusätzliche Plattformen bietet.
Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Objekterkennungsstecker
Warnung
Dieser Konnektor ist in diePhase der verlängerten Lebensdauer, undAWS IoT Greengrassveröffentlicht keine Updates, die Funktionen, Verbesserungen vorhandener Funktionen, Sicherheitspatches oder Bugfixes bereitstellen. Weitere Informationen finden Sie unter AWS IoT Greengrass Version 1Wartungspolitik.
Die ML-ObjekterkennungSteckverbinderstellen Sie einen Machine Learning (ML) -Inferenzservice zur Verfügung, der auf demAWS IoT Greengrass-Kern. Dieser lokale Inferenzservice führt die Objekterkennung mithilfe eines vom SageMaker Neo Deep Learning Compiler. Zwei Arten von Objekterkennungsmodellen werden unterstützt: Single Shot Multibox Detector (SSD) und Sie schauen nur einmal (YOLO) v3. Weitere Informationen finden Sie unter Objekterkennungsmodell-Anforderungen.
Benutzerdefinierte Lambda-Funktionen verwenden dieAWS IoT GreengrassMachine Learning SDK zur Übermittlung von Inferenzanforderungen an den lokalen Inferenzservice. Der Service führt eine lokale Inferenz für ein Eingabebild aus und gibt eine Liste mit Voraussagen für jedes im Bild erkannte Objekt zurück. Jede Voraussage enthält eine Objektkategorie, einen Zuverlässigkeitswert für Voraussagen und Pixelkoordinaten, die einen Begrenzungsrahmen um das vorhergesagte Objekt angeben.
AWS IoT Greengrassstellt ML-Objekterkennungs-Konnektoren für mehrere Plattformen bereit:
Konnektor |
Beschreibung und ARN |
---|---|
ML-Objekterkennung Aarch64 JTX2 |
Inferenzservice für die Objekterkennung für NVIDIA Jetson TX2. Unterstützt die GPU-Beschleunigung. ARN: |
ML-Objekterkennung x86_64 |
Inferenzservice für die Objekterkennung für x86_64-Plattformen. ARN: |
ML-Objekterkennung armV7 |
Inferenzservice für die Objekterkennung für ARMv7-Plattformen. ARN: |
Voraussetzungen
Für diese Konnektoren gelten die folgenden Anforderungen:
-
AWS IoT GreengrassCore-Software v1.9.3 oder höher.
-
Python
Version 3.7 oder 3.8 auf dem Core-Gerät installiert und der Umgebungsvariablen PATH hinzugefügt. Anmerkung
Um Python 3.8 zu verwenden, führen Sie den folgenden Befehl aus, um einen symbolischen Link vom Standardinstallationsordner für Python 3.8 zu den installierten Python 3.8-Binärdateien zu erstellen.
sudo ln -s
path-to-python-3.8
/python3.8 /usr/bin/python3.7Dadurch wird Ihr Gerät so konfiguriert, dass es die Python-Anforderung für AWS IoT Greengrass erfüllt.
-
Abhängigkeiten für SageMaker Die Neo Deep Learning-Laufzeitumgebung muss auf dem Core-Gerät installiert sein Weitere Informationen finden Sie unter Installieren von Neo Deep Learning Runtime-Abhängigkeiten im AWS IoT Greengrass Core.
-
Eine ML-Ressource in der Greengrass-Gruppe. Die ML-Ressource muss auf einen Amazon S3 S3-Bucket verweisen, der ein Objekterkennungsmodell enthält. Weitere Informationen finden Sie unterAmazon S3 S3-Modellquellenaus.
Anmerkung
Das Modell muss ein Objekterkennungsmodell des Typs Single Shot Multibox Detector oder You Only Look Once v3 sein. Es muss mit dem SageMaker Neo Deep Learning Compiler. Weitere Informationen finden Sie unter Objekterkennungsmodell-Anforderungen.
-
DieML Feedback-AnschlussDer Greengrass-Gruppe hinzugefügt und konfiguriert wurde. Nur erforderlich, wenn Sie den Konnektor verwenden möchten, um Modelleingabedaten hochzuladen und Prognosen in einem MQTT-Thema zu veröffentlichen.
-
AWS IoT GreengrassMachine Learning Learning-SDKVersion 1.1.0 ist für die Interaktion mit diesem Konnektor erforderlich.
Objekterkennungsmodell-Anforderungen
Die ML-Objekterkennungs-Konnektoren unterstützen Objekterkennungsmodelle des Typs Single Shot Multibox Detector (SSD) und You Only Look Once (YOLO) v3. Sie können die von GluonCV
Ihr Objekterkennungsmodell muss mit 512-x-512-Eingabebildern trainiert worden sein. Die vortrainierten Modelle aus dem GluonCV Model Zoo erfüllen diese Anforderung bereits.
Trainierte Objekterkennungsmodelle müssen mit dem worden sein SageMaker Neo Deep Learning Compiler. Stellen Sie beim Kompilieren sicher, dass die Zielhardware mit der Hardware Ihres Greengrass Core-Geräts übereinstimmt. Weitere Informationen finden Sie unter SageMaker NeoimAmazon SageMaker Entwicklerhandbuchaus.
Das kompilierte Modell muss als ML-Ressource hinzugefügt werden (Amazon S3 S3-Modellquelle) zur selben Greengrass-Gruppe wie der Konnektor.
Connector-Parameter
Diese Konnektoren stellen die folgenden Parameter bereit.
MLModelDestinationPath
-
Der absolute Pfad zum Amazon S3 S3-Bucket, der das Neo-kompatible ML-Modell enthält. Dies ist der Zielpfad, der für die ML-Modellressource angegeben ist.
Anzeigename imAWS IoT-Konsole Modellzielpfad
Erforderlich
true
Typ:
string
Gültiges Pattern:
.+
MLModelResourceId
-
Die ID der ML-Ressource, die auf das Quellmodell verweist.
Anzeigename imAWS IoT-Konsole Greengrass group ML-Ressource
Erforderlich
true
Typ:
S3MachineLearningModelResource
Gültiges Pattern:
^[a-zA-Z0-9:_-]+$
LocalInferenceServiceName
-
Der Name für den lokalen Inferenzdienst. Benutzerdefinierte Lambda-Funktionen rufen den Service auf, indem sie den Namen an den
invoke_inference_service
Funktion desAWS IoT GreengrassMachine Learning Learning-SDK. Ein Beispiel finden Sie unter Nutzungsbeispiel.Anzeigename imAWS IoT-Konsole Lokaler Inferenz-Service-Name
Erforderlich
true
Typ:
string
Gültiges Pattern:
^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$
LocalInferenceServiceTimeoutSeconds
-
Die Zeitspanne (in Sekunden), nach der die Inferenzanforderung beendet wird. Der minimale Wert beträgt 1. Der Standardwert lautet 10.
Anzeigename imAWS IoT-Konsole Timeout (Sekunden)
Erforderlich
true
Typ:
string
Gültiges Pattern:
^[1-9][0-9]*$
LocalInferenceServiceMemoryLimitKB
-
Die Speichergröße (in KB), auf die der Service Zugriff hat. Der minimale Wert beträgt 1.
Anzeigename imAWS IoT-Konsole Speicherlimit
Erforderlich
true
Typ:
string
Gültiges Pattern:
^[1-9][0-9]*$
GPUAcceleration
-
Der CPU- oder GPU-(beschleunigte) Berechnungskontext. Diese Eigenschaft gilt nur für den -Konnektor ML Image Classification Aarch64 JTX2.
Anzeigename imAWS IoT-Konsole GPU-Beschleunigung
Erforderlich
true
Typ:
string
Gültige Werte:
CPU
oderGPU
. MLFeedbackConnectorConfigId
-
Die ID der Feedback-Konfiguration, die zum Hochladen von Modelleingabedaten verwendet werden soll. Diese muss mit der ID einer Feedback-Konfiguration übereinstimmen, die für den ML-Feedback-Konnektordefiniert ist.
DieserNur erforderlich, wenn Sie den ML-Feedback-Konnektor verwenden möchten, um Modelleingabedaten hochzuladen und Prognosen in einem MQTT-Thema zu veröffentlichen.
Anzeigename imAWS IoT-Konsole ML-Feedback-Konnektor-
Erforderlich
false
Typ:
string
Gültiges Pattern:
^$|^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$
Beispiel für das Erstellen eines Konnektors (AWS CLI)
Der folgende -CLI-Befehl erstellt einenConnectorDefinition
mit einer Initialversion, die einen ML-Objekterkennungskonnektor enthält. In diesem Beispiel wird eine Instance des -ARMv7l-Konnektors für die ML-Objekterkennung erstellt.
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" } } ] }'
Anmerkung
Die Lambda-Funktion in diesen Anschlüssen hat einelangdauerndesLebenszyklus.
In derAWS IoT Greengrass-Konsole können Sie einen Konnektor aus der Gruppe hinzufügenKonnektorenangezeigten. Weitere Informationen finden Sie unter Erste Schritte mit Greengrass-Konnektoren (Konsole).
Eingabedaten
Diese Konnektoren akzeptieren eine Bilddatei als Eingabe. Eingabebilddateien müssen im jpeg
- oder png
-Format vorliegen. Weitere Informationen finden Sie unter Nutzungsbeispiel.
Diese Konnektoren akzeptieren keine MQTT-Nachrichten als Eingabedaten.
Ausgabedaten
Diese Konnektoren geben eine formatierte Liste der Voraussageergebnisse für die identifizierten Objekte im Eingabebild zurück:
{ "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 ], ... ] }
Jede Voraussage in der Liste wird von eckigen Klammern umschlossen und enthält sechs Werte:
-
Der erste Wert stellt die vorausgesagte Objektkategorie für das identifizierte Objekt dar. Die Objektkategorien und ihre jeweiligen Werte werden beim Trainieren Ihres Machine Learning-Modells für die Objekterkennung im Neo Deep Learning-Compiler festgelegt.
-
Der zweite Wert ist der Zuverlässigkeitswert für die Objektkategorievoraussage. Dieser Wert stellt die Wahrscheinlichkeit dar, mit der die Voraussage korrekt ist.
-
Die letzten vier Werte entsprechen den Pixeldimensionen, die einen Begrenzungsrahmen um das vorausgesagte Objekt im Bild darstellen.
Diese Konnektoren veröffentlichen keine MQTT-Nachrichten als Ausgabedaten.
Nutzungsbeispiel
Die folgende Lambda-Beispielfunktion verwendet dieAWS IoT GreengrassMachine Learning Learning-SDKum mit einem ML Object Detection Connector zu interagieren.
Anmerkung
Sie können das SDK überAWS IoT GreengrassMachine Learning Learning-SDKDownload-Seite.
Das Beispiel initialisiert einen SDK-Client und ruft synchron die Funktion invoke_inference_service
des SDK auf, um den lokalen Inferenzdienst aufzurufen. Es wird der Algorithmustyp, der Servicename, der Bildtyp und der Bildinhalt übergeben. Anschließend analysiert das Beispiel die Service-Antwort, um die Wahrscheinlichkeitsergebnisse (Vorhersagen) zu erhalten.
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
Dieinvoke_inference_service
Funktion imAWS IoT GreengrassDas Machine Learning SDK akzeptiert die folgenden Argumente.
Argument |
Beschreibung |
---|---|
|
Der Name des Algorithmentyps, der für die Inferenz verwendet werden soll. Derzeit wird nur Erforderlich Typ: Zulässige Werte: |
|
Der Name des lokalen Inferenzdienstes. Verwenden Sie den Namen, den Sie für den Parameter Erforderlich Typ: |
|
Der Mime-Typ des Eingangsbildes. Erforderlich Typ: Zulässige Werte: |
|
Der Inhalt der Eingabebilddatei. Erforderlich Typ: |
Installieren von Neo Deep Learning Runtime-Abhängigkeiten im AWS IoT Greengrass Core
Die ML-Objekterkennungs-Konnektoren sind mit dem SageMaker Neo Deep Learning Runtime (DLR) Die Konnektoren verwenden die Laufzeit, um das ML-Modell zu bedienen. Um diese Konnektoren zu verwenden, müssen Sie die Abhängigkeiten für die DLR auf Ihrem Core-Gerät installieren.
Stellen Sie vor der Installation der DLR-Abhängigkeiten sicher, dass die erforderlichen Systembibliotheken (mit den angegebenen Mindestversionen) auf dem Gerät vorhanden sind.
Protokollierung und Problemlösungen
Abhängig von Ihren Gruppeneinstellungen werden Ereignis- und Fehlerprotokolle in geschrieben CloudWatch Protokolle, das lokale Dateisystem oder beides. Protokolle von diesem Konnektor verwenden das Präfix LocalInferenceServiceName
. Wenn sich der Konnektor nicht wie erwartet verhält, überprüfen Sie die Protokolle des Konnektors. Diese enthalten in der Regel nützliche Debugging-Informationen, wie z. B. eine fehlende ML-Bibliothek-Abhängigkeit oder die Ursache eines Fehlers beim Starten des Konnektors.
Wenn das SymbolAWS IoT Greengrassgroup ist so konfiguriert, dass lokale Protokolle geschrieben werden, der Konnektor schreibt Protokolldateien in
aus. Weitere Informationen zur Greengrass-Protokollierung finden Sie unterÜberwachen mit AWS IoT Greengrass-Protokollenaus.greengrass-root
/ggc/var/log/user/region
/aws/
Verwenden Sie die folgenden Informationen für die Problembehandlung bei den -Konnektoren für die ML-Objekterkennung.
Erforderliche Systembibliotheken
Die folgenden Registerkarten listen die für jeden ML-Objekterkennungskonnektor erforderlichen Systembibliotheken auf.
Problembereiche
Symptom | Lösung |
---|---|
Auf einem Raspberry Pi wird die folgende Fehlermeldung protokolliert, und Sie verwenden nicht die Kamera: |
Führen Sie den folgenden Befehl aus, um den Treiber zu deaktivieren:
Diese Operation ist flüchtig. Der symbolische Link ist nach dem Neustart nicht mehr vorhanden. Schlagen Sie im Handbuch Ihrer Betriebssystemverteilung nach, wie der Link beim Neustart automatisch erstellt werden kann. |
Lizenzen
Die ML Object Detection -Konnektoren enthalten die folgende Drittanbieter-Software/Lizenz:
-
AWS SDK for Python (Boto3)
/Apache-Lizenz 2.0 -
botocore
/Apache-Lizenz 2.0 -
dateutil
/PSF-Lizenz -
docutils
/BSD-Lizenz, GNU General Public License (GPL), Python Software Foundation License, Public Domain -
jmespath
/MIT-Lizenz -
s3transfer
/Apache-Lizenz 2.0 -
urllib3
/MIT-Lizenz
-
Deep Learning Runtime
/Apache-Lizenz 2.0 six
/MIT
Dieser Konnektor wird unter derLizenzvereinbarung für die Greengrass Core-Software