애플리케이션 노드 - AWS Panorama

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

애플리케이션 노드

노드는 모델, 코드, 카메라 스트림, 출력, 파라미터입니다. 노드에는 입력과 출력을 정의하는 인터페이스가 있습니다. 인터페이스는 계정의 패키지, AWS Panorama에서 제공하는 패키지 또는 내장형으로 정의할 수 있습니다.

다음 예시에서 code_nodemodel_node는 샘플 애플리케이션에 포함된 샘플 코드와 모델 패키지를 참조합니다. camera_node는 AWS Panorama 서 제공하는 패키지를 사용하여 배포 중에 지정하는 카메라 스트림의 자리 표시자를 생성합니다.

예 graph.json — 노드
"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." } } ]

엣지

엣지는 한 노드의 출력을 다른 노드의 입력에 매핑합니다. 다음 예제에서 첫 번째 엣지는 카메라 스트림 노드의 출력을 애플리케이션 코드 노드의 입력에 매핑합니다. 이름 video_invideo_out는 노드 패키지의 인터페이스에 정의되어 있습니다.

예 graph.json – 엣지
"edges": [ { "producer": "camera_node.video_out", "consumer": "code_node.video_in" }, { "producer": "code_node.video_out", "consumer": "output_node.video_in" },

애플리케이션 코드에서는 inputsoutputs 속성을 사용하여 입력 스트림에서 이미지를 가져오고 출력 스트림으로 이미지를 보냅니다.

예 application.py – 비디오 입력 및 출력
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)

추상 노드

애플리케이션 매니페스트에서 추상 노드는 AWS Panorama에서 정의한 패키지를 의미하며, 애플리케이션 매니페스트에서 자리 표시자로 사용할 수 있습니다. AWS Panorama는 두 가지 유형의 추상 노드를 제공합니다.

  • 카메라 스트림 – 애플리케이션이 배포 중에 사용하는 카메라 스트림을 선택합니다.

    패키지 이름panorama::abstract_rtsp_media_source

    인터페이스 이름rtsp_v1_interface

  • HDMI 출력 - 애플리케이션이 비디오를 출력함을 나타냅니다.

    패키지 이름panorama::hdmi_data_sink

    인터페이스 이름hdmi0

다음 예시는 카메라 스트림을 처리하고 디스플레이에 비디오를 출력하는 애플리케이션의 기본 패키지, 노드 및 엣지 세트를 보여줍니다. AWS Panorama에서 abstract_rtsp_media_source 패키지의 인터페이스를 사용하는 카메라 노드는 여러 카메라 스트림을 입력값으로 받을 수 있습니다. hdmi_data_sink를 참조하는 출력 노드는 어플라이언스의 HDMI 포트에서 출력되는 비디오 버퍼에 대한 애플리케이션 코드 액세스 권한을 부여합니다.

예 graph.json – 추상 노드
{ "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" } ] } }