Prediction API の呼び出し

モデルをトレーニングした後、イメージを Prediction API エンドポイントに送信することで、プログラムからテストできます。 このガイドでは、Prediction API を呼び出してイメージにスコアを付ける方法について説明します。 この API の動作をニーズに合わせて構成できるさまざまな方法を学習します。

注意

このドキュメントでは、C# 用 .NET クライアント ライブラリを使用して、Prediction API にイメージを送信する方法について説明します。 詳細および例については、Prediction API リファレンスに関するページを参照してください。

セットアップ

トレーニング済みイテレーションを発行する

Custom Vision の Web ページから自分のプロジェクトを選択し、[Performance]\(パフォーマンス) タブを選択します。

Prediction API にイメージを送信するには、まず予測のイテレーションを発行する必要があり、これは [発行] を選択して、発行されたイテレーションの名前を指定して実行できます。 これにより、モデルが、Custom Vision Azure リソースの Prediction API にアクセスできるようになります。

[Publish]\(発行\) ボタンが赤い四角形で囲まれた、パフォーマンス タブが表示されます。

モデルが正常に発行されると、左側のサイドバー内のイテレーションの横に [発行済み] ラベルが表示されます。また、イテレーションの名前がイテレーションの説明内に表示されます。

発行済みラベルと発行済みイテレーションの名前が赤い四角形で囲まれた、パフォーマンス タブが表示されます。

URL と予測キーを取得する

モデルが発行されたら、必要な情報を取得するために [Prediction URL] を選択します。 これにより、ダイアログが開き、Prediction URLPrediction-Key などの Prediction API を使用するための情報が表示されます。

[Prediction URL] ボタンが赤色の四角形で囲まれた、パフォーマンス タブが表示されます。

イメージ ファイルと Prediction-Key 値を使用するための Prediction URL が赤い四角形で囲まれた、パフォーマンス タブが表示されます。

サービスにデータを送信する

このガイドでは、Custom Vision 予測キーとエンドポイント URL を使用して、predictionClient という名前の CustomVisionPredictionClient オブジェクトを既に作成していることを前提としています。 この機能を設定する方法については、クイックスタートのいずれかに従ってください。

このガイドでは、ローカル イメージを使用するため、トレーニング済みのモデルに送信するイメージをダウンロードします。 次のコードは、ローカル パスを指定し、そのパスにあるファイルのバイトストリームを取得するようにユーザーに要求します。

Console.Write("Enter image file path: ");
string imageFilePath = Console.ReadLine();
byte[] byteData = GetImageAsByteArray(imageFilePath);

以下のヘルパー メソッドを含めます。

private static byte[] GetImageAsByteArray(string imageFilePath)
{
    FileStream fileStream = new FileStream(imageFilePath, FileMode.Open, FileAccess.Read);
    BinaryReader binaryReader = new BinaryReader(fileStream);
    return binaryReader.ReadBytes((int)fileStream.Length);
}

ClassifyImageAsync メソッドは、プロジェクト ID とローカルに格納されているイメージを受け取り、指定されたモデルに対してイメージをスコア付けします。

// Make a prediction against the new project
Console.WriteLine("Making a prediction:");
var result = predictionApi.ClassifyImageAsync(project.Id, publishedModelName, byteData);

データの処理方法を決定する

必要に応じて、別の方法を選択して、サービスがスコアリング操作を実行する方法を構成できます ( CustomVisionPredictionClient クラスのメソッドを参照してください)。

わかりやすくするために、上記の非同期バージョンのメソッドを使用できますが、プログラムがかなりの時間ロックされる可能性があります。

-WithNoStore メソッドでは、予測の完了後にサービスによって予測イメージが保持されないようにする必要があります。 通常、このようなイメージはサービスによって保持されるので、モデルの将来の反復のためにトレーニング データとして追加することもできます。

-WithHttpMessages メソッドは、API 呼び出しの未加工の HTTP 応答を返します。

サービスから結果を取得する

サービスでは、 ImagePrediction オブジェクトの形式で結果が返されます。 Predictions プロパティには、 PredictionModel オブジェクトの一覧が含まれています。これらはそれぞれ、単一のオブジェクト予測を表します。 これには、ラベルの名前と、イメージ内でオブジェクトが検出された境界ボックスの座標が含まれます。 その後、アプリはこのデータを解析して、たとえば、ラベルが付けられたオブジェクト フィールドを含むイメージをスクリーンに表示できます。

次のステップ

このガイドでは、C# SDK を使用して、カスタム画像分類器/検出器にイメージを送信し、応答をプログラムで受信する方法について説明しました。 次は、C# を使用してエンドツーエンドのシナリオを完了したり、さまざまな言語の SDK を使用して作業を開始したりする方法について説明します。