AI時代的網站與手機App建置與開發Part8 - 使用ML.NET執行影像分類

 ·       摘要

ML.NET不僅可以支援分類表格式的資料, 也可以分類影像資料. 在分類表格式的資料, 必須指定資料的某一個特徵為分類的結果, 例如在[AI時代的網站與手機App建置與開發Part4 - 整合ML.NETASP.NET Core MVC網站-建立訓練機器學習模型]這篇文章中就指定訓練資料中的class特徵為分類的結果, 如果要分類影像或聲音之類的資料, 因為無法經由人工挑選特徵, 所以必須使用深度學習技術來訓練技術學習模型.

在這篇文章中, 我們將要使用ML.NET程式庫, 利用其支援的深度學習功能訓練能夠執行影像辨識的機器學習模型.


文章範例下載:https://github.com/CraigIII/MLNetImageClassification.git

·        準備訓練資料

首先請準備訓練機器學習模型的素材, 也就是欲辨識的影像, 例如我們想要訓練機器學習模型辨識動物, 就要準備欲辨識的動物的圖片, 例如狗的圖片, 貓的圖片, 牛的圖片, 等等. 請將欲辨識的圖片統一放在同一個資料夾中.

·       建立專案並加入機器學習模型

請啟動Visual Studio建立型態為[ASP.NET Core MVC應用程式(Model-View-Controller)]型態的專案 然後使用滑鼠右鍵點選[方案總管]視窗中的專案名稱執行[加入 | 機器學習模型]功能做好之後請選擇[電腦視覺]項目的[影像分類], 您就會看到選擇機器學習執行環境的畫面如圖1所示;

1: 選擇機器學習執行環境的畫面

點選[下一步], 您會看到選擇訓練機器學習模型的環境的畫面, 如圖2所示:

2選擇訓練機器學習模型的環境的畫面

您可以選擇本機電腦的CPU環境, 本機電腦GPU環境, 或是Azure雲端環境來訓練機器學習模型. 選妥之後請點選[下一步], 您就會看到輸入訓練資料的畫面.

請將訓練圖片統一放在一個資料夾(例如名稱為images的資料夾)底下, 如下圖所示:


 請使用2選取資料夾功能選取存放有訓練影像的資料夾, 畫面上就會顯示所選擇的資料夾中的圖片的預覽, 如圖3所示:

3輸入妥訓練資料的畫面

準備妥訓練圖片之後請按下[下一步], 您就會看到執行訓練機器學習模型的畫面, 如圖4所示:

4: 執行訓練機器學習模型的畫面

點選[執行訓練], 並等待訓練完成. 訓練完成後請點選[下一步]鍵進入評估畫面. 請點選畫面中的[瀏覽影像]連結, 選取一張影像進行評估, 評估完成後您就會看到如圖5所示的畫面:

5: 評估訓練妥的機器學習模型的畫面

如果評估結果可以接受, 可以按下[下一步], 進入建立取用訓練妥機器學習模型的畫面, 如圖6所示, 如果評估結果不準確, 可以準備更多的訓練圖片, 再回到輸入訓練資料的畫面, 重新整理訓練影像, 並重新進行訓練與評估, 直到滿意訓練結果為止:

6: 建立取用訓練妥機器學習模型的畫面

請注意如果您想建立提供機器學習服務給眾多的應用程式使用, 可以選擇點選圖6畫面中的[Web API]項目右方的[新增至解決方案]連結, Visual Studio建立的Web API專案將會提供/predict端點供需要機器學習服務的應用程式呼叫使用. 如果所建立的機器學習模型只要支援自己建立的程式使用, 請點選圖6畫面中的[主控台應用程式]項目右方的[新增至解決方案]連結, Visual Studio建立叫用訓練妥機器學習模型的主控台應用程式專案.

請點選圖6畫面中的[Web API]項目右方的[新增至解決方案]連結, 執行建立[Web API]專案的動作, Visual Studio就會將訓練妥的機器學習模型部署到新建立的[Web API]專案當做Server程式.

做好之後請再點選圖6畫面中的[主控台應用程式]項目右方的[新增至解決方案]連結, Visual Studio建立叫用機器學習模型的主控台應用程式專案.

建立妥部署有機器學習模型的Server專案與Client專案之後, 請使用Visual Studio設定啟動專案, 將啟動專案設定成叫用機器學習模型的主控台應用程式專案.

設定完成之後請執行專案, 您就會看到Client專案將讀取的影像檔案的內容傳送給機器學習模型評估的結果, 如圖7所示:

7: Client專案將讀取的影像檔案的內容傳送給機器學習模型評估的結果

按下圖6畫面中的[下一步], 可以看到[部署您的模型], [Azure中訓練], [改進模型]三個選項, 點選這些選項可以獲取有關將訓練妥的機器學習模型部署到Microsoft Azure雲端平台, Azure雲端平台訓練機器學習模型, 和改進訓練妥的機器學習模型的相關文件.

·       後續處理

下一回我們將為大家示範如何將叫用部署有機器學習模型的Server專案程式碼移植到ASP.NET Core MVC網站專案或是MAUI跨平台手機App專案.

留言

這個網誌中的熱門文章

AI時代的網站與手機App建置與開發Part27 - ML.NET與物件偵測

AI時代的網站與手機App建置與開發Part28 - 使用YOLO模型進行物件偵測

AI時代的網站與手機App建置與開發Part24 - ML.NET與圖片異常偵測