Nodos de aplicación - AWS Panorama

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Nodos de aplicación

Los nodos son modelos, códigos, secuencias de cámara, salidas y parámetros. Un nodo tiene una interfaz que define sus entradas y salidas. La interfaz se puede definir en un paquete de su cuenta, en un paquete proporcionado por AWS Panorama o en un tipo integrado.

En el siguiente ejemplo, code_node y model_node se refieren al código de muestra y los paquetes de modelos incluidos con la aplicación de muestra. camera_node utiliza un paquete proporcionado por AWS Panorama para crear un marcador de posición para una transmisión de cámara que usted especifique durante la implementación.

ejemplo graph.json — Nodos
"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." } } ]

Periferias

Las periferias mapean la salida de un nodo a la entrada de otro. En el siguiente ejemplo, la primera periferia mapea la salida de un nodo de transmisión de cámara a la entrada de un nodo de código de aplicación. Los nombres video_in y video_out se definen en las interfaces de los paquetes de nodos.

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

En el código de tu aplicación, utilizas los atributos inputs y outputs para obtener imágenes del flujo de entrada y enviarlas al flujo de salida.

ejemplo application.py — Entrada y salida de vídeo
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)

Nodos abstractos

En un manifiesto de aplicación, un nodo abstracto hace referencia a un paquete definido por AWS Panorama, que puede utilizar como marcador de posición en el manifiesto de la aplicación. AWS Panorama ofrece dos tipos de nodos abstractos.

  • Transmisión de cámara: elija la transmisión de cámara que utilizará la aplicación durante la implementación.

    Nombre del paquete: panorama::abstract_rtsp_media_source

    Nombre de la interfaz: rtsp_v1_interface

  • Salida HDMI: indica que la aplicación emite vídeo.

    Nombre del paquete: panorama::hdmi_data_sink

    Nombre de la interfaz: hdmi0

El siguiente ejemplo muestra un conjunto básico de paquetes, nodos y periferias para una aplicación que procesa los flujos de cámara y envía vídeo a una pantalla. El nodo de cámara, que utiliza la interfaz del paquete de abstract_rtsp_media_source de AWS Panorama, puede aceptar varias secuencias de cámara como entrada. El nodo de salida, al que hace referencia hdmi_data_sink, permite que el código de la aplicación acceda a un búfer de vídeo que se emite desde el puerto HDMI del dispositivo.

ejemplo graph.json — Nodos abstractos
{ "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" } ] } }