Prediction API を呼び出す
モデルのトレーニングが完了したら、画像を Prediction API エンドポイントに送信することで、プログラムを使用してモデルをテストできます。 このガイドでは、Prediction API を呼び出して画像にスコアを付ける方法を学習します。 この API の動作をニーズに合わせて構成できるさまざまな方法を学習します。
注意
このドキュメントでは、C# 用 .NET クライアント ライブラリを使用して、Prediction API にイメージを送信する方法について説明します。 詳細および例については、Prediction API リファレンスに関するページを参照してください。
セットアップ
トレーニング済みイテレーションを発行する
Custom Vision Web ページから、自分のプロジェクトを選択した後、[パフォーマンス] タブを選択します。
Prediction API に画像を送信するには、まず予測のイテレーションを発行する必要があり、これは [発行] を選択して、発行されたイテレーションの名前を指定することで実行できます。 これにより、Custom Vision Azure リソースの Prediction API がモデルにアクセスできるようになります。
モデルの発行が成功すると、左側のサイドバー内のイテレーションの横に [発行済み] ラベルが表示され、イテレーションの説明内にモデルの名前が表示されるようになります。
URL と予測キーを取得する
モデルが発行されたら、[Prediction URL] を選択することで、必要な情報を取得することができます。 Prediction URL や Prediction-Key などの Prediction API を使用するための情報を含むダイアログ ボックスが開きます。
サービスにデータを送信する
このガイドでは、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 を使用して作業を開始したりする方法について説明します。