Nodi di applicazione - 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 di applicazione

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 incorporato.

Nell'esempio seguente,code_nodeemodel_nodefare riferimento al codice di esempio e ai pacchetti modello inclusi nell'applicazione di esempio.camera_nodeutilizza un pacchetto fornito da AWS Panorama per creare un segnaposto per un flusso 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 a quello di un altro. Nell'esempio seguente, il primo bordo mappa l'output da un nodo di flusso della telecamera all'input di un nodo di codice dell'applicazione. I nomivideo_inevideo_outsono definite 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 di un'applicazione, puoi utilizzare ilinputseoutputsattributi per ottenere le immagini dal flusso di input e inviare le immagini 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 fa riferimento a un pacchetto definito da AWS Panorama, che è possibile utilizzare come segnaposto nel manifesto dell'applicazione. AWS Panorama fornisce due tipi di nodo astratto.

  • Flusso di telecamere— Scegliere il flusso di telecamere utilizzato dall'applicazione durante la distribuzione.

    Package name (Nome pacchetto)panorama::abstract_rtsp_media_source

    Nome interfacciartsp_v1_interface

  • Uscita HDMI— Indica che l'applicazione emette video.

    Package name (Nome pacchetto)panorama::hdmi_data_sink

    Nome interfacciahdmi0

Nell'esempio seguente viene illustrato un set di base di pacchetti, nodi e bordi per un'applicazione che elabora flussi di telecamere e trasmette video su un display. Il nodo della fotocamera, che utilizza l'interfaccia delabstract_rtsp_media_sourcepacchetto in AWS Panorama, può accettare più flussi di telecamere come input. Il nodo di output, a cui fa riferimentohdmi_data_sink, consente di accedere al codice dell'applicazione a un buffer video che viene 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" } ] } }