この記事では、ライブ ストリーミング カメラでモバイル ロボットを使用して、さまざまなユース ケースを実装する方法について説明します。 このソリューションでは、Azure Stack Edge でローカルに実行されるシステムを実装して、物体検出を実行するビデオ ストリームと Azure AI サービスを取り込んで処理します。
Architecture
このアーキテクチャの Visio ファイルをダウンロードします。
ワークフロー
このワークフローでは、システムで受信データを処理する方法について説明します。
ロボットに取り付けたカメラは、リアルタイム ストリーミング プロトコル (RTSP) を使用してビデオをリアルタイムでストリーミングします。
Azure Stack Edge 上の Kubernetes クラスター内のコンテナーは、受信ストリームを読み取り、ビデオを個別の画像に分割します。 FFmpeg と呼ばれるオープンソース ソフトウェア ツールでは、ビデオ ストリームを取り込んで処理します。
画像は、ローカルの Azure Stack Edge ストレージ アカウントに格納されます。
新しいキー フレームがストレージ アカウントに保存されるたびに、AI Vision コンテナーによって取得されます。 複数のコンテナーへのロジックの分離に関する詳細については、「シナリオの詳細」を参照してください。
ストレージ コンテナーからキー フレームを読み込むと、AI Vision コンテナーからクラウド上の Azure AI サービスに送信されます。 このアーキテクチャでは、Azure AI Vision を使用します。これにより、画像分析による物体検出が可能になります。
画像分析の結果 (検出されたオブジェクトと信頼度評価) は、異常検出コンテナーに送信されます。
異常検出コンテナーは、画像分析と異常検出の結果を、将来参照できるように Azure Stack Edge のローカル Azure SQL データベース インスタンスに格納します。 データベースのローカル インスタンスを使用すると、アクセス時間が短縮され、データ アクセスの遅延を最小限に抑えることができます。
データ処理は、受信リアルタイム ビデオ ストリームの異常を検出するために実行されます。 異常が検出されると、フロントエンド UI にアラートが表示されます。
コンポーネント
Azure Stack Edge は、Azure のコンピューティング、ストレージ、インテリジェンスをエッジに提供する Azure マネージド デバイスです。 このアーキテクチャではこれを使用して、オンプレミスで Azure サービスをホストします。つまり異常検出が生じる場所に近いため、待機時間を短縮できます。
Azure Stack Edge 上の Azure Kubernetes Service (AKS。 Azure Kubernetes Service (AKS) は、コンテナ化されたアプリケーションをデプロイして管理するために使用できるマネージド Kubernetes サービスです。 このアーキテクチャでは、Azure Stack Edge デバイス上で実行される AKS のバージョンを使用して、システムのロジックを担当するコンテナーを管理します。
Azure Arc は、Azure サービスをエッジまで拡張するブリッジです。 このアーキテクチャで Azure Arc を利用することで、クラウド ポータルを通じてエッジ サービスを制御できるようになります。
Azure AI Vision は、コンピューター ビジョン機能を提供する統合サービスです。 このアーキテクチャでは、ビデオ ストリームのキー フレーム内のオブジェクトを検出するために画像分析機能が使用されます。
Azure Blob Storage は、Microsoft のクラウド用オブジェクト ストレージ ソリューションです。 このアーキテクチャでは、ビデオ ストリームから抽出されたキー フレームの画像を格納するために使用されます。
Azure SQL Edge は、組み込みの AI を備え、エッジに最適化された小規模の SQL エンジンです。 このアーキテクチャでは、画像分析メタデータを保存するために、特に SQL エンジンのエッジ バージョンを選択し、これを消費および処理するサービスの近くに配置しました。
Azure Container Registry は、Docker および Open Container Initiative (OCI) イメージのレジストリであり、すべての OCI 成果物をサポートします。 このアーキテクチャでは、レジストリには異常検出と AI ビジョン コンテナー用の Docker コンテナー イメージが格納されます。
Azure Key Vault は、セキュリティで保護されたキー管理をクラウドで提供するサービスです。 このアーキテクチャでは、マネージド ID を使用できない外部サービスとシステムのロジックが対話できるように、シークレットとキーを保存するために使用されます。
Azure Monitor は、クラウド環境とオンプレミス環境からの監視データを収集し、分析し、それに対応するための包括的な監視ソリューションです。 このアーキテクチャでは、このサービスはワークロードの主要な監視プラットフォームです。
シナリオの詳細
このアーキテクチャは、リアルタイム ビデオ ストリームを処理し、抽出されたリアルタイム データと参照データのセットを比較し、結果に基づいて決定を行うシステムを示しています。 たとえば、セキュリティで保護された場所の周囲をフェンスで境界設定したスケジュール済みの検査を提供するために使用できます。
このアーキテクチャでは、Azure Stack Edge を使用して、最も多くのリソースを消費するプロセスがビデオのソースに近いオンプレミスで実行されるようにします。 この設計により、システムの応答時間が大幅に向上します。これは、異常に対する即時応答が必要になる場合に重要です。
システムの部分は Kubernetes クラスターに独立したコンテナーとしてデプロイされるため、必要なサブシステムのみを要求に応じてスケーリングできます。 たとえば、ビデオ フィード用のカメラの数を増やすと、ビデオ インジェストと処理を担当するコンテナーをスケーリングして要求を処理できますが、クラスターの残りの部分は元のレベルを維持できます。
物体検出機能を Azure AI サービスにオフロードすると、このアーキテクチャをデプロイするために必要な専門知識は大幅に削減されます。 物体検出の要件が高度に特殊化されていない限り、画像分析サービスから得られる既成のアプローチで十分であり、機械学習に関する知識は必要ありません。
考えられるユース ケース
境界のセキュリティの監視
工場内の安全でない作業環境の検出
自動アセンブリ ラインでの異常の検出
航空機の除氷液不足の検出
考慮事項
これらの考慮事項は、ワークロードの品質向上に使用できる一連の基本原則である Azure Well-Architected Framework の要素を組み込んでいます。 詳細については、「Microsoft Azure Well-Architected Framework」を参照してください。
[信頼性]
信頼性により、顧客に確約したことをアプリケーションで確実に満たせるようにします。 詳細については、「信頼性の重要な要素の概要」を参照してください。
Azure Stack Edge を使用する最大の利点の 1 つは、オンプレミスのハードウェアでフル マネージド コンポーネントを取得することです。 すべてのフル マネージド Azure コンポーネントは、リージョン レベルで自動的な回復性があります。
さらに、Kubernetes クラスターでシステムを実行すると、サブシステムを正常に保つ責任を Kubernetes オーケストレーション システムにオフロードできます。
セキュリティ
セキュリティは、重要なデータやシステムの意図的な攻撃や悪用に対する保証を提供します。 詳細については、「セキュリティの重要な要素の概要」を参照してください。
Microsoft Entra マネージド ID は、このアーキテクチャのすべてのコンポーネントにセキュリティを提供します。 マネージド ID を使用すると、コード ファイルまたは構成ファイルにシークレットを格納する必要がなくなります。 これにより、アクセス制御、資格情報の管理、ロールの割り当てが簡素化されます。
コストの最適化
コストの最適化とは、不要な費用を削減し、運用効率を向上させることです。 詳しくは、コスト最適化の柱の概要に関する記事をご覧ください。
このシナリオの価格例を確認するには、Azure 料金計算ツールを使用します。 シナリオで最もコストの高いコンポーネントは、Azure Stack Edge と Azure Kubernetes Service です。 これらのサービスは、将来の要求の増加に対応するためにシステムをスケーリングするための容量を提供します。
物体検出に Azure AI サービスを使用するコストは、システムの実行時間によって異なります。 上記の価格例は、1 秒あたり 1 つの画像を生成し、1 日あたり 8 時間動作するシステムに基づいています。 このシナリオでは、1 つの FPS で十分です。 ただし、システムを長時間実行する必要がある場合は、Azure AI サービスを使用するコストが高くなります。
パフォーマンス効率
パフォーマンス効率とは、ユーザーによって行われた要求に合わせて効率的な方法でワークロードをスケーリングできることです。 詳細については、「パフォーマンス効率の柱の概要」を参照してください。
コードは Kubernetes クラスターにデプロイされるため、この高性能なオーケストレーション システムの利点を活用できます。 さまざまなサブシステムがコンテナーに分離されているため、アプリケーションの最も要求の厳しい部分のみをスケーリングできます。 基本的なレベルでは、1 つの受信ビデオ フィードを使用して、システムにクラスター内のノードを 1 つだけ含めることができます。 この設計により、初期構成が大幅に簡素化されます。 データ処理の要求が増えるにつれて、ノードを追加することでクラスターを簡単にスケーリングできます。
共同作成者
この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。
プリンシパル作成者:
- Sean Ma | プリンシパル ソフトウェア エンジニアリング リーダー
その他の共同作成者:
- Mick Alberts | テクニカル ライター
- Frédéric Le Coquil | プリンシパル ソフトウェア エンジニア
パブリックでない LinkedIn プロファイルを表示するには、LinkedIn にサインインします。
次の手順
製品ドキュメント:
ガイド付き学習のパス:
- Azure Arc を使用してハイブリッド環境に Azure イノベーションを実現する
- Azure Kubernetes Service の概要
- Azure Stack の概要
- Computer Vision サービスを使用して画像を分析する