

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: Führen Sie mit Lite eine Inferenz zur Klassifizierung von Beispielbildern durch TensorFlow
<a name="ml-tutorial-image-classification"></a>

Dieses Tutorial zeigt Ihnen, wie Sie die [TensorFlow Lite-Komponente für die Bildklassifizierung](tensorflow-lite-image-classification-component.md) verwenden, um eine Beispielinferenz für die Bildklassifizierung auf einem Greengrass-Core-Gerät durchzuführen. Diese Komponente umfasst die folgenden Komponentenabhängigkeiten: 
+ TensorFlow Lite-Komponente zum Speichern von Bildklassifizierungsmodellen
+ TensorFlow Lite-Runtime-Komponente

Wenn Sie diese Komponente bereitstellen, lädt sie ein vortrainiertes MobileNet v1-Modell herunter und installiert die [TensorFlow Lite-Runtime](https://www.tensorflow.org/lite/guide/python) und ihre Abhängigkeiten. Diese Komponente veröffentlicht Inferenzergebnisse zu diesem Thema. `ml/tflite/image-classification` Um diese Inferenzergebnisse anzusehen, verwenden Sie den AWS IoT MQTT-Client in der AWS IoT Konsole, um dieses Thema zu abonnieren. 

In diesem Tutorial setzen Sie die Beispiel-Inferenzkomponente ein, um die Bildklassifizierung für das Beispielbild durchzuführen, das von bereitgestellt wird. AWS IoT Greengrass Nachdem Sie dieses Tutorial abgeschlossen haben, können Sie es abschließen. Es zeigt Ihnen[Tutorial: Führen Sie mit Lite eine Beispielinferenz zur Bildklassifizierung von Bildern aus einer Kamera durch TensorFlow](ml-tutorial-image-classification-camera.md), wie Sie die Beispiel-Inferenzkomponente modifizieren, um Bilder von einer Kamera lokal auf einem Greengrass-Core-Gerät zu klassifizieren.

Weitere Informationen zum maschinellen Lernen auf Greengrass-Geräten finden Sie unter[Durchführen von Machine Learning-Inferenzen](perform-machine-learning-inference.md).

**Topics**
+ [Voraussetzungen](#ml-tutorial-prereqs)
+ [Schritt 1: Abonnieren Sie das Thema Standardbenachrichtigungen](#ml-image-classification-subscribe)
+ [Schritt 2: Stellen Sie die TensorFlow Lite-Komponente zur Bildklassifizierung bereit](#ml-image-classification-deploy)
+ [Schritt 3: Inferenzergebnisse anzeigen](#ml-image-classification-results)
+ [Nächste Schritte](#ml-image-classification-next-steps)

## Voraussetzungen
<a name="ml-tutorial-prereqs"></a>

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](getting-started.md). Das Kerngerät muss die folgenden Anforderungen erfüllen:<a name="ml-component-requirements"></a>
  + Auf Greengrass-Core-Geräten, auf denen Amazon Linux 2 oder Ubuntu 18.04 ausgeführt wird, ist die [GNU C Library](https://www.gnu.org/software/libc/) (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 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 das Gerät zu aktualisieren NumPy .

      ```
      pip3 install --upgrade numpy
      ```
    + Der ältere Kamerastack ist auf dem Gerät aktiviert. Raspberry Pi OS Bullseye enthält einen neuen Kamerastack, der standardmäßig aktiviert und nicht kompatibel ist. Sie müssen also den älteren Kamerastack aktivieren.<a name="raspberry-pi-bullseye-enable-legacy-camera-stack"></a>

**Um den Legacy-Kamerastack zu aktivieren**

      1. Führen Sie den folgenden Befehl aus, um das Raspberry Pi-Konfigurationstool zu öffnen.

         ```
         sudo raspi-config
         ```

      1. Wählen Sie **Schnittstellenoptionen**.

      1. Wählen Sie **Legacy-Kamera** aus, um den Legacy-Kamerastack zu aktivieren.

      1. Starten Sie den Raspberry Pi neu.

## Schritt 1: Abonnieren Sie das Thema Standardbenachrichtigungen
<a name="ml-image-classification-subscribe"></a>

In diesem Schritt konfigurieren Sie den AWS IoT MQTT-Client in der AWS IoT Konsole so, dass er MQTT-Nachrichten überwacht, die von der TensorFlow Lite-Komponente zur Bildklassifizierung veröffentlicht wurden. Standardmäßig veröffentlicht die Komponente Inferenzergebnisse zu diesem Thema. `ml/tflite/image-classification` Abonnieren Sie dieses Thema, bevor Sie die Komponente auf Ihrem Greengrass-Core-Gerät bereitstellen, um die Inferenzergebnisse zu sehen, wenn die Komponente zum ersten Mal ausgeführt wird. 



**Um das Thema Standardbenachrichtigungen zu abonnieren**

1. Wählen Sie im Navigationsmenü der [AWS IoT Konsole](https://console.aws.amazon.com/iot/) **Test, MQTT-Testclient**.

1. Geben ****ml/tflite/image-classification**Sie unter Thema abonnieren** in das Feld **Themenname** den Text ein.

1. Wählen Sie **Subscribe (Abonnieren)** aus.

## Schritt 2: Stellen Sie die TensorFlow Lite-Komponente zur Bildklassifizierung bereit
<a name="ml-image-classification-deploy"></a>

In diesem Schritt stellen Sie die TensorFlow Lite-Komponente zur Imageklassifizierung auf Ihrem Kerngerät bereit:

### So stellen Sie die TensorFlow Lite-Komponente zur Bildklassifizierung bereit (Konsole)
<a name="ml-image-classification-deploy-console"></a>

1. Wählen Sie im Navigationsmenü der [AWS IoT Greengrass Konsole](https://console.aws.amazon.com/greengrass) die Option **Komponenten** aus.

1. Wählen Sie auf der Seite **Komponenten** auf der Registerkarte **Öffentliche Komponenten** die Option `aws.greengrass.TensorFlowLiteImageClassification` aus.

1. Wählen Sie auf der **aws.greengrass.TensorFlowLiteImageClassification** Seite **Bereitstellen** aus.

1. <a name="add-deployment"></a>Wählen **Sie unter Zur Bereitstellung hinzufügen** eine der folgenden Optionen aus:

   1. 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.

   1. 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. 

1. <a name="specify-deployment-target"></a>Gehen Sie auf der Seite **Ziel angeben** wie folgt vor: 

   1. Geben Sie unter **Bereitstellungsinformationen** den Anzeigenamen für Ihre Bereitstellung ein oder ändern Sie ihn.

   1. 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.

1. Vergewissern Sie sich auf der Seite **Komponenten auswählen** unter **Öffentliche Komponenten**, dass die `aws.greengrass.TensorFlowLiteImageClassification` Komponente ausgewählt ist, und klicken Sie auf **Weiter**.

1. Behalten Sie auf der Seite **Komponenten konfigurieren** die Standardkonfigurationseinstellungen bei und wählen Sie **Weiter**.

1. Behalten Sie auf der Seite **Erweiterte Einstellungen konfigurieren** die Standardkonfigurationseinstellungen bei und wählen Sie **Weiter**.

1. Wählen Sie auf der Seite **„Überprüfen**“ die Option **Bereitstellen**

### So stellen Sie die TensorFlow Lite-Komponente zur Bildklassifizierung bereit (AWS CLI)
<a name="ml-image-classification-deploy-cli"></a>

1. 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 `targetArn` durch den Amazon-Ressourcennamen (ARN) des Objekts oder der Objektgruppe, auf die die Bereitstellung ausgerichtet werden soll, und zwar im folgenden Format: 
     + Objekt: `arn:aws:iot:region:account-id:thing/thingName`
     + Objektgruppe: `arn:aws:iot:region:account-id:thinggroup/thingGroupName`
   + Dieses Tutorial verwendet die Komponentenversion 2.1.0. Ersetzen Sie im `aws.greengrass.TensorFlowLiteObjectDetection` Komponentenobjekt, *2.1.0* um eine andere Version der TensorFlow Lite-Objekterkennungskomponente zu verwenden.

1. Führen Sie den folgenden Befehl aus, um die TensorFlow Lite-Komponente zur Bildklassifizierung 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: Inferenzergebnisse anzeigen
<a name="ml-image-classification-results"></a>

Nachdem Sie die Komponente bereitgestellt haben, können Sie die Inferenzergebnisse im Komponentenprotokoll auf Ihrem Greengrass-Core-Gerät und im AWS IoT MQTT-Client in der Konsole einsehen. AWS IoT Informationen zum Abonnieren des Themas, zu dem die Komponente Inferenzergebnisse veröffentlicht, finden Sie unter. [Schritt 1: Abonnieren Sie das Thema Standardbenachrichtigungen](#ml-image-classification-subscribe)
+ **AWS IoT MQTT-Client** — Gehen Sie wie folgt vor, um die Ergebnisse anzuzeigen, die die Inferenzkomponente [zum Thema Standardbenachrichtigungen](#ml-image-classification-subscribe) veröffentlicht:

  1. Wählen Sie im Navigationsmenü der [AWS IoT Konsole](https://console.aws.amazon.com/iot/) Test, **MQTT-Testclient** aus.

  1. Wählen Sie unter **Abonnements** die Option**ml/tflite/image-classification**.

     Sie sollten Meldungen sehen, die dem folgenden Beispiel ähneln.

     ```
     {
       "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-Core-Gerät aus. 

  ```
  sudo tail -f /greengrass/v2/logs/aws.greengrass.TensorFlowLiteImageClassification.log
  ```

  Sie sollten Ergebnisse sehen, die dem folgenden Beispiel ähneln.

  ```
  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 Kerngerät nicht erreicht. Dies kann der Fall sein, wenn Ihr Kerngerä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-Software-Protokolldatei anzuzeigen. Diese Datei enthält Protokolle vom Bereitstellungsdienst des Greengrass-Core-Geräts.

```
sudo tail -f /greengrass/v2/logs/greengrass.log
```

Weitere Informationen finden Sie unter [Fehlerbehebung bei Inferenz für maschinelles Lernen](ml-troubleshooting.md).

## Nächste Schritte
<a name="ml-image-classification-next-steps"></a>

Wenn Sie ein Greengrass-Core-Gerät mit einer unterstützten Kameraschnittstelle haben, können Sie den Vorgang abschließen. Hier erfahren Sie[Tutorial: Führen Sie mit Lite eine Beispielinferenz zur Bildklassifizierung von Bildern aus einer Kamera durch TensorFlow](ml-tutorial-image-classification-camera.md), wie Sie die Beispiel-Inferenzkomponente modifizieren, um die Bildklassifizierung von Bildern von einer Kamera durchzuführen.

Um die Konfiguration der [TensorFlow Lite-Beispielkomponente für die Inferenz zur Bildklassifizierung genauer](tensorflow-lite-image-classification-component.md) zu untersuchen, versuchen Sie Folgendes:
+ Ändern Sie den `InferenceInterval` Konfigurationsparameter, um zu ändern, wie oft der Inferenzcode ausgeführt wird.
+ Ändern Sie die `ImageName` und die `ImageDirectory` Konfigurationsparameter in der Konfiguration der Inferenzkomponente, um ein benutzerdefiniertes Bild anzugeben, das für die Inferenz verwendet werden soll. 

Informationen zum Anpassen der Konfiguration öffentlicher Komponenten oder zum Erstellen benutzerdefinierter Komponenten für maschinelles Lernen finden Sie unter. [Passen Sie Ihre Komponenten für maschinelles Lernen an](ml-customization.md)