跳至主要内容

使用 IoT Edge 基於影像分類器來分類影像 - 虛擬 IoT 硬體和樹莓派

在本課程的這一部分,你將使用運行在 IoT Edge 設備上的影像分類器。

使用 IoT Edge 分類器

可以將 IoT 設備重新定向以使用 IoT Edge 影像分類器。影像分類器的 URL 是 http://<IP address or name>/image,將 <IP address or name> 替換為運行 IoT Edge 的計算機的 IP 地址或主機名。

Custom Vision 的 Python 庫僅適用於雲端託管的模型,不適用於託管在 IoT Edge 上的模型。這意味著你需要使用 REST API 來調用分類器。

任務 - 使用 IoT Edge 分類器

  1. 如果尚未打開,請在 VS Code 中打開 fruit-quality-detector 專案。如果你使用的是虛擬 IoT 設備,請確保虛擬環境已啟動。

  2. 打開 app.py 文件,並刪除來自 azure.cognitiveservices.vision.customvision.predictionmsrest.authentication 的導入語句。

  3. 在文件頂部添加以下導入語句:

    import requests
  4. 刪除從 image_file.write(image.read()) 到文件末尾的所有代碼。

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

    prediction_url = '<URL>'
    headers = {
    'Content-Type' : 'application/octet-stream'
    }
    image.seek(0)
    response = requests.post(prediction_url, headers=headers, data=image)
    results = response.json()

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

    <URL> 替換為你的分類器的 URL。

    此代碼向分類器發送一個 REST POST 請求,將影像作為請求的主體發送。結果以 JSON 形式返回,並解碼以打印出概率。

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

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

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

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