Azure AI Vision カスタム モデルを使用して画像を分類する

Azure AI Vision を使用すると、カスタム モデルをトレーニングして、指定したラベルを持つオブジェクトを分類して検出できます。 このラボでは、果物の画像を分類するカスタム画像分類モデルを構築します。

このコースのリポジトリを複製する

このラボで作業している環境に Azure AI Vision コード リポジトリをまだクローンしていない場合は、次の手順に従ってクローンします。 それ以外の場合は、複製されたフォルダーを Visual Studio Code で開きます。

  1. Visual Studio Code を起動します。
  2. パレットを開き (SHIFT+CTRL+P)、Git:Clone コマンドを実行して、https://github.com/MicrosoftLearning/mslearn-ai-vision リポジトリをローカル フォルダーに複製します (どのフォルダーでも問題ありません)。
  3. リポジトリを複製したら、Visual Studio Code でフォルダーを開きます。
  4. リポジトリ内の C# コード プロジェクトをサポートするために追加のファイルがインストールされるまで待ちます。

    : ビルドとデバッグに必要なアセットを追加するように求めるプロンプトが表示された場合は、[今はしない] を選択します。 「フォルダー内の Azure Function プロジェクトが検出されました」というメッセージが表示された場合は、そのメッセージを安全に閉じてかまいません。

Azure リソースをプロビジョニングする

サブスクリプションにまだリソースがない場合は、Azure AI サービス リソースをプロビジョニングする必要があります。

  1. Azure portal (https://portal.azure.com) を開き、ご利用の Azure サブスクリプションに関連付けられている Microsoft アカウントを使用してサインインします。
  2. 上部の検索バーで 「Azure AI サービス」を検索し、[Azure AI サービス] を選択し、次の設定で Azure AI サービス マルチサービス アカウント リソースを作成します。
    • [サブスクリプション]:”ご自身の Azure サブスクリプション
    • リソース グループ: リソース グループを選択または作成します (制限付きサブスクリプションを使用している場合は、新しいリソース グループを作成する権限がないことがあります。提供されているものを使ってください)
    • リージョン: 米国東部、西ヨーロッパ、米国西部 2 から選択します*
    • [名前]: 一意の名前を入力します
    • 価格レベル: Standard S0

    *Azure AI Vision 4.0 カスタム モデル タグは、現在、これらのリージョンでのみ使用できます。

  3. 必要なチェック ボックスをオンにして、リソースを作成します。

トレーニング イメージを格納するためのストレージ アカウントも必要です。

  1. Azure portal でストレージ アカウントを検索して選択し、次の設定で新しいストレージ アカウントを作成します。
    • [サブスクリプション]:”ご自身の Azure サブスクリプション
    • リソース グループ: Azure AI サービス リソースで作成したリソース グループと同じものを選択します
    • ストレージ アカウント名: customclassifySUFFIX
      • 注: リソース名がグローバルに一意になるように、SUFFIX トークンをイニシャルまたは別の値に置き換えます。
    • リージョン: Azure AI サービス リソースに使用したリージョンと同じものを選択します
    • プライマリ サービス: Azure Blob Storage または Azure Data Lake Storage Gen 2
    • プライマリ ワークロード: その他
    • パフォーマンス: 標準
    • 冗長: ローカル冗長ストレージ (LRS)
  2. ストレージ アカウントの作成中に、Visual Studio Code に移動し、Labfiles/02-image-classification フォルダーを展開します。
  3. そのフォルダーで replace.ps1 を選択し、コードを確認します。 後の手順で使用する JSON ファイル (COCO ファイル) のプレースホルダーのストレージ アカウントの名前が置き換えられていることがわかります。 ファイルの 1 行目のみにあるプレースホルダーを、お使いのストレージ アカウントの名前に置き換えます。 ファイルを保存します。
  4. 02-image-classification フォルダーを右クリックして、統合ターミナルを開きます。 次のコマンドを実行します。

     ./replace.ps1
    
  5. COCO ファイルを確認して、お使いのストレージ アカウント名が存在することを確認できます。 training-images/training_labels.json を選択し、最初のいくつかのエントリを表示します。 [absolute_url] フィールドに “https://myStorage.blob.core.windows.net/fruit/… のように表示されます。変更が正常に表示されていない場合は、PowerShell スクリプトの 1 行目のプレースホルダーのみを更新したことを確認してください。
  6. JSON ファイルと PowerShell ファイルの両方を閉じて、ブラウザー ウィンドウに戻ります。
  7. ストレージ アカウントが完成しているはずです。 ストレージ アカウントに移動します。
  8. ストレージ アカウントのパブリック アクセスを有効にします。 左側のウィンドウで、[設定] グループの [構成] に移動し、[BLOB の匿名アクセスを許可する] を有効にします。 [保存] を選びます。
  9. 左側のウィンドウの [データ ストレージ] で、[コンテナー] を選択し、「fruit」という名前の新しいコンテナーを作成し、[匿名アクセス レベル][コンテナー (コンテナーと BLOB の匿名読み取りアクセス)] に設定します。

    : 匿名アクセス レベルが無効になっている場合は、ブラウザー ページを更新します。

  10. fruit に移動し、[アップロード] を選択して、Labfiles/02-image-classification/training-images 内の画像 (および 1 つの JSON ファイル) をそのコンテナーにアップロードします。

カスタム モデルのトレーニング プロジェクトを作成する

次に、Vision Studio でカスタム画像分類用の新しいトレーニング プロジェクトを作成します。

  1. Web ブラウザーで https://portal.vision.cognitive.azure.com/ に移動し、Azure AI リソースを作成した Microsoft アカウントでサインインします。
  2. [画像を使用してモデルをカスタマイズする] タイルを選択します(既定のビューに表示されていない場合は、[画像分析] タブにあります)。
  3. 作成した Azure AI サービス アカウントを選択します。
  4. プロジェクトで、上部にある [新しいデータセットの追加] を選択します。 次の設定で を構成します。
    • データセット名: training_images
    • モデルの種類: 画像分類
    • Azure Blob Storage コンテナーの選択: [コンテナーの選択] を選択します
      • [サブスクリプション]:”ご自身の Azure サブスクリプション
      • ストレージ アカウント: 作成したストレージ アカウント
      • BLOB コンテナー: 果物
    • [Vision Studio による Blob Storage への読み取りと書き込みを許可する] ボックスを選択します
  5. training_images データセットを選択します。

プロジェクト作成のこの時点で、通常は [Azure ML データのラベル付けプロジェクトを作成する] を選択し、画像にラベルを付けます。これにより COCO ファイルが生成されます。 時間がある場合は、これを試してみることをお勧めしますが、このラボでは既に画像にラベルを付けた作成済みの COCO ファイルを提供しています。

  1. [COCO ファイルの追加] を選択します。
  2. ドロップダウンで、[Blob コンテナーから COCO ファイルをインポートする] を選択します。
  3. fruit という名前のコンテナーを既に接続しているため、Vision Studio はこのコンテナーで COCO ファイルを検索します。 ドロップダウンから training_labels.json を選択し、COCO ファイルを追加します。
  4. 左側の [カスタム モデル] に移動し、[新しいモデルのトレーニング] を選択します。 次の設定を使用します。
    • モデルの名前: classifyfruit
    • モデルの種類: 画像分類
    • トレーニング データセットの選択: training_images
    • 残りは既定値のままにして、[モデルのトレーニング] を選択します。

トレーニングには時間がかかる場合があります。既定の予測時間は最大 1 時間ですが、このデータセットは小さいため、通常はそれよりもかなり短時間で完了します。 ジョブの状態が [成功] になるまで、数分ごとに [更新] ボタンを選択します。 モデルを選択します。

ここでは、トレーニング ジョブのパフォーマンスを表示できます。 トレーニング済みモデルの精度と正確性を確認します。

カスタム モデルをテストする

モデルのトレーニングが完了し、テストする準備ができました。

  1. カスタム モデルのページの上部にある [試してみる] を選択します。
  2. ドロップダウンから classifyfruit モデルを選択して使用するモデルを指定し、02-image-classification\test-images フォルダーを参照します。
  3. 各画像を選択し、結果を表示します。 結果のボックスで [JSON] タブを選択して、完全な JSON 応答を確認します。

リソースをクリーンアップする

このラボで作成した Azure リソースを他のトレーニング モジュールに使用していない場合は、それらを削除して、追加料金が発生しないようにすることができます。

  1. https://portal.azure.com で Azure portal を開き、上部の検索バーで、このラボで作成したリソースを検索します。

  2. [リソース] ページで [削除] を選択し、指示に従ってリソースを削除します。 または、リソース グループ全体を削除して、すべてのリソースを同時にクリーンアップすることもできます。