Azure でのイメージの分類

Azure Blob Storage
Azure Computer Vision
Azure Cosmos DB
Azure Event Grid
Azure Functions

Computer Vision API、Azure 関数 などの Azure サービスを使用すると、企業はサーバーを個別に管理する必要がなくなり、コストを削減できるほか、既に Microsoft で開発済みの、Azure AI サービス でのイメージ処理に関する専門知識を利用できます。 この例では、特にイメージ処理ユース ケースを扱っています。 別の AI ニーズがある場合は、一連の Azure AI サービス について検討してください。

Architecture

イメージ分類のアーキテクチャ

このアーキテクチャの Visio ファイル をダウンロードします。

ワークフロー

このシナリオでは、Web またはモバイル アプリケーションのバックエンド コンポーネントに対応できます。 シナリオのデータ フローは次のとおりです。

  1. BLOB ストレージに新しいファイル (画像のアップロード) を追加すると、Azure Event Gridでイベントがトリガーされます。 アップロード プロセスは、Web またはモバイル アプリケーションを介して調整できます。 または、画像を Azure BLOB ストレージに個別にアップロードすることもできます。
  2. Event Grid により、Azure 関数 をトリガーする通知が送信されます。
  3. Azure Functions は Azure Computer Vision API を呼び出して、新しくアップロードされた画像を分析します。 Computer Vision は、Azure Functions によって解析された BLOB URL を介して画像にアクセスします。
  4. Azure Functions は、Azure Cosmos DB で Computer Vision API の応答を保持します。 この応答には、イメージ メタデータと共に分析の結果も含まれます。
  5. 結果を、Web またはモバイル フロントエンドで使用したり、そこに反映したりできます。 この方法では、アップロードされたイメージではなく、分類の結果が取得されることに注意してください。

コンポーネント

  • Computer Vision API は、Azure AI サービス スイートに含まれ、各イメージに関する情報の取得に使用されます。
  • Azure Functions には、Web アプリケーション向けのバックエンド API が用意されています。 また、アップロードされたイメージのイベント処理もこのプラットフォームで行います。
  • Azure Event Grid は、新しいイメージが Blob Storage にアップロードされたときに、イベントをトリガーします。 その後、イメージは Azure 関数で処理されます。
  • Azure Blob Storage には、Web アプリケーションにアップロードされたすべてのイメージ ファイルと、Web アプリケーションによって使用される任意の静的ファイルが格納されます。
  • Azure Cosmos DB には、Computer Vision API からの処理結果を含め、アップロードされた各イメージに関するメタデータが格納されます。

代替

  • Custom Vision Service。 Computer Vision API は、一連の 分類ベースのカテゴリを返します。 Computer Vision API によって返されていない情報を処理する必要がある場合は、Custom Vision Service を検討してください。これにより、カスタム イメージ分類子を構築できます。
  • Cognitive Search (以前の Azure Search)。 特定の条件を満たすイメージを検索するために、ご自身のユース ケースでメタデータにクエリを実行する必要がある場合は、Cognitive Search を検討してください。 現在、プレビュー中の Cognitive Search では、このワークフローがシームレスに統合されます。
  • Logic Apps。 Blob に追加されたファイルにリアルタイムに応答する必要がない場合は、Logic Apps の使用を検討できます。 ファイルが追加されたかどうかを確認できるロジック アプリは、 繰り返しトリガーまたはスライディング ウィンドウ トリガーによって開始される可能性があります。

シナリオの詳細

このシナリオは、イメージを処理する必要があるビジネスに関連があります。

応用の可能性としては、ファッション Web サイトのイメージの分類、保険金請求のテキストおよびイメージの分析、ゲームのスクリーンショットからの利用統計情報の把握などが挙げられます。 従来、企業では、機械学習モデルで専門知識を開発したうえで、そのモデルをトレーニングし、最終的にカスタム プロセスによってイメージを実行し、イメージからデータを取得していました。

考えられるユース ケース

このソリューションは、小売、ゲーム、金融、保険業界に最適です。 その他の関連するユース ケース:

  • ファッション Web サイトの画像の分類。 画像分類は、販売用にプラットフォーム上の製品の画像をアップロードする際に販売者が使用することができます。 その後、結果の関連する手動でのタグ付けを自動化できます。 顧客は、製品の視覚的な印象を検索することもできます。

  • ゲームのスクリーンショットの利用統計情報の分類。 スクリーンショットからのビデオ ゲームの分類は、コンピューター ビジョンと組み合わされて、ソーシャル メディアで意義のある問題に発展しています。 たとえば、Twitch ストリーミング配信者が連続して異なるゲームを再生する場合、ストリーム情報の手動更新を省くことがあります。 ストリーム情報を更新しないと、ユーザー検索でストリームが誤って分類され、コンテンツ作成者とストリーミング プラットフォームの両方で潜在的な視聴が失われる可能性があります。 新しいゲームを導入する際、カスタム モデル ルートが、それらのゲームから新しいイメージを検出する機能を導入するのに役立つ場合があります。

  • 保険金請求のイメージの分類。 画像分類は、要求処理や引受の時間とコストを削減するのに役立ちます。 これは、自然災害の被害や車両の損傷を分析し、住宅や商業の資産を識別するのに役立ちます。

考慮事項

以降の考慮事項には、ワークロードの品質向上に使用できる一連の基本原則である Azure "Well-Architected Framework" の要素が組み込まれています。 詳細については、「Microsoft Azure Well-Architected Framework」を参照してください。

このソリューションを実装する場合、次の点を考慮してください。

スケーラビリティ

このシナリオの例で使用されるコンポーネントの大半が、自動スケーリングされるマネージド サービスです。 注目すべき例外がいくつかあります。Azure Functions のインスタンス数は最大 200 個に制限されています。 この限界を超えてスケーリングする場合は、複数のリージョンまたはアプリ プランを検討してください。

Azure Cosmos DB をプロビジョニングして Azure Cosmos DB for NoSQL でのみ 自動スケーリング できます。 他の API の使用を計画している場合は、 要求ユニットでご自身の要件の推定に関するガイダンスをご覧ください。 Azure Cosmos DB でスケーリングのメリットを十分に活用するには、Azure Cosmos DB での パーティション キー のしくみを理解してください。

NoSQL データベースでは、可用性、スケーラビリティ、および分断性と引き換えに、一貫性 (CAP 定理という意味で) が犠牲になることがよくあります。 ただし、このシナリオの例では、キーと値のデータ モデルが使用され、ほとんどの操作が本質的にアトミックであるため、トランザクションの一貫性が必要になることはほとんどありません。 追加のガイダンスについては、Azure アーキテクチャ センターの「適切なデータ ストアの選択」を参照してください。 実装で高い一貫性が必要な場合は、Azure Cosmos DB で 整合性レベルを選択する ことができます。

スケーラブルなソリューションの設計に関する一般的なガイダンスについては、Azure アーキテクチャ センターの「パフォーマンス効率のチェックリスト」を参照してください。

セキュリティ

セキュリティは、重要なデータやシステムの意図的な攻撃や悪用に対する保証を提供します。 詳細については、「セキュリティの重要な要素の概要」を参照してください。

Azure リソース用のマネージド ID は、自分のアカウントの内部にある他のリソースへのアクセスを提供するために使用された後、Azure 関数 に割り当てられます。 これらの ID の必要なリソースへのアクセスのみを許可して、余分なものがお使いの関数 (およびご自身の顧客) に公開されないようにします。

セキュリティで保護されたソリューションの設計に関する一般的なガイダンスについては、「Azure のセキュリティのドキュメント」を参照してください。

回復性

このシナリオのすべてのコンポーネントが管理されているため、すべてについて、リージョン レベルの回復性が自動的に確保されます。

回復性に優れたソリューションの設計に関する一般的なガイダンスについては、 回復性に優れた Azure 用アプリケーションの設計に関するページを参照してください。

コスト最適化

コストの最適化とは、不要な費用を削減し、運用効率を向上させる方法を検討することです。 詳しくは、 コスト最適化の柱の概要に関する記事をご覧ください。

このシナリオの実行コストを調べることができるように、すべてのサービスがコスト計算ツールで事前構成されています。 特定のユース ケースについて価格の変化を確認するには、予想されるトラフィックに合わせて該当する変数を変更します。

トラフィックの量に基づいて、次の 3 つのサンプル コスト プロファイルが用意されています (すべてのイメージのサイズが 100 KB であると想定しています)。

  • Small: この価格例は、1 か月あたり < 5,000 件のイメージの処理に対応します。
  • Medium: この価格例は、1 か月あたり 500,000 件のイメージの処理に対応します。
  • Large: この価格例は、1 か月あたり 50,000,000 件のイメージの処理に対応します。

共同作成者

この記事は、Microsoft によって保守されています。 当初の寄稿者は以下のとおりです。

プリンシパルの作成者:

  • David Stanford | プリンシパル プログラム マネージャー
  • Ashish Chauhan | シニア ソリューション アーキテクト

次のステップ

製品ドキュメント

ガイド付きラーニング パスについては、以下を参照してください。

このシナリオの例を運用環境にデプロイする前に、 Azure Functions のパフォーマンスと信頼性を最適化するための推奨プラクティスをご確認ください。

Azure Cognitive Search での画像と自然言語処理を使用した AI エンリッチメント