共用方式為


使用模型產生器在 Azure 中定型影像分類模型

瞭解如何使用模型產生器在 Azure 中定型影像分類模型,以分類衛星影像中的陸地使用。

本教學課程說明如何建立 C# 類別庫,以使用模型產生器根據衛星影像來分類陸地使用。

在本教學課程中,您:

  • 準備並了解資料
  • 建立 Model Builder 組態檔
  • 選取情節
  • 載入資料
  • 在 Azure 中建立實驗
  • 將模型定型
  • 評估模型
  • 取用模型

必要條件

模型產生器影像分類概觀

此範例會建立 C# 類別庫,此程式庫會使用以模型產生器在 Azure 上定型的深度學習模型,將地圖衛星影像中的陸地使用分類。 您可以在 dotnet/machinelearning-samples GitHub 存放庫中找到本教學課程的原始程式碼

建立 C# 類別庫

建立名為 「LandUse」 的 C# 類別庫

準備並了解資料

注意

本教學課程的資料來自:

  • 性能:適用于陸地使用和陸地覆蓋分類的新型資料集和深度學習基準測試。 Patrick Helber、Benjamin Bischke、#Dengel、Damian Borth。 2019 年套用地球觀察和遠端感應器中所選主題的 IEEE 日誌。
  • EuroSAT 簡介:適用于陸地使用和陸地覆蓋分類的新型資料集和深度學習基準測試。 Patrick Helber、Benjamin Bischke、Patricks Dengel。 2018 年 IEEE 國際地理科學與遠端感應器,2018 年。

EuroSAT 資料集包含一組衛星影像,分成十個類別 (農業、工業、) 。 原始資料集包含 27,000 個影像。 為了方便起見,本教學課程只會使用這些影像的 2,000 個。

資料集

  1. 下載 EuroSAT 資料集 的子集,並將它儲存在您的電腦上任何位置。
  2. 將它解壓縮。

建立 Model Builder 組態檔

第一次將 Model Builder 新增至解決方案時,系統會提示您建立 mbconfig 檔案。 mbconfig 檔案會持續追蹤您在 Model Builder 中執行的一切動作,讓您重新開啟工作階段。

  1. 在方案總管中,以滑鼠右鍵按一下LandUse專案,然後選取 [新增 > 機器學習模型...]。
  2. 在對話方塊中,將 Model Builder 專案命名為 LandUse,然後按一下 [ 新增]。

選取情節

Model Builder 情節畫面

若要定型您的模型,您需要從模型產生器所提供的可用機器學習服務案例清單中選取。

在此範例中,工作是影像分類。 在模型產生器工具的案例步驟中,選取 影像分類 案例。

選取環境

Model Builder 可以根據所選取的案例,在不同的環境上執行定型。

選取 [Azure ] 作為您的環境,然後按一下 [ 設定工作區] 按鈕。

在 Azure 中建立實驗

Azure Machine Learning 實驗是必須在 Azure 上執行模型產生器訓練之前建立的資源。

實驗會封裝一或多個機器學習訓練執行的組態和結果。 實驗屬於特定工作區。 第一次建立實驗時,會在工作區中註冊其名稱。 如果使用相同的實驗名稱,則任何後續執行都會記錄為相同實驗的一部分。 否則便會建立新的實驗。

在 [建立新實驗] 對話方塊中,從 [訂用帳戶] 下拉式清單中選擇您的 訂用帳戶

建立工作區

工作區是 Azure Machine Learning 資源,可為在訓練執行過程中建立的所有 Azure Machine Learning 資源和成品提供集中位置。

  1. 在 [建立新實驗] 對話方塊中,選取[Machine Learning 工作區名稱] 下拉式清單旁的 [新增] 連結。

  2. 在 [建立新的工作區] 對話方塊中,于 [ Machine Learning 工作區名稱 ] 文字方塊中輸入 「landuse-wkspc」。

  3. 從 [區域] 下拉式清單中選擇[美國東部]。 區域是部署工作區和資源所在資料中心的地理位置。 建議您選擇靠近您或客戶所在位置的位置。

  4. 選取 [資源群組] 下拉式清單旁的 [新增] 連結。

    1. 在 [建立新的資源群組] 對話方塊中,于 [ 資源組名 ] 文字方塊中輸入 「landuse-rg」。
    2. 選取 [確定]。
  5. 從 [ 資源群組 ] 下拉式清單中選擇新建立的資源群組。

  6. 選取 [建立]。

    布建程式需要幾分鐘的時間。 系統會向 Azure 提出要求,以布建下列雲端資源:

    • Azure Machine Learning 工作區
    • Azure 儲存體帳戶
    • Azure Application Insights
    • Azure Container Registry
    • Azure 金鑰保存庫
  7. 布建程式完成後,請從 [建立新實驗] 對話方塊中的 [Machine Learning 工作區名稱 ] 下拉式清單中選擇新建立的工作區。

建立計算

Azure Machine Learning 計算是用於定型的雲端式 Linux VM。

  1. 在 [建立新實驗] 對話方塊中,選取 [計算名稱] 下拉式清單旁的 [新增] 連結。
  2. 在 [建立新的計算] 對話方塊中,于 [ 計算名稱 ] 文字方塊中輸入 「landuse-cpt」。
  3. 從 [計算大小] 下拉式清單中選擇[Standard_NC24]。 模型產生器會使用 GPU 優化的計算類型。 如需 GPU 優化計算類型的詳細資訊,請流覽 NC 系列 Linux VM 檔
  4. 選取 [建立]。 計算資源可能需要幾分鐘的時間才能布建。
  5. 布建程式完成後,請從 [建立新實驗] 對話方塊中的 [ 計算名稱 ] 下拉式清單中選擇新建立的工作區。
  6. 選取 [ 下一步] 按鈕以載入資料。

載入資料

  1. 在 Model Builder 工具的資料步驟中,選取 [選取資料夾] 文字方塊旁的按鈕。
  2. 使用檔案總管流覽並選取包含影像的解壓縮目錄。
  3. 選取 [下一步] 按鈕,以移至 Model Builder 工具中的下一個步驟。

將模型定型

Azure 上的定型僅適用于模型產生器影像分類案例。 用來定型這些模型的演算法是以 ResNet50 架構為基礎的深度類神經網路。 在模型定型程式期間,模型產生器會使用 ResNet50 演算法和設定來定型個別的模型,以尋找資料集的最佳執行模型。

開始訓練

設定工作區和計算類型之後,就可以完成建立實驗並開始訓練。

  1. 按一下 [ 開始訓練] 按鈕。

    定型程式需要一些時間,而且時間量可能會因選取的計算大小以及資料量而有所不同。 第一次定型模型時,您可能會預期定型時間稍長,因為必須布建資源。 您可以選取 Visual Studio中 Azure 入口網站 [監視目前執行] 連結,以追蹤執行的進度。

    在整個定型程式中,進度資料會顯示在訓練步驟的 [進度] 區段中。

    • [狀態] 會顯示定型程序的完成狀態。
    • [最佳正確性] 會顯示 Model Builder 到目前為止所找到執行效能最佳模型的正確性。 正確性越高,表示模型針對測試資料的預測越正確。
    • 演算法會顯示模型產生器到目前為止所執行的最佳執行演算法名稱。
  2. 定型完成後,請選取 [ 下一步] 按鈕以移動以評估模型。

評估模型

定型步驟的結果是一個具有最佳效能的模型。 在模型產生器工具的評估步驟中,[輸出] 區段中的 [詳細資料] 索引標籤會包含[演算法] 專案中效能最佳模型所使用的演算法,以及 [最佳模型詳細資料] 中[精確度] 專案中的計量。

如果您不滿意精確度計量,嘗試並改善模型精確度的一些簡單方式就是使用更多資料或增強現有的資料。 否則,請選取 [ 下一步] 按鈕,以移至模型產生器工具的最後一個步驟。

(選擇性) 取用模型

此步驟會有專案範本,可供您用來取用模型。 此步驟是選擇性的,您可以選擇最適合您使用模型需求的方法。

  • 主控台應用程式
  • Web API

主控台應用程式

將主控台應用程式新增至方案時,系統會提示您命名專案。

  1. 將主控台專案 命名為 LandUse_Console

  2. 按一下 [新增至解決方案],將專案新增至您目前的解決方案。

  3. 執行應用程式。

    程式所產生的輸出看起來應該會和以下程式碼片段相似:

    Predicted Label value: AnnualCrop
    
    Predicted Label scores: [0.9941197,3.3146807E-06,4.4344174E-06,0.000101028825,7.763133E-06,0.0015898133,0.0040994748,1.6308518E-06,6.265567E-05,1.0236401E-05]
    

Web API

將 Web API 新增至解決方案時,系統會提示您命名專案。

  1. 將 Web API 專案 命名為 LandUse_API

  2. 按一下 [新增至解決方案],將專案新增至您目前的解決方案。

  3. 執行應用程式。

  4. 開啟 Powershell 並輸入下列程式碼,其中 PORT 是應用程式正在接聽的連接埠。

    $body = @{
         ImageSource = <Image location on your local machine>
    }
    
     Invoke-RestMethod "https://localhost:<PORT>/predict" -Method Post -Body ($body | ConvertTo-Json) -ContentType "application/json"
    
  5. 如果成功,輸出看起來應該類似下列文字。

    output1                                           prediction score
    -------                                           ---------- -----
    {9.508701, -3.1025503, -2.8115153, 0.31449434...} AnnualCrop {0.9941197, 3.3146807E-06, 4.4344174E-06, 0.00010102882...
    

清除資源

如果您不再打算使用您所建立的 Azure 資源,請將其刪除。 這可防止您針對仍在執行中但未運用的資源付費。

  1. 流覽至Azure 入口網站,然後在入口網站功能表中選取[資源群組]。
  2. 從資源群組清單中,選取您建立的資源群組。 在此情況下,其為 「landuse-rg」。
  3. 選取 [刪除資源群組]。
  4. 在文字方塊中輸入資源組名 「landuse-rg」,然後選取 Enter

後續步驟

在本教學課程中,您已了解如何:

  • 準備並了解資料
  • 建立 Model Builder 組態檔
  • 選取情節
  • 載入資料
  • 在 Azure 中建立實驗
  • 將模型定型
  • 評估模型
  • 取用模型

嘗試其他其中一個模型產生器案例: