訓練一個庫存檢測器
手繪圖由 Nitya Narasimhan 提供。點擊圖片查看大圖。
這段視頻概述了 Azure Custom Vision 服務中的物體檢測,這是一個將在本課程中介紹的服務。
🎥 點擊上方圖片觀看視頻
課前測驗
介紹
在上一個項目中,你使用 AI 訓練了一個圖像分類器 - 一個可以判斷圖像中是否包含某些東西的模型,例如成熟的水果或未成熟的水果。另一種類型的 AI 模型可以用於圖像是物體檢測。這些模型不會通過標籤來分類圖像,而是訓練來識別物體,並且可以在圖像中找到它們,不僅檢測圖像中是否存在物 體,還能檢測物體在圖像中的位置。這使你可以計算圖像中的物體數量。
在本課程中,你將學習物體檢測,包括它在零售中的應用。你還將學習如何在雲端訓練一個物體檢測器。
在本課程中我們將涵蓋:
物體檢測
物體檢測涉及使用 AI 檢測圖像中的物體。與你在上一個項目中訓練的圖像分類器不同,物體檢測不是關於預測整個圖像的最佳標籤,而是關於在圖像中找到一個或多個物體。
物體檢測與圖像分類
圖像分類是關於對整個圖像進行分類 - 整個圖像與每個標籤匹配的概率是多少。你會得到用於訓練模型的每個標籤的概率。
在上面的例子中,兩個圖像使用一個訓練來分類腰果罐或番茄醬罐的模型進行分類。第一個圖像是一個腰果罐,並且有兩個來自圖像分類器的結果:
標籤 | 概率 |
---|---|
腰果 | 98.4% |
番茄醬 | 1.6% |
第二個圖像是一個番茄醬罐,結果是:
標籤 | 概率 |
---|---|
腰果 | 0.7% |
番茄醬 | 99.3% |
你可以使用這些值與一個閾值百分比來預測圖像中是什麼。但是如果一個圖像中包含多個番茄醬罐,或者同時包含腰果和番茄醬呢?結果可能不會給你想要的答案。這就是物體檢測的用武之地。
物體檢測涉及訓練一個模型來識別物體。與其給它包含物體的圖像並告訴它每個圖像是一個標籤或另一個標籤,不如突出圖像中包含特定物體的部分,並標記它。你可以在圖像中標記單個物體或多個物體。這樣模型學會了物體本身的樣子,而不僅僅是包含物體的圖像的樣子。
當你用它來預測圖像時,不是得到一個標籤和百分比的列表,而是得到一個檢測到的物體列表,帶有它們的邊界框和該物體與分配標籤匹配的概率。
🎓 邊界框 是圍繞物體的框。
上面的圖像包含一個腰果罐和三個番茄醬罐。物體檢測器檢測到了腰果,返回了包含腰果的邊界框,並且該邊界框包含該物體的概率為 97.6%。物體檢測器還檢測到了三個番茄醬罐,並提供了三個單獨的邊界框,每個檢測到的罐子都有一個概率,表示該邊界框包含一個番茄醬罐。
✅ 想一想你可能想要使用基於圖像的 AI 模型的不同場景。哪些需要分類,哪些需要物體檢測?
物體檢測的工作原理
物體檢測使用複雜的機器學習模型。這些模型通過將圖像分成多個單元格來工作,然後檢查邊界框的中心是否是與用於訓練模型的圖像匹配的圖像的中心。你可以將其視為在圖像的不同部分運行圖像分類器以查找匹配項。
💁 這是一個極大的簡化。物體檢測有很多技術,你可以在 維基百科上的物體檢測頁面 上閱讀更多相關內容。
有許多不同的模型可以進行物體檢測。一個特別著名的模型是 YOLO (You only look once),它非常快,可以檢測 20 種不同類別的物體,例如人、狗、瓶子和汽車。
✅ 閱讀 YOLO 模型的更多信息,請訪問 pjreddie.com/darknet/yolo/
物體檢測模型可以使用遷移學習重新訓練以檢測自定義物體。
在零售中使用物體檢測
物體檢測在零售中有多種用途。一些包括:
- 庫存檢查和計數 - 識別貨架上的庫存是否不足。如果庫存過低,可以向員工或機器人發送通知以重新補貨。
- 口罩檢測 - 在公共衛生事件期間有口罩政策的商店中,物體檢測可以識別戴口罩和未戴口罩的人。
- 自動結算 - 在自動化商店中檢測從貨架上取下的物品並適當地向顧客收費。
- 危險檢測 - 識別地板上的破損物品或溢出的液體,通知清潔人員。
✅ 做一些研究:物體檢測在零售中的更多用途有哪些?
訓練一個物體檢測器
你可以使用 Custom Vision 訓練一個物體檢測器,方法類似於你訓練圖像分類器的方式。
任務 - 創建一個物體檢測器
-
為此項目創建一個名為
stock-detector
的資源組 -
在
stock-detector
資源組中創建一個免費的 Custom Vision 訓練資源和一個免費的 Custom Vision 預測資源。將它們命名為stock-detector-training
和stock-detector-prediction
。💁 你只能有一個免費的訓練和預測資源,所以請確保你已經清理了之前課程中的項目。
⚠️ 你可以參考 項目 4,課程 1 中創建訓練和預測資源的說明。
-
啟動 Custom Vision 入口網站 CustomVision.ai,並使用你用於 Azure 帳戶的 Microsoft 帳戶登錄。
-
按照 Microsoft 文檔中構建物體檢測器快速入門的創建新項目部分來創建一個新的 Custom Vision 項目。用戶界面可能會改變,這些文檔始終是最新的參考資料。
將你的項目命名為
stock-detector
。當你創建項目時,請確保使用你之前創建的
stock-detector-training
資源。使用 Object Detection 項目類型和 Products on Shelves 域。✅ Products on Shelves 域專門針對檢測貨架上的庫存。請在 Microsoft Docs 的選擇域文檔中閱讀更多有關不同域的信息。
✅ 花一些時間探索你的物體檢測器的 Custom Vision 用戶界面。
任務 - 訓練你的物體檢測器
要訓練你的模型,你需要一組包含你想要檢測的物體的圖像。
-
收集包含要檢測物體的圖像。你需要至少 15 張包含每個物體的圖像,這些圖像應該來自不同的角度和不同的光照條件,但越多越好。這個物體檢測器使用 Products on Shelves 域,所以嘗試將物體設置為像在商店貨架上一樣。你還需要一些圖像來測試模型。如果你要檢測多個物體,你會希望有一些包含所有物體的測試圖像。
💁 包含多個不同物體的圖像計入所有圖像中每個物體的 15 張圖像最低要求。
你的圖像應該是 png 或 jpeg 格式,小於 6MB。如果你用 iPhone 創建它們,它們可能是高分辨率的 HEIC 圖像,因此需要轉換並可能縮小。圖像越多越好,你應該有相似數量的成熟和未成熟的圖像。
該模型專為貨架上的產品設計,因此嘗試在貨架上拍攝物體的照片。
你可以在 images 文件夾中找到一些腰果和番茄醬的示例圖像。
-
按照 Microsoft 文檔中構建物體檢測器快速入門的上傳和標記圖像部分來上傳你的訓練圖像。根據你想要檢測的物體類型創建相關標籤。
當你為物體繪製邊界框時,請將它們緊密地圍繞物體。標記所有圖像可能需要一段時間,但該工具會檢測它認為是邊界框的內容,使其更快。
💁 如果你每個物體有超過 15 張圖像,你可以在 15 張圖像後進行訓練,然後使用 建議標籤 功能。這將使用訓練好的模型來檢測未標記圖像中的物體。然後你可以確認檢測到的物體,或拒絕並重新繪製邊界框。這可以節省很多時間。
-
按照 Microsoft 文檔中構建物體檢測器快速入門的訓練檢測器部分來訓練你的物體檢測器。
你將有一個訓練類型的選擇。選擇 快速訓練。
物體檢測器將開始訓練。訓練完成需要幾分鐘。
測試你的物體檢測器
一旦你的物體檢測器訓練完成,你可以通過給它新的圖像來檢測物體來測試它。
任務 - 測試你的物體檢測器
-
使用 快速測試 按鈕上傳測試圖像並驗證物體是否被檢測到。使用你之前創建的測試圖像,而不是任何用於訓練的圖像。
-
嘗試你能夠訪問的所有測試圖像並觀察概率。
重新訓練你的物體檢測器
當你測試你的物體檢測器時,它可能不會給出你期望的結果,這與上一個項目中的圖像分類器相同。你可以通過使用錯誤的圖像重新訓練你的物體檢測器來改進它。
每次你使用快速測試選項進行預測時,圖像和結果都會被存儲。你可以使用這些圖像來重新訓練你的模型。
-
使用 預測 標籤來找到你用於測試的圖像
-
確認任何準確的檢測,刪除不正確的檢測並添加任何缺失的物體。
-
重新訓練並重新測試模型。
🚀 挑戰
如果你使用物體檢測器檢測相似的物品,例如同品牌的番茄醬罐和切碎的番茄罐,會發生什麼?
如果你有任何相似的物品,通過將它們的圖像添加到你的物體檢測器中來測試它。
課後測驗
回顧與自學
- 當你訓練你的物體檢測器時,你會看到 Precision、Recall 和 mAP 的值,這些值評價了創建的模型。使用 Microsoft 文檔中構建物體檢測器快速入門的評估檢測器部分來閱讀這些值是什麼。
- 在 維基百科上的物體檢測頁面上閱讀更多關於物體檢測的內容。