呼叫預測 API

在您將模型定型之後,您可以藉由將影像提交至預測 API 端點,以程式設計方式測試影像。 在本指南中,您將瞭解如何呼叫預測 API 來為影像評分。 您將瞭解可設定此 API 行為的不同方式,以符合您的需求。

注意

本檔將示範如何使用適用于 c # 的 .NET 用戶端程式庫,將影像提交至預測 API。 如需詳細資訊和範例,請參閱 預測 API 參考

安裝程式

發佈您已定型的反復專案

自訂視覺網頁 (英文) 選取您的專案,然後選取 [效能] 索引標籤。

若要將影像提交至預測 API,您必須先發佈反覆運算以進行預測,您可以選取 [ 發行 ] 並指定已發行之反復專案的名稱來完成。 這會讓您的模型可供您自訂視覺 Azure 資源的預測 API 存取。

[效能] 索引標籤會顯示,其中有一個圍繞 [發佈] 按鈕的紅色矩形。

成功發佈模型之後,您會看到左側提要欄位中的反復專案旁出現「已發佈」標籤,而且其名稱會出現在反復專案的描述中。

[效能] 索引標籤會顯示,其中有一個圍繞已發行標籤的紅色矩形,以及已發佈的反復專案名稱。

取得 URL 和預測金鑰

一旦發行您的模型之後,您就可以選取 [ 預測 URL] 來取得所需的資訊。 這會開啟一個對話方塊,其中包含使用預測 API 的資訊,包括 預測 URL預測金鑰

[效能] 索引標籤會顯示在 [預測 URL] 按鈕周圍的紅色矩形。

[效能] 索引標籤會顯示在預測 URL 值周圍的紅色矩形,以使用影像檔和 Prediction-Key 值。

將資料提交至服務

本指南假設您已 predictionClient 使用自訂視覺的預測金鑰和端點 URL 來建立名為的 CustomVisionPredictionClient 物件。 如需如何設定這項功能的指示,請遵循其中一個 快速入門

在本指南中,您將使用本機映射,因此請下載您想要提交給定型模型的影像。 下列程式碼會提示使用者指定本機路徑,並取得該路徑的檔案 bytestream。

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

包含下列 helper 方法:

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 方法會採用專案識別碼和本機儲存的影像,並根據指定的模型為影像評分。

// 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.cs 物件的形式傳回結果。 [ 預測 ] 屬性包含 PredictionModel 物件的清單,每個物件都代表一個物件預測。 它們包括標籤的名稱,以及在影像中偵測到物件的周框方塊座標。 例如,您的應用程式可以將此資料剖析為,以在螢幕上顯示具有標記物件欄位的影像。

下一步

在本指南中,您已瞭解如何將影像提交至自訂影像分類器/偵測器,並使用 c # SDK 以程式設計方式接收回應。 接下來,瞭解如何使用 c # 完成端對端案例,或開始使用不同的語言 SDK。