跳至主要内容

分類圖像 - 虛擬物聯網硬體和樹莓派

在本課程的這一部分,你將把相機捕獲的圖像發送到自訂視覺服務進行分類。

將圖像發送到自訂視覺

自訂視覺服務有一個 Python SDK,你可以用來分類圖像。

任務 - 將圖像發送到自訂視覺

  1. 在 VS Code 中打開 fruit-quality-detector 文件夾。如果你使用的是虛擬物聯網設備,請確保虛擬環境在終端中運行。

  2. 用於將圖像發送到自訂視覺的 Python SDK 可作為 Pip 包使用。使用以下命令安裝它:

    pip3 install azure-cognitiveservices-vision-customvision
  3. app.py 文件的頂部添加以下導入語句:

    from msrest.authentication import ApiKeyCredentials
    from azure.cognitiveservices.vision.customvision.prediction import CustomVisionPredictionClient

    這將引入自訂視覺庫中的一些模塊,一個用於使用預測密鑰進行身份驗證,另一個提供可以調用自訂視覺的預測客戶端類。

  4. 在文件末尾添加以下代碼:

    prediction_url = '<prediction_url>'
    prediction_key = '<prediction key>'

    <prediction_url> 替換為你在本課程前面從 預測 URL 對話框中複製的 URL。將 <prediction key> 替換為你從同一對話框中複製的預測密鑰。

  5. 預測 URL 對話框提供的預測 URL 設計用於直接調用 REST 端點。Python SDK 在不同的地方使用 URL 的部分。添加以下代碼以將此 URL 分解為所需的部分:

    parts = prediction_url.split('/')
    endpoint = 'https://' + parts[2]
    project_id = parts[6]
    iteration_name = parts[9]

    這將拆分 URL,提取 https://<location>.api.cognitive.microsoft.com 的端點、項目 ID 和已發布迭代的名稱。

  6. 創建一個預測對象以使用以下代碼進行預測:

    prediction_credentials = ApiKeyCredentials(in_headers={"Prediction-key": prediction_key})
    predictor = CustomVisionPredictionClient(endpoint, prediction_credentials)

    prediction_credentials 包裝預測密鑰。然後使用這些來創建一個指向端點的預測客戶端對象。

  7. 使用以下代碼將圖像發送到自訂視覺:

    image.seek(0)
    results = predictor.classify_image(project_id, iteration_name, image)

    這將圖像倒回到開始,然後將其發送到預測客戶端。

  8. 最後,使用以下代碼顯示結果:

    for prediction in results.predictions:
    print(f'{prediction.tag_name}:\t{prediction.probability * 100:.2f}%')

    這將循環顯示所有返回的預測並在終端上顯示它們。返回的概率是從 0 到 1 的浮點數,0 表示與標籤匹配的概率為 0%,1 表示與標籤匹配的概率為 100%。

    💁 圖像分類器將返回所有使用過的標籤的百分比。每個標籤都會有一個圖像與該標籤匹配的概率。

  9. 運行你的代碼,讓相機對準一些水果,或適當的圖像集,或如果使用虛擬物聯網硬體,則讓水果在你的網絡攝像頭上可見。你將在控制台中看到輸出:

    (.venv) ➜  fruit-quality-detector python app.py
    ripe: 56.84%
    unripe: 43.16%

    你將能夠看到拍攝的圖像,並在自訂視覺的 預測 標籤中看到這些值。

    在自訂視覺中預測為 56.8% 成熟和 43.1% 未成熟的香蕉

💁 你可以在 code-classify/picode-classify/virtual-iot-device 文件夾中找到此代碼。

😀 你的水果質量分類器程序成功了!