

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 Beispielinferenz zur Bildklassifizierung von Bildern aus einer Kamera durch TensorFlow
<a name="ml-tutorial-image-classification-camera"></a>

In diesem Tutorial erfahren Sie, wie Sie mit der [TensorFlow Lite-Komponente zur Bildklassifizierung](tensorflow-lite-image-classification-component.md) eine Beispielinferenz zur Bildklassifizierung für Bilder von einer Kamera lokal auf einem Greengrass-Core-Gerät durchführen können. Diese Komponente umfasst die folgenden Komponentenabhängigkeiten: 
+ TensorFlow Lite-Komponente zum Speichern von Bildklassifizierungsmodellen
+ TensorFlow Lite-Runtime-Komponente

**Anmerkung**  
Dieses Tutorial greift auf das Kameramodul für [Raspberry Pi](https://www.raspberrypi.org/) - oder [NVIDIA Jetson Nano-Geräte](https://developer.nvidia.com/embedded/jetson-nano) zu, AWS IoT Greengrass unterstützt jedoch auch andere Geräte auf ARMv7L-, Armv8- oder x86\$164-Plattformen. Informationen zum Einrichten einer Kamera für ein anderes Gerät finden Sie in der entsprechenden Dokumentation für Ihr Gerät.

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-camera-prereqs)
+ [Schritt 1: Konfigurieren Sie das Kameramodul auf Ihrem Gerät](#ml-tutorial-image-classification-camera-install)
+ [Schritt 2: Bestätigen Sie Ihr Abonnement für das Thema Standardbenachrichtigungen](#ml-image-classification-camera-subscribe)
+ [Schritt 3: Ändern Sie die Konfiguration der TensorFlow Lite-Image-Klassifizierungskomponente und stellen Sie sie bereit](#ml-image-classification-camera-deploy)
+ [Schritt 4: Inferenzergebnisse anzeigen](#ml-image-classification-camera-results)
+ [Nächste Schritte](#ml-image-classification-camera-next-steps)

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

Um dieses Tutorial abzuschließen, müssen Sie es zuerst abschließen[Tutorial: Führen Sie mit Lite eine Inferenz zur Klassifizierung von Beispielbildern durch TensorFlow](ml-tutorial-image-classification.md).

Sie benötigen außerdem Folgendes:
+ Ein Linux-Greengrass-Core-Gerät mit einer Kameraschnittstelle. In diesem Tutorial wird auf das Kameramodul auf einem der folgenden unterstützten Geräte zugegriffen:
  + [Raspberry Pi](https://www.raspberrypi.org/) mit [Raspberry Pi OS](https://www.raspberrypi.org/downloads/) (früher Raspbian genannt)
  + [NVIDIA Jetson Nano](https://developer.nvidia.com/embedded/jetson-nano)

  Informationen zur Einrichtung eines Greengrass-Core-Geräts finden Sie unter[Tutorial: Erste Schritte mit AWS IoT Greengrass V2](getting-started.md).

  Das Core-Gerä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.
+ Für Raspberry Pi- oder NVIDIA Jetson Nano-Geräte, [Raspberry Pi-Kameramodul V2 — 8 Megapixel, 1080p](https://www.amazon.com/Raspberry-Pi-Camera-Module-Megapixel/dp/B01ER2SKFS). Weitere Informationen zum Einrichten der Kamera finden Sie unter [Verbinden der Kamera](https://www.raspberrypi.org/documentation/usage/camera/) in der Raspberry Pi-Dokumentation. 

## Schritt 1: Konfigurieren Sie das Kameramodul auf Ihrem Gerät
<a name="ml-tutorial-image-classification-camera-install"></a>

In diesem Schritt installieren und aktivieren Sie das Kameramodul für Ihr Gerät. Führen Sie die folgenden Befehle auf dem Gerät aus.

------
#### [ Raspberry Pi (Armv7l) ]

1. <a name="install-picamera-step"></a>Installieren Sie die `picamera` Schnittstelle für das Kameramodul. Führen Sie den folgenden Befehl aus, um das Kameramodul und die anderen Python-Bibliotheken zu installieren, die für dieses Tutorial erforderlich sind.

   ```
   sudo apt-get install -y python3-picamera
   ```

1. Stellen Sie sicher, dass Picamera erfolgreich installiert wurde.

   ```
   sudo -u ggc_user bash -c 'python3 -c "import picamera"'
   ```

   Wenn die Ausgabe keine Fehler enthält, ist die Überprüfung erfolgreich.
**Anmerkung**  
Wenn die ausführbare Python-Datei, die auf Ihrem Gerät installiert ist`python3.7`, verwenden Sie `python3.7` stattdessen die Befehle in diesem Tutorial. `python3` Stellen Sie sicher, dass Ihre pip-Installation der richtigen `python3.7`- oder `python3`-Version zugeordnet ist, um Abhängigkeitsfehler zu vermeiden.

1. Starten Sie das Gerät neu.

   ```
   sudo reboot
   ```

1. Öffnen Sie das Raspberry Pi-Konfigurations-Tool.

   ```
   sudo raspi-config
   ```

1. Verwenden Sie die Pfeiltasten zum Öffnen von **Interfacing Options** (Verbindungsoptionen) und aktivieren Sie die Kameraschnittstelle. Wenn Sie dazu aufgefordert werden, lassen Sie den Neustart des Geräts zu.

1. Führen Sie den folgenden Befehl aus, um das Kamera-Setup zu testen.

   ```
   raspistill -v -o test.jpg
   ```

   So werden ein Vorschaufenster im Raspberry Pi geöffnet, ein Bild mit dem Namen `test.jpg` in Ihrem aktuellen Verzeichnis gespeichert und Informationen über die Kamera im Raspberry Pi-Terminal angezeigt.

1. Führen Sie den folgenden Befehl aus, um einen Symlink zu erstellen, der es der Inferenzkomponente ermöglicht, von der virtuellen Umgebung aus, die von der Runtime-Komponente erstellt wurde, auf Ihre Kamera zuzugreifen.

   ```
   sudo ln -s /usr/lib/python3/dist-packages/picamera "MLRootPath/greengrass_ml_tflite_venv/lib/python3.7/site-packages"
   ```

   Der Standardwert *MLRootPath* für dieses Tutorial ist. `/greengrass/v2/work/variant.TensorFlowLite/greengrass_ml` Der `greengrass_ml_tflite_venv` Ordner an diesem Speicherort wird erstellt, wenn Sie die Inferenzkomponente zum ersten Mal in [Tutorial: Führen Sie mit Lite eine Inferenz zur Klassifizierung von Beispielbildern durch TensorFlow](ml-tutorial-image-classification.md) bereitstellen.

------
#### [ Jetson Nano (Armv8) ]

1. Führen Sie den folgenden Befehl aus, um das Kamera-Setup zu testen.

   ```
   gst-launch-1.0 nvarguscamerasrc num-buffers=1 ! "video/x-raw(memory:NVMM), width=1920, height=1080, format=NV12, framerate=30/1" ! nvjpegenc ! filesink location=test.jpg
   ```

   Dadurch wird ein Bild mit dem Namen `test.jpg` Ihres aktuellen Verzeichnisses erfasst und gespeichert.

1. (Optional) Starten Sie das Gerät neu. Wenn bei der Ausführung des `gst-launch` Befehls im vorherigen Schritt Probleme auftreten, können diese Probleme möglicherweise durch einen Neustart des Geräts behoben werden.

   ```
   sudo reboot
   ```

**Anmerkung**  
Bei Armv8 (AArch64) -Geräten, wie z. B. einem Jetson Nano, müssen Sie keinen Symlink erstellen, damit die Inferenzkomponente von der virtuellen Umgebung aus, die von der Runtime-Komponente erstellt wurde, auf die Kamera zugreifen kann. 

------

## Schritt 2: Bestätigen Sie Ihr Abonnement für das Thema Standardbenachrichtigungen
<a name="ml-image-classification-camera-subscribe"></a>

In haben Sie konfiguriert[Tutorial: Führen Sie mit Lite eine Inferenz zur Klassifizierung von Beispielbildern durch TensorFlow](ml-tutorial-image-classification.md), dass der AWS IoT MQTT-Client in der AWS IoT Konsole so konfiguriert ist, dass er MQTT-Nachrichten überwacht, die von der TensorFlow Lite-Komponente zur Bildklassifizierung zu diesem Thema veröffentlicht wurden. `ml/tflite/image-classification` Stellen Sie in der AWS IoT Konsole sicher, dass dieses Abonnement existiert. Falls nicht, folgen Sie den Schritten unter, [Schritt 1: Abonnieren Sie das Thema Standardbenachrichtigungen](ml-tutorial-image-classification.md#ml-image-classification-subscribe) um dieses Thema zu abonnieren, bevor Sie die Komponente auf Ihrem Greengrass-Core-Gerät bereitstellen.

## Schritt 3: Ändern Sie die Konfiguration der TensorFlow Lite-Image-Klassifizierungskomponente und stellen Sie sie bereit
<a name="ml-image-classification-camera-deploy"></a>

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

### So konfigurieren und implementieren Sie die TensorFlow Lite-Komponente zur Bildklassifizierung (Konsole)
<a name="ml-image-classification-camera-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. Gehen Sie auf der Seite **Komponenten konfigurieren** wie folgt vor: 

   1. Wählen Sie die Inferenzkomponente und anschließend **Komponente konfigurieren** aus.

   1. Geben Sie unter **Konfigurationsupdate** das folgende Konfigurationsupdate in das Feld **Zusammenzufügende Konfiguration** ein.

      ```
      {
        "InferenceInterval": "60",
        "UseCamera": "true"
      }
      ```

      Mit diesem Konfigurationsupdate greift die Komponente auf das Kameramodul auf Ihrem Gerät zu und führt Rückschlüsse auf die von der Kamera aufgenommenen Bilder durch. Der Inferenzcode wird alle 60 Sekunden ausgeführt.

   1. Wählen Sie **Bestätigen** aus, und wählen Sie dann **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 konfigurieren und implementieren Sie die TensorFlow Lite-Komponente zur Bildklassifizierung (AWS CLI)
<a name="ml-image-classification-camera-deploy-cli"></a>

1. Erstellen Sie eine `deployment.json` Datei, um die Bereitstellungskonfiguration für die TensorFlow Lite-Imageklassifizierungskomponente zu definieren. Diese Datei sollte wie folgt aussehen:

   ```
   {
     "targetArn":"targetArn",
     "components": {
       "aws.greengrass.TensorFlowLiteImageClassification": {
         "componentVersion": 2.1.0,
         "configurationUpdate": {
           "InferenceInterval": "60",
           "UseCamera": "true"
         }
       }
     }
   }
   ```
   + 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.TensorFlowLiteImageClassification` Komponentenobjekt, *2.1.0* um eine andere Version der TensorFlow Lite-Bildklassifizierungskomponente zu verwenden.

   Mit diesem Konfigurationsupdate greift die Komponente auf das Kameramodul auf Ihrem Gerät zu und führt Rückschlüsse auf die von der Kamera aufgenommenen Bilder durch. Der Inferenzcode wird alle 60 Sekunden ausgeführt. Ersetzen Sie die folgenden Werte

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 4: Inferenzergebnisse anzeigen
<a name="ml-image-classification-camera-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 2: Bestätigen Sie Ihr Abonnement für das Thema Standardbenachrichtigungen](#ml-image-classification-camera-subscribe)

**Topics**
+ **AWS IoT MQTT-Client** — Gehen Sie wie folgt vor, um die Ergebnisse anzuzeigen, die die Inferenzkomponente [zum Thema Standardbenachrichtigungen](ml-tutorial-image-classification.md#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**.
+ **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
  ```

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 erforderlichen 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-camera-next-steps"></a>

In diesem Tutorial erfahren Sie, wie Sie die TensorFlow Lite-Komponente zur Bildklassifizierung mit benutzerdefinierten Konfigurationsoptionen verwenden, um anhand von Bildern, die mit einer Kamera aufgenommen wurden, anhand von Beispielen eine Bildklassifizierung durchzuführen. 

Weitere 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).