訓練水果品質檢測器
手繪筆記由 Nitya Narasimhan 提供。點擊圖片查看大圖。
這段影片概述了 Azure Custom Vision 服務,這是一個將在本課程中介紹的服務。
🎥 點擊上方圖片觀看影片
課前測驗
介紹
近年來,人工智慧 (AI) 和機器學習 (ML) 的興起為當今的開發者提供了廣泛的能力。ML 模型可以被訓練來識別圖像中的不同事物,包括未成熟的水果,這可以用於物聯網設備中,幫助在收穫時或在工廠或倉庫的加工過程中對農產品進行分類。
在本課程中,您將學習圖像分類 - 使用 ML 模型來區分不同事物的圖像。您將學習如何訓練圖像分類器來區分好的水果和壞的水果,包括未成熟的、過熟的、受損的或腐爛的水果。
在本課程中,我們將涵蓋:
使用 AI 和 ML 來分類食品
養活全球人口是困難的,尤其是在讓所有人都能負擔得起的價格下。最大的成本之一是勞動力,因此農民越來越多地轉向自動化和物聯網等工具來降低勞動成本。手工收割是勞動密集型(且經常是艱苦的工作),在富裕國家尤其被機械取代。儘管使用機械收割節省了成本,但也有一個缺點 - 無法在收割時對食品進行分類。
並非所有作物都均勻成熟。例如,番茄在大多數果實準備收割時,藤上仍可能有一些綠色果實。雖然提前收割這些果實是一種浪費,但對農民來說,使用機械收割所有果實並在後期處理未成熟的農產品更便宜、更容易。
✅ 看看附近農場或您花園裡的不同水果或蔬菜,或者在商店裡。它們是否都成熟一致,還是有變化?
自動化收割的興起將農產品的分類從收割移到了工廠。食品會在長長的傳送帶上運輸,團隊會挑選出不符合質量標準的農產品。由於機械化收割,收割成本降低了,但手動分類食品仍然有成本。
下一步發展是使用機器進行分類,無論是內置於收割機中,還是在加工廠中。第一代這些機器使用光學傳感器檢測顏色,控制執行器將綠色番茄推入廢物箱,使用槓桿或空氣噴射,讓紅色番茄繼續在傳送帶網絡上前進。
在這段影片中,當番茄從一條傳送帶掉到另一條傳送帶時,綠色番茄被檢測到並用槓桿彈入廢物箱。
✅ 在工廠或田地中,這些光學傳感器需要什麼條件才能正常工作?
最新一代的這些分類機器利用 AI 和 ML,使用訓練過的模型來區分好的農產品和壞的農產品,不僅僅是通過顏色差異(如綠色番茄與紅色番茄),還通過更微妙的外觀差異來指示疾病或損傷。
通過機器學習進行圖像分類
傳統編程是將數據應用於算法並獲得輸出。例如,在上一個項目中,您將 GPS 坐標和地理圍欄應用於 Azure Maps 提供的算法,並獲得該點是否在地理圍欄內或外的結果。您輸入更多數據,您獲得更多輸出。
機器學習將這一過程顛倒過來 - 您從數據和已知輸出開始,機器學習算法從數據中學習。然後,您可以使用這個訓練好的算法,稱為 機器學習模型 或 模型,輸入新數據並獲得新輸出。
🎓 機器學習算法從數據中學習的過程稱為 訓練。輸入和已知輸出稱為 訓練數據。
例如,您可以給模型提供數百萬張未成熟香蕉的圖片作為輸入訓練數據,訓練輸出設置為 未成熟
,並提供數百萬張成熟香蕉的圖片作為訓練數據,輸出設置為 成熟
。ML 算法將基於這些數據創建一個模型。然後,您給這個模型一張新的香蕉圖片,它將預測這張新圖片是成熟的還是未成熟的香蕉。
🎓 ML 模型的結果稱為 預測
ML 模型不會給出二元答案,而是給出概率。例如,一個模型可能會給一張香蕉的圖片預測 成熟
為 99.7%,未成熟
為 0.3%。您的代碼將選擇最佳預測並決定香蕉是成熟的。
用於檢測這類圖像的 ML 模型稱為 圖像分類器 - 它被給予標記的圖像,然後根據這些標籤分類新圖像。
💁 這是一個過度簡化的說明,還有許多其他訓練模型的方法,不一定需要標記的輸出,例如無監督學習。如果您想了解更多關於 ML 的知識,請查看 ML 初學者,24 節課的機器學習課程。
訓練圖像分類器
要成功訓練圖像分類器,您需要數百萬張圖片。事實證明,一旦您擁有一個訓練了數百萬或數十億張各種圖片的圖像分類器,您可以使用少量圖片重新訓練它並獲得很好的結果,這個過程稱為 遷移學習。
🎓 遷移學習是將現有 ML 模型的學習轉移到基於新數據的新模型上。
一旦圖像分類器已經針對各種圖片進行了訓練,它的內部結構就非常擅長識別形狀、顏色和圖案。遷移學習允許模型利用它已經學會的識別圖像部分的能力,來識別新圖像。
您可以將其視為類似於兒童的形狀書,一旦您能識別半圓形、矩形和三角形,您就可以根據這些形狀的配置識別出帆船或貓。圖像分類器可以識別形狀,而遷移學習則教它什麼組合構成船或貓 - 或成熟的香蕉。
有各種各樣的工具可以幫助您做到這一點,包括基於雲的服務,這些服務可以幫助您訓練模型,然後通過 Web API 使用它。
💁 訓練這些模型需要大量的計算能力,通常通過圖形處理單元(GPU)來實現。使您的 Xbox 遊戲看起來很棒的同樣專用硬件也可以用來訓練機器學習模型。通過使用雲,您可以租用強大計算機的時間來訓練這些模型,僅在您需要的時間內獲得所需的計算能力。
Custom Vision
Custom Vision 是一個基於雲的工具,用於訓練圖像分類器。它允許您僅使用少量圖片來訓練分類器。您可以通過 Web 入口、Web API 或 SDK 上傳圖片,為每張圖片提供一 個 標籤,該標籤是該圖片的分類。然後,您可以訓練模型,並測試其性能。一旦您對模型感到滿意,您可以發布其版本,這些版本可以通過 Web API 或 SDK 訪問。
💁 您可以使用每個分類至少 5 張圖片來訓練自定義視覺模型,但更多更好。至少 30 張圖片可以獲得更好的結果。
Custom Vision 是 Microsoft 提供的一系列 AI 工具的一部分,稱為 Cognitive Services。這些是可以在無需任何訓練或僅需少量訓練的情況下使用的 AI 工具。它們包括語音識別和翻譯、語言理解和圖像分析。這些服務在 Azure 中提供免費層。
💁 免費層足以創建模型、訓練它,然後用於開發工作。您可以在 Microsoft 文檔上的 Custom Vision 限制和配額頁面 上閱讀免費層的限制。
任務 - 創建認知服務資源
要使用 Custom Vision,您首先需要使用 Azure CLI 在 Azure 中創建兩個認知服務資源,一個用於 Custom Vision 訓練,另一個用於 Custom Vision 預測。
-
為此項目創建一個名為
fruit-quality-detector
的資源組 -
使用以下命令創建一個免費的 Custom Vision 訓練 資源:
az cognitiveservices account create --name fruit-quality-detector-training \
--resource-group fruit-quality-detector \
--kind CustomVision.Training \
--sku F0 \
--yes \
--location <location>將
<location>
替換為創建資源組時使用的位置。這將在您的資源組中創建一個 Custom Vision 訓練資源。它將被稱為
fruit-quality-detector-training
,並使用F0
sku,這是免費層。--yes
選項表示您同意認知服務的條款和條件。
💁 如果您已經有一個免費帳戶使用任何認知服務,請使用
S0
sku。
-
使用以下命令創建一個免費的 Custom Vision 預測資源:
az cognitiveservices account create --name fruit-quality-detector-prediction \
--resource-group fruit-quality-detector \
--kind CustomVision.Prediction \
--sku F0 \
--yes \
--location <location>將
<location>
替換為創建資源組時使用的位置。這將在您的資源組中創建一個 Custom Vision 預測資源。它將被稱為
fruit-quality-detector-prediction
,並使用F0
sku,這是免費層。--yes
選項表示您同意認知服務的條款和條件。
任務 - 創建圖像分類器項目
-
啟動 Custom Vision 入口網站 CustomVision.ai,並使用您用於 Azure 帳戶的 Microsoft 帳戶登錄。
-
按照 Microsoft 文檔上的 構建分類器快速入門的創建新項目部分 創建一個新的 Custom Vision 項目。UI 可能會更改,這些文檔始終是最新的參考。
將您的項目命名為
fruit-quality-detector
。創建項目時,請確保使用您之前創建的
fruit-quality-detector-training
資源。使用 分類 項目類型,多類 分類類型和 食品 領域。
✅ 花些時間探索您的圖像分類器的 Custom Vision UI。
任務 - 訓練您的圖像分類器項目
要訓練圖像分類器,您需要多張水果的圖片,包括好的和壞的品質,並標記為好和壞,例如成熟和過熟的香蕉。
💁 這些分類器可以對任何圖像進行分類,因此如果您手邊沒有不同品質的水果,您可以使用兩種不同類型的水果,或貓和狗!
理想情況下,每張圖片應該只有水果,背景要麼是一致的,要麼是多樣的。確保背景中沒有與成熟或未成熟水果相關的特定物品。
💁 重要的是不要有特定的背景,或與每個標籤無關的特定物品,否則分類器可能只會根據背景進行分類。有一個皮膚癌分類器,它被訓練用於正常和癌變的痣,癌變的痣旁邊都有尺子來測量大小。結果分類器幾乎 100% 準確地識別圖片中的尺子,而不是癌變的痣。
圖像分類器以非常低的分辨率運行。例如,Custom Vision 可以接受高達 10240x10240 的訓練和預測圖像,但在 227x227 的圖像上訓練和運行模型。較大的圖像會縮小到這個大小,因此確保您要分類的物品佔據圖片的大部分,否則在分類器使用的較小圖像中可能太小。
-
收集您的分類器的圖片 。每個標籤至少需要 5 張圖片來訓練分類器,但越多越好。您還需要一些額外的圖片來測試分類器。這些圖片應該都是同一事物的不同圖片。例如:
-
使用 2 根成熟的香蕉,從不同角度拍攝每根香蕉的幾張圖片,至少拍攝 7 張圖片(5 張用於訓練,2 張用於測試),但理想情況下更多。
-
使用 2 根未成熟的香蕉重複相同的過程
您應該至少有 10 張訓練圖片,至少 5 張成熟和 5 張未成熟,還有 4 張測試圖片,2 張成熟,2 張未成熟。您的圖片應該是 png 或 jpeg 格式,小於 6MB。如果您使用 iPhone 創建它們,它們可能是高分辨率的 HEIC 圖片,因此需要轉換並可能縮小。圖片越多越好,並且應該有相似數量的成熟和未成熟。
如果您沒有成熟和未成熟的水果,您可以使用不同的水果,或任何您手邊的兩個物品。您還可以在 images 文件夾中找到一些成熟和未成熟香蕉的示例圖片,供您使用。
-
-
按照 Microsoft 文檔上的 構建分類器快速入門的上傳和標記圖片部分 上傳您的訓練圖片。將成熟的水果標記為
成熟
,未成熟的水果標記為未成熟
。 -
按照 Microsoft 文檔上的 構建分類器快速入門的訓練分類器部分 訓練圖像分類器,使用您上傳的圖片。
您將被要求選擇訓練類型。選擇 快速訓練。
分類器將開始訓練。訓練完成需要幾分鐘。
🍌 如果您在分類器訓練期間決定吃掉您的水果,請確保您有足夠的圖片進行測試!
測試您的圖像分類器
一旦您的分類器訓練完成,您可以通過給它一張新圖片來測試它。
任務 - 測試您的圖像分類器
-
按照 Microsoft 文檔上的 測試您的模型文檔 測試您的圖像分類器。使用您之前創建的測試圖片,而不是任何訓練圖片。
-
嘗試所有您擁有的測試圖片並觀察概率。
重新訓練您的圖像分類器
當您測試您的分類器時,它可能不會給出您期望的結果。圖像分類器使用機器學習來對圖像中的內容進行預測,基於特定特徵的概率來匹配特定標籤。它不理解圖像中的內容 - 它不知道香蕉是什麼,也不理解什麼使香蕉成為香蕉而不是船。您可以通過使用錯誤的圖片重新訓練分類器來改進它。
每次您使用快速測試選項進行預測時,圖片和結果都會被存儲。您可以使用這些圖片重新訓練您的模型。
任務 - 重新訓練您的圖像分類器
-
按照 Microsoft 文檔上的 使用預測圖片進行訓練文檔 重新訓練您的模型,使用每張圖片的正確標籤。
-
一旦您的模型重新訓練完成,請使用新圖片進行測試。
🚀 挑戰
如果您使用一張草莓的圖片來測試一個訓練了香蕉的模型,或者使用一張充氣香蕉的圖片,或者一個穿著香蕉服的人,甚至是一個黃色的卡通人物(如辛普森一家)會發生什麼?
試試看,看看預測結果是什麼。您可以使用 Bing 圖片搜索 找到圖片進行嘗試。
課後測驗
回顧與自學
- 當您訓練您的分類器時,您會看到 精度、召回率 和 AP 的值,這些值評價了創建的模型。閱讀 Microsoft 文檔上的構建分類器快速入門的評估分類器部分 了解這些值是什麼
- 閱讀 Microsoft 文檔上的如何改進您的 Custom Vision 模型 了解如何改進您的分類器