You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/tw/5-retail/lessons/2-check-stock-device/README.md

189 lines
11 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "1c9e5fa8b7be726c75a97232b1e41c97",
"translation_date": "2025-08-24T21:08:08+00:00",
"source_file": "5-retail/lessons/2-check-stock-device/README.md",
"language_code": "tw"
}
-->
# 從物聯網設備檢查庫存
![本課程概述的手繪筆記](../../../../../translated_images/lesson-20.0211df9551a8abb300fc8fcf7dc2789468dea2eabe9202273ac077b0ba37f15e.tw.jpg)
> 手繪筆記由 [Nitya Narasimhan](https://github.com/nitya) 提供。點擊圖片查看更大版本。
## 課前測驗
[課前測驗](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/39)
## 簡介
在上一課中,你學到了物件偵測在零售中的不同用途,也學會了如何訓練物件偵測器來識別庫存。在本課中,你將學習如何從物聯網設備使用物件偵測器來計算庫存。
本課內容包括:
* [庫存計算](../../../../../5-retail/lessons/2-check-stock-device)
* [從物聯網設備呼叫物件偵測器](../../../../../5-retail/lessons/2-check-stock-device)
* [邊界框](../../../../../5-retail/lessons/2-check-stock-device)
* [重新訓練模型](../../../../../5-retail/lessons/2-check-stock-device)
* [計算庫存](../../../../../5-retail/lessons/2-check-stock-device)
> 🗑 這是本專案的最後一課,因此在完成本課和作業後,別忘了清理你的雲端服務。你需要這些服務來完成作業,所以請確保先完成作業。
>
> 如有需要,請參考[清理專案指南](../../../clean-up.md)以獲取相關指示。
## 庫存計算
物件偵測器可以用於庫存檢查,無論是計算庫存數量還是確保庫存位於正確位置。配備攝影機的物聯網設備可以部署在商店各處以監控庫存,首先從需要頻繁補貨的重要區域開始,例如存放少量高價商品的區域。
例如如果攝影機對準一組可以容納8罐番茄醬的貨架而物件偵測器只偵測到7罐那麼就缺少一罐需要補貨。
![貨架上的7罐番茄醬頂層4罐下層3罐](../../../../../translated_images/stock-7-cans-tomato-paste.f86059cc573d7becaa89a0eafb9d2cd7e2fe37405a530fe565990e2333d0e4a1.tw.png)
在上圖中物件偵測器偵測到貨架上有7罐番茄醬而該貨架可以容納8罐。不僅物聯網設備可以發送需要補貨的通知它甚至可以提供缺少物品的具體位置這對於使用機器人補貨的情況來說是重要的數據。
> 💁 根據商店和商品的受歡迎程度如果只缺少1罐可能不會立即補貨。你需要建立一個算法根據商品、顧客和其他標準來決定何時補貨。
✅ 在哪些其他情境中,你可以結合物件偵測和機器人?
有時候,貨架上可能會出現錯誤的庫存。這可能是補貨時的人為錯誤,或者是顧客改變購買決定並將商品放回最方便的位置。如果是非易腐商品,例如罐頭食品,這只是個麻煩。但如果是易腐商品,例如冷凍或冷藏食品,這可能意味著商品無法再出售,因為可能無法確定商品離開冷凍區的時間。
物件偵測可以用來偵測意外的物品,並通知人類或機器人盡快將物品歸位。
![番茄醬貨架上的一罐錯放的嬰兒玉米罐頭](../../../../../translated_images/stock-rogue-corn.be1f3ada8c4578544641af66671c1711a4c02297f14cc7f503354dae0d30a954.tw.png)
在上圖中,一罐嬰兒玉米罐頭被放在番茄醬旁邊。物件偵測器偵測到這一情況,使物聯網設備能夠通知人類或機器人將罐頭歸位。
## 從物聯網設備呼叫物件偵測器
你在上一課中訓練的物件偵測器可以從你的物聯網設備呼叫。
### 任務 - 發佈物件偵測器的迭代版本
迭代版本可以從 Custom Vision 平台發佈。
1. 打開 [CustomVision.ai](https://customvision.ai) 並登入,如果尚未開啟,請打開你的 `stock-detector` 專案。
1. 從頂部選項中選擇 **Performance** 標籤。
1. 從側邊的 *Iterations* 列表中選擇最新的迭代版本。
1. 為該迭代版本選擇 **Publish** 按鈕。
![發佈按鈕](../../../../../translated_images/custom-vision-object-detector-publish-button.34ee379fc650ccb9856c3868d0003f413b9529f102fc73c37168c98d721cc293.tw.png)
1.*Publish Model* 對話框中,將 *Prediction resource* 設置為你在上一課中創建的 `stock-detector-prediction` 資源。名稱保持為 `Iteration2`,然後選擇 **Publish** 按鈕。
1. 發佈後,選擇 **Prediction URL** 按鈕。這將顯示預測 API 的詳細信息,你需要這些信息來從物聯網設備呼叫模型。下方標記為 *If you have an image file* 的部分是你需要的詳細信息。複製顯示的 URL該 URL 可能類似於:
```output
https://<location>.api.cognitive.microsoft.com/customvision/v3.0/Prediction/<id>/detect/iterations/Iteration2/image
```
其中 `<location>` 是你創建 Custom Vision 資源時使用的位置,`<id>` 是由字母和數字組成的長 ID。
同時複製 *Prediction-Key* 值。這是一個安全密鑰,當你呼叫模型時需要傳遞此密鑰。只有傳遞此密鑰的應用程式才能使用模型,其他應用程式將被拒絕。
![預測 API 對話框顯示 URL 和密鑰](../../../../../translated_images/custom-vision-prediction-key-endpoint.30c569ffd0338864f319911f052d5e9b8c5066cb0800a26dd6f7ff5713130ad8.tw.png)
✅ 當新的迭代版本被發佈時,它會有不同的名稱。你認為如何更改物聯網設備使用的迭代版本?
### 任務 - 從物聯網設備呼叫物件偵測器
按照以下相關指南,從你的物聯網設備使用物件偵測器:
* [Arduino - Wio Terminal](wio-terminal-object-detector.md)
* [單板電腦 - Raspberry Pi/虛擬設備](single-board-computer-object-detector.md)
## 邊界框
使用物件偵測器時,你不僅可以獲得偵測到的物件及其標籤和概率,還可以獲得物件的邊界框。邊界框定義了物件偵測器以給定概率偵測到物件的位置。
> 💁 邊界框是一個框,用於定義包含偵測到物件的區域,框的邊界即物件的邊界。
在 Custom Vision 的 **Predictions** 標籤中,預測結果會在發送進行預測的圖像上繪製邊界框。
![貨架上的4罐番茄醬預測結果顯示4個偵測分別為35.8%、33.5%、25.7%和16.6%](../../../../../translated_images/custom-vision-stock-prediction.942266ab1bcca3410ecdf23643b9f5f570cfab2345235074e24c51f285777613.tw.png)
在上圖中偵測到4罐番茄醬。結果中每個偵測到的物件都在圖像上疊加了一個紅色方框表示該物件的邊界框。
✅ 打開 Custom Vision 中的預測,查看邊界框。
邊界框由4個值定義上、左、高度和寬度。這些值的範圍是0-1表示位置是圖像大小的百分比。原點0,0位置是圖像的左上角因此上值是距離頂部的距離而邊界框的底部是上值加上高度。
![番茄醬罐頭的邊界框](../../../../../translated_images/bounding-box.1420a7ea0d3d15f71e1ffb5cf4b2271d184fac051f990abc541975168d163684.tw.png)
上圖的寬度為600像素高度為800像素。邊界框從320像素開始給出上座標為0.4800 x 0.4 = 320。從左側開始邊界框從240像素開始給出左座標為0.4600 x 0.4 = 240。邊界框的高度為240像素給出高度值為0.3800 x 0.3 = 240。邊界框的寬度為120像素給出寬度值為0.2600 x 0.2 = 120
| 座標 | 值 |
| --------- | ----: |
| 上 | 0.4 |
| 左 | 0.4 |
| 高度 | 0.3 |
| 寬度 | 0.2 |
使用0-1的百分比值意味著無論圖像被縮放到什麼大小邊界框都會從0.4的位置開始並且高度為0.3寬度為0.2。
你可以結合邊界框和概率來評估偵測的準確性。例如,物件偵測器可能會偵測到多個重疊的物件,例如偵測到一個罐頭在另一個罐頭內。你的程式碼可以檢查邊界框,判斷這是不可能的,並忽略任何與其他物件有顯著重疊的物件。
![兩個邊界框重疊在一罐番茄醬上](../../../../../translated_images/overlap-object-detection.d431e03cae75072a2760430eca7f2c5fdd43045bfd72dadcbf12711f7cd6c2ae.tw.png)
在上例中一個邊界框表示預測的番茄醬罐頭概率為78.3%。第二個邊界框稍小位於第一個邊界框內概率為64.3%。你的程式碼可以檢查邊界框,發現它們完全重疊,並忽略較低的概率,因為不可能一個罐頭在另一個罐頭內。
✅ 你能想到哪些情境下偵測一個物件在另一個物件內是合理的?
## 重新訓練模型
與影像分類器類似,你可以使用物聯網設備捕獲的數據重新訓練你的模型。使用這些真實世界的數據可以確保你的模型在物聯網設備上使用時效果良好。
與影像分類器不同,你不能僅僅標記一張影像。相反,你需要檢查模型偵測到的每個邊界框。如果框圍繞錯誤的物件,則需要刪除;如果位置不正確,則需要調整。
### 任務 - 重新訓練模型
1. 確保你已使用物聯網設備捕獲了一系列影像。
1.**Predictions** 標籤中選擇一張影像。你會看到紅色框表示偵測到的物件的邊界框。
1. 檢查每個邊界框。首先選擇它,你會看到一個彈出窗口顯示標籤。使用邊界框角上的控制點調整大小(如有必要)。如果標籤錯誤,使用 **X** 按鈕刪除並添加正確的標籤。如果邊界框不包含物件,使用垃圾桶按鈕刪除。
1. 完成後關閉編輯器,影像將從 **Predictions** 標籤移至 **Training Images** 標籤。對所有預測重複此過程。
1. 使用 **Train** 按鈕重新訓練你的模型。訓練完成後,發佈迭代版本並更新你的物聯網設備以使用新迭代版本的 URL。
1. 重新部署你的程式碼並測試你的物聯網設備。
## 計算庫存
結合偵測到的物件數量和邊界框,你可以計算貨架上的庫存。
### 任務 - 計算庫存
按照以下相關指南,使用物件偵測器的結果從你的物聯網設備計算庫存:
* [Arduino - Wio Terminal](wio-terminal-count-stock.md)
* [單板電腦 - Raspberry Pi/虛擬設備](single-board-computer-count-stock.md)
---
## 🚀 挑戰
你能偵測到錯誤的庫存嗎?訓練你的模型以識別多種物件,然後更新你的應用程式以在偵測到錯誤的庫存時發出警報。
甚至可以進一步嘗試偵測同一貨架上的並排庫存,並通過定義邊界框的限制來檢查是否有物品放錯位置。
## 課後測驗
[課後測驗](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/40)
## 回顧與自學
* 從 [Microsoft Docs 的邊緣模式指南](https://docs.microsoft.com/hybrid/app-solutions/pattern-out-of-stock-at-edge?WT.mc_id=academic-17441-jabenn) 學習如何架構端到端的庫存偵測系統。
* 觀看 [零售解決方案幕後揭秘 - Hands On!](https://www.youtube.com/watch?v=m3Pc300x2Mw) 的 YouTube 影片,了解如何結合多種物聯網和雲端服務構建端到端的零售解決方案。
## 作業
[在邊緣使用你的物件偵測器](assignment.md)
**免責聲明**
本文件使用 AI 翻譯服務 [Co-op Translator](https://github.com/Azure/co-op-translator) 進行翻譯。雖然我們致力於提供準確的翻譯,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於關鍵資訊,建議使用專業人工翻譯。我們對因使用此翻譯而產生的任何誤解或錯誤解釋不承擔責任。