Konfigurationsdatei eines Moduls

Die Konfigurationseinstellungen des Moduls stehen in der Datei <file name x>.json (in diesem Beispiel ai-object-matching-module.json) und legen fest, wie das Netzmodul Bilddaten auswertet.

Ein Beispiel für die JSON-Einstellungen der Modulkonfiguration:

{
    "$schema": "schemas/lumiscan-ai-object-matching-module.schema.json",
    "meta":
    {
        "inputFileType": "LumiScan-CtrlX-AI-Object-Matching-Module",
        "inputFileVersion": "1.0.0",
        "targetMachine": "Example",
        "programName": "AI-Object-Matching",
        "programVersion": "1.0.0"
    },
    "name": "example",
    "neuralNetworkConfig": "models/model_description.json",
    "externalImagePath": "hdvisionsystems/lumiscan-cam-driver/camera1/output/image"
}

Die Beschreibung der oben genannten Parameter finden Sie in der folgenden Tabelle 6.

Tabelle 1. Modulkonfiguration: Beschreibung der JSON-Einstellungen
Parameter Beschreibung

meta

Ort für Metainformationen: inputFileType und inputFileVersion sind erforderlich.

inputFileType

Muss in diesem Fall sein: LumiScan-CtrlX-AI-Object-Matching-Module

inputFileVersion

Derzeit wird nur Version 1.0.0 unterstützt.

targetMachine

Optional. Tragen Sie hier den Namen der verwendeten Maschine ein, um anzuzeigen, dass die aktuelle Anwendungskonfiguration für genau diese Maschine verwendet wird.

programName

Optional. Dieser Parameter gibt an, von welcher Anwendung die aktuelle Datei verwendet wird. In diesem Fall: AI-Object-Matching

programVersion

Optional. Derzeit verwendete Programmversion.

name

Ein eindeutiger Bezeichner für das neuronale Netz, der auch als Netzname in der Data-Layer-Adresse verwendet wird: hdvisionsystems/lumiscan-ai-object-matching/<name>/.... Erlaubt sind nur Kleinbuchstaben, Ziffern, - und _. Ein Modul, dessen Name einen Großbuchstaben oder ein anderes Zeichen enthält, wird nicht geladen; das Log nennt den Namen, der stattdessen zu schreiben ist (Network1 → network1).

neuralNetworkConfig

Der Dateipfad zu den Parametern des Modells des neuronalen Netzes. Diese Parameter werden vom LumiScan Training Framework erzeugt.

externalImagePath

Pfad zur Data-Layer-Adresse, die das Bild enthält. Die angegebene Bildadresse muss data, height, width, pixel-type enthalten.

Ist er nicht angegeben, legt das Netzmodul einen zusätzlichen Pfad unter hdvisionsystems/lumiscan-ai-object-matching/<network name>/input an, über den Anwender Rohbilder ohne eine weitere Anwendung in den Data Layer hochladen können.

stream

Experimentell (ab v2.2.0). Optional. Inferenz auf einem Bild-Stream aus einer Quelle: die Einstellungen unten. Ohne diesen Abschnitt, oder ohne enable darin, ist das Modul nicht im Stream-Modus. control/subscribe/execute und control/unsubscribe/execute speichern enable, address, tag, queueSize und keepLatestOutput hier, bevor sie sie anwenden; der Rest der Datei bleibt, wie er war, Kommentare eingeschlossen. Der Abschnitt hat in jeder LumiScan-Anwendung, die einen Stream abonniert, dieselben Schlüssel. Siehe Inferenz auf einem Bild-Stream.

stream.enable

true: Das Modul startet im Stream-Modus und inferiert die Bilder seiner Quelle von seinem Start an. Standardmäßig false. Benötigt stream.address: Ein Modul mit enable auf true und ohne Adresse wird nicht geladen.

stream.address

Der Bild-Stream, der inferiert wird: sein Ordner, zum Beispiel hdvisionsystems/lumiscan-cam-driver/camera1/control/publish/output/stream. Das Modul abonniert den frame-Knoten des Ordners, dessen Bilder ihre Größe, ihr Pixelformat und ihre Lineage tragen; die Lineage jedes Ergebnisses benennt die Kamera.

stream.tag

Das Tag auf den Ergebnissen des Moduls: Der Schritt des Moduls in der Lineage jedes Stream-Ergebnisses trägt es, sodass jeder, der ein Ergebnis weiter unten in der Kette liest, sieht, welches Modul es erzeugt hat. Optional. Weggelassen oder leer: die Modul-ID, das letzte Segment der Adresse des Moduls - example für hdvisionsystems/lumiscan-ai-object-matching/example.

stream.queueSize

Wie viele Bilder auf die Inferenz warten dürfen: 1 bis 64, standardmäßig 1. 1 inferiert das neueste Bild; ein höherer Wert behält mehr Bilder, wenn das Netz zurückfällt. Siehe Die Warteschlangengröße.

stream.keepLatestOutput

true: Jedes Stream-Ergebnis geht zusätzlich in die normale Ausgabe (output/result, der Zeitstempel und output/package-identifier). Standardmäßig false. Siehe Neuestes Ergebnis behalten.

stream.onEntry

Die Schritte, die auf jedes eintreffende Bild vor der Inferenz angewendet werden, jeder ein Objekt mit einem kind. AI Object Matching hat noch keine: Lassen Sie den Eintrag weg oder leer ([]). Ein Schritt verhindert das Laden des Moduls, weil es ohne den Schritt inferieren würde, den seine Datei verlangt; das Log benennt ihn.

stream.onExit

Reserviert für Schritte, die auf jedes Ergebnis angewendet werden. Wird noch nicht gelesen: Die Anwendung protokolliert eine Warnung, und die Schritte werden nicht angewendet.

Nach einer Änderung der Parameter sollte die Anwendung LumiScan AI Object Matching neu gestartet werden. Für den Abschnitt stream genügt ein Reset.

Die Stream-Layouts früherer Test-Builds werden nicht mehr gelesen: subscriptions und streamQueueSize auf oberster Ebene sowie stream.subscriptions (eine Map mehrerer Quellen). Ein Modul hat jetzt eine Quelle: Verschieben Sie ihre Adresse nach stream.address und streamQueueSize nach stream.queueSize. Die Anwendung protokolliert eine Warnung, solange eine Moduldatei noch einen dieser Einträge enthält.

Automatisches Kopieren eines externen Bildes

Um ein externes Bild automatisch aus einer anderen Anwendung zu kopieren, muss diese Anwendung eine Adresse mit den folgenden Parametern bereitstellen:

Tabelle 2. Parameter des externen Bildes
Adresse Typ

<address>/data

Array von uint8_t

<address>/height

uint32_t

<address>/width

uint32_t

<address>/pixel-type

string, mögliche Werte: Mono8, RGB8

<address> ist das Bildfeld, das in der Modulkonfigurationsdatei unter externalImagePath angegeben ist.

Diese Schnittstelle ist für die Verwendung mit dem LumiScan Cam Driver entworfen und getestet. Die Kompatibilität mit Bilddaten anderer Anwendungen kann nicht garantiert werden.

Vollständige Referenz

Alle Einstellungen dieser Datei, wie sie ihr JSON-Schema lumiscan-ai-object-matching-module.schema.json festlegt, erzeugt für Version 2.1.0 (Beschreibungen aus dem Schema, auf Englisch):

Einstellung Typ Standard Zulässige Werte Beschreibung

meta

object

Pflichtangabe.

meta/inputFileType

string

nicht leer

Pflichtangabe.

meta/inputFileVersion

string

nicht leer

Pflichtangabe.

meta/targetMachine

string

nicht leer

Pflichtangabe.

meta/programName

string

nicht leer

Pflichtangabe.

meta/programVersion

string

nicht leer

Pflichtangabe.

name

string

Muster ^[a-zA-Z0-9_-]+$

Pflichtangabe. only [a-Z], [0-9], '-' and '_' are allowed. Unique ID of the camera configuration. This is used to identify different camera on datalayer.

neuralNetworkConfig

string

nicht leer

Pflichtangabe. Path to network description file.

externalImagePath

string

nicht leer

If specified, the image will be loaded from the specified path instead of the ai-object-matching app managed input image.

cropImage

object

If specified, input image will be cropped and then used for inference. Note that the detected pixel position is related to original image. Use it if you want to accelerate the inference by reducing the image size.

cropImage/startX

number

≥ 0

Pflichtangabe.

cropImage/startY

number

≥ 0

Pflichtangabe.

cropImage/width

number

Pflichtangabe.

cropImage/height

number

Pflichtangabe.

simulateResult

string

nicht leer

If specified, the result will be simulated. This is useful for testing the application without the actual neural network.

classIndexRemapping

object

If specified, the detected object's index will be remapped to other index. Ke

classIndexRemapping/<Name>

integer

JSON-Schemas

Die Anwendung legt die JSON-Schemas ihrer Einstellungsdateien in ihrem Ordner schemas ab; diese Kopien passen immer zur installierten Version. Die Schemas von LumiScan AI Object Matching 2.1.0 stehen außerdem zum Download bereit: JSON-Schemas von LumiScan AI Object Matching 2.1.0.

Damit ein Editor wie Visual Studio Code eine Kopie einer Einstellungsdatei prüft, die Sie auf Ihrem PC bearbeiten, lassen Sie deren Eintrag $schema auf das veröffentlichte Schema zeigen:

{
  "$schema": "https://docs.hdvisionsystems.com/schemas/lumiscan-ai-object-matching/2.1.0/lumiscan-ai-object-matching-module.schema.json",
  ...
}

Lassen Sie den Eintrag $schema der Dateien auf dem Gerät so, wie die Anwendung ihn geschrieben hat.