アプリケーションノード - AWS Panorama

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

アプリケーションノード

ノードはモデル、コード、カメラストリーム、出力、パラメーターです。ノードには入力と出力を定義するインターフェースがあります。インターフェイスは、アカウントのパッケージ、AWS Panorama が提供するパッケージ、または組み込みタイプで定義できます。

次の例では、code_nodemodel_node Bはサンプルアプリケーションに含まれるサンプルコードとモデルパッケージを参照しています。 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" },

アプリケーションコードでは、inputs および outputs の属性を使用して入力ストリームから画像を取得し、画像を出力ストリームに送信します。

例 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 には、2 つのタイプの抽象ノードがあります。

  • カメラストリーム — デプロイ時にアプリケーションが使用するカメラストリームを選択します。

    パッケージ名 - 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" } ] } }