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_node
emodel_node
fare riferimento al codice di esempio e ai pacchetti modello inclusi nell'applicazione di esempio.camera_node
utilizza 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_in
evideo_out
sono 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 ilinputs
eoutputs
attributi 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 interfaccia–
rtsp_v1_interface
-
Uscita HDMI— Indica che l'applicazione emette video.
Package name (Nome pacchetto)–
panorama::hdmi_data_sink
Nome interfaccia–
hdmi0
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_source
pacchetto 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" }
] } }