Azure でのイメージの分類

azure-ai-foundry-sdk
Azure Blob Storage
Azure Cosmos DB
Azure Event Grid
Azure Functions

ソリューションアイデア

この記事ではソリューションのアイデアについて説明します。 クラウド アーキテクトはこのガイダンスを使用すると、このアーキテクチャの一般的な実装の主要コンポーネントを視覚化しやすくなります。 ワークロードの特定の要件に適合する、適切に設計されたソリューションを設計するための出発点として、この記事を使用してください。

Azure AI Content Understanding や Azure Functions などのAzure サービスを使用すると、サーバーを管理したり、独自のモデルをトレーニングしたりすることなく、Web またはモバイル アプリケーションに画像分類とメタデータ抽出を追加できます。 このソリューションのアイデアは、画像の分類とタグ付けを対象とします。 その他の AI ニーズがある場合は、より広範な Foundry Tools および Microsoft Foundry カタログを参照してください。

アーキテクチャ

画像分類タスクに使用されるアーキテクチャの図。

このソリューションアイデアのVisioファイルをダウンロードしてください。

データ フロー

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

  1. Blob Storageに新しく追加されたファイル(画像アップロード)がAzure Event Gridでイベントをトリガーします。 アップロードは Web またはモバイル アプリケーションによって調整されるか、画像がBlob Storageに直接アップロードされます。
  2. Event Grid は、Azure関数をトリガーする通知を送信します。
  3. この関数は Content Understanding を呼び出して、定義されたアナライザー スキーマに対して新しくアップロードされたイメージを分析します。 Content Understanding は、時間制限付きの SAS URL または同等の一時アクセス トークンを使用して、イメージにアクセスします。このトークンは、関数がリクエストに含め、ターゲットの BLOB に対してのみ、最小権限での読み取りアクセスを許可します。
  4. この関数は、Content Understanding が返す構造化された出力と画像メタデータを、NoSQLのAzure Cosmos DBに保持します。
  5. Web またはモバイル フロントエンドが結果を使用します。 このデータフローは、分類の出力とメタデータを返します。元のイメージ バイトは返されません。

コンポーネント

  • Content Understanding は、生成 AI を使用してドキュメント、画像、ビデオ、オーディオからユーザー定義の構造化された出力を抽出するMicrosoft Foundry 機能です。 このアーキテクチャでは、アップロードされた各画像が、返されるカテゴリ、属性、ラベル (製品の種類、色、欠陥クラスなど) を定義する アナライザー スキーマ に対して分析されます。 出力は、アプリケーションのデータ モデルに直接マップされる JSON です。

  • Azure Functions は、サーバーレス コンピューティング プラットフォームです。 このアーキテクチャでは、Azure Functionsは、アップロードされたイメージのバックエンド API とイベント処理レイヤーを提供します。 この関数はワークフローを調整します。 Content Understanding を呼び出し、応答を処理し、結果をデータベースに書き込みます。 このアーキテクチャでは 、Flex Consumption プラン を使用して、仮想ネットワーク統合、インスタンス メモリの選択、高速スケーリングをサポートします。

  • Azure Event Grid は、パブリッシュ/サブスクライブ モデルを使用するマネージド イベント ルーティング サービスです。 このアーキテクチャでは、ストレージ アカウントの Event Grid システム トピックは、新しいイメージがアップロードされたときに Microsoft.Storage.BlobCreated イベントを生成し、関数に配信します。

  • Azure Blob Storage は、非構造化データのオブジェクト ストアです。 このアーキテクチャでは、アップロードされたすべてのイメージと、Web アプリケーションが提供する静的アセットが格納されます。 Blob Storageは、受信イメージの真実のソースです。

  • Azure Cosmos DB for NoSQLは管理されたNoSQLデータベースです。 このアーキテクチャでは、Content Understanding が返す構造化された出力を含め、各イメージのメタデータを格納します。

代替案

  • Azure Machine Learning AutoML for Images は、従来の機械学習手法を使用して、ラベル付けされたデータからカスタムの画像分類と物体検出モデルをトレーニングします。 ラベル付けされたデータセットがあり、生成手法が適合しない狭いドメイン (製造欠陥検出や医療画像など) に対して確定的でデプロイ可能なモデルが必要な場合は、AutoML を選択します。 AutoML は、従来の ML モデルを維持する場合に Custom Vision から移行Microsoftお客様に推奨されるパスです。

  • Microsoft Foundry Vision 対応モデルでは、マルチモーダル モデル (GPT-4.1、GPT-4o、Phi-4 マルチモーダル) を直接呼び出したり、微調整したりできます。 プロンプトとモデルをきめ細かく制御する必要がある場合、独自のデータを微調整する場合、または構造化された抽出ではなく、視覚的な質問への回答と画像によるチャットが必要な場合は、このパスを選択します。

  • Azure AI 検索 はメタデータにインデックスを付け、ユーザーがタグ、キャプション、またはその他の属性で画像を照会およびフィルター処理できるようにします。 AI エンリッチメント スキルセットは、ビジョンと生成的な AI サービスを呼び出し、別の関数なしで結果を検索インデックスに直接書き込むことができます。

  • Azure Logic Appsは、アップロードに対するリアルタイムの反応が必要ない場合に適しています。 繰り返しトリガーまたはスライディング ウィンドウ トリガーで実行されるワークフローは、新しい BLOB をポーリングし、Content Understanding をバッチで呼び出すことができます。

  • Azure ドキュメント インテリジェンスは、layout モデルを使用してドキュメントに埋め込まれた画像を抽出するため、埋め込まれた図に対してダウンストリーム分類を実行できます。 入力ファイルに複数のドキュメントの種類が含まれており、さらに処理する前にそれぞれを識別する必要がある場合は、 カスタム分類モデル を使用します。

シナリオの詳細

このシナリオは、大規模に画像を処理し、タグ、キャプション、カテゴリ ラベルなどの構造化されたメタデータをトレーニングしたり独自のモデルを操作したりせずに各イメージに添付する必要がある企業に適用されます。

一般的なアプリケーションには、ファッション サイトでの画像の分類、保険金請求の写真の分析、ゲームのスクリーンショットからのコンテキストの抽出などがあります。 この社内での構築には、従来、コンピューター ビジョン、トレーニング データ、モデル ライフサイクル管理に関する専門知識が必要です。 この記事に記載されたアーキテクチャは、マネージド Azure サービスを使用してその作業を置き換えます。

考えられるユース ケース

このソリューションは、小売、eコマース、ゲーム、金融、保険に適用されます。 一般的なユース ケースは次のとおりです。

  • 小売またはファッション サイトでの画像のタグ付け。 販売者は製品の写真をアップロードします。 Content Understanding は、アナライザー スキーマで定義したタグ、キャプション、および属性を返します。 プラットフォームでは、それらを使用して、フィールドの一覧の自動入力、視覚的な検索の推進、手動タグ付けの作業の削減を行います。

  • eコマース カタログ内の製品の分類。 Content Understanding アナライザーは、カテゴリとサブカテゴリのメタデータ (たとえば、フットウェアをランニング シューズに割り当てます) と、色や素材などの視覚的属性を割り当てます。 購入者はより正確な検索とフィルター処理を行い、販売者はカテゴリの修正に費やす時間を減らします。

  • ゲームのスクリーンショットからのテレメトリの分類。 ストリーミング プラットフォームでは、クリエイターがゲームの切り替え後にタイトルの更新を忘れた場合に、ストリームが誤って分類されます。 定期的なスクリーンショットを分類する関数は、変更を検出し、ストリーム メタデータを更新できます。 生成分類のパフォーマンスが低い狭いドメインの場合は、画像の AutoML を使用して決定論的分類子をトレーニングします。

  • 保険金請求の写真をルーティングします。 Content Understanding は、車両の損傷、自然災害の被害、またはプロパティの種類をクレーム写真から識別します。 メタデータは、要求を正しいアジャスター キューにルーティングし、トリアージ時間を短縮します。

考慮事項

これらの考慮事項は、Azure Well-Architected Framework の柱を実装します。これは、ワークロードの品質を向上させるために使用できる一連の基本原則です。

セキュリティ

セキュリティは、意図的な攻撃や貴重なデータとシステムの誤用に対する保証を提供します。 詳細については、セキュリティ設計レビューのチェックリストを参照してください。

  • 関数アプリ管理 ID を使用して、Content Understanding をホストするBlob Storage、Azure Cosmos DB、および Microsoft Foundry リソースに対して認証を行います。 接続文字列や API キーはアプリ設定に格納しないでください。
  • Foundry リソースと Cosmos DB を プライベート エンドポイント に制限し、仮想ネットワーク内でワークロードを実行するときにパブリック ネットワーク アクセスを無効にします。 Flex 従量課金プランでは、仮想ネットワーク統合がサポートされています。
  • ビジョン サービスを呼び出す前に、アップロードされた画像を検証します。 アップロード境界でコンテンツ タイプとサイズの制限を適用し、マルウェアをスキャンして、パブリック ユーザーが直接読み取ることができないコンテナーにアップロードを格納します。
  • このアーキテクチャは、クラウド ソリューションによる処理に適していると判断したイメージにのみ適しており、ローカル/オフラインの画像処理はサポートされていません。

コストの最適化

コストの最適化では、不要な経費を削減し、運用効率を向上させる方法に重点を置いています。 詳細については、「コスト最適化の設計レビュー チェックリスト」を参照してください。

  • Content Understanding のアナライザー スキーマを、アプリケーションが実際に使用するフィールドに制限します。 追加フィールドごとに、トークンの使用量と呼び出しごとのコストが増加します。 Microsoft Foundry の料金を確認してください。
  • Azure Functionsの場合は、スパイクのあるイベント駆動型のワークロードに対して、Flex 従量課金プランを使用します。 アクティブなインスタンスでは、0 にスケーリングされ、1 秒あたりの課金が行われます。
  • Azure Cosmos DBの場合は、トラフィックが不均等な場合は、serverless または autoscale throughput を評価します。 サーバーレスは、トラフィックが少なく、開発/テストのワークロードに適しています。自動スケーリングは、負荷が変動する運用環境に適しています。

オペレーショナル エクセレンス

オペレーショナル エクセレンスは、アプリケーションをデプロイし、それを運用環境で実行し続ける運用プロセスをカバーします。 詳細については、「 オペレーショナル エクセレンスの設計レビュー チェックリスト」を参照してください。

  • Azure Functions、Event Grid、Microsoft Foundry 診断を共有Log Analytics ワークスペースに送信し、Application Insights を使用して、アップロードから結果へのフロー全体の分散トレースを行います。
  • Event Grid のデッドレター先を構成して、関数で処理できないイベントが再試行のために別の BLOB コンテナーに記録されるようにします。
  • コンテンツ理解アナライザースキーマをコードとしてバージョニングし、関数をデプロイするのと同じパイプラインを通じてデプロイします。 ダウンストリーム コンシューマーのスキーマ変更を破壊的変更として扱います。

Contributors

Microsoft では、この記事を保持しています。 この記事を書いたのは、以下の寄稿者です。

作者代表:

その他の共同作成者:

公開されていない LinkedIn プロフィールを見るには、LinkedIn にサインインしてください。

次のステップ

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

  • 画像およびテキスト処理におけるAIエンリッチメントの使用
  • Azure OpenAI を使用して、マルチモーダル ビジョン チャット アプリを始めましょう。