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.
Tutorial: Durchführen einer Inferenz bei der Bildklassifizierung mit TensorFlow Lite
Dieses Tutorial zeigt Ihnen, wie Sie die Inferenzkomponente der TensorFlow Lite-Bildklassifizierung verwenden, um eine Beispiel-Inferenz der Bildklassifizierung auf einem Greengrass-Kerngerät durchzuführen. Diese Komponente umfasst die folgenden Komponentenabhängigkeiten:
-
TensorFlow Lite-Bildklassifizierungsmodellspeicherkomponente
-
TensorFlow Lite-Laufzeitkomponente
Wenn Sie diese Komponente bereitstellen, lädt sie ein vortrainiertes MobileNet v1-Modell herunter und installiert die TensorFlow Liteml/tflite/image-classification
Thema. Um diese Inferenzergebnisse anzuzeigen, verwenden Sie den AWS IoT MQTT-Client in der AWS IoT Konsole, um dieses Thema zu abonnieren.
In diesem Tutorial stellen Sie die Beispielinferenzkomponente bereit, um die Bildklassifizierung für das von bereitgestellte Beispielbild durchzuführenAWS IoT Greengrass. Nachdem Sie dieses Tutorial abgeschlossen haben, können Sie abschließen, das Ihnen zeigtTutorial: Durchführen einer Beispielbildklassifizierungsinferenz für Bilder von einer Kamera mit TensorFlow Lite, wie Sie die Beispiel-Inferenzkomponente ändern, um die Bildklassifizierung auf Bildern von einer Kamera lokal auf einem Greengrass-Kerngerät durchzuführen.
Weitere Informationen zum Machine Learning auf Greengrass-Geräten finden Sie unter Durchführen von Machine Learning-Inferenzen.
Themen
Voraussetzungen
Zum Durcharbeiten dieses Tutorials ist Folgendes erforderlich:
-
Ein Linux-Greengrass-Core-Gerät. Falls Sie noch keines haben, beachten Sie die Informationen unter Tutorial: Erste Schritte mit AWS IoT Greengrass V2. Das Core-Gerät muss die folgenden Anforderungen erfüllen:
-
Auf Greengrass-Core-Geräten, auf denen Amazon Linux 2 oder Ubuntu 18.04 ausgeführt wird, ist GNU C Library
(glibc) Version 2.27 oder höher auf dem Gerät installiert. -
Auf Armv7l-Geräten wie Raspberry Pi sind Abhängigkeiten für OpenCV-Python auf dem Gerät installiert. Führen Sie den folgenden Befehl aus, um die Abhängigkeiten zu installieren.
sudo apt-get install libopenjp2-7 libilmbase23 libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libgtk-3-0 libwebp-dev
-
Raspberry Pi-Geräte, auf denen Raspberry Pi OS Bullseye ausgeführt wird, müssen die folgenden Anforderungen erfüllen:
-
NumPy 1.22.4 oder höher ist auf dem Gerät installiert. Raspberry Pi OS Bullseye enthält eine frühere Version von NumPy, sodass Sie den folgenden Befehl ausführen können, um ein Upgrade NumPy auf dem Gerät durchzuführen.
pip3 install --upgrade numpy
-
Der auf dem Gerät aktivierte Legacy-Kamera-Stack. Raspberry Pi OS Bullseye enthält einen neuen Kamera-Stack, der standardmäßig aktiviert und nicht kompatibel ist, daher müssen Sie den Legacy-Kamera-Stack aktivieren.
So aktivieren Sie den Legacy-Kamera-Stack
-
Führen Sie den folgenden Befehl aus, um das Raspberry Pi-Konfigurationstool zu öffnen.
sudo raspi-config
-
Wählen Sie Schnittstellenoptionen aus.
-
Wählen Sie Legacy-Kamera aus, um den Legacy-Kamera-Stack zu aktivieren.
-
Starten Sie den Raspberry Pi neu.
-
-
-
Schritt 1: Abonnieren des Themas mit Standardbenachrichtigungen
In diesem Schritt konfigurieren Sie den AWS IoT MQTT-Client in der AWS IoT Konsole so, dass er von der TensorFlow Lite-Bildklassifizierungskomponente veröffentlichte MQTT-Nachrichten überwacht. Standardmäßig veröffentlicht die Komponente Inferenzergebnisse zum ml/tflite/image-classification
Thema. Abonnieren Sie dieses Thema, bevor Sie die Komponente auf Ihrem Greengrass-Kerngerät bereitstellen, um die Inferenzergebnisse zu sehen, wenn die Komponente zum ersten Mal ausgeführt wird.
So abonnieren Sie das Standard-Benachrichtigungsthema
-
Wählen Sie im Navigationsmenü der AWS IoT Konsole
Test, MQTT-Testclient aus. -
Geben Sie unter Thema abonnieren im Feld Themenname ein
ml/tflite/image-classification
. -
Wählen Sie Subscribe (Abonnieren) aus.
Schritt 2: Bereitstellen der TensorFlow Lite-Bildklassifizierungskomponente
In diesem Schritt stellen Sie die TensorFlow Lite-Bildklassifizierungskomponente auf Ihrem Core-Gerät bereit:
-
Wählen Sie im Navigationsmenü der AWS IoT GreengrassKonsole
Komponenten aus. -
Wählen Sie auf der Seite Komponenten auf der Registerkarte Öffentliche Komponenten die Option
aws.greengrass.TensorFlowLiteImageClassification
aus. -
Wählen Sie auf der aws.greengrass.TensorFlowLiteImageClassification Seite Bereitstellen aus.
-
Wählen Sie unter Zu Bereitstellung hinzufügen eine der folgenden Optionen aus:
-
Um diese Komponente mit einer auf Ihrem Zielgerät vorhandenen Bereitstellung zusammenzuführen, wählen Sie Zu vorhandener Bereitstellung hinzufügen und wählen Sie dann die Bereitstellung aus, die Sie überarbeiten möchten.
-
Um auf Ihrem Zielgerät eine neue Bereitstellung zu erstellen, wählen Sie Neue Bereitstellung erstellen aus. Wenn auf Ihrem Gerät bereits eine Bereitstellung vorhanden ist, ersetzt die Auswahl in diesem Schritt die vorhandene Bereitstellung.
-
-
Gehen Sie auf der Seite Ziel angeben wie folgt vor:
-
Geben Sie unter Bereitstellungsinformationen den Anzeigenamen für Ihre Bereitstellung ein oder ändern Sie ihn.
-
Wählen Sie unter Bereitstellungsziele ein Ziel für Ihre Bereitstellung aus und klicken Sie auf Weiter. Wenn Sie eine vorhandene Bereitstellung überarbeiten, können Sie das Bereitstellungsziel nicht ändern.
-
-
Überprüfen Sie auf der Seite Komponenten auswählen unter Öffentliche Komponenten, ob die
aws.greengrass.TensorFlowLiteImageClassification
Komponente ausgewählt ist, und wählen Sie Weiter aus. -
Behalten Sie auf der Seite Komponenten konfigurieren die Standardkonfigurationseinstellungen bei und wählen Sie Weiter aus.
-
Behalten Sie auf der Seite Erweiterte Einstellungen konfigurieren die Standardkonfigurationseinstellungen bei und wählen Sie Weiter.
-
Wählen Sie auf der Seite Review die Option Deploy aus.
-
Erstellen Sie eine -
deployment.json
Datei, um die Bereitstellungskonfiguration für die TensorFlow Lite-Image-Klassifizierungskomponente zu definieren. Diese Datei sollte wie folgt aussehen:{ "targetArn":"
targetArn
", "components": { "aws.greengrass.TensorFlowLiteImageClassification": { "componentVersion":2.1.0
, "configurationUpdate": { } } } }-
Ersetzen Sie im
targetArn
Feld
durch den Amazon-Ressourcennamen (ARN) des Objekts oder der Objektgruppe, auf die die Bereitstellung ausgerichtet werden soll, und zwar im folgenden Format:targetArn
-
Objekt:
arn:aws:iot:
region
:account-id
:thing/thingName
-
Objektgruppe:
arn:aws:iot:
region
:account-id
:thinggroup/thingGroupName
-
-
In diesem Tutorial wird die Komponentenversion 2.1.0 verwendet. Ersetzen Sie im
aws.greengrass.TensorFlowLiteObjectDetection
Komponentenobjekt2.1.0
, um eine andere Version der TensorFlow Lite-Objekterkennungskomponente zu verwenden.
-
-
Führen Sie den folgenden Befehl aus, um die TensorFlow Lite-Bildklassifizierungskomponente auf dem Gerät bereitzustellen:
aws greengrassv2 create-deployment \ --cli-input-json file://
path/to/
deployment.json
Es kann einige Minuten dauern, bis die Bereitstellung abgeschlossen ist. Überprüfen Sie im nächsten Schritt im Komponentenprotokoll, ob die Bereitstellung erfolgreich abgeschlossen wurde, und schauen Sie sich die Inference-Ergebnisse an.
Schritt 3: Anzeigen von Inferenzergebnissen
Nachdem Sie die Komponente bereitgestellt haben, können Sie die Inferenzergebnisse im Komponentenprotokoll auf Ihrem Greengrass-Kerngerät und im AWS IoT MQTT-Client in der AWS IoT Konsole anzeigen. Informationen zum Abonnieren des Themas, zu dem die Komponente Inferenzergebnisse veröffentlicht, finden Sie unter Schritt 1: Abonnieren des Themas mit Standardbenachrichtigungen.
-
AWS IoT MQTT-Client – Führen Sie die folgenden Schritte aus, um die Ergebnisse anzuzeigen, die die Inferenzkomponente im Standardbenachrichtigungsthema veröffentlicht:
-
Wählen Sie im Navigationsmenü der AWS IoT Konsole
Test, MQTT-Testclient aus. -
Wählen Sie unter Abonnements die Option aus
ml/tflite/image-classification
.Sie sollten Meldungen ähnlich dem folgenden Beispiel sehen.
{ "timestamp": "2021-01-01 00:00:00.000000", "inference-type": "image-classification", "inference-description": "Top 5 predictions with score 0.3 or above ", "inference-results": [ { "Label": "cougar, puma, catamount, mountain lion, painter, panther, Felis concolor", "Score": "0.5882352941176471" }, { "Label": "Persian cat", "Score": "0.5882352941176471" }, { "Label": "tiger cat", "Score": "0.5882352941176471" }, { "Label": "dalmatian, coach dog, carriage dog", "Score": "0.5607843137254902" }, { "Label": "malamute, malemute, Alaskan malamute", "Score": "0.5450980392156862" } ] }
-
-
Komponentenprotokoll – Um die Inferenzergebnisse im Komponentenprotokoll anzuzeigen, führen Sie den folgenden Befehl auf Ihrem Greengrass-Kerngerät aus.
sudo tail -f
/logs/aws.greengrass.TensorFlowLiteImageClassification.log/greengrass/v2
Sie sollten Ergebnisse ähnlich dem folgenden Beispiel sehen.
2021-01-01 00:00:00.000000 [INFO] (Copier) aws.greengrass.TensorFlowLiteImageClassification: stdout. Publishing results to the IoT core.... {scriptName=services.aws.greengrass.TensorFlowLiteImageClassification.lifecycle.Run.script, serviceName=aws.greengrass.TensorFlowLiteImageClassification, currentState=RUNNING} 2021-01-01 00:00:00.000000 [INFO] (Copier) aws.greengrass.TensorFlowLiteImageClassification: stdout. {"timestamp": "2021-01-01 00:00:00.000000", "inference-type": "image-classification", "inference-description": "Top 5 predictions with score 0.3 or above ", "inference-results": [{"Label": "cougar, puma, catamount, mountain lion, painter, panther, Felis concolor", "Score": "0.5882352941176471"}, {"Label": "Persian cat", "Score": "0.5882352941176471"}, {"Label": "tiger cat", "Score": "0.5882352941176471"}, {"Label": "dalmatian, coach dog, carriage dog", "Score": "0.5607843137254902"}, {"Label": "malamute, malemute, Alaskan malamute", "Score": "0.5450980392156862"}]}. {scriptName=services.aws.greengrass.TensorFlowLiteImageClassification.lifecycle.Run.script, serviceName=aws.greengrass.TensorFlowLiteImageClassification, currentState=RUNNING}
Wenn Sie keine Inferenzergebnisse im Komponentenprotokoll oder im MQTT-Client sehen können, ist die Bereitstellung fehlgeschlagen oder hat das Core-Gerät nicht erreicht. Dies kann passieren, wenn Ihr Core-Gerät nicht mit dem Internet verbunden ist oder nicht über die richtigen Berechtigungen zum Ausführen der Komponente verfügt. Führen Sie den folgenden Befehl auf Ihrem Core-Gerät aus, um die AWS IoT Greengrass Core-Softwareprotokolldatei anzuzeigen. Diese Datei enthält Protokolle aus dem Bereitstellungsservice des Greengrass-Core-Geräts.
sudo tail -f
/logs/greengrass.log
/greengrass/v2
Weitere Informationen finden Sie unter Fehlerbehebung bei Machine Learning-Inferenzen.
Nächste Schritte
Wenn Sie über ein Greengrass-Core-Gerät mit einer unterstützten Kameraschnittstelle verfügen, können Sie vervollständigen, das Ihnen zeigtTutorial: Durchführen einer Beispielbildklassifizierungsinferenz für Bilder von einer Kamera mit TensorFlow Lite, wie Sie die Beispiel-Inferenzkomponente ändern, um eine Bildklassifizierung für Bilder von einer Kamera durchzuführen.
Um die Konfiguration der Beispiel-Inferenzkomponente für die TensorFlow Lite-Bildklassifizierung weiter zu untersuchen, versuchen Sie Folgendes:
-
Ändern Sie den
InferenceInterval
Konfigurationsparameter, um zu ändern, wie oft der Inferenzcode ausgeführt wird. -
Ändern Sie die
ImageDirectory
KonfigurationsparameterImageName
und in der Konfiguration der Inferenzkomponente, um ein benutzerdefiniertes Image anzugeben, das für die Inferenz verwendet werden soll.
Informationen zum Anpassen der Konfiguration öffentlicher Komponenten oder zum Erstellen benutzerdefinierter Machine-Learning-Komponenten finden Sie unter Passen Sie Ihre Komponenten für maschinelles Lernen an.