Nodi applicativi - AWS Panorama

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Nodi applicativi

I nodi sono modelli, codice, flussi di telecamere, output e parametri. Un nodo ha un'interfaccia che ne definisce gli ingressi e le uscite. L'interfaccia può essere definita in un pacchetto nel tuo account, in un pacchetto fornito da AWS Panorama o in un tipo integrato.

Nel seguente esempio, code_node model_node fai riferimento al codice di esempio e ai pacchetti di modelli inclusi nell'applicazione di esempio. camera_nodeutilizza un pacchetto fornito da AWS Panorama per creare un segnaposto per uno stream di telecamere specificato durante la distribuzione.

Esempio graph.json — Nodi
"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

I bordi mappano l'output da un nodo all'ingresso di un altro. Nell'esempio seguente, il primo bordo mappa l'output da un nodo di flusso della telecamera all'ingresso di un nodo di codice dell'applicazione. I nomi video_in e video_out sono definiti nelle interfacce dei pacchetti di nodi.

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

Nel codice dell'applicazione, si utilizzano gli outputs attributi inputs and per ottenere immagini dal flusso di input e inviarle al flusso di output.

Esempio application.py — Ingresso e uscita video
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)

Nodi astratti

In un manifesto dell'applicazione, un nodo astratto si riferisce a un pacchetto definito da AWS Panorama, che puoi usare come segnaposto nel manifesto dell'applicazione. AWS Panorama offre due tipi di nodi astratti.

  • Flusso della telecamera: scegli lo stream della videocamera utilizzato dall'applicazione durante la distribuzione.

    Nome del pacchettopanorama::abstract_rtsp_media_source

    Nome dell'interfacciartsp_v1_interface

  • Uscita HDMI: indica che l'applicazione emette video.

    Nome del pacchettopanorama::hdmi_data_sink

    Nome dell'interfacciahdmi0

L'esempio seguente mostra un set di base di pacchetti, nodi e edge per un'applicazione che elabora i flussi delle telecamere e trasmette i video su uno schermo. Il nodo telecamera, che utilizza l'interfaccia del abstract_rtsp_media_source pacchetto in AWS Panorama, può accettare più flussi di telecamere come input. Il nodo di uscita, che fa riferimentohdmi_data_sink, consente al codice dell'applicazione di accedere a un buffer video emesso dalla porta HDMI dell'appliance.

Esempio graph.json — Nodi astratti
{ "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" } ] } }