Anwendungs-Knoten - 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.

Anwendungs-Knoten

Knoten sind Modelle, Code, Kamerastreams, Ausgabe 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 Beispielcode_nodeundmodel_nodebeziehen Sie sich auf den Beispielcode und die Modellpakete, die in der Beispielanwendung enthalten sind.camera_nodeverwendet ein von AWS Panorama bereitgestelltes Paket, um einen Platzhalter für einen Kamera-Stream 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 der erste Edge die Ausgabe eines Kamera-Stream-Knotens der Eingabe eines Anwendungscode-Knotens zu. Die Namenvideo_inundvideo_outsind 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 können Sie deninputsundoutputs-Attribute, um Bilder aus dem Eingabestream zu erhalten und Bilder an den Ausgabestream zu senden.

Beispiel application.py — Videoeingang 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)

Abstract Nodes

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 abstraktem Knoten.

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

    Package namepanorama::abstract_rtsp_media_source

    Schnittstellennamertsp_v1_interface

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

    Package namepanorama::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 von derabstract_rtsp_media_sourcePaket in AWS Panorama, kann mehrere Kamerastreams als Eingabe akzeptieren. Der Ausgabeknoten, der referenzierthdmi_data_sink, gewährt Anwendungscode Zugriff auf einen Videopuffer, der vom 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" } ] } }