跳至主要内容

從物聯網設備檢查庫存

本課程的概述手繪圖

手繪圖由 Nitya Narasimhan 提供。點擊圖片查看大圖。

課前測驗

課前測驗

介紹

在上一課中,你學習了物體檢測在零售中的不同用途。你還學會了如何訓練一個物體檢測器來識別庫存。在本課中,你將學習如何從你的物聯網設備使用你的物體檢測器來計算庫存。

在本課中我們將涵蓋:

🗑 這是本項目的最後一課,所以在完成本課和作業後,不要忘記清理你的雲端服務。你將需要這些服務來完成作業,所以請確保先完成作業。

如有需要,請參考清理你的項目指南以獲取清理指示。

庫存計數

物體檢測器可以用於庫存檢查,無論是計算庫存還是確保庫存在應有的位置。配備攝像頭的物聯網設備可以部署在商店各處以監控庫存,從需要補貨的重要區域開始,例如存放少量高價值物品的區域。

例如,如果攝像頭指向一組可以容納8罐番茄醬的貨架,而物體檢測器只檢測到7罐,那麼就缺少一罐,需要補貨。

貨架上有7罐番茄醬,4罐在上排,3罐在下排

在上圖中,物體檢測器檢測到貨架上有7罐番茄醬,而該貨架可以容納8罐。不僅物聯網設備可以發送需要補貨的通知,它甚至可以指示缺少物品的位置,這對於使用機器人來補貨的情況尤為重要。

💁 根據商店和商品的受歡迎程度,如果只缺少1罐,可能不會立即補貨。你需要建立一個算法,根據你的產品、顧客和其他標準來決定何時補貨。

✅ 在其他哪些情況下你可以結合物體檢測和機器人?

有時候,貨架上會出現錯誤的庫存。這可能是補貨時的人為錯誤,或者是顧客改變購買決定,將物品放回第一個可用的位置。當這是一個非易腐物品如罐頭食品時,這是一種煩擾。如果是易腐物品如冷凍或冷藏食品,這可能意味著該產品無法再出售,因為可能無法確定該物品離開冷凍庫的時間。

物體檢測可以用來檢測意外的物品,再次提醒人類或機器人盡快將物品歸位。

在番茄醬貨架上的一罐嬰兒玉米

在上圖中,一罐嬰兒玉米被放在番茄醬旁邊的貨架上。物體檢測器已經檢測到這一點,使物聯網設備能夠通知人類或機器人將罐頭歸還到正確的位置。

從你的物聯網設備調用你的物體檢測器

你在上一課中訓練的物體檢測器可以從你的物聯網設備調用。

任務 - 發佈你的物體檢測器的一個迭代版本

迭代版本是從 Custom Vision 入口網站發佈的。

  1. 啟動 Custom Vision 入口網站 CustomVision.ai 並登入,如果你還沒有打開它。然後打開你的 stock-detector 專案。

  2. 從頂部選項中選擇 Performance 標籤

  3. 從側邊的 Iterations 列表中選擇最新的迭代版本

  4. 選擇該迭代版本的 Publish 按鈕

    發佈按鈕

  5. Publish Model 對話框中,將 Prediction resource 設置為你在上一課中創建的 stock-detector-prediction 資源。將名稱保留為 Iteration2,然後選擇 Publish 按鈕。

  6. 發佈後,選擇 Prediction URL 按鈕。這將顯示預測 API 的詳細信息,你需要這些信息來從你的物聯網設備調用模型。下部區域標記為 If you have an image file,這是你需要的詳細信息。複製顯示的 URL,類似於:

    https://<location>.api.cognitive.microsoft.com/customvision/v3.0/Prediction/<id>/detect/iterations/Iteration2/image

    其中 <location> 是你創建自訂視覺資源時使用的位置,<id> 是由字母和數字組成的長 ID。

    也複製 Prediction-Key 值。這是一個安全密鑰,你在調用模型時必須傳遞。只有傳遞此密鑰的應用程式才允許使用該模型,任何其他應用程式都會被拒絕。

    預測 API 對話框顯示 URL 和密鑰

✅ 當發佈新迭代版本時,它將具有不同的名稱。你認為如何更改物聯網設備使用的迭代版本?

任務 - 從你的物聯網設備調用你的物體檢測器

按照下面的相關指南,從你的物聯網設備使用物體檢測器:

邊界框

當你使用物體檢測器時,你不僅會得到檢測到的物體及其標籤和概率,還會得到物體的邊界框。這些邊界框定義了物體檢測器檢測到物體的位置及其給定的概率。

💁 邊界框是一個定義檢測到的物體所在區域的框,一個定義物體邊界的框。

在 Custom Vision 的 Predictions 標籤中的預測結果中,邊界框會被繪製在發送進行預測的圖像上。

貨架上有4罐番茄醬,預測結果顯示4個檢測分別為35.8%、33.5%、25.7%和16.6%

在上圖中,檢測到4罐番茄醬。在結果中,每個檢測到的物體上都疊加了一個紅色方框,表示圖像的邊界框。

✅ 打開 Custom Vision 中的預測並查看邊界框。

邊界框由4個值定義 - 上、左、高度和寬度。這些值的範圍是0-1,表示位置是圖像大小的百分比。原點(0,0位置)是圖像的左上角,因此上值是距離頂部的距離,邊界框的底部是上值加上高度。

一罐番茄醬周圍的邊界框

上圖的寬度為600像素,高度為800像素。邊界框從320像素開始,給出上坐標為0.4(800 x 0.4 = 320)。從左邊開始,邊界框從240像素開始,給出左坐標為0.4(600 x 0.4 = 240)。邊界框的高度為240像素,給出高度值為0.3(800 x 0.3 = 240)。邊界框的寬度為120像素,給出寬度值為0.2(600 x 0.2 = 120)。

坐標
0.4
0.4
高度0.3
寬度0.2

使用0-1的百分比值意味著無論圖像的大小如何縮放,邊界框都會從0.4的位置開始,並且高度為0.3,寬度為0.2。

你可以使用邊界框結合概率來評估檢測的準確性。例如,物體檢測器可以檢測到多個重疊的物體,例如檢測到一個罐頭在另一個罐頭內。你的代碼可以查看邊界框,理解這是不可能的,並忽略任何與其他物體有顯著重疊的物體。

兩個重疊的邊界框檢測到一罐番茄醬

在上圖中,一個邊界框顯示預測到一罐番茄醬的概率為78.3%。第二個邊界框稍小,位於第一個邊界框內,概率為64.3%。你的代碼可以檢查邊界框,看到它們完全重疊,並忽略較低的概率,因為不可能一個罐頭在另一個罐頭內。

✅ 你能想到一個情況是檢測到一個物體在另一個物體內是有效的嗎?

重新訓練模型

與圖像分類器一樣,你可以使用你的物聯網設備捕獲的數據重新訓練你的模型。使用這些真實世界的數據將確保你的模型在從你的物聯網設備使用時能夠正常工作。

與圖像分類器不同,你不能僅僅標記一張圖像。相反,你需要檢查模型檢測到的每個邊界框。如果框圍繞錯誤的物體,則需要刪除它;如果位置錯誤,則需要調整它。

任務 - 重新訓練模型

  1. 確保你已經使用你的物聯網設備捕獲了一系列圖像。

  2. Predictions 標籤中選擇一張圖像。你會看到紅色方框表示檢測到的物體的邊界框。

  3. 檢查每個邊界框。首先選擇它,你會看到一個彈出窗口顯示標籤。使用邊界框角上的手柄調整大小(如有必要)。如果標籤錯誤,使用 X 按鈕刪除它並添加正確的標籤。如果邊界框不包含物體,使用垃圾桶按鈕刪除它。

  4. 完成後關閉編輯器,圖像將從 Predictions 標籤移動到 Training Images 標籤。對所有預測重複此過程。

  5. 使用 Train 按鈕重新訓練你的模型。訓練完成後,發佈迭代版本並更新你的物聯網設備以使用新迭代版本的 URL。

  6. 重新部署你的代碼並測試你的物聯網設備。

計算庫存

使用檢測到的物體數量和邊界框的組合,你可以計算貨架上的庫存。

任務 - 計算庫存

按照下面的相關指南,使用你的物聯網設備的物體檢測器結果計算庫存:


🚀 挑戰

你能檢測到錯誤的庫存嗎?在多個物體上訓練你的模型,然後更新你的應用程式以在檢測到錯誤的庫存時提醒你。

甚至可以進一步檢測同一貨架上並排的庫存,通過定義邊界框的限制來查看是否有物品被放錯了位置。

課後測驗

課後測驗

回顧與自學

作業

在邊緣使用你的物體檢測器