Inferenz starten

Diese Seite listet die Steuerknoten eines Moduls auf und beschreibt, wie Sie eine Inferenz ausführen. Die Knoten des Bild-Streams sind in Inferenz auf einem Bild-Stream aufgeführt, die system-Knoten in Einstellungen auf dem Data Layer.

Data Layer

LumiScan AI Object Matching bietet seine Funktionen auf dem Data Layer unter hdvisionsystems/lumiscan-ai-object-matching an.

Auf ctrlX OS (ctrlX CORE oder ctrlX IPC) nutzt LumiScan AI Object Matching den ctrlX Data Layer.

Auf einem PC mit Windows 11 oder Ubuntu 24.04 nutzt LumiScan AI Object Matching LumiScan Keryx.

Knotenadressen, Typen und Aufrufmuster sind auf beiden gleich. LumiScan AI Object Matching bietet:

Wie Adressen aufgebaut sind, wie Funktionen aufgerufen werden, die Statuscodes und die Werkzeuge sind in LumiScan Keryx beschrieben.

Adressen

Tabelle 1. Adressen der Funktionen
Funktion Zugriff Adresse

Inferenz

Schreibgeschützt

hdvisionsystems/lumiscan-ai-object-matching/<network name>/control/inference/ready

Beschreibbar

hdvisionsystems/lumiscan-ai-object-matching/<network name>/control/inference/request

Nur schreiben (Methode)

hdvisionsystems/lumiscan-ai-object-matching/<network name>/control/inference/execute

Reset

Schreibgeschützt

hdvisionsystems/lumiscan-ai-object-matching/<network name>/control/reset/ready

Beschreibbar

hdvisionsystems/lumiscan-ai-object-matching/<network name>/control/reset/request

Nur schreiben (Methode)

hdvisionsystems/lumiscan-ai-object-matching/<network name>/control/reset/execute

Status

Schreibgeschützt

hdvisionsystems/lumiscan-ai-object-matching/<network name>/control/status/code

Schreibgeschützt

hdvisionsystems/lumiscan-ai-object-matching/<network name>/control/status/text

Ergebniszähler

Schreibgeschützt

hdvisionsystems/lumiscan-ai-object-matching/<network name>/output/package-identifier

output/package-identifier steigt mit jeder erfolgreichen Inferenz um eins, und nur dann.

Schritte zur Inferenz mit einem externen Bild

Um nicht jedes Mal die gesamte Adresse zu wiederholen, wird in diesem Abschnitt der unveränderliche Teil mit der übergeordneten Adresse durch XXX ersetzt.

Die Adresse hdvisionsystems/lumiscan-ai-object-matching/<network name>/control/inference/ready wird also als XXX/inference/ready geschrieben.

Entsprechend wird die Adresse hdvisionsystems/lumiscan-ai-object-matching/<network name>/control/inference/request als XXX/inference/request geschrieben.

Die Anwendung liest das Bild von der externen Adresse, die für das Netz konfiguriert ist, so, wie es beim Start der Inferenz vorliegt. Sie prüft nicht, ob das Bild neu ist: Ein Bild, das sich seit der letzten Inferenz nicht geändert hat, wird erneut inferiert.

So starten Sie die Inferenz:

  1. Prüfen Sie XXX/inference/ready = True.[1]

Die Anwendung lädt die Konfigurationen automatisch und richtet die neuronalen Netze ein. XXX/inference/ready ist False, solange sie eingerichtet werden, solange der Bild-Stream läuft, ohne Lizenz und nachdem die Einstellungen auf dem Data Layer geändert wurden (status/code -5, Neustart erforderlich). Prüfen Sie XXX/status/code und das Log für weitere Informationen.

  1. Merken Sie sich den Wert von output/package-identifier.

  2. Setzen Sie XXX/inference/request := True

  3. Warten Sie, bis XXX/inference/ready = False. Die Inferenz läuft bereits.

Falls die Anwendung nicht erkannt hat, dass sich die Variable geändert hat:

  1. Stellen Sie sicher, dass jeweils nur ein Prozess auf XXX/inference/request zugreift.

  2. Ist die letzte Inferenz fehlgeschlagen, ignoriert das Modul jeden Request außer reset. Fordern Sie einen Reset an.

  3. Wenden Sie sich an hdvisionsystems.

  1. Setzen Sie XXX/inference/request := False

  2. Warten Sie, bis XXX/inference/ready = True.

  3. Prüfen Sie, ob output/package-identifier um eins gestiegen ist.
    status/code ist jetzt 3, unabhängig davon, ob die Inferenz erfolgreich war: siehe Ausgang einer Inferenz.
    Sie können das Ergebnis jetzt unter hdvisionsystems/lumiscan-ai-object-matching/<network name>/output/result prüfen.

Schritte zur Inferenz mit einem Eingabebild

Um nicht jedes Mal die gesamte Adresse zu wiederholen, wird in diesem Abschnitt der unveränderliche Teil mit der übergeordneten Adresse durch XXX ersetzt.

Die Adresse hdvisionsystems/lumiscan-ai-object-matching/<network name>/control/inference/ready wird also als XXX/inference/ready geschrieben.

Entsprechend wird die Adresse hdvisionsystems/lumiscan-ai-object-matching/<network name>/control/inference/request als XXX/inference/request geschrieben.

So setzen Sie das Eingabebild:

  1. Suchen Sie im Data Layer die folgende Adresse[2]: hdvisionsystems/lumiscan-ai-object-matching/<network name>/input/image

  2. Kopieren Sie das Rohbild auf die folgende Adresse: hdvisionsystems/lumiscan-ai-object-matching/<network name>/input/image

  3. Setzen Sie die zugehörige Bildbreite, Bildhöhe und das PixelFormat unter dem Pfad hdvisionsystems/lumiscan-ai-object-matching/<network name>/input/image

Bei einem RGB-Bild ist das Datenlayout Höhe, Breite, Kanal. Mit anderen Worten: Die RGB-Werte eines Pixels liegen in den Rohdaten direkt nebeneinander.

So starten Sie die Inferenz:

  1. Prüfen Sie XXX/inference/ready = True.[1]

Die Anwendung lädt die Konfigurationen automatisch und richtet die neuronalen Netze ein. Solange XXX/inference/ready True ist, können Sie eine Inferenz ausführen.

  1. Merken Sie sich den Wert von output/package-identifier.

  2. Setzen Sie XXX/inference/request := True

  3. Warten Sie, bis XXX/inference/ready = False. Die Inferenz läuft bereits.

Falls die Anwendung nicht erkannt hat, dass sich die Variable geändert hat:

  1. Stellen Sie sicher, dass jeweils nur ein Prozess auf XXX/inference/request zugreift.

  2. Ist die letzte Inferenz fehlgeschlagen, ignoriert das Modul jeden Request außer reset. Fordern Sie einen Reset an.

  3. Wenden Sie sich an hdvisionsystems.

  1. Setzen Sie XXX/inference/request := False

  2. Warten Sie, bis XXX/inference/ready = True.

  3. Prüfen Sie, ob output/package-identifier um eins gestiegen ist.
    status/code ist jetzt 3, unabhängig davon, ob die Inferenz erfolgreich war: siehe Ausgang einer Inferenz.
    Sie können das Ergebnis jetzt unter hdvisionsystems/lumiscan-ai-object-matching/<network name>/output/result prüfen.

Eine Methode ausführen

Jede Funktion kann statt über den Handshake auch mit einem einzelnen Schreibvorgang auf ihren execute-Knoten gestartet werden:

hdvisionsystems/lumiscan-ai-object-matching/<network name>/control/<function>/execute

für inference, reset, list-result-files, load, save, save-result-image und remove. Der Schreibvorgang kehrt zurück, wenn die Funktion abgeschlossen ist. Sie führt denselben Code aus wie der Handshake, und ihre Ergebnisse erscheinen auf denselben Ausgabeknoten.

Zwei Ergebnisse sind auseinanderzuhalten:

  • Ob die Funktion überhaupt gestartet werden konnte, meldet der Schreibvorgang selbst. Ein abgelehnter Schreibvorgang wird nie in eine Warteschlange gestellt. Die Ergebnisse heißen auf den beiden Data Layern unterschiedlich; ihre Bedeutung ist dieselbe (siehe auch Ergebnisse eines Methodenaufrufs):

    ctrlX Data Layer LumiScan Keryx Bedeutung Was zu tun ist

    DL_OK

    Ok

    Die Funktion wurde ausgeführt.

    Lesen Sie control/status/code für ihren Ausgang.

    DL_TOO_MANY_OPERATIONS

    TooManyOperations

    Eine andere Funktion des Moduls läuft, über den Handshake oder ein anderes execute.

    Wiederholen Sie den Aufruf.

    DL_INVALID_OPERATION_MODE

    InvalidOperationMode

    Das ready der Funktion ist False, zum Beispiel inference, solange der Bild-Stream läuft.

    Bringen Sie das Modul zuerst in den passenden Zustand; bloßes Wiederholen schlägt weiter fehl.

    DL_RESOURCE_UNAVAILABLE

    ResourceUnavailable

    Die Anwendung wird beendet; oder die Einstellungen wurden auf dem Data Layer geändert und ein Neustart ist erforderlich (status/code -5); oder das Modul hat nach einer fehlgeschlagenen Inferenz einen Fehler. reset/execute wird wegen des Fehlers nie abgelehnt.

    Nach einem Fehler führen Sie reset aus. Nach einer Änderung der Einstellungen starten Sie die Anwendung neu, siehe Einstellungen auf dem Data Layer.

  • Ob die Funktion erfolgreich war, wird auf control/status/code und control/status/text gemeldet. Anders als beim Handshake lässt execute den Ausgang dort stehen: Nach inference/execute ist er 0, 100001 oder -1.

Halten Sie jeden Aufruf kurz: Ein Client gibt das Warten nach wenigen Sekunden auf (auf LumiScan Keryx standardmäßig nach 2 s, siehe Execute-Methoden). Eine Inferenz auf einem großen Bild oder einem langsamen Gerät kann länger dauern; verwenden Sie dann den Handshake.

Statuscode-Werte

Die Werte 0 bis 3 und -1 bis -5 sind die Modulstatuscodes, die allen LumiScan-Anwendungen gemeinsam sind, siehe Statuscodes und Ergebnisse. 100001 und 100002 sind spezifisch für AI Object Matching.

Tabelle 2. Beschreibung der Statuscode-Werte
Statuscode-Nummer Text Bedeutung

0

"ready"

Die letzte Funktion wurde erfolgreich ausgeführt, die Anwendung ist bereit, die nächste Funktion auszuführen.

1

"settingUp"

Das Modul oder die Funktion wird noch eingerichtet.

2

"running"

Die Funktion läuft gerade.

3

"waitingForClient"

Wartet auf den Client (in der Regel darauf, dass XXX/request zurückfällt). Außerdem das Ende jeder über den Handshake angeforderten Inferenz, unabhängig davon, ob sie erfolgreich war: siehe Ausgang einer Inferenz.

100001

"ImageQueueEmpty"

Das Bild konnte nicht gelesen werden: Der Bildknoten (input/image oder die externe Bildadresse) enthält keine Daten oder konnte nicht gelesen werden. Kein Fehler: Stellen Sie ein Bild bereit und führen Sie die Inferenz erneut aus.

100002

"StreamActive"

Eine Inferenz wurde angefordert, während der Bild-Stream läuft. Sie wird abgelehnt, kein Fehler. Siehe Inferenz auf einem Bild-Stream.

-1

"undefinedError"

Etwas ist schiefgegangen, und wir haben dafür keinen eigenen Fehlercode angelegt.

-2

"invalidSetting"

Die angegebene Einstellungsdatei konnte nicht geladen werden.

-3

"invalidInput"

Eines der Eingabefelder war ungültig.

-4

"MissingLicense"

Stellen Sie sicher, dass die richtige Lizenz installiert ist.

-5

"restartRequired"

Die Einstellungsdateien wurden auf dem Data Layer geändert: Starten Sie die Anwendung neu. Siehe Einstellungen auf dem Data Layer.


1. Die Bedeutung aller Statuscode-Werte ist in der Tabelle Statuscode-Werte am Ende dieses Kapitels erklärt.
2. Ist die Anwendung für die Verwendung eines Eingabebilds konfiguriert, sollte die angegebene Adresse vorhanden sein.