---
title: "Anleitung: AI Object Matching auf Kamerabildern ausführen (ctrlX CORE mit Hailo)"
description: "Vom trainierten Netz zu Detektionen auf Kamerabildern - Modell hochladen, Modul konfigurieren, den Hailo-Beschleuniger der ctrlX CORE nutzen, die Inferenz ausführen und das Ergebnis lesen."
product: "LumiScan AI Object Matching"
component: "lumiscan-ai-object-matching-de"
version: "2.1.0"
display_version: "2.1.0.9"
latest_version: true
language: "de"
url: "https://docs.hdvisionsystems.com/de/lumiscan-ai-object-matching-de/2.1.0/how-tos/run-ai-object-matching-on-a-camera-image.html"
---

# Anleitung: AI Object Matching auf Kamerabildern ausführen (ctrlX CORE mit Hailo) – LumiScan AI Object Matching

Diese Anleitung richtet LumiScan AI Object Matching auf einer ctrlX CORE so ein, dass es Objekte in den Bildern von LumiScan Cam Driver erkennt - mit einem in LumiScan Training trainierten Netz, beschleunigt durch die Hailo-TPU der ctrlX CORE.

Am Ende gilt:

- Das trainierte Netz ist auf der ctrlX CORE geladen und läuft auf der Hailo-TPU.
- Das Modul liest das Kamerabild direkt von LumiScan Cam Driver.
- Ein Schreibzugriff auf `inference/execute` erkennt die Objekte im aktuellen Bild.
- Die Detektionen - Position, Klasse, Score und, je nach Netz, Orientierung - liegen auf dem Data Layer.

## Bevor Sie beginnen {#prerequisites}

**Hardware**

- ctrlX CORE X3 oder X7 mit Hailo-TPU
- Eine an LumiScan Cam Driver angeschlossene Kamera
- Engineering-PC mit Browser und WinSCP

**Software**

- LumiScan AI Object Matching mit Lizenz, siehe [Voraussetzungen](https://docs.hdvisionsystems.com/de/lumiscan-ai-object-matching-de/2.1.0/lumiscan-ai-object-matching/requirements.html)
- LumiScan Cam Driver, konfiguriert, verbunden und aufnahmebereit
- Für die Hailo-TPU: die ctrlX-App **Hardware Support** in Version 2.6.2
- Optional: LumiScan Cockpit, um Bilder und Ergebnisse anzusehen

**Daten**

- Das trainierte Netz aus LumiScan Training: die Modelldatei (`.onnx`) und ihre Beschreibungsdatei (`.json`)

## Wie es zusammenhängt {#overview}

Die Einstellungen von LumiScan AI Object Matching sind Dateien in seinem Ordner `lumiscan-ai-object-matching`:

- `ai-object-matching.json` - die Anwendungskonfiguration. Ihre Liste `modules` nennt die zu ladende Moduldatei. Derzeit wird ein Modul unterstützt.
- Eine Moduldatei, zum Beispiel `ai-object-matching-module.json` - Name des Moduls, sein Netz und seine Bildquelle.
- Der Ordner `models` - das Netz: die Modelldatei und ihre Beschreibungsdatei `model.json` mit den Klassennamen, den Schwellwerten und dem Inferenz-Provider.

Der `name` des Moduls ist seine Adresse auf dem Data Layer: `hdvisionsystems/lumiscan-ai-object-matching/<name>/…`. Mit `externalImagePath` liest das Modul das Bild direkt aus einer anderen Anwendung, hier LumiScan Cam Driver. Jede Inferenz verwendet das Bild so, wie es in diesem Moment ist.

Die Dateien werden beim Start der Anwendung gelesen. Starten Sie sie nach jeder Änderung neu.

## Schritt 1 - Die Voraussetzungen für Hailo prüfen {#step-1-hailo}

1. Öffnen Sie in der ctrlX-Weboberfläche **Settings > Apps**.
2. Prüfen Sie, dass die App **Hardware Support** in Version 2.6.2 installiert ist.
3. Vergleichen Sie die Versionen mit der Tabelle **Voraussetzungen für die TPU-Beschleunigung** in [Voraussetzungen](https://docs.hdvisionsystems.com/de/lumiscan-ai-object-matching-de/2.1.0/lumiscan-ai-object-matching/requirements.html).

Die TPU ist optional. Ohne sie läuft das Netz auf der CPU (`provider` `CPU` in Schritt 4), nur langsamer.

## Schritt 2 - Das Netz hochladen {#step-2-upload}

Die Modelldateien werden per WebDAV hochgeladen.

1. Starten Sie WinSCP und legen Sie eine Verbindung an:
   - **File protocol**: `WebDAV`
   - **Encryption**: `TLS/SSL`
   - **Host name**: die Adresse der ctrlX CORE, mit Ihrem ctrlX-Benutzernamen und Passwort
2. Verbinden Sie sich und gehen Sie zu `/solutions/webdav/appdata/lumiscan-ai-object-matching/models`.
3. Kopieren Sie die Modelldatei (`.onnx`) und ihre Beschreibungsdatei (`.json`) in diesen Ordner.

Die Schritte im Einzelnen, mit Bildschirmfotos, stehen in [Daten per WebDAV hochladen](https://docs.hdvisionsystems.com/de/lumiscan-ai-object-matching-de/2.1.0/lumiscan-ai-object-matching/uploading-data.html#upload-using-webdav).

## Schritt 3 - Anwendung und Modul konfigurieren {#step-3-module}

1. Gehen Sie in der ctrlX-Weboberfläche zu **Home > Manage app data**, klicken Sie auf **Open file view** und öffnen Sie `lumiscan-ai-object-matching`.

2. Öffnen Sie `ai-object-matching.json` und prüfen Sie, dass die Liste `modules` Ihre Moduldatei nennt:
   ```json
   "modules": [
     "ai-object-matching-module.json"
   ]
   ```

3. Öffnen Sie die Moduldatei und setzen Sie:
   ```json
   {
     "name": "example",
     "neuralNetworkConfig": "models/model.json",
     "externalImagePath": "hdvisionsystems/lumiscan-cam-driver/camera1/output/image"
   }
   ```
   - `name` - der Name des Moduls auf dem Data Layer. Nur Kleinbuchstaben, Ziffern, `-` und `_`.

   - `neuralNetworkConfig` - der Pfad der hochgeladenen Beschreibungsdatei, relativ zum Anwendungsordner.

   - `externalImagePath` - der Bildknoten des Kameramoduls, hier `camera1` von LumiScan Cam Driver. Der Knoten muss `data`, `width`, `height` und `pixel-type` bereitstellen.

     Behalten Sie die Einträge `$schema` und `meta` der Datei bei. Alle Parameter sind in [Modulkonfigurationsdatei](https://docs.hdvisionsystems.com/de/lumiscan-ai-object-matching-de/2.1.0/lumiscan-ai-object-matching/module-configuration-file.html) beschrieben.

## Schritt 4 - Die Hailo-TPU in der Modellbeschreibung wählen {#step-4-model}

Öffnen Sie `models/model.json`. Ihre Parameter erzeugt LumiScan Training; ändern Sie nur diese:

```json
{
  "pathToNetwork": "model.onnx",
  "provider": "HAILO",
  "deviceIndex": 0
}
```

- `pathToNetwork` - die Modelldatei, relativ zu `model.json`.
- `provider` - `HAILO` für die TPU, `CPU` ohne sie.
- `deviceIndex` - derzeit immer `0`.

In derselben Datei legt `thresholdList` je Klasse den Mindest-Score von `0.0` bis `1.0` fest, den eine Detektion braucht. Siehe [Die Datei model.json](https://docs.hdvisionsystems.com/de/lumiscan-ai-object-matching-de/2.1.0/lumiscan-ai-object-matching/models-folder.html#model-json-file).

## Schritt 5 - Neu starten und das Modul prüfen {#step-5-restart}

1. Speichern Sie alle geänderten Dateien.
2. Wählen Sie unter **Settings > Apps** **LumiScan AI Object Matching** aus und klicken Sie auf **Restart**.
3. Öffnen Sie **Settings > Data Layer** und gehen Sie zu `hdvisionsystems/lumiscan-ai-object-matching`.

Erwartet: ein Ordner mit dem `name` des Moduls, hier `example`, und `example/control/inference/ready` ist `true`, sobald das Netz geladen ist.

Fehlt das Modul oder bleibt `ready` auf `false`, lesen Sie `example/control/status/text` und das Anwendungsprotokoll. Häufige Ursachen sind ein falscher Pfad in der Moduldatei oder in `model.json`, ein `name` mit Großbuchstaben und eine fehlende Lizenz. Siehe [Fehlerbehebung](https://docs.hdvisionsystems.com/de/lumiscan-ai-object-matching-de/2.1.0/troubleshooting.html).

## Schritt 6 - Die Inferenz ausführen {#step-6-inference}

1. Nehmen Sie mit LumiScan Cam Driver ein Bild auf, zum Beispiel mit einem Schreibzugriff auf `hdvisionsystems/lumiscan-cam-driver/camera1/control/capture/execute`.
2. Schreiben Sie auf `hdvisionsystems/lumiscan-ai-object-matching/example/control/inference/execute`. Der Schreibzugriff kehrt zurück, wenn die Inferenz beendet ist.
3. Lesen Sie `example/control/status/code`.

Erwartet: Der Statuscode ist `0`, und `example/output/package-identifier` ist um eins gestiegen.

- `100001` bedeutet: Es gab kein Bild zu lesen. Nehmen Sie ein Bild auf und führen Sie die Inferenz erneut aus.
- `-1` bedeutet: Die Inferenz ist fehlgeschlagen. Das Modul nimmt dann nur noch einen Reset an: schreiben Sie auf `example/control/reset/execute` und prüfen Sie das Protokoll.

> [!NOTE]
> Ein Client wartet nur wenige Sekunden darauf, dass ein `execute`-Aufruf zurückkehrt. Dauert die Inferenz auf einem großen Bild länger, starten Sie sie stattdessen mit dem ready/request-Handshake auf `example/control/inference`. Der Handshake endet immer beim Statuscode `3`; den Erfolg erkennen Sie an `output/package-identifier`, das nur nach einer erfolgreichen Inferenz steigt. Siehe [Die Inferenz initialisieren](https://docs.hdvisionsystems.com/de/lumiscan-ai-object-matching-de/2.1.0/lumiscan-ai-object-matching/initializing-the-inference.html).

## Schritt 7 - Die Detektionen lesen {#step-7-result}

Die Detektionen liegen auf

```
hdvisionsystems/lumiscan-ai-object-matching/example/output/result
```

Für jedes erkannte Objekt enthält das Ergebnis Position, Klasse und Score und, wenn das Netz dafür trainiert wurde, die Orientierung. Wie Sie das Ergebnis in einem SPS-Programm lesen, steht in [Ergebnisdaten mit FlatBuffers lesen](https://docs.hdvisionsystems.com/de/lumiscan-ai-object-matching-de/2.1.0/lumiscan-ai-object-matching/accessing-flatbuffers-data.html).

Um die Detektionen visuell zu prüfen:

- In LumiScan Cockpit zeigt ein Modul, das auf dem Bildstream der Kamera inferiert, die Rahmen auf den Live-Bildern. Siehe [Inferenz auf einem Bildstream (experimentell)](https://docs.hdvisionsystems.com/de/lumiscan-ai-object-matching-de/2.1.0/lumiscan-ai-object-matching/inference-on-an-image-stream.html).
- Für eine einzelne Inferenz speichert `example/control/save-result-image/execute` das Ergebnisbild zur Fehlersuche.

## Ergebnis {#result}

- Das trainierte Netz läuft auf der Hailo-TPU der ctrlX CORE.
- Das Modul liest das Kamerabild von LumiScan Cam Driver direkt.
- Ein Schreibzugriff auf `inference/execute` erkennt die Objekte im aktuellen Bild.
- Die Detektionen liegen auf `output/result`, bereit für die SPS oder den Roboter.

In der Produktion ist ein Zyklus: mit LumiScan Cam Driver aufnehmen, auf `inference/execute` schreiben, den Statuscode prüfen, `output/result` lesen.
