Anwendungsknoten - AWS Panorama

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.

Anwendungsknoten

Knoten sind Modelle, Code, Kamerastreams, Ausgaben und Parameter. Ein Knoten hat eine Schnittstelle, die seine Ein- und Ausgänge definiert. Die Schnittstelle kann in einem Paket in Ihrem Konto, einem von AWS Panorama bereitgestellten Paket oder einem integrierten Typ definiert werden.

Im folgenden Beispiel wird auf den Beispielcode code_node und die Modellpakete model_node verwiesen, die in der Beispielanwendung enthalten sind. camera_nodeverwendet ein von AWS Panorama bereitgestelltes Paket, um einen Platzhalter für einen Kamerastream zu erstellen, den Sie während der Bereitstellung angeben.

Beispiel graph.json — Knoten
"nodes": [ { "name": "code_node", "interface": "123456789012::SAMPLE_CODE.interface" }, { "name": "model_node", "interface": "123456789012::SQUEEZENET_PYTORCH_V1.interface" }, { "name": "camera_node", "interface": "panorama::abstract_rtsp_media_source.rtsp_v1_interface", "overridable": true, "overrideMandatory": true, "decorator": { "title": "IP camera", "description": "Choose a camera stream." } } ]

Edges

Kanten ordnen die Ausgabe von einem Knoten der Eingabe eines anderen zu. Im folgenden Beispiel ordnet die erste Kante die Ausgabe eines Kamera-Stream-Knotens der Eingabe eines Anwendungscodeknotens zu. Die Namen video_in und video_out sind in den Schnittstellen der Knotenpakete definiert.

Beispiel graph.json — Kanten
"edges": [ { "producer": "camera_node.video_out", "consumer": "code_node.video_in" }, { "producer": "code_node.video_out", "consumer": "output_node.video_in" },

In Ihrem Anwendungscode verwenden Sie die outputs Attribute inputs und, um Bilder aus dem Eingabestream abzurufen und Bilder an den Ausgabestrom zu senden.

Beispiel application.py — Videoeingabe und -ausgabe
def process_streams(self): """Processes one frame of video from one or more video streams.""" frame_start = time.time() self.frame_num += 1 logger.debug(self.frame_num) # Loop through attached video streams streams = self.inputs.video_in.get() for stream in streams: self.process_media(stream) ... self.outputs.video_out.put(streams)

Abstrakte Knoten

In einem Anwendungsmanifest bezieht sich ein abstrakter Knoten auf ein von AWS Panorama definiertes Paket, das Sie als Platzhalter in Ihrem Anwendungsmanifest verwenden können. AWS Panorama bietet zwei Arten von abstrakten Knoten.

  • Kamerastream — Wählen Sie den Kamerastream aus, den die Anwendung während der Bereitstellung verwendet.

    Paketnamepanorama::abstract_rtsp_media_source

    Schnittstellennamertsp_v1_interface

  • HDMI-Ausgang — Zeigt an, dass die Anwendung Video ausgibt.

    Paketnamepanorama::hdmi_data_sink

    Schnittstellennamehdmi0

Das folgende Beispiel zeigt einen grundlegenden Satz von Paketen, Knoten und Kanten für eine Anwendung, die Kamerastreams verarbeitet und Video an ein Display ausgibt. Der Kameraknoten, der die Schnittstelle aus dem abstract_rtsp_media_source Paket in AWS Panorama verwendet, kann mehrere Kamerastreams als Eingabe akzeptieren. Der Ausgabeknoten, der referenzierthdmi_data_sink, gewährt dem Anwendungscode Zugriff auf einen Videopuffer, der über den HDMI-Anschluss der Appliance ausgegeben wird.

Beispiel graph.json — Abstrakte Knoten
{ "nodeGraph": { "envelopeVersion": "2021-01-01", "packages": [ { "name": "123456789012::SAMPLE_CODE", "version": "1.0" }, { "name": "123456789012::SQUEEZENET_PYTORCH_V1", "version": "1.0" }, { "name": "panorama::abstract_rtsp_media_source", "version": "1.0" }, { "name": "panorama::hdmi_data_sink", "version": "1.0" } ], "nodes": [ { "name": "camera_node", "interface": "panorama::abstract_rtsp_media_source.rtsp_v1_interface", "overridable": true, "decorator": { "title": "IP camera", "description": "Choose a camera stream." } }, { "name": "output_node", "interface": "panorama::hdmi_data_sink.hdmi0" } ], "edges": [ { "producer": "camera_node.video_out", "consumer": "code_node.video_in" }, { "producer": "code_node.video_out", "consumer": "output_node.video_in" } ] } }