跳至主要内容

從您的物聯網設備調用您的物件檢測器 - 虛擬物聯網硬體和樹莓派

一旦您的物件檢測器已經發布,它就可以從您的物聯網設備中使用。

複製圖像分類器項目

您的庫存檢測器的大部分與您在上一課中創建的圖像分類器相同。

任務 - 複製圖像分類器項目

  1. 在您的計算機上創建一個名為 stock-counter 的文件夾,如果您使用的是虛擬物聯網設備,或者在您的樹莓派上。如果您使用的是虛擬物聯網設備,請確保您設置了一個虛擬環境。

  2. 設置相機硬體。

    • 如果您使用的是樹莓派,您需要安裝 PiCamera。您可能還需要將相機固定在一個位置,例如,將電纜掛在盒子或罐子上,或者用雙面膠帶將相機固定在盒子上。
    • 如果您使用的是虛擬物聯網設備,則需要安裝 CounterFit 和 CounterFit PyCamera shim。如果您打算使用靜態圖像,請捕捉一些您的物件檢測器尚未見過的圖像,如果您打算使用網絡攝像頭,請確保它的位置可以看到您正在檢測的庫存。
  3. 製造項目第2課中複製步驟以從相機捕捉圖像。

  4. 製造項目第2課中複製步驟以調用圖像分類器。大部分代碼將被重用來檢測物件。

將代碼從分類器更改為圖像檢測器

您用於分類圖像的代碼與檢測物件的代碼非常相似。主要區別在於調用的 Custom Vision SDK 方法和調用的結果。

任務 - 將代碼從分類器更改為圖像檢測器

  1. 刪除三行分類圖像和處理預測的代碼:

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

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

    刪除這三行代碼。

  2. 添加以下代碼以檢測圖像中的物件:

    results = predictor.detect_image(project_id, iteration_name, image)

    threshold = 0.3

    predictions = list(prediction for prediction in results.predictions if prediction.probability > threshold)

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

    此代碼調用 detect_image 方法在預測器上運行物件檢測器。然後收集所有概率高於閾值的預測,並將它們打印到控制台。

    與僅返回每個標籤一個結果的圖像分類器不同,物件檢測器將返回多個結果,因此需要過濾掉任何概率較低的結果。

  3. 運行此代碼,它將捕捉圖像,將其發送到物件檢測器,並打印出檢測到的物件。如果您使用的是虛擬物聯網設備,請確保在 CounterFit 中設置了適當的圖像,或者選擇了我們的網絡攝像頭。如果您使用的是樹莓派,請確保您的相機指向架子上的物件。

    pi@raspberrypi:~/stock-counter $ python3 app.py 
    tomato paste: 34.13%
    tomato paste: 33.95%
    tomato paste: 35.05%
    tomato paste: 32.80%

    💁 您可能需要將 threshold 調整到適合您的圖像的值。

    您將能夠在 Custom Vision 的 Predictions 標籤中看到拍攝的圖像和這些值。

    4 cans of tomato paste on a shelf with predictions for the 4 detections of 35.8%, 33.5%, 25.7% and 16.6%

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

😀 您的庫存計數程序成功了!