翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
アプリケーションノード
ノードはモデル、コード、カメラストリーム、出力、パラメーターです。ノードには入力と出力を定義するインターフェースがあります。インターフェイスは、アカウントのパッケージ、AWS Panorama が提供するパッケージ、または組み込みタイプで定義できます。
次の例では、code_node
と model_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_in
と video_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" }
] } }