使用ML.NET訓練一個屬于自己的圖像分類模型,對圖像進行分類就這么簡單!
前言
今天大姚給大家分享一個.NET開源、免費、跨平臺(支持Windows、Linux、macOS多個操作系統)的機器學習框架:ML.NET。并且本文將會帶你快速使用ML.NET訓練一個屬于自己的圖像分類模型,對圖像進行分類。

ML.NET框架介紹
ML.NET 允許開發人員在其 .NET 應用程序中輕松構建、訓練、部署和使用自定義模型,而無需具備開發機器學習模型的專業知識或使用 Python 或 R 等其他編程語言的經驗。該框架提供從文件和數據加載的數據。數據庫,支持數據轉換,并包含許多機器學習算法。
AI和機器學習有什么區別?
AI 是一個計算分支,涉及訓練計算機執行通常需要人類智能的操作。機器學習是 AI 的一部分,它涉及計算機從數據中學習和在數據中發現模式,以便能夠自行對新數據進行預測。
ML.NET支持的.NET框架
目前ML.NET支持.NET、.NET Core (版本 2.0 及更高版本)和 .NET Framework (版本 4.6.1 及更高版本)。
框架源代碼

ML.NET官方提供的使用示例

ML.NET使用環境安裝
安裝本機.NET環境
首先需要準備好本機的.NET開發環境:

Visual Studio環境配置
選擇.NET 桌面開發工作負荷以及可選的 ML.NET Model Builder 組件。
ML.NET Model Builder 組件介紹:提供易于理解的可視界面,用于在 Visual Studio 內生成、訓練和部署自定義機器學習模型。

創建一個WinForms應用
創建一個名為:MLNETExercise的.NET8 WinForms應用。



準備好需要訓練的圖片

訓練圖像分類模型






測試訓練模型的分析效果



在WinForms中調用圖像分類模型
調用完整代碼
private void Btn_SelectImage_Click(object sender, EventArgs e)
{
using (OpenFileDialog openFileDialog = new OpenFileDialog())
{
openFileDialog.Title = "Select Image";
openFileDialog.Filter = "Image Files (*.jpg, *.png, *.bmp)|*.jpg;*.png;*.bmp|All Files (*.*)|*.*";
if (openFileDialog.ShowDialog() == DialogResult.OK)
{
// 獲取用戶選擇的文件路徑
string selectedImagePath = openFileDialog.FileName;
// 從文件加載圖片
Image img = Image.FromFile(openFileDialog.FileName);
this.pictureBox.Image = img;
var imageBytes = File.ReadAllBytes(selectedImagePath);
MLImageAnalysis.ModelInput sampleData = new MLImageAnalysis.ModelInput()
{
ImageSource = imageBytes,
};
//Load model and predict output
var result = MLImageAnalysis.Predict(sampleData);
this.txt_Box.Text = result.PredictedLabel;
}
}
}
運行效果展示



項目源碼地址
更多項目實用功能和特性歡迎前往項目開源地址查看??,別忘了給項目一個Star支持??。
- GitHub開源地址:https://github.com/dotnet/machinelearning
- 本文示例源碼地址:https://github.com/YSGStudyHards/DotNetExercises/tree/master/MLNETExercise
優秀項目和框架精選
該項目已收錄到C#/.NET/.NET Core優秀項目和框架精選中,關注優秀項目和框架精選能讓你及時了解C#、.NET和.NET Core領域的最新動態和最佳實踐,提高開發工作效率和質量。坑已挖,歡迎大家踴躍提交PR推薦或自薦(讓優秀的項目和框架不被埋沒??)。
DotNetGuide技術社區交流群
- DotNetGuide技術社區是一個面向.NET開發者的開源技術社區,旨在為開發者們提供全面的C#/.NET/.NET Core相關學習資料、技術分享和咨詢、項目框架推薦、求職和招聘資訊、以及解決問題的平臺。
- 在DotNetGuide技術社區中,開發者們可以分享自己的技術文章、項目經驗、學習心得、遇到的疑難技術問題以及解決方案,并且還有機會結識志同道合的開發者。
- 我們致力于構建一個積極向上、和諧友善的.NET技術交流平臺。無論您是初學者還是有豐富經驗的開發者,我們都希望能為您提供更多的價值和成長機會。
作者名稱:追逐時光者
作者簡介:一個熱愛編程、善于分享、喜歡學習、探索、嘗試新事物和新技術的全棧軟件工程師。
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接,否則保留追究法律責任的權利。如果該篇文章對您有幫助的話,可以點一下右下角的【♥推薦♥】,希望能夠持續的為大家帶來好的技術文章,文中可能存在描述不正確的地方,歡迎指正或補充,不勝感激。

浙公網安備 33010602011771號