跳至主要内容

訓練水果品質檢測器

本課程概述的手繪筆記

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

這段影片概述了 Azure Custom Vision 服務,這是一個將在本課程中介紹的服務。

Custom Vision – 機器學習變得簡單 | The Xamarin Show

🎥 點擊上方圖片觀看影片

課前測驗

課前測驗

介紹

近年來,人工智慧 (AI) 和機器學習 (ML) 的興起為當今的開發者提供了廣泛的能力。ML 模型可以被訓練來識別圖像中的不同事物,包括未成熟的水果,這可以用於物聯網設備中,幫助在收穫時或在工廠或倉庫的加工過程中對農產品進行分類。

在本課程中,您將學習圖像分類 - 使用 ML 模型來區分不同事物的圖像。您將學習如何訓練圖像分類器來區分好的水果和壞的水果,包括未成熟的、過熟的、受損的或腐爛的水果。

在本課程中,我們將涵蓋:

使用 AI 和 ML 來分類食品

養活全球人口是困難的,尤其是在讓所有人都能負擔得起的價格下。最大的成本之一是勞動力,因此農民越來越多地轉向自動化和物聯網等工具來降低勞動成本。手工收割是勞動密集型(且經常是艱苦的工作),在富裕國家尤其被機械取代。儘管使用機械收割節省了成本,但也有一個缺點 - 無法在收割時對食品進行分類。

並非所有作物都均勻成熟。例如,番茄在大多數果實準備收割時,藤上仍可能有一些綠色果實。雖然提前收割這些果實是一種浪費,但對農民來說,使用機械收割所有果實並在後期處理未成熟的農產品更便宜、更容易。

✅ 看看附近農場或您花園裡的不同水果或蔬菜,或者在商店裡。它們是否都成熟一致,還是有變化?

自動化收割的興起將農產品的分類從收割移到了工廠。食品會在長長的傳送帶上運輸,團隊會挑選出不符合質量標準的農產品。由於機械化收割,收割成本降低了,但手動分類食品仍然有成本。

如果檢測到紅色番茄,它會繼續前進。如果檢測到綠色番茄,它會被槓桿彈入廢物箱

下一步發展是使用機器進行分類,無論是內置於收割機中,還是在加工廠中。第一代這些機器使用光學傳感器檢測顏色,控制執行器將綠色番茄推入廢物箱,使用槓桿或空氣噴射,讓紅色番茄繼續在傳送帶網絡上前進。

在這段影片中,當番茄從一條傳送帶掉到另一條傳送帶時,綠色番茄被檢測到並用槓桿彈入廢物箱。

✅ 在工廠或田地中,這些光學傳感器需要什麼條件才能正常工作?

最新一代的這些分類機器利用 AI 和 ML,使用訓練過的模型來區分好的農產品和壞的農產品,不僅僅是通過顏色差異(如綠色番茄與紅色番茄),還通過更微妙的外觀差異來指示疾病或損傷。

通過機器學習進行圖像分類

傳統編程是將數據應用於算法並獲得輸出。例如,在上一個項目中,您將 GPS 坐標和地理圍欄應用於 Azure Maps 提供的算法,並獲得該點是否在地理圍欄內或外的結果。您輸入更多數據,您獲得更多輸出。

傳統開發是將輸入和算法應用並獲得輸出。機器學習使用輸入和輸出數據來訓練模型,該模型可以使用新輸入數據生成新輸出

機器學習將這一過程顛倒過來 - 您從數據和已知輸出開始,機器學習算法從數據中學習。然後,您可以使用這個訓練好的算法,稱為 機器學習模型模型,輸入新數據並獲得新輸出。

🎓 機器學習算法從數據中學習的過程稱為 訓練。輸入和已知輸出稱為 訓練數據

例如,您可以給模型提供數百萬張未成熟香蕉的圖片作為輸入訓練數據,訓練輸出設置為 未成熟,並提供數百萬張成熟香蕉的圖片作為訓練數據,輸出設置為 成熟。ML 算法將基於這些數據創建一個模型。然後,您給這個模型一張新的香蕉圖片,它將預測這張新圖片是成熟的還是未成熟的香蕉。

🎓 ML 模型的結果稱為 預測

2 根香蕉,一根成熟的預測為 99.7% 成熟,0.3% 未成熟,另一根未成熟的預測為 1.4% 成熟,98.6% 未成熟

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 訪問。

Azure Custom Vision 標誌

💁 您可以使用每個分類至少 5 張圖片來訓練自定義視覺模型,但更多更好。至少 30 張圖片可以獲得更好的結果。

Custom Vision 是 Microsoft 提供的一系列 AI 工具的一部分,稱為 Cognitive Services。這些是可以在無需任何訓練或僅需少量訓練的情況下使用的 AI 工具。它們包括語音識別和翻譯、語言理解和圖像分析。這些服務在 Azure 中提供免費層。

💁 免費層足以創建模型、訓練它,然後用於開發工作。您可以在 Microsoft 文檔上的 Custom Vision 限制和配額頁面 上閱讀免費層的限制。

任務 - 創建認知服務資源

要使用 Custom Vision,您首先需要使用 Azure CLI 在 Azure 中創建兩個認知服務資源,一個用於 Custom Vision 訓練,另一個用於 Custom Vision 預測。

  1. 為此項目創建一個名為 fruit-quality-detector 的資源組

  2. 使用以下命令創建一個免費的 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。

  1. 使用以下命令創建一個免費的 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 選項表示您同意認知服務的條款和條件。

任務 - 創建圖像分類器項目

  1. 啟動 Custom Vision 入口網站 CustomVision.ai,並使用您用於 Azure 帳戶的 Microsoft 帳戶登錄。

  2. 按照 Microsoft 文檔上的 構建分類器快速入門的創建新項目部分 創建一個新的 Custom Vision 項目。UI 可能會更改,這些文檔始終是最新的參考。

    將您的項目命名為 fruit-quality-detector

    創建項目時,請確保使用您之前創建的 fruit-quality-detector-training 資源。使用 分類 項目類型,多類 分類類型和 食品 領域。

    自定義視覺項目的設置,名稱設置為 fruit-quality-detector,無描述,資源設置為 fruit-quality-detector-training,項目類型設置為分類,分類類型設置為多類,領域設置為食品

✅ 花些時間探索您的圖像分類器的 Custom Vision UI。

任務 - 訓練您的圖像分類器項目

要訓練圖像分類器,您需要多張水果的圖片,包括好的和壞的品質,並標記為好和壞,例如成熟和過熟的香蕉。

💁 這些分類器可以對任何圖像進行分類,因此如果您手邊沒有不同品質的水果,您可以使用兩種不同類型的水果,或貓和狗!

理想情況下,每張圖片應該只有水果,背景要麼是一致的,要麼是多樣的。確保背景中沒有與成熟或未成熟水果相關的特定物品。

💁 重要的是不要有特定的背景,或與每個標籤無關的特定物品,否則分類器可能只會根據背景進行分類。有一個皮膚癌分類器,它被訓練用於正常和癌變的痣,癌變的痣旁邊都有尺子來測量大小。結果分類器幾乎 100% 準確地識別圖片中的尺子,而不是癌變的痣。

圖像分類器以非常低的分辨率運行。例如,Custom Vision 可以接受高達 10240x10240 的訓練和預測圖像,但在 227x227 的圖像上訓練和運行模型。較大的圖像會縮小到這個大小,因此確保您要分類的物品佔據圖片的大部分,否則在分類器使用的較小圖像中可能太小。

  1. 收集您的分類器的圖片。每個標籤至少需要 5 張圖片來訓練分類器,但越多越好。您還需要一些額外的圖片來測試分類器。這些圖片應該都是同一事物的不同圖片。例如:

    • 使用 2 根成熟的香蕉,從不同角度拍攝每根香蕉的幾張圖片,至少拍攝 7 張圖片(5 張用於訓練,2 張用於測試),但理想情況下更多。

      2 根不同香蕉的照片

    • 使用 2 根未成熟的香蕉重複相同的過程

    您應該至少有 10 張訓練圖片,至少 5 張成熟和 5 張未成熟,還有 4 張測試圖片,2 張成熟,2 張未成熟。您的圖片應該是 png 或 jpeg 格式,小於 6MB。如果您使用 iPhone 創建它們,它們可能是高分辨率的 HEIC 圖片,因此需要轉換並可能縮小。圖片越多越好,並且應該有相似數量的成熟和未成熟。

    如果您沒有成熟和未成熟的水果,您可以使用不同的水果,或任何您手邊的兩個物品。您還可以在 images 文件夾中找到一些成熟和未成熟香蕉的示例圖片,供您使用。

  2. 按照 Microsoft 文檔上的 構建分類器快速入門的上傳和標記圖片部分 上傳您的訓練圖片。將成熟的水果標記為 成熟,未成熟的水果標記為 未成熟

    上傳對話框顯示上傳成熟和未成熟香蕉圖片

  3. 按照 Microsoft 文檔上的 構建分類器快速入門的訓練分類器部分 訓練圖像分類器,使用您上傳的圖片。

    您將被要求選擇訓練類型。選擇 快速訓練

分類器將開始訓練。訓練完成需要幾分鐘。

🍌 如果您在分類器訓練期間決定吃掉您的水果,請確保您有足夠的圖片進行測試!

測試您的圖像分類器

一旦您的分類器訓練完成,您可以通過給它一張新圖片來測試它。

任務 - 測試您的圖像分類器

  1. 按照 Microsoft 文檔上的 測試您的模型文檔 測試您的圖像分類器。使用您之前創建的測試圖片,而不是任何訓練圖片。

    一根未成熟的香蕉預測為 98.9% 未成熟,1.1% 成熟

  2. 嘗試所有您擁有的測試圖片並觀察概率。

重新訓練您的圖像分類器

當您測試您的分類器時,它可能不會給出您期望的結果。圖像分類器使用機器學習來對圖像中的內容進行預測,基於特定特徵的概率來匹配特定標籤。它不理解圖像中的內容 - 它不知道香蕉是什麼,也不理解什麼使香蕉成為香蕉而不是船。您可以通過使用錯誤的圖片重新訓練分類器來改進它。

每次您使用快速測試選項進行預測時,圖片和結果都會被存儲。您可以使用這些圖片重新訓練您的模型。

任務 - 重新訓練您的圖像分類器

  1. 按照 Microsoft 文檔上的 使用預測圖片進行訓練文檔 重新訓練您的模型,使用每張圖片的正確標籤。

  2. 一旦您的模型重新訓練完成,請使用新圖片進行測試。


🚀 挑戰

如果您使用一張草莓的圖片來測試一個訓練了香蕉的模型,或者使用一張充氣香蕉的圖片,或者一個穿著香蕉服的人,甚至是一個黃色的卡通人物(如辛普森一家)會發生什麼?

試試看,看看預測結果是什麼。您可以使用 Bing 圖片搜索 找到圖片進行嘗試。

課後測驗

課後測驗

回顧與自學

作業

訓練您的分類器來識別多種水果和蔬菜