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
| Funktion | Zugriff | Adresse |
|---|---|---|
Inferenz |
Schreibgeschützt |
|
Beschreibbar |
|
|
Nur schreiben (Methode) |
|
|
Reset |
Schreibgeschützt |
|
Beschreibbar |
|
|
Nur schreiben (Methode) |
|
|
Status |
Schreibgeschützt |
|
Schreibgeschützt |
|
|
Ergebniszähler |
Schreibgeschützt |
|
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 Entsprechend wird die Adresse |
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:
-
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 ( |
-
Merken Sie sich den Wert von
output/package-identifier. -
Setzen Sie XXX/inference/request := True
-
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:
|
-
Setzen Sie XXX/inference/request := False
-
Warten Sie, bis XXX/inference/ready = True.
-
Prüfen Sie, ob
output/package-identifierum eins gestiegen ist.
status/codeist jetzt3, unabhängig davon, ob die Inferenz erfolgreich war: siehe Ausgang einer Inferenz.
Sie können das Ergebnis jetzt unterhdvisionsystems/lumiscan-ai-object-matching/<network name>/output/resultprü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 Entsprechend wird die Adresse |
So setzen Sie das Eingabebild:
-
Suchen Sie im Data Layer die folgende Adresse[2]:
hdvisionsystems/lumiscan-ai-object-matching/<network name>/input/image -
Kopieren Sie das Rohbild auf die folgende Adresse:
hdvisionsystems/lumiscan-ai-object-matching/<network name>/input/image -
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:
-
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. |
-
Merken Sie sich den Wert von
output/package-identifier. -
Setzen Sie XXX/inference/request := True
-
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:
|
-
Setzen Sie XXX/inference/request := False
-
Warten Sie, bis XXX/inference/ready = True.
-
Prüfen Sie, ob
output/package-identifierum eins gestiegen ist.
status/codeist jetzt3, unabhängig davon, ob die Inferenz erfolgreich war: siehe Ausgang einer Inferenz.
Sie können das Ergebnis jetzt unterhdvisionsystems/lumiscan-ai-object-matching/<network name>/output/resultprü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_OKOkDie Funktion wurde ausgeführt.
Lesen Sie
control/status/codefür ihren Ausgang.DL_TOO_MANY_OPERATIONSTooManyOperationsEine andere Funktion des Moduls läuft, über den Handshake oder ein anderes
execute.Wiederholen Sie den Aufruf.
DL_INVALID_OPERATION_MODEInvalidOperationModeDas
readyder Funktion ist False, zum Beispielinference, solange der Bild-Stream läuft.Bringen Sie das Modul zuerst in den passenden Zustand; bloßes Wiederholen schlägt weiter fehl.
DL_RESOURCE_UNAVAILABLEResourceUnavailableDie 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/executewird wegen des Fehlers nie abgelehnt.Nach einem Fehler führen Sie
resetaus. 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/codeundcontrol/status/textgemeldet. Anders als beim Handshake lässtexecuteden Ausgang dort stehen: Nachinference/executeist er0,100001oder-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.
| 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 ( |
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. |