Azure でのイメージの分類

Foundry Tools
Foundry SDK
Azure Blob Storage
Azure Cosmos DB
Azure Event Grid
Azure Functions

ソリューションのアイデア

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

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

アーキテクチャ

Azure サービスを使用するインテリジェントな画像処理パイプラインを示す図。

このアーキテクチャのVisio ファイルをダウンロードしてください。

データ フロー

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

  1. ユーザーは、直接、または Web またはモバイル アプリケーションを使用して、Azure Blob Storageに画像をアップロードします。 アップロードによって、Azure Event Gridでイベントがトリガーされます。

  2. Event Grid は、アップロードされたイメージを処理するためにAzure Functionsに通知を送信します。

  3. この関数は、ターゲット BLOB をスコープとする、時間制限付きの最小特権の Shared Access Signature URL を生成し、Content Understanding に渡します。 Content Understanding では、この URL を使用してBlob Storageから直接画像にアクセスし、事前構築済みのアナライザーを使用して分析します。

  4. この関数は、Content Understanding が返す構造化された出力と画像メタデータを、NoSQLのAzure Cosmos DBに格納します。

  5. Web アプリケーションまたはモバイル アプリケーションが結果を受け取ります。 このデータ フローは、分類の出力とメタデータを返しますが、元のイメージ ファイルは返しません。

コンポーネント

  • Content Understanding は、生成 AI を使用して、ドキュメント、画像、ビデオ、オーディオからユーザー定義の構造化された出力を抽出する Foundry ツールです。 このアーキテクチャでは、Content Understanding は、製品の種類、色、欠陥クラスなど、返されるカテゴリ、属性、ラベルを定義する 事前構築済みのアナライザー を使用して、アップロードされた各画像を分析します。 出力は、アプリケーションのデータ モデルに直接マップされる 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 では、コンピューター ビジョン タスクがサポートされています。 従来の機械学習手法を使用して、ラベル付けされたデータからカスタム画像分類と物体検出モデルをトレーニングできます。 ラベル付けされたデータセットがあり、生成方法が適合しない狭いドメインに対して確定的でデプロイ可能なモデルが必要な場合は、AutoML を選択します。 例としては、製造欠陥検出または医療用イメージングが挙げられる。 Microsoftでは、従来の機械学習モデルを維持したいAzure AI Custom Visionから移行するお客様に AutoML をお勧めします。

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

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

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

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

シナリオの詳細

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

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

考えられるユース ケース

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

  • 小売またはファッション サイトでの画像のタグ付け。 販売者は製品の写真をアップロードします。 Content Understanding は、アナライザーで定義したタグ、キャプション、属性を返します。 プラットフォームでは、返されたメタデータを使用して、リスト フィールドのオートフィル、ビジュアル検索の推進、手動タグ付けの作業の削減を行います。

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

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

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

考慮事項

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

セキュリティ

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

  • 関数アプリ管理 ID を使用して、Content Understanding をホストするBlob Storage、Azure Cosmos DB、および Microsoft Foundry リソースに対して認証を行います。 接続文字列や API キーはアプリ設定に格納しないでください。

  • Foundry リソースと Cosmos DB を プライベート エンドポイント に制限し、ワークロードが仮想ネットワーク内で実行されている場合はパブリック ネットワーク アクセスをオフにします。 Flex 従量課金プランでは、仮想ネットワーク統合がサポートされています。

  • ビジョン サービスを呼び出す前に、アップロードした画像を検証します。 アップロード境界でコンテンツ タイプとサイズの制限を適用し、マルウェアをスキャンして、パブリック ユーザーが直接読み取ることができないコンテナーにアップロードを格納します。

  • このアーキテクチャは、クラウド ソリューションの処理に適していると判断したイメージにのみ適しています。 ローカルまたはオフラインの画像処理はサポートされていません。

コストの最適化

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

  • Content Understanding のアナライザーを、アプリケーションが実際に使用するフィールドに制限します。 追加フィールドごとに、トークンの使用量と呼び出しごとのコストが増加します。 現在の料金については、「 Foundry の価格」を参照してください。

  • Azure Functionsの場合は、Flex 従量課金プランを使用して、イベント ドリブン ワークロードの急増に対処します。 プランは 0 にスケーリングされ、アクティブなインスタンスでは 1 秒あたりに課金されます。

  • Cosmos DB の場合、トラフィックが不均等な場合は 、サーバーレス または 自動スケーリングのスループット を評価します。 サーバーレスはトラフィックが少なく、開発/テストのワークロードに適していますが、自動スケーリングは負荷が変動する運用環境に適しています。

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

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

  • 関数、Event Grid、Foundry 診断を共有Log Analytics ワークスペースに送信し、Application Insights を使用して、結果へのアップロード フロー全体の分散トレースを行います。

  • Event Grid のデッドレター先を構成して、関数で処理できないイベントが再試行のために別の BLOB コンテナーに記録されるようにします。

  • コンテンツ理解アナライザースキーマをコードとしてバージョニングし、関数をデプロイするのと同じパイプラインを通じてデプロイします。 ダウンストリーム コンシューマーのスキーマ変更を破壊的変更として扱います。

Contributors

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

主要著者:

その他の共同作成者:

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

次のステップ

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