次の方法で共有


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 URLPrediction-Key などの Prediction API を使用するための情報を含むダイアログ ボックスが開きます。

[Prediction URL] ボタンが赤色の四角形で囲まれたパフォーマンス タブのスクリーンショット。

画像ファイルを使用するための Prediction URL 値と Prediction-Key 値が赤い四角形で囲まれたパフォーマンス タブのスクリーンショット。

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

このガイドでは、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 を使用して作業を開始したりする方法について説明します。